bathys 0.7.0__tar.gz → 0.7.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. {bathys-0.7.0 → bathys-0.7.1}/.remember/logs/memory-2026-09-08.log +18 -0
  2. {bathys-0.7.0 → bathys-0.7.1}/CHANGELOG.md +7 -0
  3. {bathys-0.7.0 → bathys-0.7.1}/PKG-INFO +14 -6
  4. {bathys-0.7.0 → bathys-0.7.1}/README.md +13 -5
  5. bathys-0.7.1/install.sh +105 -0
  6. {bathys-0.7.0 → bathys-0.7.1}/pyproject.toml +1 -1
  7. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/__init__.py +1 -1
  8. {bathys-0.7.0 → bathys-0.7.1}/.github/workflows/ci.yml +0 -0
  9. {bathys-0.7.0 → bathys-0.7.1}/.gitignore +0 -0
  10. {bathys-0.7.0 → bathys-0.7.1}/.remember/.gitignore +0 -0
  11. {bathys-0.7.0 → bathys-0.7.1}/.remember/logs/hook-errors.log +0 -0
  12. {bathys-0.7.0 → bathys-0.7.1}/.remember/logs/memory-2026-09-06.log +0 -0
  13. {bathys-0.7.0 → bathys-0.7.1}/.remember/logs/memory-2026-09-07.log +0 -0
  14. {bathys-0.7.0 → bathys-0.7.1}/.remember/tmp/capture-gap-skipped +0 -0
  15. {bathys-0.7.0 → bathys-0.7.1}/.remember/tmp/case-divergence +0 -0
  16. {bathys-0.7.0 → bathys-0.7.1}/.remember/tmp/no-transcript-notice +0 -0
  17. {bathys-0.7.0 → bathys-0.7.1}/.remember/tmp/post-tool-ran +0 -0
  18. {bathys-0.7.0 → bathys-0.7.1}/.remember/tmp/session-slug +0 -0
  19. {bathys-0.7.0 → bathys-0.7.1}/Dockerfile +0 -0
  20. {bathys-0.7.0 → bathys-0.7.1}/LICENSE +0 -0
  21. {bathys-0.7.0 → bathys-0.7.1}/agents/HARNESS-DROPIN.md +0 -0
  22. {bathys-0.7.0 → bathys-0.7.1}/agents/bathys-researcher.md +0 -0
  23. {bathys-0.7.0 → bathys-0.7.1}/agents/skills/bathys-deep-dive/SKILL.md +0 -0
  24. {bathys-0.7.0 → bathys-0.7.1}/agents/skills/bathys-source-audit/SKILL.md +0 -0
  25. {bathys-0.7.0 → bathys-0.7.1}/docs/adr/0001-python-crawl4ai.md +0 -0
  26. {bathys-0.7.0 → bathys-0.7.1}/docs/adr/0002-pin-mcp-sdk-v1.md +0 -0
  27. {bathys-0.7.0 → bathys-0.7.1}/docs/adr/0003-self-managed-searxng.md +0 -0
  28. {bathys-0.7.0 → bathys-0.7.1}/docs/adr/0004-bm25-distillation.md +0 -0
  29. {bathys-0.7.0 → bathys-0.7.1}/docs/adr/0005-cache-raw-before-distill.md +0 -0
  30. {bathys-0.7.0 → bathys-0.7.1}/docs/adr/0006-three-tool-string-surface.md +0 -0
  31. {bathys-0.7.0 → bathys-0.7.1}/docs/architecture/data-flow.md +0 -0
  32. {bathys-0.7.0 → bathys-0.7.1}/docs/architecture/overview.md +0 -0
  33. {bathys-0.7.0 → bathys-0.7.1}/docs/architecture/pipeline.md +0 -0
  34. {bathys-0.7.0 → bathys-0.7.1}/docs/assets/banner.svg +0 -0
  35. {bathys-0.7.0 → bathys-0.7.1}/docs/contracts/config.md +0 -0
  36. {bathys-0.7.0 → bathys-0.7.1}/docs/contracts/mcp-tools.md +0 -0
  37. {bathys-0.7.0 → bathys-0.7.1}/docs/contracts/module-contracts.md +0 -0
  38. {bathys-0.7.0 → bathys-0.7.1}/docs/contracts/output-format.md +0 -0
  39. {bathys-0.7.0 → bathys-0.7.1}/docs/getting-started/cases.md +0 -0
  40. {bathys-0.7.0 → bathys-0.7.1}/docs/getting-started/configure.md +0 -0
  41. {bathys-0.7.0 → bathys-0.7.1}/docs/getting-started/install.md +0 -0
  42. {bathys-0.7.0 → bathys-0.7.1}/docs/getting-started/integrate.md +0 -0
  43. {bathys-0.7.0 → bathys-0.7.1}/docs/index.md +0 -0
  44. {bathys-0.7.0 → bathys-0.7.1}/docs/integrations/claude-code.md +0 -0
  45. {bathys-0.7.0 → bathys-0.7.1}/docs/integrations/cursor.md +0 -0
  46. {bathys-0.7.0 → bathys-0.7.1}/docs/integrations/generic-mcp.md +0 -0
  47. {bathys-0.7.0 → bathys-0.7.1}/docs/integrations/overview.md +0 -0
  48. {bathys-0.7.0 → bathys-0.7.1}/docs/integrations/zcode.md +0 -0
  49. {bathys-0.7.0 → bathys-0.7.1}/docs/meta/glossary.md +0 -0
  50. {bathys-0.7.0 → bathys-0.7.1}/docs/meta/style-guide.md +0 -0
  51. {bathys-0.7.0 → bathys-0.7.1}/docs/operations/metrics.md +0 -0
  52. {bathys-0.7.0 → bathys-0.7.1}/docs/operations/runbook.md +0 -0
  53. {bathys-0.7.0 → bathys-0.7.1}/docs/product/charter.md +0 -0
  54. {bathys-0.7.0 → bathys-0.7.1}/docs/product/competitive.md +0 -0
  55. {bathys-0.7.0 → bathys-0.7.1}/docs/product/features.md +0 -0
  56. {bathys-0.7.0 → bathys-0.7.1}/docs/product/mind-initiative.md +0 -0
  57. {bathys-0.7.0 → bathys-0.7.1}/docs/product/ocr-initiative.md +0 -0
  58. {bathys-0.7.0 → bathys-0.7.1}/docs/product/roadmap.md +0 -0
  59. {bathys-0.7.0 → bathys-0.7.1}/integrations/README.md +0 -0
  60. {bathys-0.7.0 → bathys-0.7.1}/integrations/hermes/README.md +0 -0
  61. {bathys-0.7.0 → bathys-0.7.1}/integrations/hermes/install.py +0 -0
  62. {bathys-0.7.0 → bathys-0.7.1}/integrations/pi/README.md +0 -0
  63. {bathys-0.7.0 → bathys-0.7.1}/integrations/pi/assets/bathys-rules.md +0 -0
  64. {bathys-0.7.0 → bathys-0.7.1}/integrations/zcode/README.md +0 -0
  65. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/.remember/.gitignore +0 -0
  66. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/.remember/logs/hook-errors.log +0 -0
  67. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/.remember/logs/memory-2026-09-08.log +0 -0
  68. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/.remember/tmp/no-transcript-notice +0 -0
  69. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/.remember/tmp/post-tool-ran +0 -0
  70. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/README.md +0 -0
  71. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/bin/cli.js +0 -0
  72. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/bin/postinstall.js +0 -0
  73. {bathys-0.7.0 → bathys-0.7.1}/npm/bathys-mcp/package.json +0 -0
  74. {bathys-0.7.0 → bathys-0.7.1}/scripts/acceptance_v02.py +0 -0
  75. {bathys-0.7.0 → bathys-0.7.1}/scripts/batch_check.py +0 -0
  76. {bathys-0.7.0 → bathys-0.7.1}/scripts/metrics_report.py +0 -0
  77. {bathys-0.7.0 → bathys-0.7.1}/scripts/smoke.py +0 -0
  78. {bathys-0.7.0 → bathys-0.7.1}/scripts/stdio_check.py +0 -0
  79. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/batch.py +0 -0
  80. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/cache.py +0 -0
  81. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/compose.yaml +0 -0
  82. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/config.py +0 -0
  83. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/core.py +0 -0
  84. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/crawler.py +0 -0
  85. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/distill.py +0 -0
  86. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/doctor.py +0 -0
  87. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/installer.py +0 -0
  88. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/searx.py +0 -0
  89. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/searxng-settings.yml +0 -0
  90. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/server.py +0 -0
  91. {bathys-0.7.0 → bathys-0.7.1}/src/bathys/services.py +0 -0
  92. {bathys-0.7.0 → bathys-0.7.1}/tests/test_batch.py +0 -0
  93. {bathys-0.7.0 → bathys-0.7.1}/tests/test_cache.py +0 -0
  94. {bathys-0.7.0 → bathys-0.7.1}/tests/test_config.py +0 -0
  95. {bathys-0.7.0 → bathys-0.7.1}/tests/test_core.py +0 -0
  96. {bathys-0.7.0 → bathys-0.7.1}/tests/test_distill.py +0 -0
  97. {bathys-0.7.0 → bathys-0.7.1}/tests/test_installer.py +0 -0
  98. {bathys-0.7.0 → bathys-0.7.1}/tests/test_searx.py +0 -0
  99. {bathys-0.7.0 → bathys-0.7.1}/tests/test_v04.py +0 -0
@@ -195,3 +195,21 @@
195
195
  13:57:42 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
196
196
  13:57:52 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
197
197
  13:58:04 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
198
+ 13:58:16 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
199
+ 13:58:27 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
200
+ 13:58:39 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
201
+ 13:58:47 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
202
+ 14:16:47 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
203
+ 14:16:53 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
204
+ 14:17:02 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
205
+ 14:31:07 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
206
+ 14:31:19 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
207
+ 14:31:39 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
208
+ 14:32:16 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
209
+ 14:32:27 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
210
+ 14:32:44 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
211
+ 14:32:45 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
212
+ 14:33:04 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
213
+ 14:33:05 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
214
+ 14:33:20 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
215
+ 14:33:32 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch PIPELINE_DIR=/var/home/abyss/.distrobox/ubuntu/home/.zcode/cli/plugins/cache/claude-plugins-official/remember/0.20.0 PYTHON=python3 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
@@ -2,6 +2,13 @@
2
2
 
3
3
  Формат: Keep a Changelog; версии — semver. Дата — дата выпуска версии.
4
4
 
5
+ ## [0.7.1] — 2026-09-08
6
+
7
+ ### Добавлено
8
+
9
+ - **Однострочный установщик `install.sh`** — основной путь установки: `curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash`. Приватный venv в `~/.local/share/bathys/venv` (решение против хрупкости `pip --user` между контейнерами и PEP 668), бутстрап pip через `get-pip.py` для минимальных образов, PATH прописывается в `.profile`/`.bashrc`, затем `bathys setup` и финальный `bathys-doctor`. Идемпотентен (повтор = обновление), без sudo, ничего вне `$HOME`. Живые прогоны: двойной (создание + идемпотентное обновление), setup прописал zcode+hermes с бэкапами, doctor 5/6 (бэкенд поднимается при первом вызове — норма).
10
+ - README: однострочник — основной путь Quick start; `pip install` + `bathys setup` — равноправная альтернатива «без скрипта»; npm/исходники — под катом.
11
+
5
12
  ## [0.7.0] — 2026-09-08
6
13
 
7
14
  Тема: «Ship & Setup» — двухъярусное извлечение без обязательного браузера и модульная установка.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: bathys
3
- Version: 0.7.0
3
+ Version: 0.7.1
4
4
  Summary: Unified local deep-research search service for AI agents — one pipeline (search → extraction → query distillation → cache), zero cloud quotas. MCP stdio server with native harness integration (bathys install).
5
5
  Project-URL: Homepage, https://github.com/Korrnals/bathys
6
6
  Project-URL: Repository, https://github.com/Korrnals/bathys
@@ -33,21 +33,29 @@ Description-Content-Type: text/markdown
33
33
  Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
34
34
 
35
35
  ![python](https://img.shields.io/badge/python-3.10%2B-blue)
36
- ![version](https://img.shields.io/badge/version-0.7.0-9cf)
36
+ ![version](https://img.shields.io/badge/version-0.7.1-9cf)
37
37
  ![mcp](https://img.shields.io/badge/MCP-stdio%20server-6f42c1)
38
38
  ![license](https://img.shields.io/badge/license-MIT-green)
39
39
 
40
40
  ## ⚡ Quick start
41
41
 
42
- Три команды от чистой системы до работающего поиска (Python ≥ 3.10):
42
+ **Одной командой** (Python ≥ 3.10; приватный venv, без sudo, идемпотентно):
43
+
44
+ ```bash
45
+ curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash
46
+ ```
47
+
48
+ Скрипт ставит пакет с PyPI в `~/.local/share/bathys/venv`, прописывает PATH, запускает `bathys setup` (браузер для JS-страниц → все найденные харнессы → субагент) и финальный `bathys-doctor`. Повторный запуск — безопасное обновление.
49
+
50
+ **Без скрипта** (то же самое вручную, для тех кто предпочитает pip):
43
51
 
44
52
  ```bash
45
53
  pip install bathys # пакет: сервер + bathys setup/install/doctor
46
- bathys setup # браузер для JS-страниц → все найденные харнессы → субагент
54
+ bathys setup # браузер → харнессы → субагент
47
55
  bathys doctor # самодиагностика стека
48
56
  ```
49
57
 
50
- `setup` идемпотентен — повторный запуск ничего не ломает. SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
58
+ SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
51
59
 
52
60
  <details>
53
61
  <summary><b>Альтернативные пути установки</b> (npm, исходники, минимальные образы)</summary>
@@ -180,7 +188,7 @@ docs/
180
188
 
181
189
  ## 📍 Статус
182
190
 
183
- **0.7.0.** Выпускная история: v0.2 «Качество выдачи» (ретраи, здоровье движков), v0.3 «Паритет с Tavily» (`read_urls`, JSON-режим), v0.4 «Эксплуатация» (robots-этика, метрики, `bathys-doctor`), v0.5 «Identity & Harness» (репозиционирование, промпты, субагент), v0.6 «Native Install» (`bathys install`) — итоги в [CHANGELOG.md](CHANGELOG.md).
191
+ **0.7.1.** Выпускная история: v0.2 «Качество выдачи» (ретраи, здоровье движков), v0.3 «Паритет с Tavily» (`read_urls`, JSON-режим), v0.4 «Эксплуатация» (robots-этика, метрики, `bathys-doctor`), v0.5 «Identity & Harness» (репозиционирование, промпты, субагент), v0.6 «Native Install» (`bathys install`) — итоги в [CHANGELOG.md](CHANGELOG.md).
184
192
 
185
193
  Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
186
194
 
@@ -7,21 +7,29 @@
7
7
  Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
8
8
 
9
9
  ![python](https://img.shields.io/badge/python-3.10%2B-blue)
10
- ![version](https://img.shields.io/badge/version-0.7.0-9cf)
10
+ ![version](https://img.shields.io/badge/version-0.7.1-9cf)
11
11
  ![mcp](https://img.shields.io/badge/MCP-stdio%20server-6f42c1)
12
12
  ![license](https://img.shields.io/badge/license-MIT-green)
13
13
 
14
14
  ## ⚡ Quick start
15
15
 
16
- Три команды от чистой системы до работающего поиска (Python ≥ 3.10):
16
+ **Одной командой** (Python ≥ 3.10; приватный venv, без sudo, идемпотентно):
17
+
18
+ ```bash
19
+ curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash
20
+ ```
21
+
22
+ Скрипт ставит пакет с PyPI в `~/.local/share/bathys/venv`, прописывает PATH, запускает `bathys setup` (браузер для JS-страниц → все найденные харнессы → субагент) и финальный `bathys-doctor`. Повторный запуск — безопасное обновление.
23
+
24
+ **Без скрипта** (то же самое вручную, для тех кто предпочитает pip):
17
25
 
18
26
  ```bash
19
27
  pip install bathys # пакет: сервер + bathys setup/install/doctor
20
- bathys setup # браузер для JS-страниц → все найденные харнессы → субагент
28
+ bathys setup # браузер → харнессы → субагент
21
29
  bathys doctor # самодиагностика стека
22
30
  ```
23
31
 
24
- `setup` идемпотентен — повторный запуск ничего не ломает. SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
32
+ SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
25
33
 
26
34
  <details>
27
35
  <summary><b>Альтернативные пути установки</b> (npm, исходники, минимальные образы)</summary>
@@ -154,7 +162,7 @@ docs/
154
162
 
155
163
  ## 📍 Статус
156
164
 
157
- **0.7.0.** Выпускная история: v0.2 «Качество выдачи» (ретраи, здоровье движков), v0.3 «Паритет с Tavily» (`read_urls`, JSON-режим), v0.4 «Эксплуатация» (robots-этика, метрики, `bathys-doctor`), v0.5 «Identity & Harness» (репозиционирование, промпты, субагент), v0.6 «Native Install» (`bathys install`) — итоги в [CHANGELOG.md](CHANGELOG.md).
165
+ **0.7.1.** Выпускная история: v0.2 «Качество выдачи» (ретраи, здоровье движков), v0.3 «Паритет с Tavily» (`read_urls`, JSON-режим), v0.4 «Эксплуатация» (robots-этика, метрики, `bathys-doctor`), v0.5 «Identity & Harness» (репозиционирование, промпты, субагент), v0.6 «Native Install» (`bathys install`) — итоги в [CHANGELOG.md](CHANGELOG.md).
158
166
 
159
167
  Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
160
168
 
@@ -0,0 +1,105 @@
1
+ #!/usr/bin/env bash
2
+ # Bathys — one-line installer.
3
+ #
4
+ # curl -fsSL https://raw.githubusercontent.com/Korrnals/bathys/main/install.sh | bash
5
+ #
6
+ # What it does (idempotent, safe to re-run):
7
+ # 1. finds Python >= 3.10 (python3/python/3.12/3.11/3.10);
8
+ # 2. installs the `bathys` package from PyPI into a PRIVATE venv at
9
+ # ~/.local/share/bathys/venv (deterministic, no PEP-668 surprises,
10
+ # no sudo, nothing outside $HOME; --user is deliberately not used —
11
+ # it is fragile across containers/managed environments);
12
+ # 3. wires the venv bin into PATH permanently (.profile/.bashrc);
13
+ # 4. runs `bathys setup`: browser engine for JS pages -> harness
14
+ # auto-integration (zcode, Claude, Cursor, VS Code family, Gemini CLI,
15
+ # Windsurf, Zed, opencode, goose, Hermes) -> researcher subagent;
16
+ # 5. runs `bathys-doctor` for a final health check.
17
+ #
18
+ # Exit code is the doctor's. Manual alternative (the same result, no script):
19
+ # pip install bathys && bathys setup
20
+
21
+ set -euo pipefail
22
+
23
+ BOLD="$(tput bold 2>/dev/null || echo '')"
24
+ DIM="$(tput dim 2>/dev/null || echo '')"
25
+ RESET="$(tput sgr0 2>/dev/null || echo '')"
26
+ say() { printf "%s\n" "${BOLD}[bathys]${RESET} $*"; }
27
+ note() { printf "%s\n" "${DIM}[bathys]${RESET} $*"; }
28
+ die() { printf "%s\n" "${BOLD}[bathys]${RESET} ERROR: $*" >&2; exit 1; }
29
+
30
+ VENV_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/bathys/venv"
31
+
32
+ # ------------------------------------------------------------------ python --
33
+ find_python() {
34
+ for cand in python3.12 python3.11 python3.10 python3 python; do
35
+ if command -v "$cand" >/dev/null 2>&1; then
36
+ if "$cand" - <<'PY' >/dev/null 2>&1
37
+ import sys
38
+ raise SystemExit(0 if (3, 10) <= sys.version_info[:2] <= (3, 14) else 1)
39
+ PY
40
+ then
41
+ echo "$cand"
42
+ return 0
43
+ fi
44
+ fi
45
+ done
46
+ return 1
47
+ }
48
+
49
+ PY="$(find_python)" || die "Python 3.10–3.14 не найден. Установите его и повторите — либо вручную: pip install bathys && bathys setup"
50
+ note "python: $($PY --version 2>&1)"
51
+
52
+ # ------------------------------------------------------------------- venv --
53
+ if [ -x "$VENV_DIR/bin/bathys" ] && "$VENV_DIR/bin/bathys" --help >/dev/null 2>&1; then
54
+ note "venv уже живой: $VENV_DIR (обновляю пакет)"
55
+ UPGRADE=yes
56
+ else
57
+ note "создаю приватный venv: $VENV_DIR"
58
+ rm -rf "$VENV_DIR"
59
+ "$PY" -m venv "$VENV_DIR" 2>/dev/null \
60
+ || "$PY" -m venv --without-pip "$VENV_DIR" \
61
+ || die "не удалось создать venv в $VENV_DIR"
62
+ UPGRADE=no
63
+ fi
64
+
65
+ # bootstrap pip when the venv lacks it (minimal images without ensurepip)
66
+ if [ ! -x "$VENV_DIR/bin/pip" ]; then
67
+ note "pip отсутствует в venv — бутстрап через get-pip.py…"
68
+ TMP_GP="$(mktemp)"; trap 'rm -f "$TMP_GP"' EXIT
69
+ curl -fsSL https://bootstrap.pypa.io/get-pip.py -o "$TMP_GP" \
70
+ || die "не удалось скачать get-pip.py (сеть?)"
71
+ "$VENV_DIR/bin/python" "$TMP_GP" -q >/dev/null 2>&1 \
72
+ || die "get-pip.py не смог подняться в venv"
73
+ fi
74
+
75
+ # ---------------------------------------------------------------- install --
76
+ if [ "$UPGRADE" = yes ]; then
77
+ "$VENV_DIR/bin/pip" install --quiet --upgrade bathys >/dev/null 2>&1 \
78
+ || die "pip install --upgrade bathys не удался (сеть/PyPI?)"
79
+ else
80
+ "$VENV_DIR/bin/pip" install --quiet bathys >/dev/null 2>&1 \
81
+ || die "pip install bathys не удался (сеть/PyPI?)"
82
+ fi
83
+ [ -x "$VENV_DIR/bin/bathys" ] || die "bathys не появился в venv — проверьте вывод pip вручную"
84
+
85
+ # ------------------------------------------------------------------- PATH --
86
+ PATH_LINE='export PATH="$HOME/.local/share/bathys/venv/bin:$PATH"'
87
+ if ! case ":$PATH:" in *":$VENV_DIR/bin:"*) false;; esac; then
88
+ export PATH="$VENV_DIR/bin:$PATH"
89
+ fi
90
+ for rc in "$HOME/.profile" "$HOME/.bashrc"; do
91
+ if [ -f "$rc" ] && ! grep -qF 'bathys/venv/bin' "$rc"; then
92
+ printf '\n# bathys (one-line installer)\n%s\n' "$PATH_LINE" >> "$rc"
93
+ note "PATH дополнен в $rc — перезапустите шелл или: source $rc"
94
+ fi
95
+ done
96
+
97
+ say "установлен: $VENV_DIR/bin/bathys"
98
+
99
+ # ------------------------------------------------------------------ setup --
100
+ say "полная настройка (браузер → харнессы → субагент)…"
101
+ "$VENV_DIR/bin/bathys" setup
102
+
103
+ # ----------------------------------------------------------------- doctor --
104
+ say "финальная диагностика:"
105
+ exec "$VENV_DIR/bin/bathys" doctor
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bathys"
7
- version = "0.7.0"
7
+ version = "0.7.1"
8
8
  description = "Unified local deep-research search service for AI agents — one pipeline (search → extraction → query distillation → cache), zero cloud quotas. MCP stdio server with native harness integration (bathys install)."
9
9
  keywords = ["mcp", "deep-research", "search", "web-search", "ai-agents", "llm", "local-first", "distillation", "searxng", "crawl4ai"]
10
10
  classifiers = [
@@ -5,4 +5,4 @@ a query-focused distiller keeps only what answers the question. Built to spend
5
5
  the model's tokens on answers, not on boilerplate.
6
6
  """
7
7
 
8
- __version__ = "0.7.0"
8
+ __version__ = "0.7.1"
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
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