Skip to content

Tags: ModelEngine-Group/nexent

Tags

v2.4.1

Toggle v2.4.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Release/v2.4.0 (#3677)

* 修复无法正常重命名conversation名称的问题

(cherry picked from commit 9769f2e)

* 修复天舟北向接口存在流式缓存的问题

* 修复mcp工具的enabled状态为false的时候还显示“已启用

* 修复无法正常创建新会话的问题

* Bugfix: Fix inability to delete conversation

* Bugfix: Fix inability to delete conversation (#3634)

* Bugfix: Fix markdown table rendering issue after reasoning completes

(cherry picked from commit 3f1d562)

* 🐛 Bugfix: Fixed an issue where the tenant resource management page failed to correctly detect model connectivity. (#3652)

* 🐛 Bugfix: Fixed an issue where an embedding model could not be added if the URL did not end with `/embeddings`.

* 🐛 Bugfix: Fixed an issue where clicking to view skills before the skills API returned a response would result in a blank screen on the agent editing page. (#3664)

* 🐛 Bugfix: Fixed an issue where clicking to view skills before the skills API returned a response would result in a blank screen on the agent editing page.

* 🐛 Bugfix: Fixed an issue where clicking to view skills before the skills API returned a response would result in a blank screen on the agent editing page.

* 🐛 fix : merge to release2.4.0 (#3674)

* fix: resolve embedding_model_id from knowledge record in data process trigger

* fix: resolve embedding_model_id from knowledge record in data process trigger

* fix: restore ASSET_OWNER nav permissions and improve group selection

- Restore ASSET_OWNER left-nav permissions (/newchat, /agent-tasks, /users) and stop deleting them in v2.4 merged migration
- Use getAccessibleGroupIds for knowledge base group pickers so admins can select all tenant groups
- Show deleted group placeholders in agent/KB group selects via buildGroupSelectOptions
- Bump web/docs Docker images from Node 20 to 22

* ✨ Parameterize file split function in data-process task 🧪 Add telemetry data for knowledge base (#3676)

* ✨ Parameterize file split function in data-process task
🧪 Add telemetry data for knowledge base

* 🧪 Add test files

---------

Co-authored-by: xuyaqist <xuyaqist@gmail.com>
Co-authored-by: panyehong <91180085+YehongPan@users.noreply.github.com>
Co-authored-by: panyehong <2655992392@qq.com>
Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>
Co-authored-by: Lifeng-Chen <174292121+Lifeng-Chen@users.noreply.github.com>
Co-authored-by: Xia Yichen <iamjasonxia@126.com>

v2.4.0

Toggle v2.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #3606 from ModelEngine-Group/develop

Release v2.4.0

v2.3.0

Toggle v2.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Release v2.3.0 (#3436)

* 🐛 Bugfix: Guard memory_user_config against None in store/search memory tools (#3359)

* 🐛 Bugfix: Guard memory_user_config against None in store/search memory tools

Add None checks before accessing memory_user_config attributes in
StoreMemoryTool and SearchMemoryTool. When config is unavailable,
apply conservative default (agent_share_option='never') to prevent
unintended cross-agent memory sharing.

* fix(memory): restore hidden tabs and hide Tenant Shared in speed mode

- Fix nested array syntax bug that hid Tenant Shared and Agent Shared tabs
- Conditionally hide Tenant Shared tab when isSpeedMode=true (no tenant concept)
- All 5 tabs now properly visible in non-speed mode
- 4 tabs visible in speed mode (Tenant Shared hidden)

* test: add coverage for memory None guard, duplicate cleanup, and system tool filtering

- test_store_memory_tool: add None config, _run_coroutine tests
- test_search_memory_tool: add None config, _run_coroutine tests
- test_memory_config_service: add duplicate record cleanup tests
- test_tool_configuration_service: add SYSTEM_MANAGED_TOOL_NAMES filter test

* ✨Feat:Integrate openjiuwen's intelligent agent evaluation function close#3188 (#3356)

* ✨Feat:add prompt optimization

* 🐛Bugfix: dockerbuild failed when running pipefail in python3_11

* 🔨Optimize: Optimize prompt optimization display page and interaction methods

* ✨Feat:add agent evaluator

* 🐛Bugfix: fix fronted and report download

* 🐛 Bugfix: Add xlrd dependency and improve openjiuwen SDK adapter to handle circular imports more effectively. Update import paths in frontend components for consistency.

* ♻️Refactor: frontend style refact

* 🔨Rename evaluator sql

* ♻️ Refactor: Optimize the frontend page for agent evaluation

* ♻️Refactor: update modal mask properties for consistency

* ♻️ Refactor: Simplify locale handling and clean up imports in OAuthCompletePage and UserManageComp

* ✨ Feature: Enhance agent evaluation with Chinese output directive and new database migrations

* 🔧 Update: Change button variant from "outline" to "outlined" in EvaluationConfigCard and EvaluationReportCard components; enhance datetime handling in test_client.py to ensure correct timezone representation.

* 🧪Test: Add unit tests for the jiuwen_sdk_adapter to verify module-level behavior and side effects.

* 🔧 Update: Refactor the mock invocation in test_jiuwen_sdk_adapter to use an async function for better compatibility with asynchronous tests.

* 🧪 Test: Add comprehensive unit tests for evaluation set functionality, including CRUD operations and Excel parsing, to ensure robust behavior and error handling.

* 🧪 Test: Add extensive unit tests for Jiuwen SDK adapter and evaluation services, covering lazy imports, log envelope parsing, and case validation to enhance error handling and ensure robust functionality.

* 🔧 Update: Consolidate judge_model_id addition into agent_evaluation_t migration, removing the separate migration file for improved installation simplicity and ensuring idempotency in existing environments.

* 🔧 Update: Introduce a consolidated migration file for agent evaluation, combining previous separate migrations into a single idempotent script for improved installation simplicity and clarity. This includes the addition of evaluation tables and the pass_status column, ensuring all necessary structures are created in one step.

* fix:Fix share link copy fallback (#3340)

* feat: add conversation share

* add ut test

* add conversation share db tests

* Fix share link copy fallback

* 🐛 Bugfix: Update homepage redirect link (#3376)

* Bugfix:add crypto.randomUUID() fallback in http

* Bugfix: Update homepage redirect link

* 🐛 Bugfix: Tool debugging bug fixes. (#3371)

[Specification Details]
1. Standardizing the styling of debugging pop-ups in frontend tools.
2. Tool debugging configuration parameters are retrieved from the store rather than from the API each time.

* 🐛 Bugfix: W11 capacity suggestion for batch gear modals + model add/edit fixes (#3355)

* fix(model): stop sending hidden form.provider as modelFactory on single-add

Single-add mode has no provider dropdown — form.provider stays at its
hidden default 'modelengine', which was forwarded as modelFactory to
the backend, overriding the Pydantic default 'OpenAI-API-Compatible'.

Introduced in 4becd6992 which added modelFactory: form.provider to both
save paths but missed the isBatchImport guard already present on the
suggest-capacity path in the same commit.

STT/TTS paths are unaffected — they set modelFactory from
form.sttProvider/ttsProvider downstream. Embedding is unaffected —
backend _infer_model_factory overrides from base_url.

* refactor: move generate_backfill_sql.py to deploy/sql/migrations/

The script's sole purpose is generating SQL migration files that live
in deploy/sql/migrations/. Keeping the generator alongside its output
is more natural than a standalone top-level scripts/ directory.

- Updated _project_root path (three levels up instead of one)
- Updated docstring usage path and generated SQL self-reference
- Removed empty scripts/ directory

* fix: preserve embedding legacy inference, extend VLM only

- Embedding/multi_embedding keeps old logic (only dashscope recognized)
- VLM uses extended inference so tokenpony URLs can trigger catalog healthcheck
- Prevents unintended behavior change for embedding models

* fix(ui): reorganize agent config layout - maxSteps+provideSummary on row1, outputReserve+verification on row2

* test(W11): add normalize_model_name, _fuzzy_catalog_match, and Pydantic constructor-audit tests

Spec 'Tests and Release Evidence' explicitly requires these three test
groups. Previously they were only exercised indirectly through
suggest_capacity integration paths.

normalize_model_name (14 parametrized cases + convergence test):
- Case folding, separator collapsing (dash/underscore/dot/slash/space)
- Whitespace trimming, empty string, mixed separators
- Catalog entry convergence: full-name variants (GPT-4o/gpt-4o) and
  final-segment variants (Kimi-K2.6 vs Pro/moonshotai/Kimi-K2.6)

_fuzzy_catalog_match (6 cases):
- Normalized name match, unique final-segment fallback
- Ambiguous final-segment rejection (two entries same final segment)
- Empty catalog, wrong provider, unrelated name

Pydantic constructor-audit (7 tests, skip when SDK deps unavailable):
- CapacitySuggestionFields: model_dump shape pin, all-optional defaults
- ModelCapacitySuggestionResponse: catalog_exact shape pin, none shape
  pin, invalid match_kind rejection
- CapacityCoverageBareModel: model_dump shape pin
- CapacityCoverageResponse: model_dump shape pin

Results: 37 passed, 7 skipped (Pydantic tests skip when consts.model
import chain is unavailable due to missing SDK deps).

* feat(W11): add capacity suggestion to batch gear modals

Add manual check-button capacity suggestion to the two batch per-row
gear modals, matching the single-model Add/Edit pattern:

ModelAddDialog.tsx (batch-add per-row gear):
- Add gear-scoped suggestion state (enabled, checking, suggestion,
  accepted, request ref for race-condition guard)
- Add handleGearSuggestCapacity with monotonic token stale guard
- Add applyGearCapacitySuggestion using capacityFormFromSuggestion
- Render Switch + Check button toolbar above ModelCapacityFields
- Pass suggestion/suggestionLoading/onUseSuggestion/acceptedSuggestion
  props to ModelCapacityFields
- handleSettingsSave writes accepted_suggestion_match_kind and
  accepted_capability_profile_version audit fields onto the row
- Clear suggestion state on gear modal open

ModelEditDialog.tsx (ProviderConfigEditDialog per-row gear):
- Add modelName/baseUrl props to interface
- Add suggestion state, handleSuggestCapacity, applyCapacitySuggestion
- Render Switch + Check button in supportsCapacityFields mode only
  (NOT in bulk-apply / hideCapacityFields mode)
- Pass suggestion props to ModelCapacityFields
- handleSave spreads accept-signal fields into onSave payload
- Add acceptedSuggestionMatchKind/acceptedCapabilityProfileVersion
  to onSave callback type

ModelDeleteDialog.tsx:
- Pass modelName and baseUrl from selectedSingleModel to per-model
  gear ProviderConfigEditDialog (NOT to provider-level invocation)
- Forward accepted_suggestion_match_kind and
  accepted_capability_profile_version in updateBatchModel payload

No auto-suggest — manual check button only, per spec.

* chore(i18n): remove dead agent.modelSelector.bareCapacity.subtitle key

Spec 'Agent-Edit Model Selector Warning' explicitly states V1 dropdown
does not render a persistent subtitle. Code only uses .tooltip. Dead key.

* fix(W11): pass correct modelName/baseUrl to batch-edit gear suggestion

providerModel uses 'id' as model name (not model_name/name), and
base_url is provider-level (not on individual model objects). The
Check button was always disabled because both resolved to empty string.

Fix:
- modelName: add selectedSingleModel?.id as fallback
- baseUrl: use getProviderBaseUrlByType(deletingModelType) directly

* fix(W11): remove emptyHint Alert and i18n keys

The 'provider list has no capacity info' Alert is misleading in all
contexts: batch-add unchecked models, batch-edit gear with check button,
and single-edit with suggestion. Delete the component and both locale keys.

* fix(W11): reset suggestion state when switching models in batch-edit gear

ProviderConfigEditDialog's useEffect already resets capacityForm on
prop change but missed the suggestion state. Adding modelName/baseUrl
to deps and resetting capacitySuggestion/acceptedCapacitySuggestion/
enabled/checking on every prop change prevents stale suggestion from
the previous model leaking into the next gear dialog.

* fix: preserve saved model capacity in batch edit

* fix: persist batch gear model config edits

* fix: pass provider hint for batch capacity suggestions

* refactor: extract useCapacitySuggestion hook to deduplicate suggestion lifecycle

Consolidate the /suggest-capacity API call state machine (loading flag,
race-condition token, suggestion result, accepted suggestion) that was
duplicated across four call sites into a single reusable hook.

Call sites refactored:
- ModelEditDialog (top-level edit form)
- ProviderConfigEditDialog (per-row gear config edit)
- ModelAddDialog (top-level add form)
- ModelAddDialog (batch gear modal)

Net reduction: ~49 lines. No behavioral changes — the monotonic request
token, error handling, and state cleanup logic are preserved identically.

* refactor: simplify capacity suggestion UI — remove noise tags and localize

Remove four low-value elements from the suggestion result panel:
- matchExplanation (unlocalized backend English)
- matchConfidence tag (high/medium/low)
- suggestedProvider tag (internal backend concept)
- noExplanation fallback text

Keep only what the operator needs:
- canonical model name (bold, first position)
- match kind (exact/fuzzy, without redundant 'catalog' prefix)
- 'Use suggestion' button
- fuzzy-match warning when canonical name not accepted

When no suggestion is found, show a localized description instead of
the generic 'no additional details' fallback.

* ♻️ Refactor: Auto-create conversation when conversation_id is empty in agent/run (#3380)

* Bugfix:add crypto.randomUUID() fallback in http

* Bugfix: Update homepage redirect link

* Refactor: Auto-create conversation when conversation_id is empty in agent/run

* Bugfix: skip conversation auto-create in debug mode

* 修复单元测试

* 新增UT

* 新增UT测试

* 修改单元测试

* Feat/opt agent context refactor v2 (#3383)

* fix(context): use ContextManager uncompressed baseline for save% metric

Previously _last_uncompressed_est was set from input_messages which are
already compressed by prepare_step, making est_raw_i always equal est_i
and save% structurally ~0%. Now pull the truly-uncompressed token count
from ContextManager.get_token_counts()['last_uncompressed'], recorded in
compress_if_needed from the raw memory before compression.

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: expose temp_scripts test harness for cross-machine sync

Add test scripts and fixtures used during context-manager refactor
development. Only .py and .md files are tracked; .out run artifacts
remain ignored via .git/info/exclude.

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: add .gitignore in temp_scripts to suppress .out/.log artifacts

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: allow common ops by default, keep rm/mv/git push as ask

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: extract SummaryTaskStep and ManagedRunContext into summary_step.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract pure budget/cache/fingerprint helpers into budget.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract LLMSummary class into llm_summary.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract StepRenderer and compress_history_offline into step_renderer.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract PreviousCompressor into previous_compression.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract CurrentCompressor into current_compression.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract compression stats functions into stats_export.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: extract ContextManager orchestrator into manager.py

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: correct relative import depth for utils.token_estimation

The token_estimation module lives at core/utils/, not agents/utils/.
From agent_context/ sub-package, three dots (...utils) are needed
instead of two (..utils).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: wire agent_context package with __init__.py re-exports and remove monolith

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: update test loader for agent_context package structure

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* refactor: update tests to use standalone functions from decomposed agent_context package

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: align extra compression tests with v2 compressor behavior

The v2 PreviousCompressor and CurrentCompressor do not fall through
from incremental to fresh when LLM returns None - they return
PreviousCompressResult/CurrentCompressResult(summary_text=None)
immediately. Updated tests P3, C4 to match this behavior.
Updated P4 and C6_asymmetry to patch _summarize_pairs with
PreviousCompressResult instead of raw tuples.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* fix: correct relative import depth for context_runtime.contracts

The context_runtime package lives at core/context_runtime/, not
agents/context_runtime/. From agent_context/ sub-package, three dots
(...context_runtime) are needed instead of two (..context_runtime).

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* chore: untrack temp_scripts and settings.local before PR

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: restore .claude/settings.local.json to match upstream

Co-Authored-By: Claude <noreply@anthropic.com>

* test: add coverage for stats_export, step_renderer, and budget modules

- New test_stats_export.py: 21 tests covering all pure functions (100%)
- New test_step_renderer.py: 24 tests covering truncation, rendering,
  compress_history_offline with mock LLM (49%→86%)
- Extended test_pure_functions.py: tests for _is_context_length_error,
  has_invoked_tools, message_role, trim_pairs_to_budget (92%→97%)

Overall agent_context package coverage: 71% → 81%

Co-Authored-By: Claude <noreply@anthropic.com>

* test: add llm_summary error-handling and output-format coverage (72%→100%)

Co-Authored-By: Claude <noreply@anthropic.com>

* test: cover _step_stream uncompressed estimation path in core_agent

Adds two tests:
- test_step_stream_uses_context_manager_for_uncompressed_est: verifies
  _last_uncompressed_est is pulled from ContextManager.get_token_counts()
- test_step_stream_falls_back_without_context_manager: verifies fallback
  to msg_token_count when context_manager is None

Co-Authored-By: Claude <noreply@anthropic.com>

* test: add fingerprint, change detection, and manager utility tests

Cover the largest untested blocks in manager.py:
- _normalize_for_fingerprint, _fingerprint
- _change_reasons, _stable_component_fingerprints
- _purpose_messages, _messages_from_memory
- _without_leading_stable_messages, _canonical_tools
- _estimate_tools_tokens, build_compressed_snapshot
- init keep_recent_steps cap, token estimation delegates

Manager.py coverage: 69% → 91%, overall: 82% → 92%

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

* chore: fix SonarCloud issues in test and llm_summary files

- test_pure_functions.py: use ValueError instead of generic Exception (S112)
- test_step_renderer.py: remove separator comments flagged as code (S125)
- llm_summary.py: use logger.exception() in except blocks (S8572)
- test_manager_fingerprint.py: replace unused variable with _ (S1481)

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: reduce duplication in step_renderer and fix Sonar warnings in compression and test files

- Extract _build_offline_user_prompt and _call_model_for_summary helpers from compress_history_offline
- Rename unused cache parameter to _cache with alias in current/previous compression (Sonar S1172)
- Replace unused idx variables with _ in test_cache_valid (Sonar S1481)
- Rename test methods to lowercase convention in test_compress_with_cache_extra (Sonar S100)

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: liudongfei <liudongfei4@huawei.com>

* Enhance image builds and monitoring with no-cache and cleanup (#3344)

* Use CCS tag for mainland pushes

* Add no-cache support to image builds

* Revamp rollout checksums for env and image changes

* Add root build wrapper for image and package builds

* Sync monitoring defaults and env generation

* Harden monitoring deploy and uninstall cleanup

* Unify monitoring provider handling in deploy scripts

* Clean up stale monitoring services during deployment

* Restrict monitoring dashboard to superusers

* Restrict monitoring dashboard to superusers

* Relocate monitoring env files to deploy/env

* Unify monitoring env handling for deploys

* Show image tag examples in deployment source selector

* 同步修改文档

* Refactor agent generation workflow

* Add interactive deploy config mode

* Enable default config mode in offline deploy wrapper

* Stop persisting appVersion in deployment config

* Add defaults mode to deploy wrappers

---------

Co-authored-by: root <root@DESKTOP-UARO3HF.localdomain>
Co-authored-by: hhhhsc <name>

* feat(ragflow): add RAGFlow search tool (#3378)

* Release/v2.2.1 (#3269)

* add_greeting_fields_to_agent-develop

* feat(knowledge-base): add preserve_source_file and post-index source cleanup

Let knowledge bases opt out of keeping uploaded MinIO copies after indexing
while retaining Elasticsearch chunks for retrieval. Default behavior remains
preserve_source_file=true for backward compatibility.

- Add preserve_source_file column (init.sql + v2.2.0_0601 migration)
- Accept preserve_source_file on create/update and northbound/vector APIs
- Support document DELETE scope=source_only and source_available in listings
- Run cleanup_source Celery task when preserve_source_file is false
- UI: create-KB toggle, list tag, knowledge-base preview when copy is missing
- Update vector-database SDK docs and backend tests

* test(data_process): stub knowledge_db, redis_service, and redis in test_worker

Align setup_mocks_for_worker with test_tasks so importing
backend.data_process.worker loads package __init__ without real DB/redis deps.

* test(data_process): shim cleanup_source for submit_process_forward_chain tests

* remove duplicate import

* fix: update unit tests for greeting_message and example_questions fields

* add init.sql to sonar.properites

* ♻️ Improvement: API to MCP conversion service supports configuring headers. (#3194)

* ♻️ Improvement: API to MCP conversion service supports configuring headers.
[Specification Details]
1. Front-end and back-end modifications

* ♻️ Improvement: API to MCP conversion service supports configuring headers.
[Specification Details]
1. Modify the frontend, after adding, set the HTTP headers to empty.
2. Modify test cases.

* ♻️ Improvement: Enhance processing of ES index names in memory banks. (#3196)

[Specification Details]
1. Replace all symbols in the index name that do not meet the rules with "_".
2. Modify test cases.

* feat: add active memory tools (StoreMemoryTool, SearchMemoryTool) (#3197)

- Implement StoreMemoryTool for explicit memory storage during agent reasoning
- Implement SearchMemoryTool for on-demand memory retrieval during conversations
- Integrate tools into agent creation flow (create_agent_info.py)
- Register tools in nexent_agent.py and tools/__init__.py
- Add MEMORY_OPERATION tool sign for proper categorization
- Fix memory_core.py cache key to include event loop ID (prevents cross-loop conflicts)
- Add comprehensive test coverage for both tools
- Add procedural memory verification documentation

Tools follow existing patterns: lazy imports, observer integration, error handling,
and respect user memory preferences (agent_share_option, disabled_agent_ids).

Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>

* 🐛 Bugfix: skill names and descriptions never load to context (#3205)

* 🐛 Bugfix: skill names and descriptions never load to context

* 🐛 Bugfix: skill names and descriptions never load to context

* 🐛 Bugfix: skill names and descriptions never load to context

* 🐛 Bugfix: official skills not copied to target directory

* 🐛 Bugfix: official skills not copied to target directory

* Feat: add selected count badges to tool/skill pool labels (#3206)

Co-authored-by: chase <byzhangxin11@126.com>

* 🐛 Bugfix: Fix attribution error when tool calling error (#3208)

* ✨ Feat: Add support for Word document generation, preview, and download (#3191)

* Feat: Add support for Word document generation, preview, and download

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Restrict uploads to a known safe workspace/output directory

* 修改单元测试

* 修复单元测试

* Bugfix: Store uploaded files in Minio for conversation messages to enable file visibility in history

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* ✨Feat:Enhance prompt optimization by integrating openjiuwen and fix related bugs (#3190)

* ✨Feat:add prompt optimization

* 🐛Bugfix: dockerbuild failed when running pipefail in python3_11

* 🔨Optimize: Optimize prompt optimization display page and interaction methods

* 🐛Bugfix: fix dependencies replication

* 🎨:Optimize frontend prompts and loading interface

* 🔧 Refactor: Update imports and remove redundant ENABLE_JIUWEN_SDK import in prompt_service.py

* 🔧 Refactor: Correct import path for NexentCapabilityError and enhance test coverage for prompt optimization service

* 🔧 Refactor: Update import paths for exception handling and improve logging formatting in prompt_service.py

* 🔧 Refactor: Simplify lazy imports in jiuwen_sdk_adapter.py and update import paths in prompt_service.py

* 🔧 Refactor: Enhance Jiuwen SDK adapter handling and improve test stubs in prompt_service.py and related test files

* 🧪test:Pydantic model for PromptTemplateRequest in test_prompt_template_app.py

* 🔧 Refactor: Remove unnecessary dependency exclusions from pyproject.toml

* 🔧 Update: Upgrade huggingface_hub dependency version in pyproject.toml

* 🔧 Update: Exclude unnecessary transitive dependencies and adjust huggingface_hub version in pyproject.toml

* 🔧 Test: Add mock modules for unstructured inference and set up package paths in test files

* 🔧 Test: Enhance test setup by adding optional SDK mocks and cleaning up module imports in data processing tests

* 🔧 Test: Consolidate mock module setup for unstructured inference across multiple test files

* 🔧 Test: Remove unused optional SDK mocks from test configuration

* 🔧 Refactor: Clean up imports and enhance dynamic loading of fastmcp components in Docker client

* 📦update:sdk dependence update

* Add CAS SSO integration and improve logout handling (#3072)

* feat: add CAS SSO integration

* Skip CAS logout when CAS_LOGOUT_URL is unset

* 取消转义

* Improve CAS logout handling and confirm user logout

* Disable account deletion for CAS users

* Add CAS session init SQL and k8s config

* clean code

* Remove agent guardrails design doc from tracking

* 补充文档

---------

Co-authored-by: hhhhsc <name>

* 🐛Bugfix: Remove unnecessary dependency exclusions and upgrade huggingface_hub version in pyproject.toml (#3211)

* refactor: move current time from system prompt to user message for prompt cache stability (#3203)

Remove {{time}} from all 4 prompt YAML templates (manager/managed × en/zh)
and strip time_str from the context_utils pipeline (_format_app_context,
build_skeleton_header_component, build_context_components,
build_app_context_string). Also remove time from create_agent_info render
kwargs and build_context_components call.

In CoreAgent.run, prepend [Current time: ...] to self.task so the timestamp
travels with the user message instead of being baked into the system prompt.
This makes the rendered system prompt fully deterministic per (agent_id,
tenant_id, version_no, language) — enabling prompt/KV cache hits across
requests for the same agent config.

Sync test_context_utils.py: drop time_str= from 3 test cases.

Remove unused datetime imports from context_utils.py and create_agent_info.py.

* 🐛 Bugfix: Fixed the issue of being unable to add MCP services via containerization. (#3213)

[Specification Details]
1. Modify the DEFAULT_NETWORK_NAME when starting the MCP service in the container to match the name in docker-compose.
2. Modify the parameters passed to the add_mcp_service method; custom_headers defaults to None.

* 🐛 Bugfix: Fixed the issue where uploaded text files could not be parsed during a session. (#3219)

* 🐛 Bugfix: Fixed the issue where uploaded text files could not be parsed during a session.
[Specification Details]
1. The return parameter of the file_process method has changed and needs to be unpacked.

* 🐛 Bugfix: Fixed the issue where uploaded text files could not be parsed during a session.
[Specification Details]
1. Modify test case.

* 🐛 Bugfix: Fixed an issue where the MCP service could not be added correctly after updating the FastMCP version. (#3222)

[Specification Details]
1. Add `kwargs` to the `create_httpx_client` function to accept all additional parameters.

* 🐛 Bugfix: Fix incomplete display of tenant resources page after window resize (#3215)

* Move non-shadcn ui component to other folder

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Add agent marketplace repository and version pinning for sub-agents (#3239)

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat(agent): add verification configuration for agents and update related components (#3174)

* feat(agent): add verification configuration for agents and update related components

* feat(model): update model type labels and add monitoring dashboard translations

* 🐛 Bugfix: Fix inability to select agent from agent space to edit (#3240)

* Move non-shadcn ui component to other folder

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix inability to select agent from agent space to edit

* Bugfix: Display correct version info when viewing agent details

* Update data agent and ME CAS integration documentation (#3242)

* 补充dataagent对接文档

* 补充ME cas对接文档

* 补充ME cas对接文档

---------

Co-authored-by: hhhhsc <name>

* ✨ Add several northbound apis (#3223)

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* refactor: simplify deployment script by removing unused variables and functions (#3245)

* feat(agent): add verification configuration for agents and update related components

* feat(model): update model type labels and add monitoring dashboard translations

* refactor(build_offline_package): simplify deployment script by removing unused variables and functions

* 🐛 Bugfix: Adjust agent detail UI layout to accommodate newly added "self-verification" field (#3246)

* Move non-shadcn ui component to other folder

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix inability to select agent from agent space to edit

* Bugfix: Display correct version info when viewing agent details

* Bugfix: Adjust agent detail UI layout to accommodate newly added "self-verification" field

* 补充sql (#3248)

* 补充sql

* 扩大limit限制

* 🐛 Bugfix: Fixed an issue where the MCP service failed to start in a Kubernetes container. (#3254)

[Specification Details]
1. Modify the pod naming logic to convert all non-compliant characters to -.
2. Modify test cases.

* 🐛 Bugfix: knowledge_base_search_tool called with TypeError: argument of type 'FieldInfo' is not iterable (#3259)

* 🐛 Bugfix: Fixed an issue where the one-click rename function failed after importing an agent. (#3258)

[Specification Details]
1. The frontend does not pass `agent_id` when calling the `regenerate_name` API.

* Bugfix: Exclude attachments from assistant when saving conversation history (#3261)

* Bump APP_VERSION from v2.2.0 to v2.2.1 (#3268)

The default setting for client-side self-validation is "False".

---------

Co-authored-by: chase <byzhangxin11@126.com>
Co-authored-by: Chenlifeng <174292121+Lifeng-Chen@users.noreply.github.com>
Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>
Co-authored-by: Jason Wang <56037774+JasonW404@users.noreply.github.com>
Co-authored-by: Xia Yichen <iamjasonxia@126.com>
Co-authored-by: JeffWu <45140512+jeffwu-1999@users.noreply.github.com>
Co-authored-by: WMC001 <46217886+WMC001@users.noreply.github.com>
Co-authored-by: xuyaqi <xuyaqist@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DongJiBao2001 <120021235+DongJiBao2001@users.noreply.github.com>
Co-authored-by: hhhhsc701 <56435672+hhhhsc701@users.noreply.github.com>
Co-authored-by: Dallas98 <990259227@qq.com>
Co-authored-by: frr <64584192+wuyuanfr@users.noreply.github.com>

* Revert "Release/v2.2.1 (#3269)" (#3272)

This reverts commit 9ff420ecce6b2ca21a67ce51053205860a76e41a.

* feat(ragflow): add RAGFlow search tool

- Add RAGFlowSearchTool SDK with list/str compatibility for dataset_ids and doc_id
- Add backend ragflow_service and ragflow_app endpoints
- Add frontend KB selector support for ragflow in ToolConfigModal and ToolTestPanel
- Fix KB selection clearing when switching between tools
- Fix missing inputs field in searchAgentInfo tool mapping
- Clean up incorrect configParams fallback in ToolTestPanel

* test(ragflow): add unit tests for RAGFlow search tool and service

Add 90 tests across 4 files covering ragflow_search_tool, ragflow_service,
nexent_agent RAGFlowSearchTool branch, and tool_configuration_service
ragflow_search validation.

Co-Authored-By: Claude <noreply@anthropic.com>

* test(ragflow): fix SonarCloud issues

- Add docstring to _MockTool.__init__
- Replace float == with pytest.approx()
- Remove type hint from mock_observer fixture
- Remove commented code
- Add type: ignore for _validate_ragflow_config edge cases

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: panyehong <91180085+YehongPan@users.noreply.github.com>
Co-authored-by: chase <byzhangxin11@126.com>
Co-authored-by: Chenlifeng <174292121+Lifeng-Chen@users.noreply.github.com>
Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>
Co-authored-by: Jason Wang <56037774+JasonW404@users.noreply.github.com>
Co-authored-by: Xia Yichen <iamjasonxia@126.com>
Co-authored-by: JeffWu <45140512+jeffwu-1999@users.noreply.github.com>
Co-authored-by: WMC001 <46217886+WMC001@users.noreply.github.com>
Co-authored-by: xuyaqi <xuyaqist@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DongJiBao2001 <120021235+DongJiBao2001@users.noreply.github.com>
Co-authored-by: hhhhsc701 <56435672+hhhhsc701@users.noreply.github.com>
Co-authored-by: Dallas98 <990259227@qq.com>
Co-authored-by: frr <64584192+wuyuanfr@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>

* ♻️ Skill now can read files directly with relative path (#3384)

* 🐛 Bugfix: remove irrational fallback index logic when accurate retrieved results not appeared in semantic retrieved results
♻️ Skill now can read files directly with relative path

* 🐛 Bugfix: remove irrational fallback index logic when accurate retrieved results not appeared in semantic retrieved results
♻️ Skill now can read files directly with relative path

* 🐛 Bugfix: remove irrational fallback index logic when accurate retrieved results not appeared in semantic retrieved results
♻️ Skill now can read files directly with relative path

* 🧪 Add unit test

* Add image registry prefix support and optimize offline deployment (#3388)

* Add image registry prefix support to offline deployment

* Add image registry prefix support to offline deployment

* 优化构建包

* Support source-suffixed offline packages and configurable init image

* k8s部分参数落盘

* clean code

---------

Co-authored-by: hhhhsc <name>

* feat(agent-repository): remove categories and allow custom emoji icons (#3367)

* Release/v2.2.1 (#3269)

* add_greeting_fields_to_agent-develop

* feat(knowledge-base): add preserve_source_file and post-index source cleanup

Let knowledge bases opt out of keeping uploaded MinIO copies after indexing
while retaining Elasticsearch chunks for retrieval. Default behavior remains
preserve_source_file=true for backward compatibility.

- Add preserve_source_file column (init.sql + v2.2.0_0601 migration)
- Accept preserve_source_file on create/update and northbound/vector APIs
- Support document DELETE scope=source_only and source_available in listings
- Run cleanup_source Celery task when preserve_source_file is false
- UI: create-KB toggle, list tag, knowledge-base preview when copy is missing
- Update vector-database SDK docs and backend tests

* test(data_process): stub knowledge_db, redis_service, and redis in test_worker

Align setup_mocks_for_worker with test_tasks so importing
backend.data_process.worker loads package __init__ without real DB/redis deps.

* test(data_process): shim cleanup_source for submit_process_forward_chain tests

* remove duplicate import

* fix: update unit tests for greeting_message and example_questions fields

* add init.sql to sonar.properites

* ♻️ Improvement: API to MCP conversion service supports configuring headers. (#3194)

* ♻️ Improvement: API to MCP conversion service supports configuring headers.
[Specification Details]
1. Front-end and back-end modifications

* ♻️ Improvement: API to MCP conversion service supports configuring headers.
[Specification Details]
1. Modify the frontend, after adding, set the HTTP headers to empty.
2. Modify test cases.

* ♻️ Improvement: Enhance processing of ES index names in memory banks. (#3196)

[Specification Details]
1. Replace all symbols in the index name that do not meet the rules with "_".
2. Modify test cases.

* feat: add active memory tools (StoreMemoryTool, SearchMemoryTool) (#3197)

- Implement StoreMemoryTool for explicit memory storage during agent reasoning
- Implement SearchMemoryTool for on-demand memory retrieval during conversations
- Integrate tools into agent creation flow (create_agent_info.py)
- Register tools in nexent_agent.py and tools/__init__.py
- Add MEMORY_OPERATION tool sign for proper categorization
- Fix memory_core.py cache key to include event loop ID (prevents cross-loop conflicts)
- Add comprehensive test coverage for both tools
- Add procedural memory verification documentation

Tools follow existing patterns: lazy imports, observer integration, error handling,
and respect user memory preferences (agent_share_option, disabled_agent_ids).

Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>

* 🐛 Bugfix: skill names and descriptions never load to context (#3205)

* 🐛 Bugfix: skill names and descriptions never load to context

* 🐛 Bugfix: skill names and descriptions never load to context

* 🐛 Bugfix: skill names and descriptions never load to context

* 🐛 Bugfix: official skills not copied to target directory

* 🐛 Bugfix: official skills not copied to target directory

* Feat: add selected count badges to tool/skill pool labels (#3206)

Co-authored-by: chase <byzhangxin11@126.com>

* 🐛 Bugfix: Fix attribution error when tool calling error (#3208)

* ✨ Feat: Add support for Word document generation, preview, and download (#3191)

* Feat: Add support for Word document generation, preview, and download

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Restrict uploads to a known safe workspace/output directory

* 修改单元测试

* 修复单元测试

* Bugfix: Store uploaded files in Minio for conversation messages to enable file visibility in history

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* ✨Feat:Enhance prompt optimization by integrating openjiuwen and fix related bugs (#3190)

* ✨Feat:add prompt optimization

* 🐛Bugfix: dockerbuild failed when running pipefail in python3_11

* 🔨Optimize: Optimize prompt optimization display page and interaction methods

* 🐛Bugfix: fix dependencies replication

* 🎨:Optimize frontend prompts and loading interface

* 🔧 Refactor: Update imports and remove redundant ENABLE_JIUWEN_SDK import in prompt_service.py

* 🔧 Refactor: Correct import path for NexentCapabilityError and enhance test coverage for prompt optimization service

* 🔧 Refactor: Update import paths for exception handling and improve logging formatting in prompt_service.py

* 🔧 Refactor: Simplify lazy imports in jiuwen_sdk_adapter.py and update import paths in prompt_service.py

* 🔧 Refactor: Enhance Jiuwen SDK adapter handling and improve test stubs in prompt_service.py and related test files

* 🧪test:Pydantic model for PromptTemplateRequest in test_prompt_template_app.py

* 🔧 Refactor: Remove unnecessary dependency exclusions from pyproject.toml

* 🔧 Update: Upgrade huggingface_hub dependency version in pyproject.toml

* 🔧 Update: Exclude unnecessary transitive dependencies and adjust huggingface_hub version in pyproject.toml

* 🔧 Test: Add mock modules for unstructured inference and set up package paths in test files

* 🔧 Test: Enhance test setup by adding optional SDK mocks and cleaning up module imports in data processing tests

* 🔧 Test: Consolidate mock module setup for unstructured inference across multiple test files

* 🔧 Test: Remove unused optional SDK mocks from test configuration

* 🔧 Refactor: Clean up imports and enhance dynamic loading of fastmcp components in Docker client

* 📦update:sdk dependence update

* Add CAS SSO integration and improve logout handling (#3072)

* feat: add CAS SSO integration

* Skip CAS logout when CAS_LOGOUT_URL is unset

* 取消转义

* Improve CAS logout handling and confirm user logout

* Disable account deletion for CAS users

* Add CAS session init SQL and k8s config

* clean code

* Remove agent guardrails design doc from tracking

* 补充文档

---------

Co-authored-by: hhhhsc <name>

* 🐛Bugfix: Remove unnecessary dependency exclusions and upgrade huggingface_hub version in pyproject.toml (#3211)

* refactor: move current time from system prompt to user message for prompt cache stability (#3203)

Remove {{time}} from all 4 prompt YAML templates (manager/managed × en/zh)
and strip time_str from the context_utils pipeline (_format_app_context,
build_skeleton_header_component, build_context_components,
build_app_context_string). Also remove time from create_agent_info render
kwargs and build_context_components call.

In CoreAgent.run, prepend [Current time: ...] to self.task so the timestamp
travels with the user message instead of being baked into the system prompt.
This makes the rendered system prompt fully deterministic per (agent_id,
tenant_id, version_no, language) — enabling prompt/KV cache hits across
requests for the same agent config.

Sync test_context_utils.py: drop time_str= from 3 test cases.

Remove unused datetime imports from context_utils.py and create_agent_info.py.

* 🐛 Bugfix: Fixed the issue of being unable to add MCP services via containerization. (#3213)

[Specification Details]
1. Modify the DEFAULT_NETWORK_NAME when starting the MCP service in the container to match the name in docker-compose.
2. Modify the parameters passed to the add_mcp_service method; custom_headers defaults to None.

* 🐛 Bugfix: Fixed the issue where uploaded text files could not be parsed during a session. (#3219)

* 🐛 Bugfix: Fixed the issue where uploaded text files could not be parsed during a session.
[Specification Details]
1. The return parameter of the file_process method has changed and needs to be unpacked.

* 🐛 Bugfix: Fixed the issue where uploaded text files could not be parsed during a session.
[Specification Details]
1. Modify test case.

* 🐛 Bugfix: Fixed an issue where the MCP service could not be added correctly after updating the FastMCP version. (#3222)

[Specification Details]
1. Add `kwargs` to the `create_httpx_client` function to accept all additional parameters.

* 🐛 Bugfix: Fix incomplete display of tenant resources page after window resize (#3215)

* Move non-shadcn ui component to other folder

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Add agent marketplace repository and version pinning for sub-agents (#3239)

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat: add agent marketplace repository and pin sub-agent versions at publish

Introduce ag_agent_repository_t with list/status/publish/import APIs for
frozen agent snapshots. Pin selected_agent_version_no on agent relations when
publishing so sub-agents resolve to a fixed version at runtime. Extend agent
export/import to bundle skills in ZIP payloads and add embedding model fallback
when no model name is provided.

* feat(agent): add verification configuration for agents and update related components (#3174)

* feat(agent): add verification configuration for agents and update related components

* feat(model): update model type labels and add monitoring dashboard translations

* 🐛 Bugfix: Fix inability to select agent from agent space to edit (#3240)

* Move non-shadcn ui component to other folder

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix inability to select agent from agent space to edit

* Bugfix: Display correct version info when viewing agent details

* Update data agent and ME CAS integration documentation (#3242)

* 补充dataagent对接文档

* 补充ME cas对接文档

* 补充ME cas对接文档

---------

Co-authored-by: hhhhsc <name>

* ✨ Add several northbound apis (#3223)

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* ✨ Add several northbound apis

* refactor: simplify deployment script by removing unused variables and functions (#3245)

* feat(agent): add verification configuration for agents and update related components

* feat(model): update model type labels and add monitoring dashboard translations

* refactor(build_offline_package): simplify deployment script by removing unused variables and functions

* 🐛 Bugfix: Adjust agent detail UI layout to accommodate newly added "self-verification" field (#3246)

* Move non-shadcn ui component to other folder

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix incomplete display of tenant resources page after window resize

* Bugfix: Fix inability to select agent from agent space to edit

* Bugfix: Display correct version info when viewing agent details

* Bugfix: Adjust agent detail UI layout to accommodate newly added "self-verification" field

* 补充sql (#3248)

* 补充sql

* 扩大limit限制

* 🐛 Bugfix: Fixed an issue where the MCP service failed to start in a Kubernetes container. (#3254)

[Specification Details]
1. Modify the pod naming logic to convert all non-compliant characters to -.
2. Modify test cases.

* 🐛 Bugfix: knowledge_base_search_tool called with TypeError: argument of type 'FieldInfo' is not iterable (#3259)

* 🐛 Bugfix: Fixed an issue where the one-click rename function failed after importing an agent. (#3258)

[Specification Details]
1. The frontend does not pass `agent_id` when calling the `regenerate_name` API.

* Bugfix: Exclude attachments from assistant when saving conversation history (#3261)

* Bump APP_VERSION from v2.2.0 to v2.2.1 (#3268)

The default setting for client-side self-validation is "False".

---------

Co-authored-by: chase <byzhangxin11@126.com>
Co-authored-by: Chenlifeng <174292121+Lifeng-Chen@users.noreply.github.com>
Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>
Co-authored-by: Jason Wang <56037774+JasonW404@users.noreply.github.com>
Co-authored-by: Xia Yichen <iamjasonxia@126.com>
Co-authored-by: JeffWu <45140512+jeffwu-1999@users.noreply.github.com>
Co-authored-by: WMC001 <46217886+WMC001@users.noreply.github.com>
Co-authored-by: xuyaqi <xuyaqist@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DongJiBao2001 <120021235+DongJiBao2001@users.noreply.github.com>
Co-authored-by: hhhhsc701 <56435672+hhhhsc701@users.noreply.github.com>
Co-authored-by: Dallas98 <990259227@qq.com>
Co-authored-by: frr <64584192+wuyuanfr@users.noreply.github.com>

* Revert "Release/v2.2.1 (#3269)" (#3272)

This reverts commit 9ff420ecce6b2ca21a67ce51053205860a76e41a.

* feat(agent-repository): remove categories and allow custom emoji icons

* feat(agent-space): improve mine tab UX with delete, navigation, and author display

- Add delete action for agents in mine tab with confirmation modal
- Navigate back to agent repository when editing from agent-space
- Persist agent-space tab state via URL query params (?tab=mine)
- Display author in repository detail modal and map author field
- Auto-fill agent author from user email on create
- Adjust agents page header layout to accommodate back button

* fix conflict

* fix conflict

* fix: delete test ts file

---------

Co-authored-by: panyehong <91180085+YehongPan@users.noreply.github.com>
Co-authored-by: chase <byzhangxin11@126.com>
Co-authored-by: Dallas98 <40557804+Dallas98@users.noreply.github.com>
Co-authored-by: Jason Wang <56037774+JasonW404@users.noreply.github.com>
Co-authored-by: Xia Yichen <iamjasonxia@126.com>
Co-authored-by: JeffWu <45140512+jeffwu-1999@users.noreply.github.com>
Co-authored-by: WMC001 <46217886+WMC001@users.noreply.github.com>
Co-authored-by: xuyaqi <xuyaqist@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DongJiBao2001 <120021235+DongJiBao2001@users.noreply.github.com>
Co-authored-by: hhhhsc701 <56435672+hhhhsc701@users.noreply.github.com>
Co-authored-by: Dallas98 <990259227@qq.com>
Co-authored-by: frr <64584192+wuyuanfr@users.noreply.github.com>

* 🐛Bugfix: Fix responsive layout issues on knowledge base page (#3381)

* 🐛 BugFix: show name conflict error inline in knowledge base input (#3251)

Show error message inline below input when KB name already exists, instead of relying on input status alone. Closes #3251.

- Add nameStatus state + AlertCircle icon + error text
- Change title bar alignment from items-center to items-start
- Pass nameStatus from UploadArea to DocumentList via prop

* 🐛 BugFix: Improve responsive layout of knowledge base creation page (#3251)

* fix: improve responsive layout and prevent overflow in knowledge base components

* 🐛 Bugfix: Fixed an issue with tools relying on large models: previously, if a model was selected and subsequently deleted, the agent would encounter runtime errors without any corresponding notification on the frontend. (#3397)

* 🐛 Bugfix: Fixed an issue where deleted models could still be selected during debugging. + Internationalization loading description of tools.

* 🐛 Bugfix: Fixed an issue with tools relying on large models: previously, if a model was selected and subsequently deleted, the agent would encounter runtime errors without any corresponding notification on the frontend.

* Disable context component budget pruning (#3394)

* 🐛Bugfix: Persist conversation agent and verify jwt expiry (#3392)

* fix: persist conversation agent and verify jwt expiry

* test: cover conversation agent and jwt expiry changes

* fix: refresh published agents after deletion

* 11

* ♻️ Refactor: Remove the limit on the maximum number of execution steps for the agent. (#3400)

* ♻️ Refactor: Remove the limit on the maximum number of execution steps for the agent.

* ♻️ Refactor: Remove the limit on the maximum number of execution steps for the agent.

* ♻️ Refactor: Remove the limit on the maximum number of execution steps for the agent.

* fix context manager builtin tool context (#3401)

* 支持web config runtime northbound多副本 (#3390)

* feat: 支持web config runtime northbound多副本

* Use ReadWriteMany for Kubernetes persistence defaults

* Normalize PR diff line endings

* fix: 修复单测

* Fix agent service unit test mocks

* feat: 默认单实例

* feat: 补充单测

* feat: 补充单测

* feat: enhance deployment options persistence and loading mechanism

* feat: remove multi-replica mode references and improve error logging in northbound service

---------

Co-authored-by: root <root@DESKTOP-UARO3HF.localdomain>

* ✨ Feature: add skill repository lifecycle and management UI (#3393)

* Add skill repository backend APIs

* Add skill repository frontend flow

* Refine skill repository build UI

* feat: add skill edit modal state

* feat: improve skill repository copy, edit, and review flows

* feat: refine agent config skill management

* test: add skill repository coverage and remove dead code

* fix: harden skill editing and repository workflow

* fix: address skill repository quality gates

* fix: correct skill path validation

* fix: stabilize skill path test setup

* test: cover skill update by id workflow

* fix: resolve skill repository quality gate issues

* fix: test

---------

Co-authored-by: sumi2234 <sumi2234@noreply.atomgit.com>

* Add OAuth login mode config and forced redirect handling (#3414)

Co-authored-by: root <root@DESKTOP-UARO3HF.localdomain>

* ✨ Feature: MCP market restructure — Repository, My MCPs, Review Center (#3396)

* mcp web

* mcp web

* mcp web

* mcp web

* mcp web

* mcp web

* delete version

* delete version

* local mirror

* 修复工具验证问题以及工具数量显示问题

* 增加自定义外部市场mcp名称功能;
增加mcp重复命名检查;

* 增加工具数量更新功能

* 增加工具数量更新功能

* 修复仓库的工具数量显示问题;
修复mcp删除bug

* “我的”mcp“申请上架”逻辑问题

* 修复“我的”mcp开发者显示问题;
修复mcp删除后没有同步到智能体开发mcp列表问题;

* 修复删除mcp未初始化mcp启用状态的问题

* 修复市场下载的mcp作者显示问题

* 外部市场mcp连通性校验

* 添加MCP服务按钮修改

* 修复仓库下载的mcp不显示hub的问题

* 删除smithery mcp市场

* 修复通过镜像上传mcp不显示工具数量问题

* 修复mcp来源显示错误

* 修复审核中心标签数字显示问题

* mcp市场“仓库”页面和“我的”页面权限调整:仓库页面为租户内共享,我的页面为用户个人使用;
增加表格迁移;

* Update settings.local.json

* Delete MCP_MARKET_FRONTEND_BACKEND_MAPPING.md

* 更新测试用例

* fix test case

* Quality Gate

* Quality Gate

* test case

* 前端修改

* 审核机制及表设计按照agent仓库修改

* 审核机制及表设计按照agent仓库修改

* test cases

* test cases

* test cases

* test cases

* 🐛 Bugfix: Fix skill count display error when delete a skill has been selected (#3415)

* feat: move /owner-manage left-nav from ASSET_OWNER to SU, add index chunks listing and hybrid search endpoints(#3416)

* feat: move /owner-manage left-nav from ASSET_OWNER to SU, add index chunks listing and hybrid search endpoints

* feat: move /owner-manage left-nav from ASSET_OWNER to SU, add index chunks listing and hybrid search endpoints

* feat: move /owner-manage left-nav from ASSET_OWNER to SU, add index chunks listing and hybrid search endpoints

* Bump version from v2.2.2 to v2.3.0

* 🐛 Bugfix: update skill repository action wording (#3418)

* fix: update skill repository action wording

* fix: update skill repository action wording

* fix: internationalize skill repository UI

* fix: remove duplicate skill locale keys (#3423)

* fix: Clean up leftover file (#3421)

* mcp web

* mcp web

* mcp web

* mcp web

* mcp web

* mcp web

* delete version

* delete version

* local mirror

* 修复工具验证问题以及工具数量显示问题

* 增加自定义外部市场mcp名称功能;
增加mcp重复命名检查;

* 增加工具数量更新功能

* 增加工具数量更新功能

* 修复仓库的工具数量显示问题;
修复mcp删除bug

* “我的”mcp“申请上架”逻辑问题

* 修复“我的”mcp开发者显示问题;
修复mcp删除后没有同步到智能体开发mcp列表问题;

* 修复删除mcp未初始化mcp启用状态的问题

* 修复市场下载的mcp作者显示问题

* 外部市场mcp连通性校验

* 添加MCP服务按钮修改

* 修复仓库下载的mcp不显示hub的问题

* 删除smithery mcp市场

* 修复通过镜像上传mcp不显示工具数量问题

* 修复mcp来源显示错误

* 修复审核中心标签数字显示问题

* mcp市场“仓库”页面和“我的”页面权限调整:仓库页面为租户内共享,我的页面为用户个人使用;
增加表格迁移;

* Update settings.local.json

* Delete MCP_MARKET_FRONTEND_BACKEND_MAPPING.md

* 更新测试用例

* fix test case

* Quality Gate

* Quality Gate

* test case

* 前端修改

* 审核机制及表设计按照agent仓库修改

* 审核机制及表设计按照agent仓库修改

* test cases

* test cases

* test cases

* test cases

* bug fix

* Delete k8s/helm/nexent/charts/nexent-common/files/init.sql

* Bugfix: Disable Supabase auto refrsh token, restrict token refresh requests to frontend only (#3422)

* Bugfix:add crypto.randomUUID() fallback in http

* Bugfix: Update homepage redirect link

* Refactor: Auto-create conversation when conversation_id is empty in agent/run

* Bugfix: skip conversation auto-create in debug mode

* 修复单元测试

* 新增UT

* 新增UT测试

* 修改单元测试

* Bugfix: Disable Supabase auto refrsh token, restrict token refresh requests to frontend only

* Revert "Bugfix: Disable Supabase auto refrsh token, restrict token refresh requests to frontend only"

This reverts commit fb7a2934a5bd6cce111f6b349b8190f52b177e04.

* Bugfix: Disable Supabase auto refrsh token, restrict token refresh requests to frontend only

* 🐛 Fix sequence OWNED BY before table creation in migration v2.3.0_0709 (#3424)

* Fix agent skill unselect persistence (#3426)

* fix: MCP space - api and frontend bug fixes (#3427)

* Fix: remove mcp version number (#3429)

* feat: remove version number field from MCP edit modal

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* 🐛 Fix: remove version badge from review center detail modal

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* 🐛 Fix: add missing English translations for MCP page

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>

* fix: skill summary  (#3430)

* fix skill creation stream parsing

* fix copied skill repository publish

* test skill stream and export edge cases

* test remaining skill stream parser branches

---------

Co-authored-by: Jason Wang <56037774+JasonW404@users.noreply.github.com>
Co-authored-by: DongJiBao2001 <120021235+DongJiBao2001@users.noreply.github.com>
Co-authored-by: gjc199 <97944442+gjc199@users.noreply.github.com>
Co-authored-by: xuyaqi <xuyaqist@gmail.com>
Co-authored-by: panyehong <91180085+YehongPan@users.noreply.github.com>
Co-authored-by: frr <64584192+wuyuanfr@users.noreply.github.com>
Co-authored-by: liudfgoo <49781630+liudfgoo@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: liudongfei <liudongfei4@huawei.com>
Co-authored-by: hhhhsc701 <56435672+hhhhsc701@users.noreply.github.com>
Co-authored-by: root <root@DESKTOP-UARO3HF.localdomain>
Co-authored-by: jxl <jixiaolongcom@sina.cn>
Co-authored-by: chase <byzhangxin11@126.com>
Co-authored-by: Chenlifeng <174292121+Lifeng-Chen@users.noreply.github.com>
Co-authored-by: Xia Yichen <iamjasonxia@126.com>
Co-authored-by: JeffWu <45140512+jeffwu-1999@users.noreply.github.com>
Co-authored-by: WMC001 <46217886+WMC001@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Jinyu Z <1012871848@qq.com>
Co-authored-by: Summer-Si <140902149+Summer-Si@users.noreply.github.com>
Co-authored-by: sumi2234 <sumi2234@noreply.atomgit.com>
Co-authored-by: Hankin <837833609@qq.com>

v2.2.3

Toggle v2.2.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #3362 from ModelEngine-Group/develop

hotfix v2.2.2

v2.2.2

Toggle v2.2.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #3347 from ModelEngine-Group/develop

release v2.2.2

v2.2.1

Toggle v2.2.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #3273 from ModelEngine-Group/release/v2.2.1

Release/v2.2.1

v2.2.0

Toggle v2.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #3183 from ModelEngine-Group/develop

Release v2.2.0

v2.1.1

Toggle v2.1.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #2991 from ModelEngine-Group/release/v2.1.1

Release v2.1.1 with multiple bug fixes and feature enhancements

v2.1.0

Toggle v2.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #2910 from ModelEngine-Group/release/v2.1.0

release/v2.1.0

v2.0.2

Toggle v2.0.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #2822 from ModelEngine-Group/release/v2.0.2

Enhance A2A protocol support and fix various bugs