-
Notifications
You must be signed in to change notification settings - Fork 7
Releases: Oaklight/ToolRegistry
Releases · Oaklight/ToolRegistry
v0.11.2
What's Changed
- ci(notify-downstream): gate dispatch on PyPI propagation by @clementine-oaklight[bot] in #170
- fix: simplify nullable anyOf schemas for MCP compatibility by @Oaklight in #172
New Contributors
- @clementine-oaklight[bot] made their first contribution in #170
Full Changelog: v0.11.1...v0.11.2
Assets 4
v0.11.1
Summary
- Hardened parameter schema generation so unresolved or unsupported annotations fall back per parameter instead of dropping the whole tool schema.
- Normalized empty or non-object tool parameter schemas to valid object schemas.
- Fixed
discover_toolsschema generation for postponed annotations. - Normalized imported MCP input schemas and preserved richer OpenAPI schema details.
Installation
pip install -U toolregistry==0.11.1
Full Changelog
Assets 2
v0.11.0
Summary
- Add configurable tool name separator support.
- Add admin Schema and Discover tooling improvements.
- Add configurable/persisted
search_hintsupport and discovery/admin fixes. - Update citation and contribution workflow docs.
Validation
pre-commit run --all-filespython -m pytest tests/ -qpython -m buildtwine check dist/*
Assets 2
v0.10.3
What's Changed
Features
- Progressive tool disclosure:
discover_toolsdescription now dynamically lists deferred tool names and summaries, so LLMs know what capabilities exist beyond the initial tool list - llm/ subpackage: Internal LLM-related modules (
tool_calls,content_blocks,truncation,discovery,_rosetta) are now organized undertoolregistry.llm
Docs
- Added
reference/directory with architecture overview and ADRs (design decision records)
Notes
- Public API (
from toolregistry import ...) is unchanged - Internal module paths moved from
toolregistry.types/toolregistry.tool_discoverytotoolregistry.llm.*— these were never part of the public API
Assets 4
v0.10.1
What's New
Added
-
disable_by_tags()— Tag-based bulk disable (#158)- Add
disable_by_tags(tags, *, match="any", reason=...)toToolRegistryfor disabling tools in bulk by theirToolTagvalues match="any"(default): disables a tool if it has at least one of the specified tagsmatch="all": disables a tool only if it carries every specified tag- Already-disabled tools are skipped and not double-counted
- Returns a list of tool names that were newly disabled by this call
- Add
-
Post-registration hook (#159)
- Add
add_post_register_hook(hook)toToolRegistryfor registering hooks invoked after each tool is registered - Hook signature:
PostRegisterHook = Callable[[str, Tool, ToolRegistry], str | None] - Returning a non-empty string from a hook automatically disables the tool with that string as the reason; returning
Noneleaves the tool enabled - Multiple hooks are supported and invoked in registration order; exceptions inside hooks are caught and logged without propagating
PostRegisterHookis exported from thetoolregistrytop-level package
- Add
-
PythonSource.kwargs— constructor arguments in config (#160)- Add
kwargs: dict[str, Any]field to thepythontool source in declarative config files - Allows passing keyword arguments to the class constructor when a
classentry is loaded viaregister_from_class()
- Add
Dependencies
- Update vendored
sparse_searchmodule 0.3.2 → 0.4.0 (addsrrf(),mmr(),jaccard_similarity()) - Sync vendored
yamlandstructlogmetadata with upstream zerodep
Installation
pip install toolregistry==0.10.1
Full Changelog: v0.10.0...v0.10.1
Assets 2
v0.10.0
What's Changed
Breaking Changes
thought→toolcall_reason: Renamed the injected chain-of-thought field to avoid collisions with tools that natively declare athoughtparameter (e.g. ThinkTool)
New Features
- Admin panel: tool source display & config persistence (#121) — Sources tab, source badges/filter,
/api/sourcesand/api/configendpoints, i18n (EN/ZH) - Config serialization —
to_dict()on all config dataclasses,save_config()for writing ToolConfig back to JSON/YAML files run_raw()/arun_raw()— New methods that raise exceptions directly, separating error handling from LLM error formatting (#129)
Improvements
- Edge-case tests for complex type JSON Schema generation (#128)
_update_configcognitive complexity reduced (22 → 11)- Vendored httpclient upgraded to 0.4.1
llm-rosettadependency upper bound relaxed to<0.7.0
Docs & Infra
- Added
AGENTS.md+CLAUDE.mdsymlink - Ecosystem tables with repo links across all READMEs
- complexipy switched to local pre-commit hook
Assets 2
v0.9.1
New Features
- Tool Source Tracking (#125, #130) —
ToolMetadatagainssourceandsource_detailfields for tracking tool provenance across all integrations
Bug Fixes
- Parameter Introspection Warnings (#126, #131) — emit
UserWarninginstead of silently skipping*args/**kwargsor producing empty schemas
Refactoring
- Extract route handlers and helpers to reduce complexity
- Rename executor
ExecutionStatus→HandleStatus
CI
- Add pre-commit with ruff, ty type check, and complexipy
- Split CI into lint + test jobs
Docs
- Rewrite README as concise ecosystem landing page
- Add GitHub release badge
Full Changelog: v0.9.0...v0.9.1
Assets 2
v0.9.0
Highlights
- Admin Panel: enriched tool metadata UI, per-tool permission evaluation, runtime think/defer control, i18n (EN/ZH), async migration
- Dependency diet: removed
httpx,PyYAML, andjsonreffrom core/OpenAPI dependencies — replaced with zerodep vendored modules. Theopenapiextra now has zero external dependencies.
New Features
- Admin Panel enrichment: metadata badges, tool detail modal, permissions tab (#133)
- Runtime control for
think_augmentanddefervia API and Web UI (#134, #135) - Admin Panel i18n with EN/ZH language switching (#137)
Refactoring
- Replace
httpxwith zerodep vendored HTTP client (#139) - Replace
PyYAMLandjsonrefwith zerodep vendored modules (#140, #141) - Admin Panel async migration to zerodep
httpserver(#136)
Full Changelog: v0.8.0...v0.9.0
Assets 4
v0.8.0
What's Changed
New Features
- Declarative tool config loader — load tool configurations from JSONC/YAML files
Improvements
- Reorganize integration packages under
integrations/parent package - Consolidate mixin modules into
_mixins/package - Consolidate zerodep modules into
_vendor/ - Tighten
llm-rosettadependency to>=0.5.1,<0.6.0
Fixes
- Improve error message for classes with required constructor args (#127)
- Resolve
tytype check error with cast for dict entry
Notes
- All old import paths preserved via deprecation shims — no breaking changes
Full Changelog: v0.7.0...v0.8.0
Assets 2
v0.7.0
What's Changed
- feat: add ToolTag enum and ToolMetadata model by @Oaklight in #84
- feat: add permission handler protocol and registry integration by @Oaklight in #85
- feat: add permission rule engine with policy integration by @Oaklight in #86
- feat: add locality field to ToolMetadata by @Oaklight in #91
- refactor: Executor to pluggable Backend protocol architecture by @Oaklight in #93
- refactor: split ToolRegistry into mixin classes by @Oaklight in #95
- feat: persistent connections for MCP and OpenAPI by @Oaklight in #98
- Migrate and adapt core unit tests from unit_tests branch by @Oaklight in #99
- feat: tag-based filtering and stable sorting for get_tools_json() by @Oaklight in #102
- feat: result size management with truncation and persistence by @Oaklight in #103
- feat: add think-augmented function calling by @Oaklight in #104
- feat: add ToolSearchTool for BM25-based tool discovery by @Oaklight in #108
- refactor: rename public API for clarity by @Oaklight in #109
- feat: support multimodal return types (ImageBlock) in tool results by @Oaklight in #110
- feat: make think-augmented tool calling configurable by @Oaklight in #111
- refactor: rename Tool-level API for consistency by @Oaklight in #112
- refactor: unify API naming for consistency by @Oaklight in #115
- feat: integrate ToolSearchTool as first-class registry tool by @Oaklight in #114
- fix: replace loguru dependency with vendored zerodep/structlog by @Oaklight in #117
- feat: progressive disclosure with discover_tools and deferred summaries by @Oaklight in #118
- test: add integration tests for OpenAPI, LangChain, MCP and tool_wrapper by @Oaklight in #119
Full Changelog: v0.6.1...v0.7.0