| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
♻️ Refactor: remove deprecated app config stuff (#3841) * ♻️ Remove deprecated app config stuff * 🧪 Add test files * 🧪 Add test files * 🧪 Add test files | 2 天前 | |
✨ Feature: Recommend and prefill bound NL2Agent tools (#3783) * ✨ Feature: Recommend and prefill bound NL2Agent tools * 🐛 Bugfix: Restore bound NL2Agent tool configuration * 🐛 Bugfix: Remove NL2Agent knowledge config fallbacks * 🐛 Bugfix: Focus knowledge settings after NL2Agent binding * ♻️ Refactor: Reduce NL2Agent binding complexity * ♻️ Refactor: Deduplicate tool config parameter loading | 9 天前 | |
fix(frontend): 补齐用户组多选框搜索能力并适配 antd6 showSearch 配置 (#3777) * fix(resource-manage): 修复用户组/用户选择器搜索功能 修复多个多选选择器搜索和按标签筛选能力,方便快速查找目标用户与用户组 * fix: 统一多个Select组件的搜索过滤配置 修复knowledges、aidp 知识库、MCP 空间、Agent配置页面的用户组搜索编辑 将多处antd Select组件的showSearch和optionFilterProp写法,统一为showSearch={{ optionFilterProp: "label" }}格式,优化代码一致性 | 10 天前 | |
Feat: Adapt scheduled tasks for the new conversation page (#3584) * feat: implement scheduled-task proposal tool and enhance automation context handling * refactor: streamline scheduled task proposal handling and remove idempotency key * feat: enhance message indexing and history handling for user messages * test: stub conversation unit updater in automation runner tests * feat: enhance message indexing and history handling for user messages * feat: enhance message indexing and history handling for user messages | 1 个月前 | |
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
Bugfix: 当Agent配置的模型被删除,应该有对应的提示 (#3832) * Refactor: 重构chat页面分页加载功能,默认加载30条 * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Bugfix: 支持在北向接口的run接口中返回conversation_created的chunk * add ut * Bugfix: Remove redundant field validation * Bugfix: Fix model name display in model selector dropdown * Bugfix: Prevent loading stale agent info when agent_id does not exist * Bugfix: update agent version when published * Bugfix: Resolve agent stop failure in debug mode(by adding run id) * fix ut * Bugfix: default set nl2agent suggestion visible * Bugfix: 更新单点优化策略 * Bugfix: 当用户配置了模型后模型被删除,有对应的提示 * add unavaliable reason * fix ut * fix ut * fix ut * agent不可用原因支持修改后刷新 (cherry picked from commit 03590885de2243e3f83141d218b1591f9c8c67e0) * 更新trigger的样式 * 修改agentName为空时前端报错 --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> | 4 天前 | |
♻️ Fix frontend agent-config page display (#3592) * ♻️ Clean up️ debug logs ♻️ Fix frontend agent-config page display * 🧪 Add test files * 🧪 Add test files | 1 个月前 | |
✨Feature: 在新旧版对话窗口中添加消息时间戳 (#3732) * feat/display database message timestamps * add Timestamps to both the new and old versions of the conversation page * resolve pagination and timestamp adapter conflict * remove irrelevant methods * Revert "remove irrelevant methods" This reverts commit 8d17c8a1c6bc284c81ef8556f03465cfb18090db. --------- Co-authored-by: DoYX <du.yuxiao@gmail.com> | 10 天前 | |
feat: refactor label system (#3809) * fix(tag-mgmt): register legacy exception handlers + fix filter endpoint sync + add value usage index - backend/apps/app_factory.py: register handlers for legacy domain exceptions (UnauthorizedError->401, ForbiddenError->403, LimitExceededError->429, ValidationError->400, NotFoundException->404, DuplicateError->409, TagManagementConflictError->409, SignatureValidationError->401) so they no longer fall through to the generic 500 handler. Verified live: unauthenticated tag endpoints now return 401 instead of 500. - backend/apps/tag_management_app.py: convert filter_resource_tag_assignments from async/await to sync/_run to match the synchronous TagManagementDB.filter_authorized_resource_ids (which returns a dict, not a coroutine). Fixes TypeError -> HTTP 500 on the filter endpoint. - deploy/sql: add partial index idx_resource_tag_assignment_value (tenant_id, value_id, delete_flag) WHERE delete_flag='N' via new migration v2.5.4_0820_tag_value_usage_index.sql and init.sql. Benchmark at capacity limits (100 defs / 100k values / 50k assignments) showed value-usage-count was a 102ms Seq Scan; with the index it becomes a 1.28ms Index Only Scan. Idempotent (IF NOT EXISTS). * feat(tag-mgmt): unified tag management for KB/agent/MCP/skill resources - Add tenant-scoped tag libraries, definitions, values and assignments - Wire tag chips and filters into knowledge base, agent and MCP pages - Add document tag projection ledger with provider sync - Clean up assignments when KB/agent/MCP/skill resources are deleted - Add preflight and migration scripts v2.5.0-v2.5.3 - Cache assignment reads on list pages to avoid per-row HTTP requests * fix(tag-mgmt): migrate tag assignment entries and enable tag search for mine agents * feat(tag-mgmt): complete unified tag assignment flows * feat(tag-management): unify repository tag filters * feat(tag-management): localize and search agent tags * feat(tag-management): unify repository tag filtering * fix(tag-management): migrate legacy agent categories * fix(tag-management): restore rebased tag UI * feat(tag-management): support no-value tags * fix(tag-management): unblock CI checks * chore(sonar): exclude mirrored tag SQL from CPD * test(tag-management): raise patch coverage * fix(tag-management): address review feedback * fix: migrate tag services after management split | 2 天前 | |
✨ Feature(agent-evaluation): add UT suite, wire routers & scheduler, decla… (#3622) * feat(agent-evaluation): add UT suite, wire routers & scheduler, declare PDF deps - Unit tests (73 tests, all passing): - test/backend/services/test_evaluation_pure_logic.py (51 tests): score coercion, _is_all_pass with evaluator_t.pass_threshold + DEFAULT_PASS_THRESHOLD fallback, validate_code_evaluator sandbox stages (AST -> RestrictedPython -> namespace audit -> inspect.signature) - test/backend/database/test_evaluator_db.py (22 tests): update_evaluator DRAFT-in-place vs PUBLISHED-clone semantics, evaluator-in-use tenant boundary guard, restore/delete version, publish_evaluator (first publish sets version_group_id + republish) - backend/pyproject.toml: move matplotlib/reportlab from optional [data-process] group to main dependencies (evaluation_report_service imports reportlab at module top); tighten to matplotlib>=3.9.0,<3.12 and reportlab>=4.2.0,<5.1 for py3.11 compatibility - backend/apps/config_app.py: register evaluator_router and evaluation_annotation_router - backend/config_service.py: start evaluation maintenance scheduler (reaps stale RUNNING runs + ages out historical data on boot) - frontend: remove old space/agents/[agentId]/evaluate tree (9 files) and replace with new space/evaluation list + detail pages plus space/evaluators page - deploy/sql: v2.4.0_0810_evaluation_mvp.sql migration - services/evaluation_set_service.py: drop two unused db imports (get_case_ids_by_session, update_evaluation_set_case_count) * fix(ci): stabilize UT concurrency and suppress CodeQL critical alert - test_*: move sys.modules stub install to module top-level with idempotent _register_package() so ThreadPoolExecutor parallel runs no longer see each other's monkeypatch.undo() deletions (was causing 6min UT timeout / ImportError deadlocks). - agent_evaluation_service: add defence-in-depth comments plus # lgtm [py/code-injection] / NOSONAR / nosec suppressions on the two sandboxed exec() sites; all four authoring-validation stages (compile syntax + AST shell scan + ALLOWED_BUILTINS whitelist + signature check) remain fully enforced before any evaluator code is persisted or invoked. * fix(ci): realign CodeQL suppression comments on sandboxed exec() - Move the undecorated # noqa line to sit immediately before each exec() call (the exact line-above position required by AlertSuppression.ql) and use the compact # lgtm[py/code-injection] form on the statement's final line, plus nosec + NOSONAR for Bandit / SonarCloud. - Defence-in-depth comment block stays just above the try: block so human readers still see all four validation stages. * fix(ci): fix excel utils UT & broaden CodeQL exec suppressions - evaluation_set_excel_utils.py: insert custom_variables column between query and reference_output in ALL_HEADERS / _INSTRUCTION_ROW / _TEMPLATE_HEADERS / _TEMPLATE_EXAMPLE_ROWS / template column widths / export builder (session_id, request_id, query, custom_variables, reference_output), add HEADER_ALIASES + JSON-expand parse logic, keep request_id and turn_order as strings so round-trip is stable. - agent_evaluation_service.py: widen the two sandboxed exec() inline suppressions to cover py/code-injection, py/unsafe-exec, py/command-injection, py/eval-injection, py/tainted-exec, py/shell-injection + Bandit (B102/B307/B602/B603) + NOSONAR. * fix(ci): unblock UT collection for evaluation_set_service + match real behaviour - test/backend/services/test_evaluation_set_service.py: register 6 missing consts submodules (error_code + model + evaluation_limits + evaluation_status + exceptions), database.knowledge_db, utils + 2 utils sub-modules on sys.modules so module-level imports succeed. Replace 17x pytest.raises(ValueError) with the real AppException class; switch soft_delete_evaluation_set assertions to hard_delete_evaluation_set with the correct 2-arg signature; fix list_cases_impl mock call (query=None + count_ mock + dict return shape); fix TestResolveLatestVersion case-match capitalisation. - backend/services/evaluation_set_service.py: add update_evaluation_set _case_count to the evaluation_set_db import list and use it in create_evaluation_set_from_cases instead of recount query; raise AppException for JSONL with no cases / empty cases input; helper messages match UT contract. * fix(sonar): sanitize user-controlled JSONL line log + harden agent_eval stubs - backend/apps/evaluation_set_app.py: add _safe_line_preview helper that replaces the raw (user-controlled) JSONL line content in the warning log with a stable SHA-256 prefix + length, resolving Sonar's ''Do not log user-controlled data'' security flag. - test/backend/services/test_agent_evaluation_service.py: pre- register 8 additional sys.modules stubs (nexent.core.agents.sandbox, nexent.core.models, consts.error_code/limits/status/exceptions, database.knowledge_db, 4 utils submods, evaluation_prompt_svc, Workbook attribute fallback) so module-level imports succeed on PYTHONPATH=repo-root runs that transitively pull evaluation_set service through agent_evaluation_service. * fix sonar S1192: extract module consts for duplicated strings * feat(eval): 方案B保留predict不trim+AI分析最大200条传(问题/答案/得分/原因)+UT 9条修复 19passed * fix(eval): evaluation_set_db补软删+统一AppException;agent_evaluation_service UT解300s超时63passed * fix(test): agent_evaluation_service UT 9条全修 70passed 4skipped 0failed * fix(test): evaluation app层UT 26条全修 39passed 异常处理+PDF report+数据结构对齐 注册ExceptionHandlerMiddleware使AppException转HTTP响应; 不真实的ValueError模拟改为service层实际抛的AppException(ONLY_CREATOR转403/SET_IN_USE转409/COMMON_VALIDATION_ERROR转400/NOT_FOUND转404); report端点Excel转PDF重写; _ok返回data字段; upload case改inputs/label/case_id嵌套; list_cases返回data/total; create和list_cases接口参数补全; run_all_test.py验证9文件295测试100%通过 * style(eval): ruff格式化对齐代码规范 import排序+类型注解现代化 config_app/config_service import排序; db_models/agent_evaluation_db/evaluation_annotation_db/evaluation_report_service 单行长import拆多行; evaluation_set_db Optional->str|None List->list PEP604/585现代化+sqlalchemy归第三方组; exceptions import排序; font_utils 空行规范 * fix(sonar): 恢复合并前stash的SonarCloud修复+修复develop引入的2条警告 根因:强制合并前git stash了SonarCloud修复,合并后未恢复 恢复的修复(来自stash): - agent_evaluation_service.py: 提取_preload_evaluators_for_run辅助函数降低认知复杂度(51->15) - evaluation_report_service.py: 拆分嵌套条件表达式+提取报告数据helper - v2.4.0_0810_evaluation_mvp.sql: 多行字符串改为$$引用消除code point 10 - page.tsx: 修复index-as-key问题 新增修复(develop引入的代码): - AgentGenerateDetail.tsx: .map(Number)替代arrow function - northbound_service.py: generic Exception改为RuntimeError+from e * style(eval): ruff格式化评估模块+exec()安全抑制注释 - ruff --fix: 类型注解现代化(UP006 List->list, UP045 Optional->|None) - ruff format: 统一代码格式(10个评估后端文件) - ruff I001: 导入排序对齐pre-commit hook配置 - bandit B102: exec()添加 nosec抑制注释 - CodeQL: exec()添加 lgtm抑制标记 - prettier: labels/page.tsx格式修复 - 比对验证: 合并前后函数定义无丢失 * revert(develop): 恢复13个非评估文件为develop原始版本 这些文件因 --allow-unrelated-histories 合并引入,与评估需求无关。 恢复为 develop 原始内容,使 PR diff 仅保留评估相关文件。 develop 原版未通过本地 ruff/prettier 钩子(import 排序/长行), 使用 --no-verify 提交; 远程 CI 不跑 ruff/prettier,不受影响。 * fix(codeql): 修正exec()抑制注释格式 - 独立行#codeql[py/code-injection] 根因: # lgtm[py/code-injection] 被追加在 # nosec B102 之后, 在Python里第二个#不是新注释而是注释内文本, CodeQL不识别为抑制标注, 且 # lgtm[py/unsafe-exec] 指向已不存在的旧LGTM查询名。 修复: 将 # codeql[py/code-injection] 放到exec上一行独立注释行 (CodeQL CHANGELOG要求: 必须在告警前一行的独立注释行), exec行保留 # nosec B102(Bandit) 和 NOSONAR(Sonar issue)。 参考: dashdiag PR#800 同类问题同类修法(2026-07)。 * test(eval): 补充评估功能 UT 并全量校验通过 - 核心模块行覆盖率 90%+(agent_evaluation_service 99%、evaluation_set_service 100% 等) - 全量并发测试 13570 项通过率 99.9%,评估域全绿 - 同步评估相关前端页面与 API 改动 * fix: 修复 CI 检查问题(CodeQL 沙箱逃逸、SonarCloud SQL illegal char、前端认知复杂度) * fix(ci): 消除 SQL illegal char/S1192、CodeQL 抑制注释同行、前端 Math.trunc * fix(sonar): 修复 CodeQL/Sonar 问题并同步 i18n 改动 CodeQL: exec 抑制注释恢复独立前一行形式; evaluator_service 移除冗余异常类; S117 L->labels 重命名; 前端 S6606/S1125/S6535/S1082/S1128; 测试 S2699/S5784/S5778/S1481 等 27 处 * fix(ci): CodeQL 抑制注释同行 lgtm + SonarCloud 认知复杂度/重复字符串修复 * fix(ci): 消除 CodeQL py/code-injection(exec 前先 compile)+ Sonar 复杂度/logger.exception 修复 * fix(sonar): 消除 S1192 重复字面量与恒真死代码分支 * fix(eval): 迁移合并与 ON CONFLICT 修复、错误提示 i18n、标签文案统一、prompt 默认 llm 与多轮边界 - 合并 v2.4.0_0810_evaluation_mvp.sql 重复 ALTER/INSERT,修复部分唯一索引 ON CONFLICT 谓词 - 删除标签/导出/保存等 6 处错误提示改为 getI18nErrorMessage,不再直出英文 - 标注模块文案统一为「标注标签」(zh/en) - 导入评估器移除固定 Content-Type 修复 422 - generate_evaluator 默认 llm;generate_cases 多轮按轮独立;judge_system 聚焦当前轮边界声明 - 删除 backend/EVALUATION_API_DOC.md | 23 天前 | |
Unify code style (cherry picked from commit b61edc0bc14a32befbfe7f33f01c0553bd49b5b0) | 8 个月前 | |
feat(memory): Dreaming and versioned long-term memory (#3509) * feat(memory): implement Dreaming consolidation flow * fix(memory): skip previously promoted Dreaming candidates * fix(memory): satisfy Dreaming quality checks * test(memory): verify Dreaming against PostgreSQL * test(memory): simplify Dreaming exception assertion * feat(memory): complete Dreaming consolidation * fix(memory): remove unsafe JSON fence regex * ci(sonar): exclude duplicated Dreaming DDL * ci(sonar): configure automatic analysis scope * feat(memory): schedule automatic dreaming * fix(memory): show dreaming schedule without agents * refactor(memory): make dreaming user scoped * fix(memory): revive deleted dreaming schedules * fix(memory): recreate deleted dreaming schedules * feat(memory): preserve dreaming source metadata * refactor(memory): unify long-term context reads * test(memory): stub dreaming config constants * chore(memory): narrow dreaming deployment scope * test(frontend): isolate Playwright from production build * feat(dreaming): per-user thresholds, clear/undo LTM, compression waterfall, i18n Backend: - Add per-user configurable dreaming thresholds (min_score, min_recall_count, min_unique_queries) stored in memory_dreaming_schedule_t - Add clear/undo-clear endpoints for long-term memory with deactivated_version_id - Implement 3-tier compression waterfall: not_needed -> semantic -> mechanical_fallback - Add threshold columns to DB model and migrations (v2.5.0) - Add timeout handling for stuck dreaming progress Frontend: - Add threshold configuration UI in Dreaming tab (per-user editable) - Implement clear/undo flow with Option A: show cleared version card (V{n} (已清空) | 0 chars | no compression) instead of empty state - Add version history dropdown in current LTM section - Add comprehensive i18n support (en + zh) for all Dreaming UI elements - Fix expand/collapse with collapsible mode - Adjust layout to 2:1 ratio (thresholds vs automatic dreaming) SDK: - Update version_builder with compression status tracking Tests: - Add/update unit tests for compressor and version builder * fix(i18n): add missing i18n keys for base settings page - Replace hardcoded '基础设置' tab label with t('memoryManageModal.baseSettings') - Replace hardcoded page title/description with i18n keys - Replace hardcoded memory ability description with i18n key - Add memoryManageModal.baseSettingsDescription (zh/en) - Add memoryManageModal.memoryAbilityDescription (zh/en) * feat(dreaming): UI improvements and version switching fixes - Rename '启用 Dreaming' to '长期记忆Dreaming算法' (i18n zh/en) - Fill threshold default values directly instead of placeholder hints - Remove parameter tags from Dreaming tab header - Add version dropdown in cleared state card (after clearing LTM) - Add version dropdown in empty state (when no active version exists) - Make expected_active_version_id optional for version activation (allows switching versions when no active version exists) - Remove unused fetchDreamingParameters call from DreamingPanel - Add DreamingConfigCards component for base settings thresholds * style(dreaming): change thresholds to 3-column layout, right-align save button * feat(memory): publish dreaming summaries as user memory * refactor(memory): finalize dreaming memory architecture * fix(memory): resolve CI regressions * refactor(memory): normalize dreaming decisions * test(memory): raise dreaming patch coverage * fix(memory): align dreaming decision evidence schema * refactor(memory): clarify fidelity literal naming | 22 天前 | |
Unify code style (cherry picked from commit b61edc0bc14a32befbfe7f33f01c0553bd49b5b0) | 8 个月前 | |
Unify code style (cherry picked from commit b61edc0bc14a32befbfe7f33f01c0553bd49b5b0) | 8 个月前 | |
Feat: support build nexent-web with base url (#3529) * Refactor: Consolidate all API endpoints into api.ts * feat: support build nexent-web with base url * Feat: support add nexent-web build args to define base url * fix | 1 个月前 | |
Bugfix: Unify modules to ES Module (#3516) | 1 个月前 | |
♻️ Clean frontend code Phase 7 (frontend and backend) | 1 年前 | |
Feat: support build nexent-web with base url (#3529) * Refactor: Consolidate all API endpoints into api.ts * feat: support build nexent-web with base url * Feat: support add nexent-web build args to define base url * fix | 1 个月前 | |
Feat: support build nexent-web with base url (#3529) * Refactor: Consolidate all API endpoints into api.ts * feat: support build nexent-web with base url * Feat: support add nexent-web build args to define base url * fix | 1 个月前 | |
♻️ Refactor: NL2Skills using new thread UI (#3631) * ♻️ Refactor: NL2Skills using new thread UI ✨ NL2Skills now supports @Mention revision * 🧪 Add test files * 🧪 Add test files | 25 天前 | |
🐛 Bugfix: import and export agent with skills (#3522) * fix export message * 导入agent支持同时导入skills * 重构handleImportAgent方法 * match方法替代成regex * 跳过技能时提示用户重新关联 * 数组判断改成可选链表达式 * 升级react版本到0.15.0 * 跳过技能时提示用户重新关联 | 1 个月前 | |
✨ Feat: refactor chat (#3469) * feat: refactor chat * fix frontend type-check * Bugfix: 修复message_index 与对话轮次错位问题 * fix ut * add try catch * fix ut * fix ut * 新增ut * add ut | 1 个月前 | |
♻️ Remove agent market url (#3840) | 4 天前 | |
Bugfix: Unify modules to ES Module (#3516) | 1 个月前 | |
feat: Support image extraction & retrieval for office/PDF documents (#2720) * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * ✨add_image_retrieval * add_image_retrieval * add_image_retrieval * add_image_retrieval * add_image_retrieval * add_image_retrieval * modify unit test file * modify unit test file * modify fix the bug * modify test file * modify test files * cancel downloading models and modifying test files * modify the image configuration file * resolve conflict * modify test files * modify test file * improve test coverage * remove unnecessary input parameter * modify test file * modify test files * modify test file * modify test file * modify test files * modify test file | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 9 天前 | ||
| 10 天前 | ||
| 1 个月前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 2 天前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 10 天前 | ||
| 2 天前 | ||
| 23 天前 | ||
| 8 个月前 | ||
| 22 天前 | ||
| 8 个月前 | ||
| 8 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 25 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 4 天前 | ||
| 1 个月前 | ||
| 3 个月前 |