Fix#19203 — agent retrieval now treats UUID and composite embedding IDs as same model when tenant_embd_id matches, reusing validate_dataset_embedding_models.
Add Sofya web search tool — returns full page content (not snippets). Modeled on You.com. Configurable depth (basic/snippets), top N, and per-call params.
---------
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Jin Hai <haijin.chn@gmail.com>
Fix ExeSQL canvas SSE crash on DATE columns — datetime.date not JSON serializable. Now isoformats date/datetime/time.
Co-authored-by: Sbaaoui Idriss <112825897+6ba3i@users.noreply.github.com>
Fix join node race — now checks if upstream finished, not just scheduled. CodeExec/aggregator dependencies now visible via param_refs(). Mutual references now run.
Fixes#19265
### Summary
StringTransform._merge used a dictionary as a default argument and
passed it to get_kwargs, which adds missing template inputs to that
mapping. Use None and create a fresh dictionary per call so merge
invocations cannot share accumulated state.
Fix sandbox teardown (make clean / stop.sh) to remove actual containers by pattern instead of relying on POOL_SIZE range. Old logic left containers behind when .env changed or was missing. Now uses docker ps -a | grep with anchored pattern. Cleanup works without .env; Docker errors are properly reported.
Fix sandbox spec documentation mismatch. pool_size is a deployment-scoped env var (read-only), not a writable runtime setting. Removed from writable examples, updated spec to match actual provider schema, and fixed stale test assertions.
### Summary
Fix Message component crash where re.sub treated variable values as regex templates. Windows paths like C:\10\report caused invalid group reference errors. Switched to str.replace for literal substitution and added _apply_kwargs helper. Unit tests added.
Co-authored-by: rsnetworkinginc <rsnetworkinginc@users.noreply.github.com>
### Summary
Fix UserFillUp crash where re.sub treated field values as regex replacements. Windows paths like C:\1files caused invalid group reference errors. Switched to str.replace for literal substitution. Regression test added.
Co-authored-by: rsnetworkinginc <rsnetworkinginc@users.noreply.github.com>
### Summary
@JinHai-CN — the agent tool you asked for in #18478, as its own PR.
Adds `YouComSearch` to the agent tool set, modeled on the Keenable tool
(#16233) rather than Querit's: You.com exposes a small parameter
surface, so this needs a two-field form rather than a bespoke form
suite. **+594 lines**, close to Keenable's +392 and well under Querit's
+3527.
Independent of #18478. That PR wires You.com into chat retrieval; this
one is the agent canvas node. Neither depends on the other and they
share no lines.
---------
Co-authored-by: Brian Sparker <brainsparker@users.noreply.github.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
### Summary
- keep literal whitespace outside streamed message references
- retain single, double, and spaced outer-brace reference forms
- apply the same boundary rule to iteration aliases
- add regression coverage for adjacent and consecutive references
Fixes#18665
---------
Co-authored-by: Jin Hai <haijin.chn@gmail.com>
configurations.md and backup_and_migration.md cross-linked each other
via /migration#... and /configurations#s3-tigris. These host-absolute
paths match no route on the docs site (real pages live under
/administrator/...) and 404 on GitHub. Point them at the sibling
markdown files so both Docusaurus and GitHub can resolve them; the
existing anchors are preserved.
---------
Co-authored-by: jindou <jindou@local>
Co-authored-by: Jin Hai <haijin.chn@gmail.com>
### Summary
Two small fixes found during a code-review pass.
**1. `Invoke._build_proxies` sends the raw proxy string instead of the
normalized one**
**2. Leftover `print(self.variables)` in `Canvas.reset`**
---------
Co-authored-by: jindou <jindou@local>
## Summary
- Disable DeepSeek V4 thinking (chain-of-thought) by default.
- litellm 1.82.x drops `thinking: disabled`; carry the toggle through
`extra_body.thinking.type` and strip `reasoning_effort` to avoid the
400.
- Use local timezone for agent `sys.date` instead of UTC.
Reference: https://api-docs.deepseek.com/guides/thinking_mode
---------
Co-authored-by: Claude <claude@example.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude <noreply@anthropic.com>
### Summary
Add Querit Contents as a built-in page content tool for RAGFlow Agents
and Canvas workflows.
Querit Contents crawls one or more known URLs and returns their page
content and optional metadata. It complements the existing Querit Search
tool: Search discovers relevant pages, while Contents retrieves pages
already selected by an Agent or workflow.
This integration supports two usage modes:
- A standalone `QueritContents` node in Canvas workflows.
- An embedded content tool available to RAGFlow Agents.
Port the wiki_incremental dataset-level merge and make its rewrite
barrier durable and concurrency-safe. Wiki pages merge replace-only; the
barrier persists a monotonic numeric generation, and a scheduler-backed
per-dataset lock closes the cross-process TOCTOU window. Adds the
Compiler Plan toggle (frontend) with Mode A grouping.
### Summary
Brings both halves of the Tenki sandbox provider onto current SDKs and
removes `project_id`, which Tenki deleted from its API.
**Go:** `github.com/LuxorLabs/tenki-sdk-go/sandbox` `v0.5.2` → `v0.7.0`
(current latest).
**Python:** the provider's SDK was renamed on PyPI — `tenki-sandbox` is
frozen at 0.4.0 and everything from 0.5 ships as
[`tenki`](https://pypi.org/project/tenki/). The docs told operators to
`pip install tenki-sandbox`, which installs a stale SDK that no longer
matches this provider's expectations.
**`project_id` is gone.** Tenki removed project scoping from the sandbox
API in 0.5.x: `Client.create()` no longer accepts `project_id`, so the
current code path would raise `TypeError` against a current SDK. It was
also marked `required: True` in the config schema, so the Admin >
Sandbox Settings form asked for a value that no longer exists.