docs: add csv_tool to Available Tools table in README#1
docs: add csv_tool to Available Tools table in README#1himanshu748 wants to merge 185 commits intomainfrom
Conversation
Update AnthropicProvider.complete to accept response_format and forward it to LiteLLMProvider. Added unit test in test_litellm_provider.py to verify parameter forwarding.
- Remove redundant register_web_search(mcp) call on line 54 - Keep single registration with credentials parameter - Tool implementation handles both credential sources internally - Added clarifying comment explaining the credential handling Fixes aden-hive#172
- Update .claude/skills/ structure in getting-started.md - Reflect actual skills generated by quickstart.sh: - agent-workflow/ - building-agents-construction/ - building-agents-core/ - building-agents-patterns/ - testing-agent/ Fixes aden-hive#177
Fixes aden-hive#202 - Update docs/getting-started.md to explain exports/ is created by users - Remove references to non-existent support_ticket_agent example - Update DEVELOPER.md with correct agent creation instructions
…file Add support for custom file encoding and size limits when viewing files. The max_size parameter prevents loading excessively large files by truncating content and adding a warning message when the limit is exceeded. Also includes validation for negative max_size values and checks if path is a file.
- Replace hardcoded /home/timothy/oss/hive/ with generic instruction - Add troubleshooting section for PEP 668 externally-managed-environment error - Document virtual environment setup for Python 3.12+ on macOS/WSL/Linux Fixes aden-hive#322 Fixes aden-hive#355
- Remove hardcoded max_retries_per_node = 3 - Use node_spec.max_retries for all retry logic - Add comprehensive test suite (6 test cases) - Allows per-node retry configuration as intended Fixes aden-hive#363
…detection Previously, the hallucination detection in SharedMemory.write() and OutputValidator.validate_no_hallucination() only checked the first 500 characters for code indicators. This allowed hallucinated code to bypass detection by prefixing with innocuous text. Changes: - Add _contains_code_indicators() method to SharedMemory and OutputValidator - Check entire string for strings under 10KB - Use strategic sampling (start, 25%, 50%, 75%, end) for longer strings - Expand code indicators to include JavaScript, SQL, and HTML/script patterns - Add comprehensive test suite with 19 test cases Fixes aden-hive#443 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…s-1769383167894 Add claude GitHub actions 1769383167894
Translate Korean
…directory-structure docs: update skills directory structure to match actual output
…r-response-format fix: align AnthropicProvider.complete with LLMProvider (response_format)
…aden-hive#951) * config: add .gitattributes for cross-platform line ending consistency - Add comprehensive .gitattributes to normalize line endings - Ensure shell scripts always use LF (required for Unix execution) - Mark binary files explicitly to prevent corruption - Eliminate CRLF warnings for Windows contributors - Follow cross-platform best practices This fixes persistent 'LF will be replaced by CRLF' warnings that confuse Windows contributors during normal git operations. Fixes aden-hive#950 * fix: add trailing newline at end of file Per review feedback from @Hundao
micro-fix: fix ruff and excluding Docs
chore: fix lint issues
docs: chore for calling claude skills
…ation-error-handling Fix/json validation error handling
…r-check fix(list_dir): add isdir check before listing
…pose-references docs: remove outdated Docker Compose references
fixed ruff format --check
Fixes aden-hive#1581 Added the following csv_tool functions to the Available Tools table: - csv_read: Read a CSV file and return its contents - csv_write: Write data to a new CSV file - csv_append: Append rows to an existing CSV file - csv_info: Get metadata about a CSV file - csv_sql: Query a CSV file using SQL (DuckDB) Also updated the Project Structure section to include csv_tool directory. Co-Authored-By: Himanshu Jha <jhahimanshu653@gmail.com>
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
|
Important Review skippedToo many files! This PR contains 186 files, which is 36 over the limit of 150. You can disable this status message by setting the
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. Comment |
There was a problem hiding this comment.
Pull request overview
This PR is intended to update documentation by adding the csv_tool functions to the “Available Tools” table in tools/README.md, but the current diff also contains a large upstream sync with many unrelated code/doc/CI changes.
Changes:
- Documentation updates across multiple READMEs and contributor docs (plus removal/relocation of architecture docs).
- Core framework refactors (LLM providers, runtime/event bus, output cleaning/validation, testing utilities).
- New tooling and automation (Makefile, pre-commit config, GitHub workflows).
Reviewed changes
Copilot reviewed 123 out of 186 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| docs/architecture.md | Removes architecture overview doc (appears relocated elsewhere). |
| core/verify_mcp.py | Refactors CLI output from print to logging. |
| core/setup_mcp.py | Refactors MCP setup script to use logging. |
| core/pyproject.toml | Formatting tweak in Ruff config section. |
| core/tests/test_testing_framework.py | Import/order + formatting-only changes. |
| core/tests/test_runtime.py | Import order formatting. |
| core/tests/test_run.py | Import order + formatting-only changes. |
| core/tests/test_plan.py | Import order + formatting-only changes. |
| core/tests/test_orchestrator.py | Quote style + formatting-only changes. |
| core/tests/test_node_json_extraction.py | Makes tests deterministic by disabling LLM fallback via env removal. |
| core/tests/test_mcp_server.py | Formatting-only changes + noqa markers for optional deps. |
| core/tests/test_flexible_executor.py | Import order + formatting-only changes. |
| core/tests/test_execution_stream.py | Adds a test for execution result retention behavior. |
| core/tests/test_builder.py | Import order formatting. |
| core/framework/testing/test_storage.py | Import order + formatting-only changes. |
| core/framework/testing/test_result.py | Formatting-only changes. |
| core/framework/testing/test_case.py | Formatting-only changes. |
| core/framework/testing/prompts.py | Updates generated test templates to accept multiple API key env vars. |
| core/framework/testing/llm_judge.py | Makes LLM judge provider-agnostic with fallback provider selection. |
| core/framework/testing/debug_tool.py | Import ordering + minor formatting. |
| core/framework/testing/cli.py | Formatting-only changes (line wrapping). |
| core/framework/testing/categorizer.py | Formatting-only changes. |
| core/framework/testing/approval_types.py | Formatting-only changes. |
| core/framework/testing/approval_cli.py | Formatting-only changes + typing import cleanup. |
| core/framework/testing/init.py | Reorders exports and adds CLI exports earlier. |
| core/framework/storage/backend.py | Import reorder. |
| core/framework/schemas/run.py | Import order + formatting-only changes. |
| core/framework/schemas/decision.py | Import order + formatting-only changes. |
| core/framework/schemas/init.py | Import reorder. |
| core/framework/runtime/tests/test_agent_runtime.py | Import order + formatting-only changes. |
| core/framework/runtime/stream_runtime.py | Minor formatting and run_id construction clarity. |
| core/framework/runtime/shared_state.py | Formatting-only changes. |
| core/framework/runtime/outcome_aggregator.py | Minor perf tweaks (set comprehensions) + formatting. |
| core/framework/runtime/event_bus.py | Typing import cleanup + formatting. |
| core/framework/runtime/core.py | Typing improvements (Callable) + formatting. |
| core/framework/runtime/agent_runtime.py | Adds execution result retention/TTL config plumbing into streams. |
| core/framework/runner/tool_registry.py | Minor simplification accessing module TOOLS. |
| core/framework/runner/runner.py | Adds mock-mode LLM provider; various formatting and validation tweaks. |
| core/framework/runner/protocol.py | Import reorder. |
| core/framework/runner/orchestrator.py | Uses zip(..., strict=False) and formatting changes. |
| core/framework/runner/mcp_client.py | Improves exception chaining and formatting. |
| core/framework/runner/init.py | Export ordering. |
| core/framework/llm/provider.py | Tightens typing for tool executor to Callable[[ToolUse], ToolResult]. |
| core/framework/llm/mock.py | Adds a mock LLM provider for mock-mode execution. |
| core/framework/llm/litellm.py | Handles missing litellm dependency; typing improvements and tool loop tweaks. |
| core/framework/llm/anthropic.py | Passes through response_format + typing improvements. |
| core/framework/llm/init.py | Conditional exports based on optional deps. |
| core/framework/graph/worker_node.py | Adds debug logging in JSON parsing; minor refactors. |
| core/framework/graph/validator.py | Adds Pydantic validation helpers and improved hallucination/code scanning. |
| core/framework/graph/test_output_cleaner_live.py | Formatting-only changes. |
| core/framework/graph/plan.py | Formatting-only changes. |
| core/framework/graph/output_cleaner.py | Adds heuristic repair path before LLM cleaning; refactors docs. |
| core/framework/graph/judge.py | Import ordering + formatting-only changes. |
| core/framework/graph/hitl.py | Formatting-only changes. |
| core/framework/graph/goal.py | Formatting-only changes. |
| core/framework/graph/flexible_executor.py | Import ordering + formatting-only changes. |
| core/framework/graph/code_sandbox.py | Formatting-only changes. |
| core/framework/graph/init.py | Exposes GraphSpec + reorders exports. |
| core/framework/credentials/init.py | Adds new credentials package public API. |
| core/framework/credentials/template.py | Adds credential template resolver implementation. |
| core/framework/credentials/oauth2/init.py | Adds OAuth2 credentials support package exports. |
| core/framework/credentials/oauth2/provider.py | Adds OAuth2 config/token types and errors. |
| core/framework/credentials/vault/init.py | Adds Vault integration module export. |
| core/framework/credentials/tests/init.py | Adds tests package marker. |
| core/framework/cli.py | Formatting-only change; adds blank lines around imports. |
| core/framework/builder/workflow.py | Formatting-only changes + minor string/loop refactors. |
| core/framework/builder/query.py | Formatting-only changes + zip(..., strict=False). |
| core/framework/builder/init.py | Export ordering only. |
| core/framework/init.py | Export ordering + import ordering. |
| core/examples/mcp_integration_example.py | Formatting-only changes. |
| core/examples/manual_agent.py | Adds a new example for building/running an agent without external LLM APIs. |
| README.md | Updates docs links, contribution steps, and provider list; adds ko link. |
| README.es.md | Updates command reference and contribution policy text; adds ko link. |
| README.ja.md | Updates command reference and contribution policy text; adds ko link. |
| README.pt.md | Updates command reference and contribution policy text; adds ko link. |
| README.ru.md | Updates command reference and contribution policy text; adds ko link. |
| README.zh-CN.md | Updates command reference and contribution policy text; adds ko link. |
| ENVIRONMENT_SETUP.md | Adds Windows/WSL notes and PEP 668 troubleshooting. |
| DEVELOPER.md | Updates skill command and agent creation instructions. |
| CONTRIBUTING.md | Adds issue assignment policy and updates PR process. |
| CHANGELOG.md | Adds a tools fix entry. |
| Makefile | Adds lint/format/check/test targets. |
| .vscode/extensions.json | Recommends editor extensions (ruff, python, editorconfig). |
| .pre-commit-config.yaml | Adds ruff lint/format pre-commit hooks. |
| .github/workflows/ci.yml | Splits ruff lint/format; improves exports validation logic. |
| .github/workflows/pr-requirements.yml | New PR requirement enforcement workflow. |
| .github/workflows/pr-requirements-backfill.yml | Adds backfill workflow for existing PRs. |
| .github/workflows/pr-check-command.yml | Adds /check comment-triggered PR requirement check. |
| .github/workflows/claude-issue-triage.yml | Adds automated issue triage workflow using Claude action. |
| .github/workflows/auto-close-duplicates.yml | Adds scheduled duplicate-issue auto-close workflow. |
| .github/CODEOWNERS | Removes docker-compose ownership line; keeps .github ownership. |
| .gitattributes | Adds line-ending normalization rules and binary patterns. |
| .editorconfig | Adds Python indent size override. |
| .cursorrules | Adds ruff-centric editor rules. |
| .claude/settings.json | Adds Claude post-tool-use hook to auto-run ruff. |
| .claude/skills/building-agents-construction/SKILL.md | Updates skill templates to allow api_key/api_base config. |
| .claude/skills/building-agents-construction/examples/online_research_agent/agent.py | Import cleanups, config support, and formatting. |
| .claude/skills/building-agents-construction/examples/online_research_agent/config.py | Adds api_key/api_base fields. |
| .claude/skills/building-agents-construction/examples/online_research_agent/main.py | Formatting-only changes. |
| .claude/skills/building-agents-construction/examples/online_research_agent/nodes/init.py | Formatting-only changes to large schemas. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| logger.info(f"Checking {description}... ", extra={"end": ""}) | ||
| sys.stdout.flush() | ||
| return True | ||
|
|
||
|
|
There was a problem hiding this comment.
logging does not support print(..., end='') semantics; extra={'end': ''} is ignored by the standard logging machinery, so this will always emit a newline. If you want an in-place 'Checking ... OK' style output, switch this line back to print(..., end='') (or sys.stdout.write(...)) or implement a custom handler/formatter that supports partial-line output.
| logger.info(f"Checking {description}... ", extra={"end": ""}) | |
| sys.stdout.flush() | |
| return True | |
| print(f"Checking {description}... ", end="", flush=True) | |
| return True |
| context_section = "\n\n--- Context Data ---\n" | ||
| for key, value in inputs.items(): | ||
| if isinstance(value, (dict, list)): | ||
| if isinstance(value, dict | list): |
There was a problem hiding this comment.
isinstance does not accept PEP 604 union expressions (dict | list) as its second argument at runtime. Replace with a tuple of types (e.g., isinstance(value, (dict, list))) to avoid raising TypeError during execution.
| if isinstance(value, dict | list): | |
| if isinstance(value, (dict, list)): |
| for key, value in output.items(): | ||
| if isinstance(value, str): | ||
| repaired = _heuristic_repair(value) | ||
| if repaired and isinstance(repaired, dict | list): |
There was a problem hiding this comment.
Same runtime issue as elsewhere: isinstance(..., dict | list) will raise TypeError. Use a tuple ((dict, list)) so heuristic repair doesn’t crash when it finds JSON.
| if repaired and isinstance(repaired, dict | list): | |
| if repaired and isinstance(repaired, (dict, list)): |
| name="Greeter", | ||
| description="Generates a simple greeting", | ||
| node_type="function", | ||
| function="greet", # Matches the registered function name |
There was a problem hiding this comment.
The NodeSpec.function values (greet, uppercase) don’t match the names registered in the executor (greeter, uppercaser). This will likely prevent the executor from locating the functions at runtime. Register using the same names as in NodeSpec.function, or update NodeSpec.function to match what’s registered.
| name="Uppercaser", | ||
| description="Converts greeting to uppercase", | ||
| node_type="function", | ||
| function="uppercase", |
There was a problem hiding this comment.
The NodeSpec.function values (greet, uppercase) don’t match the names registered in the executor (greeter, uppercaser). This will likely prevent the executor from locating the functions at runtime. Register using the same names as in NodeSpec.function, or update NodeSpec.function to match what’s registered.
| executor.register_function("greeter", greet) | ||
| executor.register_function("uppercaser", uppercase) |
There was a problem hiding this comment.
The NodeSpec.function values (greet, uppercase) don’t match the names registered in the executor (greeter, uppercaser). This will likely prevent the executor from locating the functions at runtime. Register using the same names as in NodeSpec.function, or update NodeSpec.function to match what’s registered.
| executor.register_function("greeter", greet) | |
| executor.register_function("uppercaser", uppercase) | |
| executor.register_function("greet", greet) | |
| executor.register_function("uppercase", uppercase) |
|
Hi! I'm Himanshu Jha (@himanshu748). I'd like to work on this issue. Could you please assign it to me? This PR adds the csv_tool functions to the Available Tools table in tools/README.md, fixing issue aden-hive#1581. |
Changes based on Copilot AI review (3 issues): 1. Increased thread join timeout (Issue #1): - Changed from 2 to 5 seconds - Made proportional to cleanup timeout - Defined as class constant _THREAD_JOIN_TIMEOUT 2. Handle asyncio.CancelledError explicitly (Issue #2): - Added separate except clause for CancelledError - Logs specific warning for cancelled cleanup - Re-raises CancelledError as per asyncio best practices - Added for both session and stdio_context cleanup 3. Increased cleanup timeout to match connection timeout (Issue #3): - Changed from 5 to 10 seconds (matches _connect_stdio timeout) - Defined as class constant _CLEANUP_TIMEOUT - Prevents incomplete cleanup with slow MCP servers
Changes based on Copilot AI review (2 issues): 1. Thread join timeout was shorter than cleanup timeout (Issue #1): - Changed _THREAD_JOIN_TIMEOUT from 5 to 12 seconds - Must be >= cleanup timeout (10s) plus buffer for loop.stop() - Prevents thread abandonment during active cleanup 2. Added detailed comment for redundant None assignments (Issue #2): - Explained why we set _session/_stdio_context to None even if _cleanup_stdio_async() already did it - Documents the safety cases: timeout, failure, skip, cancellation - Makes code intent clear for future maintainers
Fix submission email in quizzes documentation
Description
Adds the csv_tool functions to the Available Tools table in
tools/README.md. The csv_tool module provides 5 CSV manipulation tools that were missing from the documentation.tools/README.md- all other changes in the diff are from upstream sync and should be reviewed separately or this PR should be rebased.Type of Change
Related Issues
Fixes aden-hive#1581
Changes Made (Intended)
csv_read- Read a CSV file and return its contentscsv_write- Write data to a new CSV filecsv_append- Append rows to an existing CSV filecsv_info- Get metadata about a CSV filecsv_sql- Query a CSV file using SQL (DuckDB)csv_tool/to the Project Structure sectionTesting
cd core && pytest tests/)cd core && ruff check .)Checklist
Human Review Checklist
tools/README.mdchanges should be merged - consider rebasing to exclude upstream synctools/src/aden_tools/tools/csv_tool/csv_tool.pyLink to Devin run: https://app.devin.ai/sessions/626b4e606d97495f9640088656d06c35
Requested by: Himanshu Jha (@himanshu748)