bathys 0.6.1__tar.gz → 0.6.2__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 (100) hide show
  1. {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/memory-2026-09-08.log +29 -0
  2. bathys-0.6.2/.remember/tmp/no-transcript-notice +1 -0
  3. {bathys-0.6.1 → bathys-0.6.2}/CHANGELOG.md +14 -0
  4. bathys-0.6.1/README.md → bathys-0.6.2/PKG-INFO +50 -10
  5. bathys-0.6.1/PKG-INFO → bathys-0.6.2/README.md +24 -22
  6. bathys-0.6.2/integrations/README.md +33 -0
  7. bathys-0.6.2/integrations/hermes/README.md +37 -0
  8. bathys-0.6.2/integrations/hermes/install.py +149 -0
  9. bathys-0.6.2/integrations/pi/README.md +42 -0
  10. bathys-0.6.2/integrations/pi/assets/bathys-rules.md +35 -0
  11. bathys-0.6.2/integrations/zcode/README.md +32 -0
  12. bathys-0.6.2/npm/bathys-mcp/.remember/.gitignore +1 -0
  13. bathys-0.6.2/npm/bathys-mcp/.remember/logs/hook-errors.log +0 -0
  14. bathys-0.6.2/npm/bathys-mcp/.remember/logs/memory-2026-09-08.log +11 -0
  15. bathys-0.6.2/npm/bathys-mcp/.remember/tmp/no-transcript-notice +1 -0
  16. bathys-0.6.2/npm/bathys-mcp/.remember/tmp/post-tool-ran +0 -0
  17. bathys-0.6.2/npm/bathys-mcp/README.md +42 -0
  18. bathys-0.6.2/npm/bathys-mcp/bin/cli.js +72 -0
  19. bathys-0.6.2/npm/bathys-mcp/bin/postinstall.js +45 -0
  20. bathys-0.6.2/npm/bathys-mcp/package.json +35 -0
  21. bathys-0.6.2/pyproject.toml +48 -0
  22. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/__init__.py +1 -1
  23. bathys-0.6.1/.remember/tmp/no-transcript-notice +0 -1
  24. bathys-0.6.1/pyproject.toml +0 -29
  25. {bathys-0.6.1 → bathys-0.6.2}/.github/workflows/ci.yml +0 -0
  26. {bathys-0.6.1 → bathys-0.6.2}/.gitignore +0 -0
  27. {bathys-0.6.1 → bathys-0.6.2}/.remember/.gitignore +0 -0
  28. {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/hook-errors.log +0 -0
  29. {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/memory-2026-09-06.log +0 -0
  30. {bathys-0.6.1 → bathys-0.6.2}/.remember/logs/memory-2026-09-07.log +0 -0
  31. {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/capture-gap-skipped +0 -0
  32. {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/case-divergence +0 -0
  33. {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/post-tool-ran +0 -0
  34. {bathys-0.6.1 → bathys-0.6.2}/.remember/tmp/session-slug +0 -0
  35. {bathys-0.6.1 → bathys-0.6.2}/Dockerfile +0 -0
  36. {bathys-0.6.1 → bathys-0.6.2}/LICENSE +0 -0
  37. {bathys-0.6.1 → bathys-0.6.2}/agents/HARNESS-DROPIN.md +0 -0
  38. {bathys-0.6.1 → bathys-0.6.2}/agents/bathys-researcher.md +0 -0
  39. {bathys-0.6.1 → bathys-0.6.2}/agents/skills/bathys-deep-dive/SKILL.md +0 -0
  40. {bathys-0.6.1 → bathys-0.6.2}/agents/skills/bathys-source-audit/SKILL.md +0 -0
  41. {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0001-python-crawl4ai.md +0 -0
  42. {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0002-pin-mcp-sdk-v1.md +0 -0
  43. {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0003-self-managed-searxng.md +0 -0
  44. {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0004-bm25-distillation.md +0 -0
  45. {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0005-cache-raw-before-distill.md +0 -0
  46. {bathys-0.6.1 → bathys-0.6.2}/docs/adr/0006-three-tool-string-surface.md +0 -0
  47. {bathys-0.6.1 → bathys-0.6.2}/docs/architecture/data-flow.md +0 -0
  48. {bathys-0.6.1 → bathys-0.6.2}/docs/architecture/overview.md +0 -0
  49. {bathys-0.6.1 → bathys-0.6.2}/docs/architecture/pipeline.md +0 -0
  50. {bathys-0.6.1 → bathys-0.6.2}/docs/assets/banner.svg +0 -0
  51. {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/config.md +0 -0
  52. {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/mcp-tools.md +0 -0
  53. {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/module-contracts.md +0 -0
  54. {bathys-0.6.1 → bathys-0.6.2}/docs/contracts/output-format.md +0 -0
  55. {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/cases.md +0 -0
  56. {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/configure.md +0 -0
  57. {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/install.md +0 -0
  58. {bathys-0.6.1 → bathys-0.6.2}/docs/getting-started/integrate.md +0 -0
  59. {bathys-0.6.1 → bathys-0.6.2}/docs/index.md +0 -0
  60. {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/claude-code.md +0 -0
  61. {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/cursor.md +0 -0
  62. {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/generic-mcp.md +0 -0
  63. {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/overview.md +0 -0
  64. {bathys-0.6.1 → bathys-0.6.2}/docs/integrations/zcode.md +0 -0
  65. {bathys-0.6.1 → bathys-0.6.2}/docs/meta/glossary.md +0 -0
  66. {bathys-0.6.1 → bathys-0.6.2}/docs/meta/style-guide.md +0 -0
  67. {bathys-0.6.1 → bathys-0.6.2}/docs/operations/metrics.md +0 -0
  68. {bathys-0.6.1 → bathys-0.6.2}/docs/operations/runbook.md +0 -0
  69. {bathys-0.6.1 → bathys-0.6.2}/docs/product/charter.md +0 -0
  70. {bathys-0.6.1 → bathys-0.6.2}/docs/product/competitive.md +0 -0
  71. {bathys-0.6.1 → bathys-0.6.2}/docs/product/features.md +0 -0
  72. {bathys-0.6.1 → bathys-0.6.2}/docs/product/mind-initiative.md +0 -0
  73. {bathys-0.6.1 → bathys-0.6.2}/docs/product/ocr-initiative.md +0 -0
  74. {bathys-0.6.1 → bathys-0.6.2}/docs/product/roadmap.md +0 -0
  75. {bathys-0.6.1 → bathys-0.6.2}/scripts/acceptance_v02.py +0 -0
  76. {bathys-0.6.1 → bathys-0.6.2}/scripts/batch_check.py +0 -0
  77. {bathys-0.6.1 → bathys-0.6.2}/scripts/metrics_report.py +0 -0
  78. {bathys-0.6.1 → bathys-0.6.2}/scripts/smoke.py +0 -0
  79. {bathys-0.6.1 → bathys-0.6.2}/scripts/stdio_check.py +0 -0
  80. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/batch.py +0 -0
  81. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/cache.py +0 -0
  82. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/compose.yaml +0 -0
  83. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/config.py +0 -0
  84. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/core.py +0 -0
  85. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/crawler.py +0 -0
  86. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/distill.py +0 -0
  87. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/doctor.py +0 -0
  88. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/installer.py +0 -0
  89. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/searx.py +0 -0
  90. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/searxng-settings.yml +0 -0
  91. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/server.py +0 -0
  92. {bathys-0.6.1 → bathys-0.6.2}/src/bathys/services.py +0 -0
  93. {bathys-0.6.1 → bathys-0.6.2}/tests/test_batch.py +0 -0
  94. {bathys-0.6.1 → bathys-0.6.2}/tests/test_cache.py +0 -0
  95. {bathys-0.6.1 → bathys-0.6.2}/tests/test_config.py +0 -0
  96. {bathys-0.6.1 → bathys-0.6.2}/tests/test_core.py +0 -0
  97. {bathys-0.6.1 → bathys-0.6.2}/tests/test_distill.py +0 -0
  98. {bathys-0.6.1 → bathys-0.6.2}/tests/test_installer.py +0 -0
  99. {bathys-0.6.1 → bathys-0.6.2}/tests/test_searx.py +0 -0
  100. {bathys-0.6.1 → bathys-0.6.2}/tests/test_v04.py +0 -0
@@ -134,3 +134,32 @@
134
134
  11:14:09 [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
135
135
  11:14: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
136
136
  11:14:21 [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
137
+ 12:39:12 [hook] session-start: 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 REMEMBER_DIR=/var/home/abyss/LABs/MCP/deepreserch/.remember
138
+ 12:39:12 [hook] session-start: capture-gap check skipped — no session_id on stdin
139
+ 12:42:38 [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
140
+ 12:42:38 [hook] WARNING: no session dir for this project: /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/-var-home-abyss-LABs-MCP-deepreserch (slug of /var/home/abyss/LABs/MCP/deepreserch). Memory cannot save until it matches a directory under /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/
141
+ 12:42: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
142
+ 12:42:49 [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
143
+ 12:42:49 [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
144
+ 12:42:56 [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
145
+ 12:43: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
146
+ 12:43:06 [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
147
+ 12:43: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
148
+ 12:43: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
149
+ 12:43: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
150
+ 12:43: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
151
+ 12:43:23 [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
152
+ 12:43:41 [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
153
+ 12:43: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
154
+ 12:43:55 [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
155
+ 12:43:56 [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
156
+ 12:43:56 [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
157
+ 12:43:56 [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
158
+ 12:44:29 [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
159
+ 12:45:15 [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
160
+ 12:45: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
161
+ 12:45:29 [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
162
+ 12:45:35 [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
163
+ 12:45:40 [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
164
+ 12:45:43 [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
165
+ 12:45: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
@@ -0,0 +1 @@
1
+ 1788860558
@@ -2,6 +2,20 @@
2
2
 
3
3
  Формат: Keep a Changelog; версии — semver. Дата — дата выпуска версии.
4
4
 
5
+ ## [0.6.2] — 2026-09-08
6
+
7
+ Публикационная волна: PyPI + NPM + кастомные интеграции.
8
+
9
+ ### Добавлено
10
+
11
+ - **Каталог `integrations/`** — кастомные интеграции с конвенцией (README-установщик-assets): `hermes/` (установщик `install.py`: создаёт `~/.hermes/config.yaml` с `mcp_servers.bathys`, ставит субагента; идемпотентен, бэкап; ловит и чинит артефакт старой установки), `pi/` (дроп-ин `assets/bathys-rules.md` для `AGENTS.md` — у Pi нет MCP-конфига), `zcode/` (комплект: конфиг + субагент + скиллы + дроп-ин).
12
+ - **NPM-обёртка `bathys-mcp`** (`npm/bathys-mcp/`): тонкий установщик для Node-first пользователей — postinstall ставит Python-пакет (`pip install bathys`), CLI делегирует `bathys install|doctor|--help` и запускает stdio-сервер; проверена на node v20 (install --dry-run, print-config, doctor — зелёные). Публикуется на NPM как `bathys-mcp`.
13
+ - **Живые интеграции на машине мейнтейнера**: Hermes — `config.yaml` + субагент установлены идемпотентно.
14
+
15
+ ### Изменено
16
+
17
+ - **Метаданные пакета** (PyPI-витрина): `description` переведён на канон продукта («Unified local deep-research search service…», вместо обёрточной формулировки про SearXNG/Crawl4AI); добавлены `keywords` (mcp, deep-research, local-first…), `classifiers`, секция `[project.urls]` (Homepage/Repository/Changelog/Documentation).
18
+
5
19
  ## [0.6.1] — 2026-09-08
6
20
 
7
21
  Расширение автодетекта `bathys install` на базовый набор харнессов (форматы подтверждены первоисточниками каждого клиента).
@@ -1,3 +1,29 @@
1
+ Metadata-Version: 2.5
2
+ Name: bathys
3
+ Version: 0.6.2
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
+ Project-URL: Homepage, https://github.com/Korrnals/bathys
6
+ Project-URL: Repository, https://github.com/Korrnals/bathys
7
+ Project-URL: Changelog, https://github.com/Korrnals/bathys/blob/main/CHANGELOG.md
8
+ Project-URL: Documentation, https://github.com/Korrnals/bathys/tree/main/docs
9
+ License: MIT
10
+ License-File: LICENSE
11
+ Keywords: ai-agents,crawl4ai,deep-research,distillation,llm,local-first,mcp,search,searxng,web-search
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
20
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: crawl4ai>=0.6.0
23
+ Requires-Dist: httpx>=0.27
24
+ Requires-Dist: mcp<2,>=1.2.0
25
+ Description-Content-Type: text/markdown
26
+
1
27
  <p align="center"><img src="docs/assets/banner.svg" alt="Bathys" width="720"></p>
2
28
 
3
29
  # Bathys
@@ -7,21 +33,35 @@
7
33
  Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
8
34
 
9
35
  ![python](https://img.shields.io/badge/python-3.10%2B-blue)
10
- ![version](https://img.shields.io/badge/version-0.6.1-9cf)
36
+ ![version](https://img.shields.io/badge/version-0.6.2-9cf)
11
37
  ![mcp](https://img.shields.io/badge/MCP-stdio%20server-6f42c1)
12
38
  ![license](https://img.shields.io/badge/license-MIT-green)
13
39
 
14
40
  ## ⚡ Quick start
15
41
 
16
- Нужны Python ≥ 3.10 и `git`. В каталоге проекта:
42
+ **Из PyPI** (основной путь — Python ≥ 3.10):
43
+
44
+ ```bash
45
+ pip install bathys # сервер + команды bathys/bathys-doctor
46
+ python -m playwright install chromium # браузер для извлечения
47
+ bathys install # автоподключение к найденным харнессам
48
+ bathys-doctor # диагностика стека одним запуском
49
+ ```
50
+
51
+ **Из npm** (для Node-first окружений — обёртка ставит Python-пакет сама):
52
+
53
+ ```bash
54
+ npm install -g bathys-mcp
55
+ bathys-mcp install
56
+ ```
57
+
58
+ **Из исходников** (разработка):
17
59
 
18
60
  ```bash
19
61
  git clone https://github.com/Korrnals/bathys.git && cd bathys
20
- python3.12 -m venv .venv
21
- .venv/bin/pip install -e .
22
- .venv/bin/python -m playwright install chromium # браузер для извлечения
23
- .venv/bin/python -m unittest discover -s tests # 72 теста без сети, ~0.1 c
24
- .venv/bin/bathys-doctor # диагностика стека одним запуском
62
+ python3.12 -m venv .venv && .venv/bin/pip install -e .
63
+ .venv/bin/python -m playwright install chromium
64
+ .venv/bin/python -m unittest discover -s tests # юнит-тесты без сети, ~0.1 c
25
65
  ```
26
66
 
27
67
  В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md). SearXNG поднимать руками не нужно: при первом поиске сервер сам пробует внешний инстанс, затем docker/podman, затем нативный режим ([docs/getting-started/configure.md](docs/getting-started/configure.md)).
@@ -34,7 +74,7 @@ python3.12 -m venv .venv
34
74
  .venv/bin/bathys install # сначала --dry-run, чтобы увидеть план
35
75
  ```
36
76
 
37
- Детектируются zcode, Claude Code, Claude Desktop, Cursor; повторный запуск ничего не меняет — запись идемпотентна. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`.
77
+ Детектируются zcode, Claude Code, Claude Desktop, Cursor, VS Code-семейство (Cline / Roo Code / Kilo Code), Gemini CLI, Windsurf, Zed, opencode, goose, Hermes; форматы каждого — свои (JSON-схемы и YAML-контуры goose/hermes), запись идемпотентна. Для Pi (badlogic pi-mono), у которого нет MCP-конфига, — дроп-ин в `AGENTS.md`. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`; кастомные интеграции — в каталоге [integrations/](integrations/).
38
78
 
39
79
  **Вручную.** Bathys — stdio MCP-сервер, конфиг везде один и тот же блок `mcpServers`; от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к вашему клону (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна.
40
80
 
@@ -122,11 +162,11 @@ docs/
122
162
  └── meta/ # стайлгайд · глоссарий
123
163
  ```
124
164
 
125
- Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, дроп-ин для харнессов) · [tests/](tests/) (72 юнит-теста без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [CHANGELOG.md](CHANGELOG.md).
165
+ Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, скиллы, дроп-ин для харнессов) · [integrations/](integrations/) (кастомные интеграции: hermes, pi, zcode) · [tests/](tests/) (юнит-тесты без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [npm/bathys-mcp/](npm/bathys-mcp/) (NPM-обёртка) · [CHANGELOG.md](CHANGELOG.md).
126
166
 
127
167
  ## 📍 Статус
128
168
 
129
- **0.6.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).
169
+ **0.6.2.** Выпускная история: 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).
130
170
 
131
171
  Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
132
172
 
@@ -1,15 +1,3 @@
1
- Metadata-Version: 2.5
2
- Name: bathys
3
- Version: 0.6.1
4
- Summary: Deep-research MCP server: SearXNG metasearch + Crawl4AI extraction, distilled to LLM-lean output
5
- License: MIT
6
- License-File: LICENSE
7
- Requires-Python: >=3.10
8
- Requires-Dist: crawl4ai>=0.6.0
9
- Requires-Dist: httpx>=0.27
10
- Requires-Dist: mcp<2,>=1.2.0
11
- Description-Content-Type: text/markdown
12
-
13
1
  <p align="center"><img src="docs/assets/banner.svg" alt="Bathys" width="720"></p>
14
2
 
15
3
  # Bathys
@@ -19,21 +7,35 @@ Description-Content-Type: text/markdown
19
7
  Сонар находит координаты, батискаф ныряет за полными текстами, дистиллятор поднимает на палубу только то, что отвечает на вопрос.
20
8
 
21
9
  ![python](https://img.shields.io/badge/python-3.10%2B-blue)
22
- ![version](https://img.shields.io/badge/version-0.6.1-9cf)
10
+ ![version](https://img.shields.io/badge/version-0.6.2-9cf)
23
11
  ![mcp](https://img.shields.io/badge/MCP-stdio%20server-6f42c1)
24
12
  ![license](https://img.shields.io/badge/license-MIT-green)
25
13
 
26
14
  ## ⚡ Quick start
27
15
 
28
- Нужны Python ≥ 3.10 и `git`. В каталоге проекта:
16
+ **Из PyPI** (основной путь — Python ≥ 3.10):
17
+
18
+ ```bash
19
+ pip install bathys # сервер + команды bathys/bathys-doctor
20
+ python -m playwright install chromium # браузер для извлечения
21
+ bathys install # автоподключение к найденным харнессам
22
+ bathys-doctor # диагностика стека одним запуском
23
+ ```
24
+
25
+ **Из npm** (для Node-first окружений — обёртка ставит Python-пакет сама):
26
+
27
+ ```bash
28
+ npm install -g bathys-mcp
29
+ bathys-mcp install
30
+ ```
31
+
32
+ **Из исходников** (разработка):
29
33
 
30
34
  ```bash
31
35
  git clone https://github.com/Korrnals/bathys.git && cd bathys
32
- python3.12 -m venv .venv
33
- .venv/bin/pip install -e .
34
- .venv/bin/python -m playwright install chromium # браузер для извлечения
35
- .venv/bin/python -m unittest discover -s tests # 72 теста без сети, ~0.1 c
36
- .venv/bin/bathys-doctor # диагностика стека одним запуском
36
+ python3.12 -m venv .venv && .venv/bin/pip install -e .
37
+ .venv/bin/python -m playwright install chromium
38
+ .venv/bin/python -m unittest discover -s tests # юнит-тесты без сети, ~0.1 c
37
39
  ```
38
40
 
39
41
  В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md). SearXNG поднимать руками не нужно: при первом поиске сервер сам пробует внешний инстанс, затем docker/podman, затем нативный режим ([docs/getting-started/configure.md](docs/getting-started/configure.md)).
@@ -46,7 +48,7 @@ python3.12 -m venv .venv
46
48
  .venv/bin/bathys install # сначала --dry-run, чтобы увидеть план
47
49
  ```
48
50
 
49
- Детектируются zcode, Claude Code, Claude Desktop, Cursor; повторный запуск ничего не меняет — запись идемпотентна. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`.
51
+ Детектируются zcode, Claude Code, Claude Desktop, Cursor, VS Code-семейство (Cline / Roo Code / Kilo Code), Gemini CLI, Windsurf, Zed, opencode, goose, Hermes; форматы каждого — свои (JSON-схемы и YAML-контуры goose/hermes), запись идемпотентна. Для Pi (badlogic pi-mono), у которого нет MCP-конфига, — дроп-ин в `AGENTS.md`. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`; кастомные интеграции — в каталоге [integrations/](integrations/).
50
52
 
51
53
  **Вручную.** Bathys — stdio MCP-сервер, конфиг везде один и тот же блок `mcpServers`; от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к вашему клону (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна.
52
54
 
@@ -134,11 +136,11 @@ docs/
134
136
  └── meta/ # стайлгайд · глоссарий
135
137
  ```
136
138
 
137
- Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, дроп-ин для харнессов) · [tests/](tests/) (72 юнит-теста без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [CHANGELOG.md](CHANGELOG.md).
139
+ Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, скиллы, дроп-ин для харнессов) · [integrations/](integrations/) (кастомные интеграции: hermes, pi, zcode) · [tests/](tests/) (юнит-тесты без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [npm/bathys-mcp/](npm/bathys-mcp/) (NPM-обёртка) · [CHANGELOG.md](CHANGELOG.md).
138
140
 
139
141
  ## 📍 Статус
140
142
 
141
- **0.6.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).
143
+ **0.6.2.** Выпускная история: 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).
142
144
 
143
145
  Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
144
146
 
@@ -0,0 +1,33 @@
1
+ # integrations/ — кастомные интеграции Bathys
2
+
3
+ Здесь живут интеграции для харнессов, которым мало стандартной записи MCP-сервера:
4
+ скрипты, оболочки, готовые конфиги и дроп-ины. Стандартный автопат (`bathys
5
+ install`) покрывает 14 клиентов из их собственных конфигов; этот каталог —
6
+ для кастомной механики.
7
+
8
+ ## Конвенция
9
+
10
+ Каждая интеграция — подкаталог `integrations/<harness>/`:
11
+
12
+ ```
13
+ integrations/<harness>/
14
+ ├── README.md # что это, когда нужно, установка по шагам
15
+ ├── install.* # установщик (если интеграция больше ручной вставки)
16
+ └── assets/ # конфиги, скрипты, промпты, расширения
17
+ ```
18
+
19
+ Правила:
20
+
21
+ - интеграция не тянет зависимостей сверх самого Bathys (только stdlib);
22
+ - установщик идемпотентен и делает бэкап перед записью — как `bathys install`;
23
+ - каждый README фиксирует формат конфига по первоисточнику (ссылка на доки
24
+ харнесса) и дату проверки;
25
+ - сюда попадают только кастомные пути; обычные конфиги правит `bathys install`.
26
+
27
+ ## Содержимое
28
+
29
+ | Интеграция | Что даёт |
30
+ |---|---|
31
+ | [`hermes/`](hermes/) | установщик для Hermes Agent: `mcp_servers` в `~/.hermes/config.yaml` + субагент в `~/.hermes/agents/`; обходит случай, когда у Hermes нет конфига вообще (создаёт по канону его доков) |
32
+ | [`pi/`](pi/) | дроп-ин для Pi (badlogic pi-mono): у Pi нет MCP-конфига — интеграция это правила для `AGENTS.md` проекта + скилл-каталог Bathys |
33
+ | [`zcode/`](zcode/) | комплект для zcode: MCP-конфиг, субагент `bathys-researcher`, скиллы и ссылка на дроп-ин — всё, что ставится копированием |
@@ -0,0 +1,37 @@
1
+ # Bathys × Hermes Agent
2
+
3
+ [Hermes Agent](https://github.com/NousResearch/hermes-agent) читает MCP из
4
+ `~/.hermes/config.yaml` под ключом `mcp_servers` (snake_case; формат
5
+ подтверждён [доками Hermes](https://hermes-agent.nousresearch.com/docs/user-guide/features/mcp),
6
+ проверено 2026-09-08). Стандартный `bathys install` уже пишет этот файл, если
7
+ он существует. Эта интеграция добавляет остальное:
8
+
9
+ - **создаёт** `~/.hermes/config.yaml`, если его ещё нет (Hermes после первого
10
+ запуска имеет), — по канону его доков;
11
+ - ставит **субагента** `bathys-researcher` в `~/.hermes/agents/`.
12
+
13
+ ## Установка
14
+
15
+ ```bash
16
+ python integrations/hermes/install.py # что изменится — вначале план
17
+ python integrations/hermes/install.py --apply # записать (бэкап создастся сам)
18
+ ```
19
+
20
+ Скрипту нужен только Python ≥3.10 (stdlib); он не импортирует bathys и
21
+ работает с любой установки (`pip install bathys` или из клона). Идемпотентен:
22
+ повторный запуск ничего не меняет.
23
+
24
+ ## Что именно пишется
25
+
26
+ `~/.hermes/config.yaml`:
27
+
28
+ ```yaml
29
+ mcp_servers:
30
+ bathys:
31
+ command: "<путь к bathys>"
32
+ args: []
33
+ env: {}
34
+ ```
35
+
36
+ `~/.hermes/agents/bathys-researcher.md` — профиль субагента глубокого ресёрча
37
+ (копия `agents/bathys-researcher.md` из корня репозитория).
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env python3
2
+ """Bathys integration installer for Hermes Agent.
3
+
4
+ Creates ~/.hermes/config.yaml (mcp_servers.bathys) when absent and installs
5
+ the researcher subagent into ~/.hermes/agents/. Idempotent; backs up any
6
+ existing config before writing. Stdlib-only, works from any Bathys install.
7
+
8
+ Usage:
9
+ python integrations/hermes/install.py # plan only
10
+ python integrations/hermes/install.py --apply # write changes
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import argparse
16
+ import datetime
17
+ import re
18
+ import shutil
19
+ import sys
20
+ from pathlib import Path
21
+
22
+ HOME = Path.home()
23
+ CONFIG = HOME / ".hermes" / "config.yaml"
24
+ AGENTS = HOME / ".hermes" / "agents"
25
+
26
+
27
+ def _bathys_command() -> str:
28
+ launcher = Path(sys.executable).parent / "bathys"
29
+ if launcher.is_file():
30
+ return str(launcher)
31
+ here = Path(__file__).resolve()
32
+ for base in (here.parents[2], here.parents[3]):
33
+ cand = base / ".venv" / "bin" / "bathys"
34
+ if cand.is_file():
35
+ return str(cand)
36
+ return "bathys"
37
+
38
+
39
+ ENTRY = """mcp_servers:
40
+ bathys:
41
+ command: "{cmd}"
42
+ args: []
43
+ env: {{}}
44
+ """
45
+
46
+
47
+ def _entry_block(cmd: str) -> str:
48
+ return ENTRY.format(cmd=cmd)
49
+
50
+
51
+ def _has_bathys(text: str) -> bool:
52
+ return re.search(r"^ bathys:", text, re.M) is not None
53
+
54
+
55
+ def _set_bathys(text: str, cmd: str) -> str:
56
+ block = _entry_block(cmd).rstrip("\n").splitlines()
57
+ lines = text.splitlines()
58
+ # replace existing entry if present
59
+ for i, ln in enumerate(lines):
60
+ if re.match(r"^ bathys:\s*$", ln):
61
+ j = i + 1
62
+ while j < len(lines) and (not lines[j].strip() or lines[j].startswith(" ")):
63
+ j += 1
64
+ lines[i:j] = block[1:]
65
+ return "\n".join(lines) + "\n"
66
+ # root mcp_servers present? insert at its end
67
+ for i, ln in enumerate(lines):
68
+ if re.match(r"^mcp_servers:\s*$", ln):
69
+ j = i + 1
70
+ while j < len(lines) and (not lines[j].strip() or lines[j].startswith(" ")):
71
+ j += 1
72
+ lines[j:j] = block[1:]
73
+ return "\n".join(lines) + "\n"
74
+ # append a fresh root
75
+ sep = [""] if lines else []
76
+ return "\n".join(lines + sep + block) + "\n"
77
+
78
+
79
+ def _agent_src() -> Path | None:
80
+ here = Path(__file__).resolve()
81
+ for base in (here.parents[2], here.parents[3]):
82
+ cand = base / "agents" / "bathys-researcher.md"
83
+ if cand.is_file():
84
+ return cand
85
+ # site-packages layout (pip install): bathys/agents/ inside the package
86
+ for parent in here.parents:
87
+ cand = parent / "bathys" / "agents" / "bathys-researcher.md"
88
+ if cand.is_file():
89
+ return cand
90
+ return None
91
+
92
+
93
+ def main() -> int:
94
+ ap = argparse.ArgumentParser(description=__doc__)
95
+ ap.add_argument("--apply", action="store_true", help="write changes (default: plan)")
96
+ args = ap.parse_args()
97
+
98
+ cmd = _bathys_command()
99
+ changes: list[str] = []
100
+
101
+ if CONFIG.is_file():
102
+ text = CONFIG.read_text(encoding="utf-8")
103
+ if _has_bathys(text) and f'command: "{cmd}"' in text:
104
+ print(f"[=] {CONFIG}: bathys уже актуален")
105
+ else:
106
+ changes.append(f"обновить {CONFIG} (бэкап создастся)")
107
+ else:
108
+ changes.append(f"создать {CONFIG} (mcp_servers.bathys)")
109
+
110
+ src = _agent_src()
111
+ dst = AGENTS / "bathys-researcher.md" if src else None
112
+ if src and dst:
113
+ if dst.is_file() and dst.read_text(encoding="utf-8") == src.read_text(encoding="utf-8"):
114
+ print("[=] субагент уже актуален")
115
+ else:
116
+ changes.append(f"субагент {src.name} -> {dst}")
117
+
118
+ if not changes:
119
+ print("Готово: изменений нет.")
120
+ return 0
121
+ print("План изменений:")
122
+ for c in changes:
123
+ print(" -", c)
124
+ if not args.apply:
125
+ print("Запустите с --apply, чтобы записать.")
126
+ return 0
127
+
128
+ if not args.apply:
129
+ return 0
130
+ if CONFIG.is_file():
131
+ stamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
132
+ shutil.copy2(CONFIG, CONFIG.with_name(f"{CONFIG.name}.bathys-backup-{stamp}"))
133
+ CONFIG.write_text(_set_bathys(CONFIG.read_text(encoding="utf-8"), cmd), encoding="utf-8")
134
+ else:
135
+ CONFIG.parent.mkdir(parents=True, exist_ok=True)
136
+ CONFIG.write_text(_entry_block(cmd), encoding="utf-8")
137
+ print(f"[OK] конфиг: {CONFIG}")
138
+ if src and dst:
139
+ if dst.is_dir():
140
+ shutil.rmtree(dst) # recover from the pre-0.6.2 dir-instead-of-file bug
141
+ dst.parent.mkdir(parents=True, exist_ok=True)
142
+ shutil.copy2(src, dst)
143
+ print(f"[OK] субагент: {dst}")
144
+ print("Перезапустите Hermes, чтобы он подхватил mcp_servers.")
145
+ return 0
146
+
147
+
148
+ if __name__ == "__main__":
149
+ raise SystemExit(main())
@@ -0,0 +1,42 @@
1
+ # Bathys × Pi (badlogic pi-mono)
2
+
3
+ У Pi **нет MCP-конфигурационного файла** — интеграции в нём делаются
4
+ TypeScript-расширениями (проверено по исходникам [pi-mono](https://github.com/badlogic/pi-mono),
5
+ 2026-09-08: ни `mcpServers`, ни modelcontextprotocol-зависимостей в кодовой
6
+ базе). Поэтому интеграция Bathys в Pi — это **агентные тексты**, а не конфиг:
7
+
8
+ 1. **Правила для `AGENTS.md` проекта** — Pi читает его как файл инструкций
9
+ агента; блок ниже приучает агента Pi работать в интернете только через
10
+ Bathys.
11
+ 2. **Скилл-каталог** — копия профилей Bathys, которые Pi-агент подхватывает
12
+ как документы-инструкции.
13
+
14
+ ## Установка (в каталог проекта, где работает Pi)
15
+
16
+ ```bash
17
+ cp integrations/pi/assets/bathys-rules.md ./AGENTS.md.appendix # или вставьте блок в AGENTS.md
18
+ mkdir -p .pi/skills && cp -r agents/skills/* .pi/skills/
19
+ ```
20
+
21
+ Правильнее — открыть `AGENTS.md` проекта и добавить блок из
22
+ [`assets/bathys-rules.md`](assets/bathys-rules.md) целиком (он самодостаточен).
23
+
24
+ ## Блок для AGENTS.md (суть)
25
+
26
+ - Вся работа в интернете — через инструменты MCP-сервера `bathys`
27
+ (`deep_research` / `web_search` / `read_url` / `read_urls`), если он
28
+ подключён в вашей среде.
29
+ - Выбор инструмента по задаче: ресёрч-вопрос → `deep_research`; ссылки →
30
+ `web_search`; известный URL → `read_url`; 2–10 URL → `read_urls`.
31
+ - Верификация фактов — два независимых источника; каждый нетривиальный факт —
32
+ с URL.
33
+ - Сигналы ответов (`cache HIT`/`MISS`, `robots-refused`, `(not fetched — …)`)
34
+ трактуются по семантике Bathys.
35
+
36
+ ## Почему не установщик
37
+
38
+ MCP-сервер Bathys подключается к Pi **средой**, где Pi запущен (например,
39
+ через обёртку, которая стартует MCP-сервер), а не конфигом самого Pi. Если
40
+ ваша среда запускает Pi внутри харнесса с MCP (zcode, opencode и т.п.) —
41
+ используйте `bathys install` для этого харнесса; для чистого Pi достаточно
42
+ правил `AGENTS.md` выше.
@@ -0,0 +1,35 @@
1
+ <!-- Bathys: вставьте этот блок в AGENTS.md проекта, где работает Pi.
2
+ Блок самодостаточен: после него агент Pi не работает в интернете мимо
3
+ инструментов Bathys (если MCP-сервер подключён в среде запуска). -->
4
+
5
+ ## Веб-доступ: всегда через Bathys (локальный поисковый сервис, MCP)
6
+
7
+ Вся работа в интернете — поиск, чтение страниц, исследования — идёт через
8
+ инструменты MCP-сервера Bathys, когда он подключён в среде запуска. Сторонние
9
+ web-инструменты не использовать: у Bathys свои дистилляция под запрос,
10
+ токен-бюджеты, кэш и метрики.
11
+
12
+ Выбор инструмента:
13
+
14
+ - Исследовательский вопрос («что/как/почему/сравни») → `deep_research(query)` —
15
+ ищет, читает топ-источники и возвращает дистиллят под запрос одним вызовом.
16
+ - Нужен только пул ссылок → `web_search(query)`.
17
+ - Один известный URL → `read_url(url, query=…)`; 2–10 URL →
18
+ `read_urls(urls, query=…)` (общий бюджет, битая страница стоит строку).
19
+ - Свежесть: `time_range` = day|week|month|year; протухший кэш (`cache HIT` с
20
+ устаревшими данными) — один `refresh=true` на главный источник.
21
+
22
+ Правила работы:
23
+
24
+ 1. Формулируй `query` как вопрос: дистиллятор отбирает пассажи по смыслу.
25
+ Максимум 3 итерации без сдвига — смени угол (термины из найденного, язык).
26
+ 2. Ключевой факт — два независимых источника (разные домены); конфликт
27
+ источников фиксируй явно с обеими URL.
28
+ 3. Каждый нетривиальный факт в ответе сопровождай URL из секций Bathys.
29
+ 4. Сигналы: `(not fetched — …)` — источник не прочитан, используй остальные;
30
+ `robots-refused` — сайт запретил чтение, уважай; `No results … tried N
31
+ engine sets` — смени формулировку. Футер `[bathys: …]` — статистика,
32
+ не для цитирования.
33
+
34
+ Готовые стратегии (MCP-промпты Bathys): `bathys_deep_research`,
35
+ `bathys_source_audit`, `bathys_fresh_scan` — бери как стартовый шаблон плана.
@@ -0,0 +1,32 @@
1
+ # Bathys × zcode — комплект установки
2
+
3
+ zcode покрывается стандартным `bathys install` (автодетект
4
+ `~/.zcode/cli/config.json` → `mcp.servers`). Этот комплект — для ручной
5
+ установки всех.agent-активов разом и для случаев, когда ставят из клона.
6
+
7
+ ## Установка
8
+
9
+ ```bash
10
+ bathys install # конфиг MCP (авто; бэкап создаётся сам)
11
+ cp agents/bathys-researcher.md ~/.zcode/agents/ # субагент
12
+ cp -r agents/skills/* ~/.zcode/skills/ 2>/dev/null || true # скиллы (если каталог скиллов используется)
13
+ ```
14
+
15
+ ## Что ставится
16
+
17
+ | Артефакт | Куда | Зачем |
18
+ |---|---|---|
19
+ | MCP-сервер `bathys` | `~/.zcode/cli/config.json` → `mcp.servers` | 4 инструмента + 3 промпта + annotations (видны харнессу на рукопожатии) |
20
+ | Субагент `bathys-researcher` | `~/.zcode/agents/` | профиль глубокого ресёрча; делегируй ему исследования целиком |
21
+ | Скиллы `bathys-deep-dive`, `bathys-source-audit` | каталог скиллов харнесса | процедуры глубокого исследования и аудита источников |
22
+ | Дроп-ин (опционально) | `~/.zcode/AGENTS.md` или проектный `AGENTS.md` | если instructions MCP не показываются — блок из `agents/HARNESS-DROPIN.md` |
23
+
24
+ ## Проверка
25
+
26
+ ```bash
27
+ bathys-doctor # конфиг + бэкенд + кэш + браузерный стек
28
+ bathys install --dry-run # конфиг виден и актуален
29
+ ```
30
+
31
+ После установки перезапустите zcode; сервер поднимется при первом вызове
32
+ вместе с бэкендом (external → docker → native).
@@ -0,0 +1,11 @@
1
+ 12:44:02 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
2
+ 12:44:02 [hook] WARNING: no session dir for this project: /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/-var-home-abyss-LABs-MCP-deepreserch-npm-bathys-mcp (slug of /var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp). Memory cannot save until it matches a directory under /var/home/abyss/.distrobox/ubuntu/home/.claude/projects/
3
+ 12:44:05 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
4
+ 12:44:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
5
+ 12:44:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
6
+ 12:44:12 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
7
+ 12:44:15 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
8
+ 12:44:21 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
9
+ 12:44:57 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
10
+ 12:45:02 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember
11
+ 12:45:09 [hook] post-tool: PROJECT_DIR=/var/home/abyss/LABs/MCP/deepreserch/npm/bathys-mcp 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/npm/bathys-mcp/.remember