Skip to content

Merge hotfix/v2.8.3 into develop - #4273

Merged
YehongPan merged 16 commits into
developfrom
hotfix/v2.8.3
Oct 31, 2026
Merged

YehongPan merged 16 commits into
developfrom
hotfix/v2.8.3

Conversation

@jeffwu-1999

@jeffwu-1999 jeffwu-1999 commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Merge hotfix/v2.8.3 into develop

合入 v2.8.3 hotfix 线上的修复,同步 develop 上的重构与新特性。 / Brings the
v2.8.3 hotfix line back into develop, together with develop's refactors
and features picked up by this merge.

本次从 hotfix/v2.8.3 带入 develop 的 PR / PRs carried from hotfix/v2.8.3:

develop 侧已被本合并吸收的 PR / develop-side PRs absorbed by this merge:

#4160 #4177 #4188 #4198 #4208 #4211 #4213 #4214 #4215 #4217 #4218 #4219
#4220 #4229 #4234 #4237 #4239 #4241 #4242 #4243 #4244 #4246 #4250 #4255
#4256 #4257 #4258 #4259 #4261 #4270 (含 profile/model 契约 #4078 #4118 #4119)

冲突及解决 / Conflicts and resolutions (16 files):

  1. fix(agent): deduplicate execution history and add output compaction and recall #4264 + 🐛 Bugfix: Forward-compatible streaming response for the northbound Chat API #4271 vs fix(automation): preserve run outcomes and finalize cancellations #4242 + refactor(backend): 按业务拆分 API、数据库与契约并统一网关鉴权 #4160 — backend/management/services/agent/execution.py
    与 run.py。develop 已将落库抽为 finalize_assistant_projection 管道并引入
    BackgroundExecutionState。以 develop 结构为骨架,hotfix 的执行历史
    (ExecutionHistory/bind_execution_result_units/mark_persisted) 与
    final_answer_mode 逻辑插入对应位置;persistence.py 增加
    final_answer_override 参数,保证 complete 模式落库的是重投影后的完整根答案。
  2. 🐛 Bugfix: Forward-compatible streaming response for the northbound Chat API #4271 vs refactor(backend): 按业务拆分 API、数据库与契约并统一网关鉴权 #4160 — 路由迁移。final_answer_mode 参数落在
    gateway/api/northbound.py 与 runtime 的 /internal/northbound/run;
    公开 /agent/run 路由保持 delta-only 不传参(hotfix 原设计)。
  3. feat(a2a): 将A2A代理调用超时时间调整为15分钟并统一配置 #4265 vs refactor(backend): 按业务拆分 API、数据库与契约并统一网关鉴权 #4160 — A2A 超时常量迁至 contracts/constants/environment.py,
    使用点迁至 management/services/agent/preparation/resources.py。
  4. [hotfix/v2.8.3] Backport #4255: separate application and navigation branding #4262/feat(frontend): separate homepage branding from browser tabs #4255(同 PR 两侧)— frontend 品牌文件取 develop 完整版。
  5. feat(frontend): group MCP tools and unify description hover previews #4261/feat(frontend): group MCP tools and unify description hover previews #4208(同 PR 两侧)— MCP 分组前端文件取 develop 完整版。
  6. 🐛 Fix(AIDP): backport source inspection and pagination fixes to v2.8.1 #4239 vs 🐛 Fix(AIDP): speed up source inspection and align knowledge pagination #4213 — message-sources.ts、useConversationActivitySync.ts、
    source-metadata-performance yaml 取 develop 完整版。
  7. 🐛 Bugfix: 修复个人信息栏 API 秘钥复制结果带掩码星号的问题 (#4198) #4240 vs 🐛 Bugfix: 修复个人信息栏 API 秘钥复制结果带掩码星号的问题 #4198 — test_token_db.py、test_user_management_service.py
    取 develop 完整版。
  8. fix(agent): deduplicate execution history and add output compaction and recall #4264 vs fix(test): pin pytest 9.1.1 and repair mocks broken by module stubs #4244 — test_agent_service.py 取 develop 完整版;
    test_context_item.py 保留 hotfix 的 fail(_self) 类级 patch 形式。
  9. feat(a2a): 将A2A代理调用超时时间调整为15分钟并统一配置 #4265 vs refactor(backend): 按业务拆分 API、数据库与契约并统一网关鉴权 #4160 — test_mocks.py 采用 develop 的
    contracts.constants.environment stub 机制,A2A 超时默认值 900.0 挂载其上。
  10. feat(a2a): 将A2A代理调用超时时间调整为15分钟并统一配置 #4265 + fix(agent): deduplicate execution history and add output compaction and recall #4264 vs Default to CPU dependencies and standardize uv installs #4220 — deploy/images/dockerfiles/main/Dockerfile
    取 develop 的分层 COPY 缓存优化。

验证 / Verification: services 550 + sdk 88 + app 14 本地测试全部通过,
含北向 final-answer-mode 全套、执行历史回归与 agent_service 全量。

jeffwu-1999 and others added 12 commits October 27, 2026 16:13
个人信息栏的展示与复制此前共用同一个 access_key,而数据库层已无条件掩码,

导致权限层虽判定 can_copy=True,复制出的仍是 nexent****11bb 形式的掩码值。

- token_db.list_tokens_by_user 新增 mask 开关(默认仍掩码),权限层显式取存储明文

- 权限层拆分展示值与可复制值:access_key 保持角色语义,新增 masked_access_key 供展示

- 统一复用 mask_access_key,create_token 同步返回 masked_access_key

- 前端展示用 masked_access_key、复制用 access_key,两者不再耦合

验证:test_token_db 27 passed、test_user_management_service 93 passed、

test_user_management_app 76 passed;活集群 ADMIN 可复制完整 key、USER/VIEWER 仍为掩码。
….1 (#4239)

Backport the final changes from PR #4213 without unrelated develop commits. Preserve the v2.8.1 Workbench-only activity scope and maintain one consolidated change record.
Start the v2.8.3 hotfix line from the v2.8.2 release so follow-up bug
fixes can be collected before the version is handed back to main.
…4262)

* feat(frontend): separate homepage branding from browser tabs

Add optional localized homepage titles and independent logo uploads with system-logo fallback. Keep blank homepage titles empty and preserve legacy branding fields and upload aliases.

Keep browser tabs on system branding with a blank initial title and transparent favicon until the system logo loads. Remove competing metadata to prevent login and navigation resets. Keep homepage logos at a fixed size, clip the collapsed sidebar, and shift images right by 4px.

Validate with 33 component tests, 22 Node tests, formatting and copyright checks. Formal D4 execution remains blocked by the missing isolated test-home; full asset validation also has an existing missing ConversationResumeBranch UT reference.

* fix(frontend): initialize homepage title and adjust logo spacing

Default unconfigured localized homepage titles to Nexent while preserving legacy titles and explicitly cleared values across restarts. Seed the built-in locale defaults and move the homepage logo 2px left.

Add six startup regression variants and update branding test traceability. Validation: 33 component tests and 28 Node tests passed; formal runtime verification remains blocked by the missing isolated test-home.

* fix(frontend): clarify application and navigation branding labels

Use application logo/name and navigation logo/title in Chinese and English UI copy. Keep display-location annotations and explain application branding usage and navigation logo fallback.

Preserve existing implementation names, translation keys, stored settings and API contracts. Update accessible-name test selectors and traceability. Validation: 5 component tests, source-only TypeScript, formatting and copyright checks passed; existing formal runtime blockers remain.

* fix(frontend): show branding locations in hover hints

Move parenthesized display locations into small help buttons beside application and navigation branding labels. Support hover and keyboard focus while preserving usage text and existing configuration identifiers.

Validate with 8 component tests, source-only TypeScript, lint, formatting and copyright checks. Capture real browser evidence outside Git; existing formal runtime prerequisites remain unavailable.

---------


(cherry picked from commit 556cdbe)

Co-authored-by: JeffWu <45140512+jeffwu-1999@users.noreply.github.com>
…nd recall (#4264)

* chore: bootstrap action history compaction review

* fix(agent): deduplicate execution history and add cached summary recall

* fix(agent): bound recalled output by remaining context

* fix(agent): expose history reader and load committed execution records

* test: align stream regression fixtures with execution history

* ci: sync unit workflow from develop without merging branch

* fix(agent): clarify runtime result ownership and align UT dependencies

* fix(ci): isolate test index and complete history regression coverage

* fix(agent): preserve host history reader, failure masking and standalone compaction

* fix(agent): retain fallback instructions before execution contract

* fix(context): retain legacy tool names and argument records
* feat(a2a): 将A2A代理调用超时时间调整为15分钟并统一配置

* ci(workflows): sync pipeline configs from develop

Port auto-unit-test.yml, nexent-daily-full-test.yml and sdk_publish.yml
from origin/develop to pick up runner label parameterization, uv managed
Python setup, Codecov CLI cache verification, e2e runner for daily full
test, and pip-based build for SDK publish.

Co-authored-by: Trae <noreply@trae.ai>
Generated-by: GLM-5.3-Flash

* build(deps): 同步 backend/sdk pyproject.toml 与 origin/develop 一致

- backend/pyproject.toml: CPU 索引定义、index-by-name 与索引策略、
  本地 SDK 路径映射、data-process 的 nexent[data_process,performance]、
  test 的 nexent[dev]、pytest 与 pytest-asyncio 版本约束
- sdk/pyproject.toml: 配套 uv 索引配置、pytest 固定 9.1.1、
  unstructured[all-docs] 固定 0.18.14、移除旧的 999.0.0 依赖覆盖

Co-authored-by: Trae <noreply@trae.ai>
Generated-by: glm-5.3-flash

* fix(test): 稳定化 docker 端口分配失败用例,兼容容器化 runner

test_start_container_find_port_failure 依赖 _is_running_in_docker()
返回 False 才会执行到 find_free_port;在容器化 runner 上该检测为
True,用例走了容器内分支导致断言失败。显式 patch 该检测为 False,
并补齐文件缺失的版权头。

* Chore(deploy): 调整 Dockerfile 中 sdk 复制和安装的顺序

为了让 uv sync 能通过 [tool.uv.sources] 正确解析本地 sdk,提前复制 sdk 目录;同时将 sdk 的性能 extras 安装移至后续步骤,避免依赖解析冲突。

---------

Co-authored-by: Trae <noreply@trae.ai>
Merge origin/develop into hotfix/v2.8.3 keeping develop's refactored
layout (#4160) while carrying the v2.8.3 fixes onto the new paths.

Path migrations (develop moved, hotfix edited the old location):
- A2A timeout constant -> contracts/constants/environment.py; used by
  management/services/agent/preparation/resources.py (ex backend/agents/
  create_agent_info.py).
- final_answer_mode northbound parameter -> gateway/api/northbound.py
  (ex apps/northbound_app.py) and runtime internal /internal/northbound/run
  route; the public /agent/run route stays delta-only as designed.

_execution_agent_chunks (execution.py):
- Kept develop's finalize_assistant_projection pipeline and added a
  final_answer_override so complete mode persists the recomputed root
  answer.
- Execution history: build the run-local ExecutionHistory, bind
  execution_result units in the stream loop, finalize references before
  the projection, and mark units persisted after a successful settle.
- Complete mode: buffer units even without a message row, suppress
  incremental final_answer events, emit the single reconstructed answer
  at finalization, and treat a missing message row as a terminal failure
  after the projection settles.

Everything else (Dockerfile, frontend sources/activity sync, SDK
core_agent MCP failure handling, affected tests) follows develop, with
the hotfix-only assertions restored where develop lacked them.

Verified locally: 550 services + 88 sdk + 14 app tests pass, including
the northbound final-answer-mode suite and the execution-history
regressions.
@jeffwu-1999 jeffwu-1999 changed the title Hotfix/v2.8.3 Merge hotfix/v2.8.3 into develop Oct 31, 2026
The merge commit 12cca86 used 'git add -A' and swept local-only
artifacts into the tree: agent workspace data (.workbuddy), local
Elasticsearch/Redis runtime dirs, local deliverables, scratch commit
message files, release-note drafts, a local compose override, and two
local-only e2e case folders that no remote branch carries.

Remove them from the index (files stay on disk) and ignore them in
.gitignore so future merges cannot pick them up again.
Three leftovers from the merge still imported from the pre-refactor
modules and broke CI collection:

- backend/infrastructure/http/a2a.py imported the A2A timeout constant
  from consts.const; switch it to contracts.constants.environment.
- test_a2a_http_client.py did the same in two places.
- test_execution_result_read_db.py imported database.conversation_db;
  switch it to management.db.conversation.repository.

Also collapse the A2A_AGENT_INVOCATION_TIMEOUT_SECONDS assignment in
contracts/constants/environment.py to a single physical line: the
contracts architecture test requires one assignment per line for both
constant files.

Verified locally: a2a client/relation/ssl suites 48 passed when run
per file (the 12 cross-file failures reproduce on the develop baseline
too and are a pre-existing isolation issue, not from this change);
execution-result-read-db and contracts architecture suites pass.
The merged _stream_agent_chunks attaches its run-local execution
history to agent_run_info.observer before iterating run chunks. The
real AgentRunInfo always carries an observer, but the background-stream
test built its SimpleNamespace without one, so every case failed with
AttributeError. Add a Mock observer to the fixture.
@codecov

codecov Bot commented Oct 31, 2026 •

Copy link
Copy Markdown

@YehongPan
YehongPan merged commit 4fee5a2 into develop Oct 31, 2026
18 checks passed
jeffwu-1999 pushed a commit that referenced this pull request Nov 3, 2026
将 develop 同步进 hotfix/v2.8.4,消除 PR #4290 的全部冲突。 / Sync
develop into hotfix/v2.8.4, clearing every conflict of PR #4290.

背景:v2.8.3 内容此前经 #4273 以 squash 方式进入 develop,提交历史未
接上,PR #4290 因此把整条发版线识别为全新变更(25 处冲突均为历史对
账,非真实冲突)。 / Background: v2.8.3 content entered develop via the
squashed #4273 without commit history, so PR #4290 presented the whole
release line as new (all 25 conflicts are history reconciliation).

带入的 PR / PRs carried:
- #4288 v2.8.4(含 #4283 SQL 迁移简化、#4287 回滚 #4277)——对 develop
  的净内容变更为离线包流水线固定 ubuntu-24.04 执行器;#4283 的 SQL 在
  develop 上字节一致,#4287 的回滚对 develop 为空操作。
  Net content change versus develop is only the offline workflow runner
  pin; #4283's SQL is byte-identical on develop and #4287's revert is a
  no-op there.
- #4272 / #4264 / #4271 / #4265 / #4262 / #4261 / #4260(v2.8.3 线)——
  内容已由 #4273 在 develop 发布,本次接入真实提交历史,后续合并不再
  重复冲突。 / Content already released via #4273; this merge attaches
  the real commit history so future merges stop re-conflicting.

冲突处理 / Conflicts:
- modify/delete(backend/agents/create_agent_info.py、backend/apps/
  northbound_app.py、backend/consts/const.py)取 develop 的删除,#4160
  重构已迁移至新路径。 / Took develop's deletions for old-path files
  (#4160 moved them).
- 内容冲突一律取 develop 侧(等价内容已在迁移后路径上演进),包括
  execution.py、Dockerfile、repository.py 等。 / Took develop's side
  for content conflicts; the equivalent content already lives on the
  migrated paths, including the byte-newer repository.py with the
  correct management.db.models import.
- workflow 由 git 自动合并:保留 develop 的组件列表(#4248 已移除
  supabase),采纳 ubuntu-24.04 钉版。 / Workflow auto-merged: develop's
  component list (no supabase after #4248) with the pinned runner.

验证 / Verification: 合并树与 origin/develop 的差异仅剩 workflow 的
runs-on 一行;核心 UT(agent_service、northbound final-answer、
background stream、execution-result-read-db 共 532 项)通过。
/ The merged tree differs from origin/develop by the runs-on line only;
core suites (532 tests) pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants