ayechat-dev 0.36.9.20260204011001__tar.gz → 0.36.9.20260204171331__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.
- {ayechat_dev-0.36.9.20260204011001/src/ayechat_dev.egg-info → ayechat_dev-0.36.9.20260204171331}/PKG-INFO +1 -1
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/pyproject.toml +1 -1
- ayechat_dev-0.36.9.20260204171331/src/aye/plugins/databricks_model.py +311 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331/src/ayechat_dev.egg-info}/PKG-INFO +1 -1
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/ayechat_dev.egg-info/SOURCES.txt +1 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/dependabot.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/build-windows-installer.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/message-releases-to-discord.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/pylint.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/python-publish-dev.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/python-publish.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/python-testing.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/test-homebrew.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/test-nix-github.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/test-nix.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/test-windows-installer.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/update-homebrew.yml +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.gitignore +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.pylintrc +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/BUILD.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/DISCLAIMER +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/Formula/aye-chat.rb +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/LICENSE +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/README.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/assets/aye-chat.ico +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/aye-chat.spec +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/ayechat.nix +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/flake.lock +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/flake.nix +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/installer.iss +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/publish_pypi.sh +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/requirements.txt +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/run_tests.cmd +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/run_tests.sh +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/setup.cfg +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/.gitignore +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/__main__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/__main_chat__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/command_handlers.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/commands.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/llm_handler.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/llm_invoker.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/plugin_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/repl.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/tutorial.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/util.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/api.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/ast_chunker.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/auth.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/autodiff_config.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/config.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/download_plugins.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/file_processor.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/ignore_patterns.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/index_manager/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/index_manager/index_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/index_manager/index_manager_executor.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/index_manager/index_manager_file_ops.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/index_manager/index_manager_state.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/index_manager/index_manager_utils.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/json_extractor.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/models.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/offline_llm_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/onnx_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/snapshot/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/snapshot/base.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/snapshot/file_backend.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/snapshot/git_ref_backend.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/source_collector.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/telemetry.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/vector_db.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/version_checker.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/write_validator.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/at_file_completer.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/auto_detect_mask.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/completer.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/local_model.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/offline_llm.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/plugin_base.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/shell_executor.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/slash_completer.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/__init__.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/cli_ui.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/diff_presenter.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/repl_ui.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/streaming_ui.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/ui_utils.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/ayechat_dev.egg-info/dependency_links.txt +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/ayechat_dev.egg-info/entry_points.txt +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/ayechat_dev.egg-info/requires.txt +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/ayechat_dev.egg-info/top_level.txt +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/.gitignore +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/config/unittest-env.sh +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/e2e/test_chat_workflow.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_api.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_ast_chunker.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_at_file_completer.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_auth.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_auth_uat_1.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_auto_detect_mask.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_chromadb_corruption_recovery.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_cli.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_command_handlers.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_commands.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_completer_plugin.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_config.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_diff_presenter.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_download_plugins.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_file_processor.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_git_ref_backend.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_index_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_index_manager_executor.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_index_manager_more.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_index_manager_state.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_index_manager_utils.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_llm_handler.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_llm_invoker.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_local_model_plugin.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_offline_llm.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_offline_llm_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_onnx_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_plugin_base.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_plugin_manager.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_presenter.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_rag_context_retrieval.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_repl.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_service.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_shell_executor_plugin.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_slash_completer.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_snapshot.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_source_collector.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_streaming_ui.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_telemetry.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_tutorial.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_ui_utils.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_util.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_vector_db.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_version_checker.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_write_validator.py +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/api_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/auth_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/demo_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/download_plugins_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/plugin_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/service_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/snapshot_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/source_collector_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/ui_tests.md +0 -0
- {ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/version_info.txt +0 -0
|
@@ -8,7 +8,7 @@ description = "Aye Chat: Terminal-first AI Code Generator"
|
|
|
8
8
|
readme = "README.md"
|
|
9
9
|
requires-python = ">=3.10, <3.14"
|
|
10
10
|
dependencies = [ "typer>=0.20.0", "httpx>=0.28.1", "keyring>=25.7.0", "prompt-toolkit>=3.0.52", "pathspec>=0.12.1", "chromadb>=1.3.5", "rapidfuzz",]
|
|
11
|
-
version = "0.36.9.
|
|
11
|
+
version = "0.36.9.20260204171331"
|
|
12
12
|
[[project.authors]]
|
|
13
13
|
name = "Acrotron, Inc."
|
|
14
14
|
email = "info@acrotron.com"
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import json
|
|
3
|
+
from typing import Dict, Any, Optional
|
|
4
|
+
import httpx
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
import traceback
|
|
7
|
+
|
|
8
|
+
from rich import print as rprint
|
|
9
|
+
|
|
10
|
+
from .plugin_base import Plugin
|
|
11
|
+
from aye.model.config import SYSTEM_PROMPT, MODELS, DEFAULT_MAX_OUTPUT_TOKENS
|
|
12
|
+
from aye.model.auth import get_user_config
|
|
13
|
+
from aye.controller.util import is_truncated_json
|
|
14
|
+
|
|
15
|
+
LLM_TIMEOUT = 600.0
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
# Message shown when LLM response is truncated due to output token limits
|
|
19
|
+
TRUNCATED_RESPONSE_MESSAGE = (
|
|
20
|
+
"It looks like my response was cut off because it exceeded the output limit. "
|
|
21
|
+
"This usually happens when you ask me to generate or modify many files at once.\n\n"
|
|
22
|
+
"**To fix this, please try:**\n"
|
|
23
|
+
"1. Break your request into smaller parts (e.g., one file at a time)\n"
|
|
24
|
+
"2. Use the `with` command to focus on specific files: `with file1.py, file2.py: your request`\n"
|
|
25
|
+
"3. Ask me to work on fewer files or smaller changes in each request\n\n"
|
|
26
|
+
"For example, instead of 'update all files to add logging', try:\n"
|
|
27
|
+
" `with src/main.py: add logging to this file`"
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def _get_model_config(model_id: str) -> Optional[Dict[str, Any]]:
|
|
32
|
+
"""Get configuration for a specific model."""
|
|
33
|
+
for model in MODELS:
|
|
34
|
+
if model["id"] == model_id:
|
|
35
|
+
return model
|
|
36
|
+
return None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def _extract_json_object(raw_response: str, prefer_last: bool = True, require_keys=None):
|
|
40
|
+
"""
|
|
41
|
+
Best-effort extraction of a JSON object (dict) from a raw LLM response.
|
|
42
|
+
|
|
43
|
+
Handles common failure modes where the model returns:
|
|
44
|
+
- extra commentary before/after JSON
|
|
45
|
+
- multiple JSON objects (e.g., an invalid attempt + a corrected attempt)
|
|
46
|
+
|
|
47
|
+
Args:
|
|
48
|
+
raw_response: raw LLM response string
|
|
49
|
+
prefer_last: when multiple JSON objects exist, return the last parsed object
|
|
50
|
+
require_keys: optional iterable of keys; if provided, only consider objects
|
|
51
|
+
that contain all of these keys
|
|
52
|
+
|
|
53
|
+
Returns:
|
|
54
|
+
dict or None
|
|
55
|
+
"""
|
|
56
|
+
# 1) Direct JSON parse
|
|
57
|
+
try:
|
|
58
|
+
obj = json.loads(raw_response)
|
|
59
|
+
if isinstance(obj, dict):
|
|
60
|
+
if require_keys and not all(k in obj for k in require_keys):
|
|
61
|
+
return None
|
|
62
|
+
return obj
|
|
63
|
+
except Exception:
|
|
64
|
+
pass
|
|
65
|
+
|
|
66
|
+
text = str(raw_response)
|
|
67
|
+
|
|
68
|
+
# 2) Scan for balanced JSON object candidates (string/escape-aware)
|
|
69
|
+
candidates = []
|
|
70
|
+
depth = 0
|
|
71
|
+
start = None
|
|
72
|
+
in_str = False
|
|
73
|
+
escape = False
|
|
74
|
+
|
|
75
|
+
for i, ch in enumerate(text):
|
|
76
|
+
if in_str:
|
|
77
|
+
if escape:
|
|
78
|
+
escape = False
|
|
79
|
+
elif ch == '\\':
|
|
80
|
+
escape = True
|
|
81
|
+
elif ch == '"':
|
|
82
|
+
in_str = False
|
|
83
|
+
continue
|
|
84
|
+
|
|
85
|
+
# not in string
|
|
86
|
+
if ch == '"':
|
|
87
|
+
in_str = True
|
|
88
|
+
continue
|
|
89
|
+
|
|
90
|
+
if ch == '{':
|
|
91
|
+
if depth == 0:
|
|
92
|
+
start = i
|
|
93
|
+
depth += 1
|
|
94
|
+
elif ch == '}' and depth > 0:
|
|
95
|
+
depth -= 1
|
|
96
|
+
if depth == 0 and start is not None:
|
|
97
|
+
candidates.append(text[start : i + 1])
|
|
98
|
+
start = None
|
|
99
|
+
|
|
100
|
+
parsed = []
|
|
101
|
+
for cand in candidates:
|
|
102
|
+
try:
|
|
103
|
+
obj = json.loads(cand)
|
|
104
|
+
if not isinstance(obj, dict):
|
|
105
|
+
continue
|
|
106
|
+
if require_keys and not all(k in obj for k in require_keys):
|
|
107
|
+
continue
|
|
108
|
+
parsed.append(obj)
|
|
109
|
+
except Exception:
|
|
110
|
+
continue
|
|
111
|
+
|
|
112
|
+
if not parsed:
|
|
113
|
+
return None
|
|
114
|
+
|
|
115
|
+
return parsed[-1] if prefer_last else parsed[0]
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
class DatabricksModelPlugin(Plugin):
|
|
119
|
+
name = "databricks_model"
|
|
120
|
+
version = "1.0.0"
|
|
121
|
+
premium = "free"
|
|
122
|
+
|
|
123
|
+
def __init__(self):
|
|
124
|
+
super().__init__()
|
|
125
|
+
self.chat_history: Dict[str, list] = {}
|
|
126
|
+
self.history_file: Optional[Path] = None
|
|
127
|
+
|
|
128
|
+
def init(self, cfg: Dict[str, Any]) -> None:
|
|
129
|
+
"""Initialize the local model plugin."""
|
|
130
|
+
super().init(cfg)
|
|
131
|
+
if self.debug:
|
|
132
|
+
rprint(f"[bold yellow]Initializing {self.name} v{self.version}[/]")
|
|
133
|
+
|
|
134
|
+
def _load_history(self) -> None:
|
|
135
|
+
"""Load chat history from disk."""
|
|
136
|
+
if not self.history_file:
|
|
137
|
+
if self.verbose:
|
|
138
|
+
rprint("[yellow]History file path not set for local model. Skipping load.[/]")
|
|
139
|
+
self.chat_history = {}
|
|
140
|
+
return
|
|
141
|
+
|
|
142
|
+
if self.history_file.exists():
|
|
143
|
+
try:
|
|
144
|
+
data = json.loads(self.history_file.read_text(encoding="utf-8"))
|
|
145
|
+
self.chat_history = data.get("conversations", {})
|
|
146
|
+
except Exception as e:
|
|
147
|
+
if self.verbose:
|
|
148
|
+
rprint(f"[yellow]Could not load chat history: {e}[/]")
|
|
149
|
+
self.chat_history = {}
|
|
150
|
+
else:
|
|
151
|
+
self.chat_history = {}
|
|
152
|
+
|
|
153
|
+
def _save_history(self) -> None:
|
|
154
|
+
"""Save chat history to disk."""
|
|
155
|
+
if not self.history_file:
|
|
156
|
+
if self.verbose:
|
|
157
|
+
rprint("[yellow]History file path not set for local model. Skipping save.[/]")
|
|
158
|
+
return
|
|
159
|
+
|
|
160
|
+
try:
|
|
161
|
+
self.history_file.parent.mkdir(parents=True, exist_ok=True)
|
|
162
|
+
data = {"conversations": self.chat_history}
|
|
163
|
+
self.history_file.write_text(json.dumps(data, indent=2), encoding="utf-8")
|
|
164
|
+
except Exception as e:
|
|
165
|
+
if self.verbose:
|
|
166
|
+
rprint(f"[yellow]Could not save chat history: {e}[/]")
|
|
167
|
+
|
|
168
|
+
def _get_conversation_id(self, chat_id: Optional[int] = None) -> str:
|
|
169
|
+
"""Get conversation ID for history tracking."""
|
|
170
|
+
return str(chat_id) if chat_id and chat_id > 0 else "default"
|
|
171
|
+
|
|
172
|
+
def _build_user_message(self, prompt: str, source_files: Dict[str, str]) -> str:
|
|
173
|
+
"""Build the user message with optional source files appended."""
|
|
174
|
+
user_message = prompt
|
|
175
|
+
if source_files:
|
|
176
|
+
user_message += "\n\n--- Source files are below. ---\n"
|
|
177
|
+
for file_name, content in source_files.items():
|
|
178
|
+
user_message += f"\n** {file_name} **\n```\n{content}\n```\n"
|
|
179
|
+
return user_message
|
|
180
|
+
|
|
181
|
+
def _parse_llm_response(self, generated_text: str) -> Dict[str, Any]:
|
|
182
|
+
"""Parse LLM response text and convert to expected format."""
|
|
183
|
+
try:
|
|
184
|
+
llm_response = json.loads(generated_text)
|
|
185
|
+
except json.JSONDecodeError:
|
|
186
|
+
# Check if this looks like a truncated response
|
|
187
|
+
#if is_truncated_json(generated_text):
|
|
188
|
+
# return {
|
|
189
|
+
# "summary": TRUNCATED_RESPONSE_MESSAGE,
|
|
190
|
+
# "updated_files": []
|
|
191
|
+
# }
|
|
192
|
+
|
|
193
|
+
# Not truncated, just malformed - return as plain text
|
|
194
|
+
llm_response = {
|
|
195
|
+
"answer_summary": generated_text,
|
|
196
|
+
"source_files": []
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return {
|
|
200
|
+
"summary": llm_response.get("answer_summary", ""),
|
|
201
|
+
"updated_files": [
|
|
202
|
+
{
|
|
203
|
+
"file_name": f.get("file_name"),
|
|
204
|
+
"file_content": f.get("file_content")
|
|
205
|
+
}
|
|
206
|
+
for f in llm_response.get("source_files", [])
|
|
207
|
+
]
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
def _create_error_response(self, error_msg: str) -> Dict[str, Any]:
|
|
211
|
+
"""Create a standardized error response."""
|
|
212
|
+
if self.verbose:
|
|
213
|
+
rprint(f"[red]{error_msg}[/]")
|
|
214
|
+
return {
|
|
215
|
+
"summary": error_msg,
|
|
216
|
+
"updated_files": []
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
def _handle_databricks(self, prompt: str, source_files: Dict[str, str], chat_id: Optional[int] = None, system_prompt: Optional[str] = None, max_output_tokens: int = DEFAULT_MAX_OUTPUT_TOKENS) -> Optional[Dict[str, Any]]:
|
|
220
|
+
api_url = os.environ.get("AYE_DBX_API_URL")
|
|
221
|
+
api_key = os.environ.get("AYE_DBX_API_KEY")
|
|
222
|
+
model_name = os.environ.get("AYE_DBX_MODEL", "gpt-3.5-turbo")
|
|
223
|
+
|
|
224
|
+
if not api_url or not api_key:
|
|
225
|
+
return None
|
|
226
|
+
|
|
227
|
+
conv_id = self._get_conversation_id(chat_id)
|
|
228
|
+
if conv_id not in self.chat_history:
|
|
229
|
+
self.chat_history[conv_id] = []
|
|
230
|
+
|
|
231
|
+
user_message = self._build_user_message(prompt, source_files)
|
|
232
|
+
effective_system_prompt = system_prompt if system_prompt else SYSTEM_PROMPT
|
|
233
|
+
|
|
234
|
+
messages_json = [{"role": "system", "content": effective_system_prompt}] + self.chat_history[conv_id] + [{"role": "user", "content": user_message}]
|
|
235
|
+
messages = messages_json # json.dumps(messages_json)
|
|
236
|
+
if self.debug:
|
|
237
|
+
print(">>>>>>>>>>>>>>>>")
|
|
238
|
+
print(self.chat_history[conv_id])
|
|
239
|
+
print(">>>>>>>>>>>>>>>>")
|
|
240
|
+
|
|
241
|
+
headers = {"Content-Type": "application/json", "Authorization": f"Bearer {api_key}"}
|
|
242
|
+
#payload = {"model": model_name, "messages": messages, "temperature": 0.7, "max_tokens": max_output_tokens, "response_format": {"type": "json_object"}}
|
|
243
|
+
payload = {"model": model_name, "messages": messages, "temperature": 0.7, "max_tokens": max_output_tokens}
|
|
244
|
+
|
|
245
|
+
try:
|
|
246
|
+
with httpx.Client(timeout=LLM_TIMEOUT) as client:
|
|
247
|
+
response = client.post(api_url, json=payload, headers=headers)
|
|
248
|
+
if self.debug:
|
|
249
|
+
print("-----------------")
|
|
250
|
+
print(response.text)
|
|
251
|
+
print("-----------------")
|
|
252
|
+
response.raise_for_status()
|
|
253
|
+
result = response.json()
|
|
254
|
+
if result.get("choices") and result["choices"][0].get("message"):
|
|
255
|
+
raw_response = result["choices"][0]["message"]["content"]
|
|
256
|
+
generated_json = _extract_json_object(raw_response)
|
|
257
|
+
generated_text = json.dumps(generated_json)
|
|
258
|
+
if self.debug:
|
|
259
|
+
print("-----------------")
|
|
260
|
+
print(response.text)
|
|
261
|
+
print("-----------------")
|
|
262
|
+
print(generated_text)
|
|
263
|
+
print("-----------------")
|
|
264
|
+
#generated_text = result["choices"][0]["message"]["content"][1]["text"]
|
|
265
|
+
self.chat_history[conv_id].append({"role": "user", "content": user_message})
|
|
266
|
+
self.chat_history[conv_id].append({"role": "assistant", "content": generated_text})
|
|
267
|
+
self._save_history()
|
|
268
|
+
#return json.dumps(generated_text)
|
|
269
|
+
return self._parse_llm_response(generated_text)
|
|
270
|
+
return self._create_error_response("Failed to get a valid response from the Databricks API")
|
|
271
|
+
except httpx.HTTPStatusError as e:
|
|
272
|
+
traceback.print_exc()
|
|
273
|
+
error_msg = f"DBX API error: {e.response.status_code}"
|
|
274
|
+
try:
|
|
275
|
+
error_detail = e.response.json()
|
|
276
|
+
if "error" in error_detail:
|
|
277
|
+
error_msg += f" - {error_detail['error'].get('message', str(error_detail['error']))}"
|
|
278
|
+
except: error_msg += f" - {e.response.text[:200]}"
|
|
279
|
+
return self._create_error_response(error_msg)
|
|
280
|
+
except Exception as e:
|
|
281
|
+
traceback.print_exc()
|
|
282
|
+
return self._create_error_response(f"Error calling Databricks API: {str(e)}")
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
def on_command(self, command_name: str, params: Dict[str, Any]) -> Optional[Dict[str, Any]]:
|
|
286
|
+
if command_name == "new_chat":
|
|
287
|
+
root = params.get("root")
|
|
288
|
+
history_file = Path(root) / ".aye" / "chat_history.json" if root else Path.cwd() / ".aye" / "chat_history.json"
|
|
289
|
+
history_file.unlink(missing_ok=True)
|
|
290
|
+
self.chat_history = {}
|
|
291
|
+
if self.verbose: rprint("[yellow]Local model chat history cleared.[/]")
|
|
292
|
+
return {"status": "local_history_cleared"}
|
|
293
|
+
|
|
294
|
+
if command_name == "local_model_invoke":
|
|
295
|
+
prompt = params.get("prompt", "").strip()
|
|
296
|
+
model_id = params.get("model_id", "")
|
|
297
|
+
source_files = params.get("source_files", {})
|
|
298
|
+
chat_id = params.get("chat_id")
|
|
299
|
+
root = params.get("root")
|
|
300
|
+
system_prompt = params.get("system_prompt")
|
|
301
|
+
max_output_tokens = params.get("max_output_tokens", DEFAULT_MAX_OUTPUT_TOKENS)
|
|
302
|
+
|
|
303
|
+
self.history_file = Path(root) / ".aye" / "chat_history.json" if root else Path.cwd() / ".aye" / "chat_history.json"
|
|
304
|
+
self._load_history()
|
|
305
|
+
|
|
306
|
+
result = self._handle_databricks(prompt, source_files, chat_id, system_prompt, max_output_tokens)
|
|
307
|
+
if result is not None: return result
|
|
308
|
+
|
|
309
|
+
return None
|
|
310
|
+
|
|
311
|
+
return None
|
|
@@ -77,6 +77,7 @@ src/aye/plugins/__init__.py
|
|
|
77
77
|
src/aye/plugins/at_file_completer.py
|
|
78
78
|
src/aye/plugins/auto_detect_mask.py
|
|
79
79
|
src/aye/plugins/completer.py
|
|
80
|
+
src/aye/plugins/databricks_model.py
|
|
80
81
|
src/aye/plugins/local_model.py
|
|
81
82
|
src/aye/plugins/offline_llm.py
|
|
82
83
|
src/aye/plugins/plugin_base.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/dependabot.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/.github/workflows/pylint.yml
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
|
|
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
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/__main_chat__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/repl.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/controller/util.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/__init__.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/api.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/ast_chunker.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/auth.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/config.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
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/models.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
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/telemetry.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/model/vector_db.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/plugins/completer.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/cli_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/src/aye/presenter/repl_ui.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
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/config/unittest-env.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_ast_chunker.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_auth_uat_1.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_commands.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_config.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_diff_presenter.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_file_processor.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_index_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_llm_handler.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_llm_invoker.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_offline_llm.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_onnx_manager.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_plugin_base.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_plugin_manager.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_presenter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_snapshot.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_streaming_ui.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_telemetry.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_tutorial.py
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_ui_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/test_vector_db.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/api_tests.md
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/auth_tests.md
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/demo_tests.md
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/plugin_tests.md
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/service_tests.md
RENAMED
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/snapshot_tests.md
RENAMED
|
File without changes
|
|
File without changes
|
{ayechat_dev-0.36.9.20260204011001 → ayechat_dev-0.36.9.20260204171331}/tests/ua/ui_tests.md
RENAMED
|
File without changes
|
|
File without changes
|