bathys 0.6.1__tar.gz → 0.7.0__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 (101) hide show
  1. {bathys-0.6.1 → bathys-0.7.0}/.remember/logs/memory-2026-09-08.log +61 -0
  2. bathys-0.7.0/.remember/tmp/no-transcript-notice +1 -0
  3. {bathys-0.6.1 → bathys-0.7.0}/CHANGELOG.md +29 -0
  4. bathys-0.6.1/README.md → bathys-0.7.0/PKG-INFO +73 -19
  5. bathys-0.6.1/PKG-INFO → bathys-0.7.0/README.md +47 -31
  6. {bathys-0.6.1 → bathys-0.7.0}/docs/contracts/config.md +1 -0
  7. {bathys-0.6.1 → bathys-0.7.0}/docs/getting-started/configure.md +1 -0
  8. bathys-0.7.0/integrations/README.md +33 -0
  9. bathys-0.7.0/integrations/hermes/README.md +37 -0
  10. bathys-0.7.0/integrations/hermes/install.py +149 -0
  11. bathys-0.7.0/integrations/pi/README.md +42 -0
  12. bathys-0.7.0/integrations/pi/assets/bathys-rules.md +35 -0
  13. bathys-0.7.0/integrations/zcode/README.md +32 -0
  14. bathys-0.7.0/npm/bathys-mcp/.remember/.gitignore +1 -0
  15. bathys-0.7.0/npm/bathys-mcp/.remember/logs/hook-errors.log +0 -0
  16. bathys-0.7.0/npm/bathys-mcp/.remember/logs/memory-2026-09-08.log +16 -0
  17. bathys-0.7.0/npm/bathys-mcp/.remember/tmp/no-transcript-notice +1 -0
  18. bathys-0.7.0/npm/bathys-mcp/.remember/tmp/post-tool-ran +0 -0
  19. bathys-0.7.0/npm/bathys-mcp/README.md +42 -0
  20. bathys-0.7.0/npm/bathys-mcp/bin/cli.js +72 -0
  21. bathys-0.7.0/npm/bathys-mcp/bin/postinstall.js +45 -0
  22. bathys-0.7.0/npm/bathys-mcp/package.json +35 -0
  23. bathys-0.7.0/pyproject.toml +48 -0
  24. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/__init__.py +1 -1
  25. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/config.py +2 -0
  26. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/core.py +1 -1
  27. bathys-0.7.0/src/bathys/crawler.py +205 -0
  28. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/installer.py +102 -17
  29. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/server.py +12 -7
  30. {bathys-0.6.1 → bathys-0.7.0}/tests/test_installer.py +5 -3
  31. bathys-0.6.1/.remember/tmp/no-transcript-notice +0 -1
  32. bathys-0.6.1/pyproject.toml +0 -29
  33. bathys-0.6.1/src/bathys/crawler.py +0 -104
  34. {bathys-0.6.1 → bathys-0.7.0}/.github/workflows/ci.yml +0 -0
  35. {bathys-0.6.1 → bathys-0.7.0}/.gitignore +0 -0
  36. {bathys-0.6.1 → bathys-0.7.0}/.remember/.gitignore +0 -0
  37. {bathys-0.6.1 → bathys-0.7.0}/.remember/logs/hook-errors.log +0 -0
  38. {bathys-0.6.1 → bathys-0.7.0}/.remember/logs/memory-2026-09-06.log +0 -0
  39. {bathys-0.6.1 → bathys-0.7.0}/.remember/logs/memory-2026-09-07.log +0 -0
  40. {bathys-0.6.1 → bathys-0.7.0}/.remember/tmp/capture-gap-skipped +0 -0
  41. {bathys-0.6.1 → bathys-0.7.0}/.remember/tmp/case-divergence +0 -0
  42. {bathys-0.6.1 → bathys-0.7.0}/.remember/tmp/post-tool-ran +0 -0
  43. {bathys-0.6.1 → bathys-0.7.0}/.remember/tmp/session-slug +0 -0
  44. {bathys-0.6.1 → bathys-0.7.0}/Dockerfile +0 -0
  45. {bathys-0.6.1 → bathys-0.7.0}/LICENSE +0 -0
  46. {bathys-0.6.1 → bathys-0.7.0}/agents/HARNESS-DROPIN.md +0 -0
  47. {bathys-0.6.1 → bathys-0.7.0}/agents/bathys-researcher.md +0 -0
  48. {bathys-0.6.1 → bathys-0.7.0}/agents/skills/bathys-deep-dive/SKILL.md +0 -0
  49. {bathys-0.6.1 → bathys-0.7.0}/agents/skills/bathys-source-audit/SKILL.md +0 -0
  50. {bathys-0.6.1 → bathys-0.7.0}/docs/adr/0001-python-crawl4ai.md +0 -0
  51. {bathys-0.6.1 → bathys-0.7.0}/docs/adr/0002-pin-mcp-sdk-v1.md +0 -0
  52. {bathys-0.6.1 → bathys-0.7.0}/docs/adr/0003-self-managed-searxng.md +0 -0
  53. {bathys-0.6.1 → bathys-0.7.0}/docs/adr/0004-bm25-distillation.md +0 -0
  54. {bathys-0.6.1 → bathys-0.7.0}/docs/adr/0005-cache-raw-before-distill.md +0 -0
  55. {bathys-0.6.1 → bathys-0.7.0}/docs/adr/0006-three-tool-string-surface.md +0 -0
  56. {bathys-0.6.1 → bathys-0.7.0}/docs/architecture/data-flow.md +0 -0
  57. {bathys-0.6.1 → bathys-0.7.0}/docs/architecture/overview.md +0 -0
  58. {bathys-0.6.1 → bathys-0.7.0}/docs/architecture/pipeline.md +0 -0
  59. {bathys-0.6.1 → bathys-0.7.0}/docs/assets/banner.svg +0 -0
  60. {bathys-0.6.1 → bathys-0.7.0}/docs/contracts/mcp-tools.md +0 -0
  61. {bathys-0.6.1 → bathys-0.7.0}/docs/contracts/module-contracts.md +0 -0
  62. {bathys-0.6.1 → bathys-0.7.0}/docs/contracts/output-format.md +0 -0
  63. {bathys-0.6.1 → bathys-0.7.0}/docs/getting-started/cases.md +0 -0
  64. {bathys-0.6.1 → bathys-0.7.0}/docs/getting-started/install.md +0 -0
  65. {bathys-0.6.1 → bathys-0.7.0}/docs/getting-started/integrate.md +0 -0
  66. {bathys-0.6.1 → bathys-0.7.0}/docs/index.md +0 -0
  67. {bathys-0.6.1 → bathys-0.7.0}/docs/integrations/claude-code.md +0 -0
  68. {bathys-0.6.1 → bathys-0.7.0}/docs/integrations/cursor.md +0 -0
  69. {bathys-0.6.1 → bathys-0.7.0}/docs/integrations/generic-mcp.md +0 -0
  70. {bathys-0.6.1 → bathys-0.7.0}/docs/integrations/overview.md +0 -0
  71. {bathys-0.6.1 → bathys-0.7.0}/docs/integrations/zcode.md +0 -0
  72. {bathys-0.6.1 → bathys-0.7.0}/docs/meta/glossary.md +0 -0
  73. {bathys-0.6.1 → bathys-0.7.0}/docs/meta/style-guide.md +0 -0
  74. {bathys-0.6.1 → bathys-0.7.0}/docs/operations/metrics.md +0 -0
  75. {bathys-0.6.1 → bathys-0.7.0}/docs/operations/runbook.md +0 -0
  76. {bathys-0.6.1 → bathys-0.7.0}/docs/product/charter.md +0 -0
  77. {bathys-0.6.1 → bathys-0.7.0}/docs/product/competitive.md +0 -0
  78. {bathys-0.6.1 → bathys-0.7.0}/docs/product/features.md +0 -0
  79. {bathys-0.6.1 → bathys-0.7.0}/docs/product/mind-initiative.md +0 -0
  80. {bathys-0.6.1 → bathys-0.7.0}/docs/product/ocr-initiative.md +0 -0
  81. {bathys-0.6.1 → bathys-0.7.0}/docs/product/roadmap.md +0 -0
  82. {bathys-0.6.1 → bathys-0.7.0}/scripts/acceptance_v02.py +0 -0
  83. {bathys-0.6.1 → bathys-0.7.0}/scripts/batch_check.py +0 -0
  84. {bathys-0.6.1 → bathys-0.7.0}/scripts/metrics_report.py +0 -0
  85. {bathys-0.6.1 → bathys-0.7.0}/scripts/smoke.py +0 -0
  86. {bathys-0.6.1 → bathys-0.7.0}/scripts/stdio_check.py +0 -0
  87. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/batch.py +0 -0
  88. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/cache.py +0 -0
  89. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/compose.yaml +0 -0
  90. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/distill.py +0 -0
  91. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/doctor.py +0 -0
  92. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/searx.py +0 -0
  93. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/searxng-settings.yml +0 -0
  94. {bathys-0.6.1 → bathys-0.7.0}/src/bathys/services.py +0 -0
  95. {bathys-0.6.1 → bathys-0.7.0}/tests/test_batch.py +0 -0
  96. {bathys-0.6.1 → bathys-0.7.0}/tests/test_cache.py +0 -0
  97. {bathys-0.6.1 → bathys-0.7.0}/tests/test_config.py +0 -0
  98. {bathys-0.6.1 → bathys-0.7.0}/tests/test_core.py +0 -0
  99. {bathys-0.6.1 → bathys-0.7.0}/tests/test_distill.py +0 -0
  100. {bathys-0.6.1 → bathys-0.7.0}/tests/test_searx.py +0 -0
  101. {bathys-0.6.1 → bathys-0.7.0}/tests/test_v04.py +0 -0
@@ -134,3 +134,64 @@
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
166
+ 12:45: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
167
+ 12:46: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
168
+ 12:47: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
169
+ 12:47:14 [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
170
+ 12:47:17 [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
171
+ 12:47: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
172
+ 12:47:25 [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
173
+ 12:47:31 [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
174
+ 12:47:50 [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
175
+ 13:37:33 [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
176
+ 13:37:33 [hook] session-start: capture-gap check skipped — no session_id on stdin
177
+ 13:54:37 [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
178
+ 13:54:37 [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/
179
+ 13:54: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
180
+ 13:54:59 [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
181
+ 13:55: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
182
+ 13:55:17 [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
183
+ 13:55: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
184
+ 13:55:33 [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
185
+ 13:56:11 [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
186
+ 13:56:25 [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
187
+ 13:56:37 [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
188
+ 13:56:50 [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
189
+ 13:56:58 [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
190
+ 13:57:00 [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
191
+ 13:57:08 [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
192
+ 13:57: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
193
+ 13:57:22 [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
194
+ 13:57:36 [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
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
+ 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
+ 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
@@ -0,0 +1 @@
1
+ 1788864877
@@ -2,6 +2,35 @@
2
2
 
3
3
  Формат: Keep a Changelog; версии — semver. Дата — дата выпуска версии.
4
4
 
5
+ ## [0.7.0] — 2026-09-08
6
+
7
+ Тема: «Ship & Setup» — двухъярусное извлечение без обязательного браузера и модульная установка.
8
+
9
+ ### Добавлено
10
+
11
+ - **Двухъярусное извлечение** (`crawler.py`): по умолчанию страницы читает собственный HTTP-движок (httpx, миллисекунды, ноль браузера); headless-Chromium включается автоматически только когда страница — JS-оболочка (детект: app-root-разметка, пустое тело, экранирование контента) или HTTP-ярус не смог. Замеры: Wikipedia 0.61 c, GitHub 1.0 c по HTTP против ~4–5 c с браузером. `BATHYS_BROWSER=off|auto|always` управляет режимом; браузер больше не обязательная зависимость запуска — `bathys setup` ставит его для JS-страниц, но сервер работает и без него.
12
+ - **`bathys setup`** — полная установка одним вызовом: браузерный движок (пропускается по `--skip-browser`) → интеграция всех найденных харнессов → субагент → итоговые подсказки. Идемпотентен; после `pip install bathys` пользователю достаточно `bathys setup`.
13
+ - **Точечная установка `bathys install <HARNESS>`**: `bathys install hermes` пишет только Hermes, отсутствующий конфиг целевого харнесса создаётся с нуля (проверено: opencode-конфиг создан в его формате); `--list` печатает все таргеты с их путями и статусом; неизвестное имя — понятная ошибка.
14
+
15
+ ### Изменено
16
+
17
+ - README: идентичность переписана («самостоятельный продукт, а не обёртка над чужими сервисами: реализует весь конвейер сам»); основной путь установки — `pip install bathys` + `bathys setup`, альтернативы (npm, исходники, минимальные образы) и ручное подключение убраны под `<details>`-каты.
18
+ - Синтаксис вызова диспетчера: `bathys` (сервер) / `bathys setup` / `bathys install [targets]` / `bathys doctor`; справка `--help` обновлена.
19
+
20
+ ## [0.6.2] — 2026-09-08
21
+
22
+ Публикационная волна: PyPI + NPM + кастомные интеграции.
23
+
24
+ ### Добавлено
25
+
26
+ - **Каталог `integrations/`** — кастомные интеграции с конвенцией (README-установщик-assets): `hermes/` (установщик `install.py`: создаёт `~/.hermes/config.yaml` с `mcp_servers.bathys`, ставит субагента; идемпотентен, бэкап; ловит и чинит артефакт старой установки), `pi/` (дроп-ин `assets/bathys-rules.md` для `AGENTS.md` — у Pi нет MCP-конфига), `zcode/` (комплект: конфиг + субагент + скиллы + дроп-ин).
27
+ - **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`.
28
+ - **Живые интеграции на машине мейнтейнера**: Hermes — `config.yaml` + субагент установлены идемпотентно.
29
+
30
+ ### Изменено
31
+
32
+ - **Метаданные пакета** (PyPI-витрина): `description` переведён на канон продукта («Unified local deep-research search service…», вместо обёрточной формулировки про SearXNG/Crawl4AI); добавлены `keywords` (mcp, deep-research, local-first…), `classifiers`, секция `[project.urls]` (Homepage/Repository/Changelog/Documentation).
33
+
5
34
  ## [0.6.1] — 2026-09-08
6
35
 
7
36
  Расширение автодетекта `bathys install` на базовый набор харнессов (форматы подтверждены первоисточниками каждого клиента).
@@ -1,51 +1,103 @@
1
+ Metadata-Version: 2.5
2
+ Name: bathys
3
+ Version: 0.7.0
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
4
30
 
5
- **Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.** Один процесс владеет всем конвейером — поиск → извлечение → дистилляция под запрос → кэш — и всей стратегией ресёрча: что искать, какие страницы читать, сколько вернуть. Агент видит лишь интерфейс из четырёх MCP-инструментов; SearXNG и Crawl4AI работают внутри как сменные движки. Облачных квот и API-ключей нет, LLM внутри нет — дистилляция детерминированная (BM25).
31
+ **Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.** Это самостоятельный продукт, а не обёртка над чужими сервисами: Bathys реализует весь конвейер сам — метапоиск с дедупликацией и живучестью к блокировкам, двухъярусное извлечение (HTTP-движок по умолчанию, headless-браузер только для JS-страниц), пятистадийную дистилляцию под запрос с жёсткими бюджетами, TTL-кэш сырца, robots-этику, метрики и диагностику. Метапоиск и извлечение оформлены как сменные внутренние движки (SearXNG, Crawl4AI) — их можно заменить, продукт останется Bathys. Облачных квот нет; LLM внутри нет — синтез остаётся за вызывающим агентом, дистилляция детерминированная (BM25).
6
32
 
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.7.0-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
+ Три команды от чистой системы до работающего поиска (Python ≥ 3.10):
43
+
44
+ ```bash
45
+ pip install bathys # пакет: сервер + bathys setup/install/doctor
46
+ bathys setup # браузер для JS-страниц → все найденные харнессы → субагент
47
+ bathys doctor # самодиагностика стека
48
+ ```
49
+
50
+ `setup` идемпотентен — повторный запуск ничего не ломает. SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
51
+
52
+ <details>
53
+ <summary><b>Альтернативные пути установки</b> (npm, исходники, минимальные образы)</summary>
54
+
55
+ **npm** (Node-first окружения — обёртка ставит Python-пакет сама):
56
+
57
+ ```bash
58
+ npm install -g bathys-mcp
59
+ bathys-mcp setup
60
+ ```
61
+
62
+ **Из исходников** (разработка):
17
63
 
18
64
  ```bash
19
65
  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 # диагностика стека одним запуском
66
+ python3.12 -m venv .venv && .venv/bin/pip install -e .
67
+ .venv/bin/bathys setup
68
+ .venv/bin/python -m unittest discover -s tests # юнит-тесты без сети
25
69
  ```
26
70
 
27
- В минимальном контейнерном образе без `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)).
71
+ В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md).
72
+
73
+ </details>
28
74
 
29
75
  ## 🔌 Подключение к харнессу
30
76
 
31
- **Автоматически.** Одна команда найдёт харнессы по стандартным путям, пропишет сервер с бэкапом конфига и (с `--with-agent`) скопирует субагента:
77
+ **Автоматически — весь стек:** `bathys setup` (см. выше) прописывает сервер во все найденные харнессы.
78
+
79
+ **Точечно — когда нужно именно здесь:**
32
80
 
33
81
  ```bash
34
- .venv/bin/bathys install # сначала --dry-run, чтобы увидеть план
82
+ bathys install # автодетект всех установленных харнессов
83
+ bathys install hermes # только Hermes (отсутствующий конфиг создастся)
84
+ bathys install --list # все поддерживаемые таргеты
85
+ bathys install --print-config # готовые блоки для ручной вставки
35
86
  ```
36
87
 
37
- Детектируются zcode, Claude Code, Claude Desktop, Cursor; повторный запуск ничего не меняет — запись идемпотентна. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`.
88
+ Детектируются 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`. Кастомные интеграции — в каталоге [integrations/](integrations/).
89
+
90
+ <details>
91
+ <summary><b>Ручное подключение</b> (когда правите конфиги сами)</summary>
38
92
 
39
- **Вручную.** Bathys — stdio MCP-сервер, конфиг везде один и тот же блок `mcpServers`; от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к вашему клону (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна.
93
+ Bathys — stdio MCP-сервер: блок `mcpServers` один и тот же везде, от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к бинарнику (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна. Готовые блоки под каждый клиент: `bathys install --print-config`.
40
94
 
41
95
  ```json
42
96
  {
43
97
  "mcpServers": {
44
98
  "bathys": {
45
- "command": "/path/to/bathys/.venv/bin/bathys",
46
- "env": {
47
- "BATHYS_SEARXNG_HOME": "/path/to/bathys/.runtime/searxng-home"
48
- }
99
+ "command": "/path/to/bathys",
100
+ "env": { "BATHYS_SEARXNG_HOME": "/path/to/searxng-home" }
49
101
  }
50
102
  }
51
103
  }
@@ -58,6 +110,8 @@ python3.12 -m venv .venv
58
110
  | Cursor | [docs/integrations/cursor.md](docs/integrations/cursor.md) |
59
111
  | Любой другой MCP-клиент | [docs/integrations/generic-mcp.md](docs/integrations/generic-mcp.md) |
60
112
 
113
+ </details>
114
+
61
115
  ## 🧠 Научить агента работать эффективно
62
116
 
63
117
  Конфиг — только половина дела. Из коробки харнесс получает **instructions-playbook** (матрицу выбора инструментов), **annotations** и **три стратегии-промпта** — `bathys_deep_research`, `bathys_source_audit`, `bathys_fresh_scan`, — так что выбирает инструменты Bathys уже нативно. Сильнее — профиль: субагент [`agents/bathys-researcher.md`](agents/bathys-researcher.md) с двумя скиллами, которому глубокий ресёрч делегируется целиком; для клиентов, не показывающих MCP instructions, — дроп-ин [`agents/HARNESS-DROPIN.md`](agents/HARNESS-DROPIN.md) в `AGENTS.md` / `CLAUDE.md` / `.cursor/rules`.
@@ -122,11 +176,11 @@ docs/
122
176
  └── meta/ # стайлгайд · глоссарий
123
177
  ```
124
178
 
125
- Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, дроп-ин для харнессов) · [tests/](tests/) (72 юнит-теста без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [CHANGELOG.md](CHANGELOG.md).
179
+ Вне `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
180
 
127
181
  ## 📍 Статус
128
182
 
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).
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).
130
184
 
131
185
  Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
132
186
 
@@ -1,63 +1,77 @@
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
16
4
 
17
- **Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.** Один процесс владеет всем конвейером — поиск → извлечение → дистилляция под запрос → кэш — и всей стратегией ресёрча: что искать, какие страницы читать, сколько вернуть. Агент видит лишь интерфейс из четырёх MCP-инструментов; SearXNG и Crawl4AI работают внутри как сменные движки. Облачных квот и API-ключей нет, LLM внутри нет — дистилляция детерминированная (BM25).
5
+ **Единый локальный поисковый сервис глубокого ресёрча для ИИ-агентов.** Это самостоятельный продукт, а не обёртка над чужими сервисами: Bathys реализует весь конвейер сам — метапоиск с дедупликацией и живучестью к блокировкам, двухъярусное извлечение (HTTP-движок по умолчанию, headless-браузер только для JS-страниц), пятистадийную дистилляцию под запрос с жёсткими бюджетами, TTL-кэш сырца, robots-этику, метрики и диагностику. Метапоиск и извлечение оформлены как сменные внутренние движки (SearXNG, Crawl4AI) — их можно заменить, продукт останется Bathys. Облачных квот нет; LLM внутри нет — синтез остаётся за вызывающим агентом, дистилляция детерминированная (BM25).
18
6
 
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.7.0-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
+ Три команды от чистой системы до работающего поиска (Python ≥ 3.10):
17
+
18
+ ```bash
19
+ pip install bathys # пакет: сервер + bathys setup/install/doctor
20
+ bathys setup # браузер для JS-страниц → все найденные харнессы → субагент
21
+ bathys doctor # самодиагностика стека
22
+ ```
23
+
24
+ `setup` идемпотентен — повторный запуск ничего не ломает. SearXNG ставить руками не нужно: бэкенд поднимется сам при первом поиске (внешний инстанс → docker → нативный режим). Браузер нужен только для JS-страниц: обычные страницы Bathys читает собственным HTTP-движком, `BATHYS_BROWSER=off` отключает браузерный ярус полностью.
25
+
26
+ <details>
27
+ <summary><b>Альтернативные пути установки</b> (npm, исходники, минимальные образы)</summary>
28
+
29
+ **npm** (Node-first окружения — обёртка ставит Python-пакет сама):
30
+
31
+ ```bash
32
+ npm install -g bathys-mcp
33
+ bathys-mcp setup
34
+ ```
35
+
36
+ **Из исходников** (разработка):
29
37
 
30
38
  ```bash
31
39
  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 # диагностика стека одним запуском
40
+ python3.12 -m venv .venv && .venv/bin/pip install -e .
41
+ .venv/bin/bathys setup
42
+ .venv/bin/python -m unittest discover -s tests # юнит-тесты без сети
37
43
  ```
38
44
 
39
- В минимальном контейнерном образе без `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)).
45
+ В минимальном контейнерном образе без `ensurepip` venv собирается через `get-pip.py` — ветка в [docs/getting-started/install.md](docs/getting-started/install.md).
46
+
47
+ </details>
40
48
 
41
49
  ## 🔌 Подключение к харнессу
42
50
 
43
- **Автоматически.** Одна команда найдёт харнессы по стандартным путям, пропишет сервер с бэкапом конфига и (с `--with-agent`) скопирует субагента:
51
+ **Автоматически — весь стек:** `bathys setup` (см. выше) прописывает сервер во все найденные харнессы.
52
+
53
+ **Точечно — когда нужно именно здесь:**
44
54
 
45
55
  ```bash
46
- .venv/bin/bathys install # сначала --dry-run, чтобы увидеть план
56
+ bathys install # автодетект всех установленных харнессов
57
+ bathys install hermes # только Hermes (отсутствующий конфиг создастся)
58
+ bathys install --list # все поддерживаемые таргеты
59
+ bathys install --print-config # готовые блоки для ручной вставки
47
60
  ```
48
61
 
49
- Детектируются zcode, Claude Code, Claude Desktop, Cursor; повторный запуск ничего не меняет — запись идемпотентна. Поддерживаются `--print-config` (готовые блоки для ручной вставки) и `--searxng-home <путь>`.
62
+ Детектируются 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`. Кастомные интеграции — в каталоге [integrations/](integrations/).
63
+
64
+ <details>
65
+ <summary><b>Ручное подключение</b> (когда правите конфиги сами)</summary>
50
66
 
51
- **Вручную.** Bathys — stdio MCP-сервер, конфиг везде один и тот же блок `mcpServers`; от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к вашему клону (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна.
67
+ Bathys — stdio MCP-сервер: блок `mcpServers` один и тот же везде, от харнесса зависит только файл, в который его кладут. `command` — абсолютный путь к бинарнику (`~` внутри JSON не раскрывается); `BATHYS_SEARXNG_HOME` опциональна. Готовые блоки под каждый клиент: `bathys install --print-config`.
52
68
 
53
69
  ```json
54
70
  {
55
71
  "mcpServers": {
56
72
  "bathys": {
57
- "command": "/path/to/bathys/.venv/bin/bathys",
58
- "env": {
59
- "BATHYS_SEARXNG_HOME": "/path/to/bathys/.runtime/searxng-home"
60
- }
73
+ "command": "/path/to/bathys",
74
+ "env": { "BATHYS_SEARXNG_HOME": "/path/to/searxng-home" }
61
75
  }
62
76
  }
63
77
  }
@@ -70,6 +84,8 @@ python3.12 -m venv .venv
70
84
  | Cursor | [docs/integrations/cursor.md](docs/integrations/cursor.md) |
71
85
  | Любой другой MCP-клиент | [docs/integrations/generic-mcp.md](docs/integrations/generic-mcp.md) |
72
86
 
87
+ </details>
88
+
73
89
  ## 🧠 Научить агента работать эффективно
74
90
 
75
91
  Конфиг — только половина дела. Из коробки харнесс получает **instructions-playbook** (матрицу выбора инструментов), **annotations** и **три стратегии-промпта** — `bathys_deep_research`, `bathys_source_audit`, `bathys_fresh_scan`, — так что выбирает инструменты Bathys уже нативно. Сильнее — профиль: субагент [`agents/bathys-researcher.md`](agents/bathys-researcher.md) с двумя скиллами, которому глубокий ресёрч делегируется целиком; для клиентов, не показывающих MCP instructions, — дроп-ин [`agents/HARNESS-DROPIN.md`](agents/HARNESS-DROPIN.md) в `AGENTS.md` / `CLAUDE.md` / `.cursor/rules`.
@@ -134,11 +150,11 @@ docs/
134
150
  └── meta/ # стайлгайд · глоссарий
135
151
  ```
136
152
 
137
- Вне `docs/`: [agents/](agents/) (субагент `bathys-researcher`, дроп-ин для харнессов) · [tests/](tests/) (72 юнит-теста без сети) · [scripts/](scripts/) (smoke, stdio_check, метрики) · [CHANGELOG.md](CHANGELOG.md).
153
+ Вне `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
154
 
139
155
  ## 📍 Статус
140
156
 
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).
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).
142
158
 
143
159
  Репозиторий: `github.com/Korrnals/bathys`. До 1.0 остаются публикация пакета `bathys` на PyPI (имя свободно, публикация планируется к 1.0) и первый прогон Docker-образа; CI с matrix 3.10–3.12 уже в репозитории.
144
160
 
@@ -30,6 +30,7 @@
30
30
  | `BATHYS_SEARCH_MIN_INTERVAL` | `1.0` | float, с | вежливый минимальный интервал между поисками к бэкенду (F-301); 0 — без пауз |
31
31
  | `BATHYS_SEARCH_RETRIES` | `2` | int | дoп. попытки при пустой/заблокированной выдаче с ротацией наборов движков и паузой 1.5s×n (F-101); 0–3 |
32
32
  | `BATHYS_DIVE_CONCURRENCY` | `4` | int | параллельные нырки страниц в `deep_research` (F-301); 1–8 |
33
+ | `BATHYS_BROWSER` | `auto` | режим | двухъярусное извлечение: `auto` — HTTP-движок первым, браузер только для JS-страниц; `off` — без браузера; `always` — только браузер (отладка) |
33
34
  | `BATHYS_ROBOTS` | `1` | bool | уважать robots.txt при прямых нырках страниц (F-303); fail-open при недоступном robots; поиск не затрагивается |
34
35
  | `BATHYS_METRICS` | `1` | bool | локальный журнал вызовов `{DATA_DIR}/metrics.jsonl` (F-304); выключается полностью |
35
36
  | `BATHYS_ENGINE_BRAVE_KEY` | — | str | API-ключ Brave Search: одним ключом включает движок `brave` в генерируемых настройках SearXNG нативного режима (F-203, `services.render_settings`); для docker-режима — пропишите движок в settings сами |
@@ -22,6 +22,7 @@
22
22
  | `BATHYS_SEARCH_MIN_INTERVAL` | `1.0` | вежливая пауза между поисками к бэкенду, сек |
23
23
  | `BATHYS_SEARCH_RETRIES` | `2` | доп. попытки при пустой выдаче (ротация движков с паузами), 0–3 |
24
24
  | `BATHYS_DIVE_CONCURRENCY` | `4` | параллельные чтения страниц в `deep_research`, 1–8 |
25
+ | `BATHYS_BROWSER` | `auto` | режим | двухъярусное извлечение: `auto` — HTTP-движок первым, браузер только для JS-страниц; `off` — без браузера; `always` — только браузер (отладка) |
25
26
  | `BATHYS_ROBOTS` | `1` | уважать robots.txt при чтении страниц (отказ — пометкой, не ошибкой) |
26
27
  | `BATHYS_METRICS` | `1` | писать локальный журнал вызовов `~/.local/share/bathys/metrics.jsonl` |
27
28
  | `BATHYS_ENGINE_BRAVE_KEY` | — | ключ Brave Search API: включает движок `brave` в настройках нативного SearXNG одним env |
@@ -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` из корня репозитория).