Skip to content

docs: update tool_override resolution order after praisonai-tools discovery moved to canonical resolver#2117

Merged
MervinPraison merged 1 commit into
mainfrom
claude/issue-2109-20260717-1023
Jul 17, 2026
Merged

docs: update tool_override resolution order after praisonai-tools discovery moved to canonical resolver#2117
MervinPraison merged 1 commit into
mainfrom
claude/issue-2109-20260717-1023

Conversation

@praisonai-triage-agent

Copy link
Copy Markdown
Contributor

Fixes #2109

Summary

Updates docs to reflect that create_tool_registry_with_overrides no longer re-implements praisonai-tools package discovery — that source is now owned solely by the canonical ToolResolver (upstream PraisonAI#3122 / commit 9be1149). The wrapper still owns its five unique sources and the security-gated tools.py autoload.

Changes

  • docs/cli/tools-override.mdx
    • Replaced the outdated 4-step resolution comment with the new 5-step wrapper ladder + delegation note.
    • Split the "Default Custom Tool Directories" table into autoload-gated files vs. always-scanned default dirs (fixes conflated priority).
    • Added a What the wrapper does not own section with a two-cluster Mermaid diagram (amber wrapper stages, dark-red gate, teal canonical resolver — per AGENTS.md §3.1).
  • docs/features/security-environment-variables.mdx — added a <Note> under PRAISONAI_ALLOW_TEMPLATE_TOOLS explaining why the two _ALLOW_*_TOOLS gates coexist after #3122.
  • docs/features/tool-resolver.mdx — extended the CLI/recipe resolver note with a one-sentence #3122 cross-reference.

No new pages created. docs/concepts/* untouched. No docs.json changes required.

Generated with Claude Code

…covery moved to canonical resolver (fixes #2109)

Co-authored-by: Mervin Praison <MervinPraison@users.noreply.github.com>
@MervinPraison

Copy link
Copy Markdown
Owner

@coderabbitai review

@MervinPraison

Copy link
Copy Markdown
Owner

/review

@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@MervinPraison, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 44dcca07-a103-4582-b8a8-6f792ab85555

📥 Commits

Reviewing files that changed from the base of the PR and between e1d67b0 and e170804.

📒 Files selected for processing (3)
  • docs/cli/tools-override.mdx
  • docs/features/security-environment-variables.mdx
  • docs/features/tool-resolver.mdx
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/issue-2109-20260717-1023

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@MervinPraison MervinPraison added pipeline/awaiting-merge-gate FINAL done; waiting for merge gate / CI pipeline/blocked:ci Blocked: CI not green on HEAD labels Jul 17, 2026
@MervinPraison

Copy link
Copy Markdown
Owner

@gemini review this PR

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the documentation across several files to reflect changes from issue #3122, clarifying the tool resolution order and the separation of responsibilities between the wrapper and the canonical ToolResolver. The review feedback points out a potential discrepancy where the codebase might still contain the old package discovery block that the documentation claims was removed, and suggests breaking up an extremely long line in the markdown file to improve readability.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +70 to +73
# praisonai-tools package discovery and praisonaiagents built-ins are
# NOT re-implemented here (fix: #3122). They are owned by
# praisonai_code.tool_resolver.ToolResolver, which resolve_tools()
# consults after this registry. See /docs/features/tool-resolver.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The documentation states that praisonai-tools package discovery is no longer re-implemented in the wrapper (create_tool_registry_with_overrides). However, in praisonai/templates/tool_override.py (lines 359-369), the package discovery block for praisonai_tools is still present and active. To avoid user confusion and maintain consistency between the documentation and the codebase, please ensure that the code in tool_override.py is updated to remove this block (as part of resolving #3122), or update this documentation to reflect the current state of the code.

### CLI and recipes use the same resolver (PR #1857, PR #2059, PR #2499, PR #2935)

`praisonai --tools tavily_search,my_tool "..."` goes through `ToolResolver.resolve(name, instantiate=True)`, identical to the YAML path. Recipe and template tool loading via `resolve_tools()` also delegates to `ToolResolver` (PR #2059), so wrapper `ToolRegistry` registrations, `praisonai-tools` package tools, and core SDK plugin tools are reachable from recipes and templates — not just the agent build path. As of PR #2499 the same chain also handles `--rewrite-tools` (query-rewrite), `--expand-tools` (prompt-expansion), and `research --tools`. As of PR #2935, the file-path branches of the same four flags also route through `ToolResolver.load_functions_from_module` (previously each site hand-rolled `_safe_loader.load_user_module + inspect.getmembers`).
`praisonai --tools tavily_search,my_tool "..."` goes through `ToolResolver.resolve(name, instantiate=True)`, identical to the YAML path. Recipe and template tool loading via `resolve_tools()` also delegates to `ToolResolver` (PR #2059), so wrapper `ToolRegistry` registrations, `praisonai-tools` package tools, and core SDK plugin tools are reachable from recipes and templates — not just the agent build path. As of PR #2499 the same chain also handles `--rewrite-tools` (query-rewrite), `--expand-tools` (prompt-expansion), and `research --tools`. As of PR #2935, the file-path branches of the same four flags also route through `ToolResolver.load_functions_from_module` (previously each site hand-rolled `_safe_loader.load_user_module + inspect.getmembers`). As of [PraisonAI#3122](https://github.com/MervinPraison/PraisonAI/issues/3122) the wrapper no longer re-implements `praisonai-tools` package discovery — that source is now owned exclusively by `ToolResolver._resolve_from_praisonai_tools`, keeping a single implementation for external-tool discovery. The wrapper still builds its unique sources (default dirs, `TEMPLATE.yaml` `tools_sources`, `--tools`/`--tools-dir`, and the `PRAISONAI_ALLOW_TEMPLATE_TOOLS`-gated `tools.py` autoload) and hands them to the resolver as a registry.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

This line is extremely long (nearly 1,200 characters), which makes it difficult to read and maintain in markdown editors and git diffs. Consider breaking this paragraph into multiple lines or smaller paragraphs to improve readability.

@MervinPraison MervinPraison added pipeline/merge-ready Eligible for merge gate auto-merge and removed pipeline/awaiting-merge-gate FINAL done; waiting for merge gate / CI pipeline/blocked:ci Blocked: CI not green on HEAD labels Jul 17, 2026
@MervinPraison

Copy link
Copy Markdown
Owner

Merge gate scan — eligible for assessment. Claude merge gate will assess and may auto-merge if MERGE_GATE_VERDICT: APPROVE.

@praisonai-triage-agent

Copy link
Copy Markdown
Contributor Author

MERGE_GATE_VERDICT: APPROVE

All checklist items pass:

  • No blocking labels; labels are pipeline/merge-ready and claude-merge-gate-active.
  • 3 files changed (70+/15−): docs/cli/tools-override.mdx, docs/features/security-environment-variables.mdx, docs/features/tool-resolver.mdx. No docs/concepts/, docs.json, .github/workflows/, or mint.json changes.
  • Size: 85 lines / 3 files — within docs-primary limits (1200/40).
  • CI on HEAD e1708044: pipeline-sync ✅, scan-conflicts ✅, CodeRabbit ✅. Skipping jobs are conditional, not failures.
  • No CHANGES_REQUESTED reviews. Gemini left a COMMENTED note about a possible code discrepancy (old package discovery block in source), but that is a separate code concern unrelated to this docs-only PR.
  • Mermaid diagram uses correct AGENTS.md §3.1 colors (amber wrapper, dark-red gate, teal canonical resolver).
  • Content accurately reflects the post-#3122 architecture: wrapper delegates praisonai-tools discovery to ToolResolver, CWD/template tools.py autoload stays in wrapper behind the PRAISONAI_ALLOW_TEMPLATE_TOOLS gate.

@MervinPraison
MervinPraison merged commit e5853a6 into main Jul 17, 2026
13 checks passed
@MervinPraison

Copy link
Copy Markdown
Owner

Merged by Claude PR merge gate (claude-merge-gate.yml).
Verdict: MERGE_GATE_VERDICT: APPROVE
SHA: e170804
Method: merge

@MervinPraison

Copy link
Copy Markdown
Owner

Merge gate scan — not eligible for auto-merge.

  • not open
  • already merged by gate
  • mergeState=UNKNOWN

Actions: wait for CI and the Claude review chain, or add label needs-manual-review and merge manually.
Opt out: label no-auto-merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merged-by-gate pipeline/merge-ready Eligible for merge gate auto-merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: update tool_override resolution order after wrapper stopped re-implementing praisonai-tools discovery (PraisonAI#3122)

1 participant