feat: harden company resume, external sessions, and Office UI i18n

Improve suspend/resume identity continuity and external broker session handling, add Office UI internationalization with rebuilt assets, and expand company org configs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
小东
2026-07-16 09:20:40 +08:00
parent eb934cf2bd
commit cb6b8ed6e1
32 changed files with 2562 additions and 446 deletions
+22 -4
View File
@@ -5461,7 +5461,18 @@ class CompanyWorkItemExecutor:
await self._emit_progress(f"[Company:{projection_id}] awaiting peer", task_id=task.id)
await self.save_task(task)
else:
await transition_work_item_from_task(
self.store,
task,
target_status_or_phase=result.status,
reason=f"work_item_{result.status.value}",
)
await self._append_progress(
task,
f"Work item ended with status {result.status.value}.",
)
await self._emit_progress(f"[Company:{projection_id}] failed", task_id=task.id)
await self.save_task(task)
return result
# Comms park check: if the agent sent any blocking messages
@@ -7332,12 +7343,19 @@ class CompanyWorkItemExecutor:
metadata_updates["review_resolution"] = copy.deepcopy(resolution)
metadata_updates["review_resolution_state"] = "pending"
try:
current = None
if hasattr(self.store, "get_delegation_work_item"):
current = await self.store.get_delegation_work_item(review_work_item_id)
update_kwargs: dict[str, Any] = {
"claimed_by_role_runtime_session_id": "",
"claimed_by_seat_id": "",
"metadata_updates": metadata_updates,
}
if current is None or current.phase not in DONE_PHASES or current.phase == phase:
update_kwargs["phase"] = phase
persisted = await self.store.update_delegation_work_item(
review_work_item_id,
phase=phase,
claimed_by_role_runtime_session_id="",
claimed_by_seat_id="",
metadata_updates=metadata_updates,
**update_kwargs,
)
except Exception:
logger.opt(exception=True).warning(
@@ -1710,6 +1710,7 @@ class CompanyRuntime:
**dict(session.resume_state),
**runtime_state,
}
await self._refresh_adapter_session_state_from_store(session)
adapter_state_updates = self._adapter_state_from_result(task, result)
if adapter_state_updates:
session.adapter_session_state = {
@@ -1899,6 +1900,31 @@ class CompanyRuntime:
return candidate
return None
async def _refresh_adapter_session_state_from_store(
self,
session: CompanyMemberSession,
) -> None:
role_session_id = str(session.role_session_id or "").strip()
getter = getattr(self.store, "get_delegation_role_session", None)
if not role_session_id or not callable(getter):
return
try:
persisted = await getter(role_session_id)
except Exception:
logger.opt(exception=True).debug(
"company runtime adapter-state refresh failed"
)
return
if persisted is None:
return
adapter_state = dict(
getattr(persisted, "adapter_session_state", {}) or {}
)
session.adapter_session_state = adapter_state
role_session = self.role_sessions.get(role_session_id)
if role_session is not None:
role_session.adapter_session_state = dict(adapter_state)
def _ensure_role_session(self, task: Task) -> DelegationRoleSession | None:
role_id = self._role_id(task)
if not role_id: