Commit Graph

2289 Commits

Author SHA1 Message Date
yiming wang
dcadd8d837 feat: add Tenki sandbox provider (#17305)
### Summary

Adds a `tenki` sandbox provider that runs each agent code execution in a
disposable Tenki (https://tenki.cloud) microVM (create → exec → destroy,
no volumes or snapshots).
Registration mirrors PR #15039, configure `api_key` and `project_id` in
Admin > Sandbox Settings.

Both runtimes are covered:
- Python: `agent/sandbox/providers/tenki.py` (structured results +
artifact collection).
- Go: `internal/agent/sandbox/tenki.go`, mirroring the e2b provider and
wired into the provider manager.

`tenki-sandbox` is an optional dependency (it requires `protobuf>=6.31`,
which differs from RAGFlow's pinned gRPC stack), lazily imported with a
clear error when missing; installation is documented in the sandbox
quickstart.

Unit tests cover execution, structured results, artifacts
(symlink/size/extension limits), non-zero exit, timeout, error mapping,
and idempotent destroy.

---------

Co-authored-by: yiming.wang <yiming.wang@luxor.com>
2026-07-28 19:24:39 +08:00
euvre
73860170ae fix(admin): use POST for admin logout API (#17482) 2026-07-28 19:22:57 +08:00
Robert Keus
7e1ab9741b feat: add GreenPT model provider (#17447)
## Summary

GreenPT is a European AI provider with an OpenAI-compatible API,
optimized infrastructure, and datacenters powered by 100% renewable
energy.

This adds native GreenPT support across RAGFlow’s Go-first provider
system and its Python compatibility layer:

- discovers the current catalog from `GET /v1/models`
- features `glm-5.2` and `kimi-k2.7-code` for chat and coding
- supports `green-embedding` through `/v1/embeddings`
- supports `green-rerank` through `/v1/rerank`
- supports `green-s` and `green-s-pro` speech-to-text through
`/v1/listen`
- adds provider configuration, UI icon, and supported-provider
documentation
2026-07-28 19:19:00 +08:00
balibabu
5274e1df4d Fix: The documentation for setting page slicing methods in the Go version of a dataset is not displayed. (#17478) 2026-07-28 19:14:02 +08:00
Jin Hai
7f21a7ba18 Go: add context, part14 (#17446)
Signed-off-by: Jin Hai <haijin.chn@gmail.com>
2026-07-28 19:05:59 +08:00
buua436
b7ddf45774 fix: stabilize wiki planning and artifact graph rendering (#17473) 2026-07-28 17:08:40 +08:00
Lynn
675c35a2de Fix: rm tenant llm call (#17476) 2026-07-28 15:54:44 +08:00
balibabu
fe38d5f246 Feat: Delete dataset level graph. (#17474)
### Summary

Feat: Delete dataset level graph.
2026-07-28 15:27:08 +08:00
balibabu
cc0fbd37ef Fix: Unable to navigate from the agent list page to the compilation editing page. (#17460) 2026-07-28 13:59:57 +08:00
chanx
326893811a fix(web): identify provider instances by id and skip clean cards on save (#17424) 2026-07-28 09:49:57 +08:00
Wang Qi
619b58faef Add {date} replacement to chat (#17430) 2026-07-28 09:49:17 +08:00
balibabu
1cce9b64f1 Feat: Search for knowledge-base-level graph nodes. (#17444) 2026-07-27 21:03:30 +08:00
euvre
f6464c909d fix: prevent child delimiter add from submitting form (#17421) 2026-07-27 19:11:05 +08:00
Zhichang Yu
61d58f598e Introduced oxfmt (#17431)
Introduced oxfmt
2026-07-27 17:38:52 +08:00
chanx
4551f945fc fix: improve model merging logic in useModelsDerived for better instance-specific values (#17422) 2026-07-27 17:37:20 +08:00
chanx
b5633eb6f0 fix: update delimiter form field layout for better alignment (#17432) 2026-07-27 17:34:13 +08:00
chanx
4231db78e7 fix: add document name display in testing result cards (#17427) 2026-07-27 17:28:22 +08:00
buua436
6e1e540f98 fix: persist pipeline tree graph rows (#17400) 2026-07-27 16:40:29 +08:00
euvre
58f67870ae fix: refresh memory sidebar avatar immediately after update (#17401) 2026-07-27 14:09:02 +08:00
euvre
585142c5d3 fix(web): correct dataset configuration page title and description (#17407) 2026-07-27 14:02:53 +08:00
S
c48eb70e67 Improve "Delimiter for text" UX: clearer tooltip + live parsed-delimiter preview (#17385)
## Summary

Improve the UX of the **"Delimiter for text"** field on the dataset
configuration page. The field is a single string with a backtick-based
mini-syntax, but both the tooltip and the surrounding UI failed to
surface what delimiters the backend would actually derive from a given
value — leaving users to discover by trial-and-error that the same
string produces different splits depending on file type (see #7436,
#4704, #9680).
2026-07-27 13:21:54 +08:00
Wang Qi
53afc32349 Fix get datasets owner retrieve the whole dataset (#17370) 2026-07-27 10:24:13 +08:00
chanx
069a2aa76d fix: disable select all option in MemoriesFormField component (#17363) 2026-07-27 09:53:37 +08:00
Eugene
6b11f62391 feat: add AIMLAPI (aimlapi.com) as a model provider (#17311)
### Summary

This PR adds **aimlapi.com** as a model provider, so a RAGFlow user can
enter one API key in the model settings and use AIMLAPI's models across
the app. AIMLAPI ([aimlapi.com](https://aimlapi.com)) is an
OpenAI-compatible aggregator that serves 700+ models (LLM, embedding,
vision, TTS, ASR) from many providers behind a single API.

The change mirrors the repo's existing "add provider" pattern (e.g.
FuturMix / OpenRouter): provider logic lives in the same files those
providers use, and shared / UI files get only registration entries.

**Backend**
- `conf/llm_factories.json` — the `aimlapi.com` factory entry.
- `rag/llm/__init__.py`, `rag/llm/{chat,embedding,cv}_model.py` —
LiteLLM adapters (chat, embedding, image2text) with a production base
URL, overridable via `AIMLAPI_API_URL`.
- `rag/llm/model_meta.py` — an `AIMLAPI` model-meta so the provider
lists its full `/v1/models` catalog dynamically (classified by the
endpoint `type`), the same way OpenRouter does.
- `api/apps/restful_apis/aimlapi_api.py` — an optional "Get API key"
flow using AIMLAPI's agent-authorization (OAuth 2.0 Device Authorization
Grant, RFC 8628). The device code is kept server-side (Redis); only the
issued key reaches the browser.

**Frontend (`web/`)**
- Provider registration (constant, icon allowlist, brand logo), the
model picker (`LIST_MODEL_PROVIDERS` + a `buildLocalConfig` entry), and
the "Get API key" button in the provider dialog. Locales added to `en`
and `zh`.

**Configuration** — production defaults are compiled in; endpoints and
the partner id are overridable through `AIMLAPI_*` environment
variables, so the same build works across environments.

**Testing** — the `web` build passes; chat, embedding and dynamic model
listing were smoke-tested against the live API.
2026-07-24 22:50:14 +08:00
chanx
bbd0dc5463 feat: add BASE_URL to TencentHunYuan (#17367)
### Summary

feat: add  BASE_URL  to TencentHunYuan
2026-07-24 21:07:18 +08:00
buua436
2ba7ccecaf fix: stabilize knowledge compilation navigation updates (#17345) 2026-07-24 17:48:27 +08:00
balibabu
890a414a47 Feat: The PageRank value on the dataset settings page fails to display when the page is opened. (#17309)
### Summary
Feat: The PageRank value on the dataset settings page fails to display
when the page is opened.
2026-07-24 15:27:24 +08:00
euvre
11db6851fc fix: respect REST API page_size limit in useFetchAllKnowledgeList (#17336) 2026-07-24 11:42:59 +08:00
euvre
91d9bf7fc4 fix: strip YAML frontmatter and defer API reference markdown rendering (#17272) 2026-07-24 11:37:10 +08:00
euvre
297890b437 fix: include full conversation details in agent log CSV export (#17291) 2026-07-24 10:57:34 +08:00
chanx
3dc298dbf5 fix(web): prevent multi-select popover from closing on first selection (#17310) 2026-07-24 09:29:40 +08:00
buua436
0c5732108a fix: support Infinity knowledge compilation (#17288)
### What problem does this PR solve?

Fix Infinity compatibility issues in knowledge compilation.

This change:

- Stores compilation source ID lists as JSON arrays in Infinity.
- Parses JSON array fields when reading compiled documents.
- Uses `json_contains` for filtering JSON array fields.
- Adds the missing `name` column to the Infinity mapping.
- Updates dataset navigation KNN search to use the unified
`MatchDenseExpr` interface.
- Handles unavailable embeddings without querying an invalid `q_0_vec`
field.

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
2026-07-23 20:48:39 +08:00
Jack
d12fd3b79d feat: parser pages range and parse type validation for dataset/document (#17293)
## Summary

Adds page-range parsing support to the Go-native pipeline path and
introduces strict `parse_type` validation for both dataset and document
update endpoints.

## What changed

### Pages range parsing
- **`internal/utility/pdf_pages.go`** — `NormalizePDFPages`: normalizes
raw page ranges (list of `[from,to]` 1-indexed inclusive ranges) into
sorted, merged, deduplicated `[][]int`. Invalid ranges are dropped.
- **`internal/ingestion/pipeline/pdf_pages.go`** —
`NormalizeParserConfigPages`: walks any parser_config map and normalizes
`"pages"` values under every component → filetype setup, so the
persisted config always carries clean, merged ranges.
- **`internal/deepdoc/parser/pdf/parser.go`** — integrates
`resolvePagesToProcess` to filter parsed PDF pages by the configured
ranges.
- Pipeline integration (parser pages):
`internal/parser/parser/pdf_parser_common.go`, `chunk_process.go`, plus
associated e2e and unit tests.

### Parse type validation (shared logic)
- **`internal/service/parser_mode.go`** (new) — `ValidateParseTypeMode`:
shared function that validates `parse_type` (1=BuiltIn/parser_id,
2=Pipeline/pipeline_id) and ensures the corresponding field is present.
Used by both dataset and document update endpoints.
- **`internal/service/dataset/crud.go`** / `update.go` — replaces inline
`isPipelineMode`/`isBuiltinMode` computation with the shared
`service.ValidateParseTypeMode`.
- **`internal/service/document/document_dataset_update.go`** — adds
strict `parse_type` validation in `validateDatasetDocumentUpdate`,
simplifies the reparse logic to a two-way switch (isBuiltin/isPipeline)
now that parse_type is always valid.
- **`internal/service/document/document.go`** — adds `ParseType` field
to `UpdateDatasetDocumentRequest`.
- **`internal/service/document/document_dataset_update.go`** —
`updateDocumentParserConfig` fallback path when DSL loading fails.
- **`internal/service/parser_mode_test.go`** (new) — test coverage for
nil, invalid, and missing-field scenarios.

### Frontend
- **`web/src/interfaces/request/document.ts`** — adds `parseType` to
`IChangeParserRequestBody`.
- **`web/src/hooks/use-document-request.ts`** —
`useSetDocumentPipelineParser` sends `parse_type` in the PATCH payload.
- **`web/src/pages/dataset/dataset/use-change-document-parser.ts`** —
Go/Python branching for the document parser config dialog.
-
**`web/src/components/document-pipeline-dialog/use-document-pipeline-form.ts`**
— `buildSubmitData` returns `parseType` (bugfix: was dropped from the
return value).

### Test changes
- **Removed**: 2 tests that verified the old "mutually exclusive" error
(replaced by `ValidateParseTypeMode` coverage).
- **Modified**: 6 tests across document and dataset packages to include
`ParseType` in request structs.
- **Added**: new e2e tests for pages parsing (`pages_e2e_test.go`,
`pdf_parser_pages_e2e_test.go`) and unit tests for `NormalizePDFPages`,
`NormalizeParserConfigPages`, `resolvePagesToProcess`.

## Backward compatibility
- The `parse_type` field is **required** when `parser_id` or
`pipeline_id` is sent. This changes the contract for both dataset and
document PATCH endpoints, but aligns the Go backend with the existing
frontend behavior (the frontend already sends `parse_type`). Callers
that omit `parse_type` when updating parser/pipeline selections will
receive a clear error message.
- Existing callers that only update fields like `name`, `enabled`, or
`meta_fields` are unaffected.
- Test updates ensure all known call sites are compliant.
2026-07-23 19:57:27 +08:00
euvre
387279b317 fix: prevent summary countdown text from flickering in data source log table (#17258) 2026-07-23 19:23:53 +08:00
buua436
d4a8c91f3c refa: improve tree clustering (#17285) 2026-07-23 17:49:13 +08:00
euvre
7b64e4dc5d fix: correct auto-parse switch thumb alignment in data source settings (#17252) 2026-07-23 17:05:50 +08:00
euvre
418d3c8cef fix: fetch all knowledge bases via pagination in link-to-dataset dialog (#17170) 2026-07-23 16:48:05 +08:00
balibabu
c48a59db96 Feat: Add page rank to ParserForm (#17267) 2026-07-23 14:23:07 +08:00
euvre
b095a5511a fix: make qwen3-vl-plus usable as chat/vision model in Go mode (#17254) 2026-07-23 11:14:08 +08:00
balibabu
1e445fbd68 Feat: Alter "Compilation" to "Operator" (#17273)
### Summary

[Feat: Alter "Compilation" to
"Operator"](f52684dc23)
2026-07-23 11:09:12 +08:00
chanx
e3975b58eb fix: improve model merging logic in useModelsDerived for better instance-specific values (#17250) 2026-07-23 09:58:41 +08:00
balibabu
b3d394954d Feat: Support pipeline-related configuration at the document level. (#17212)
### Summary

Feat: Support pipeline-related configuration at the document level.
2026-07-22 22:24:50 +08:00
euvre
28b6926831 Fix: search input cannot expand to show long queries (#17166) 2026-07-22 19:39:39 +08:00
euvre
d757303fa4 fix(web): show completed label for think block after streaming ends (#17149) 2026-07-22 19:30:09 +08:00
euvre
5bc28d4d15 fix: exclude TTS models from agent component model selector (#17231) 2026-07-22 19:27:12 +08:00
euvre
cfaef879fe fix: MinerU.Net and PaddleOCR.Net missing icons (#17229) 2026-07-22 19:24:23 +08:00
euvre
2f7dc60337 fix: restore download button when file type is selected in agent message (#17184) 2026-07-22 19:21:17 +08:00
euvre
1aaa200471 fix: use FormLabel required prop for consistent asterisk color in search settings (#17223) 2026-07-22 19:20:59 +08:00
euvre
c1aff8c710 fix: prevent empty-state flash on knowledge-base and chat list loading (#17221) 2026-07-22 19:20:48 +08:00
euvre
769bd50363 fix: restore empty model warning in dataset creating dialog (#17220) 2026-07-22 19:20:33 +08:00