Files
python-sdk/pkg/hanzo-tools/pyproject.toml
T
zooqueenandHanzo Dev e7000de487 feat(tools): research action on net/fetch — cited answers over /v1/ask
Search finds pages, web_read reads one, research is the whole loop behind a
single door: the live cloud answer engine (api.hanzo.ai /v1/ask, mode=research)
plans queries, searches, reads the best pages and writes an answer that cites
them. It is an action on the same fetch tool, not a new package — search, read
and research are one concern (the web) and share one client and one auth.

The engine replies as server-sent events, which is the cloud's other reply
shape, so HanzoCloud gains stream() beside get/post: the base URL, the auth
header and the error mapping stay in the one place that already owns them.
Each `data:` frame is yielded as a typed event (status | sources | text |
follow_ups | done | error); the terminal [DONE] sentinel ends the stream and is
never an event. Frames accumulate into {answer, sources, follow_ups}; `deep`
normalizes to `research` (one pass, two names) and any other mode is refused
rather than silently downgraded.

hanzo-tools 0.3.4->0.3.5, -net 0.1.3->0.1.4, and -net's floor moves to
hanzo-tools>=0.3.5 so the action cannot install against a client with no
stream(). Tests replay a canned SSE stream through the real parser.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-04 22:48:19 -07:00

101 lines
2.8 KiB
TOML

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "hanzo-tools"
version = "0.3.5"
description = "Hanzo AI tools - core infrastructure and tool bundles"
readme = "README.md"
requires-python = ">=3.12"
license = { text = "MIT" }
authors = [{ name = "Hanzo Industries Inc", email = "[email protected]" }]
classifiers = [
"Programming Language :: Python :: 3",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
]
keywords = ["hanzo", "tools", "mcp", "ai", "agent"]
# Core dependencies (merged from hanzo-tools-core)
dependencies = [
"mcp>=1.25.0",
"fastmcp>=2.14.1",
"pydantic>=2.12.5",
"typing-extensions>=4.13.0",
"aiofiles>=24.1.0",
]
[project.optional-dependencies]
# Individual tool packages
filesystem = ["hanzo-tools-fs>=0.1.0"]
shell = ["hanzo-tools-shell>=0.5.4"]
browser = ["hanzo-tools-browser>=0.1.0"]
llm = ["hanzo-tools-llm>=0.1.0"]
database = ["hanzo-tools-database>=0.1.0"]
memory = ["hanzo-tools-memory>=0.1.0"]
agent = ["hanzo-tools-agent>=0.1.0"]
editor = ["hanzo-tools-editor>=0.1.0"]
jupyter = ["hanzo-tools-jupyter>=0.1.0"]
lsp = ["hanzo-tools-lsp>=0.1.0"]
refactor = ["hanzo-tools-refactor>=0.1.0"]
vector = ["hanzo-tools-vector>=0.1.0"]
todo = ["hanzo-tools-todo>=0.1.0"]
config = ["hanzo-tools-config>=0.1.0"]
mcp_tools = ["hanzo-tools-mcp>=0.1.0"]
reasoning = ["hanzo-tools-reasoning>=0.1.0"]
computer = ["hanzo-tools-computer>=0.1.0"]
code = ["hanzo-tools-code>=0.1.0"]
vcs = ["hanzo-tools-vcs>=0.1.0"]
net = ["hanzo-tools-net>=0.1.0"]
# Bundles
dev = [
"hanzo-tools-fs>=0.1.0",
"hanzo-tools-shell>=0.5.4",
"hanzo-tools-todo>=0.1.0",
"hanzo-tools-reasoning>=0.1.0",
"hanzo-tools-config>=0.1.0",
"hanzo-tools-editor>=0.1.0",
"hanzo-tools-lsp>=0.1.0",
"hanzo-tools-refactor>=0.1.0",
]
ai = [
"hanzo-tools-llm>=0.1.0",
"hanzo-tools-agent>=0.1.0",
"hanzo-tools-memory>=0.1.0",
]
all = [
"hanzo-tools-fs>=0.1.0",
"hanzo-tools-shell>=0.5.4",
"hanzo-tools-browser>=0.1.0",
"hanzo-tools-llm>=0.1.0",
"hanzo-tools-database>=0.1.0",
"hanzo-tools-memory>=0.1.0",
"hanzo-tools-agent>=0.1.0",
"hanzo-tools-editor>=0.1.0",
"hanzo-tools-jupyter>=0.1.0",
"hanzo-tools-lsp>=0.1.0",
"hanzo-tools-refactor>=0.1.0",
"hanzo-tools-vector>=0.1.0",
"hanzo-tools-todo>=0.1.0",
"hanzo-tools-reasoning>=0.1.0",
"hanzo-tools-config>=0.1.0",
"hanzo-tools-mcp>=0.1.0",
"hanzo-tools-computer>=0.1.0",
"hanzo-tools-code>=0.1.0",
"hanzo-tools-vcs>=0.1.0",
"hanzo-tools-net>=0.1.0",
]
[project.urls]
"Homepage" = "https://github.com/hanzoai/python-sdk"
"Bug Tracker" = "https://github.com/hanzoai/python-sdk/issues"
[tool.setuptools.packages.find]
where = ["."]
include = ["hanzo_tools*"]
[tool.setuptools.package-data]
hanzo_tools = ["py.typed"]