Merge main HEAD (segment 5) into sandboxed-agent-rebase

Resolve 83 conflicts: 10 backend, 62 frontend, 11 config/lock files.
Preserve sandbox/agent/collaboration features while adopting main's
UI refactorings (Dialog/AlertDialog/Popover), model provider updates,
and enterprise features.

Made-with: Cursor
This commit is contained in:
Novice
2026-03-23 14:20:06 +08:00
1671 changed files with 124822 additions and 22302 deletions

View File

@ -378,6 +378,7 @@ class QueueNodeSucceededEvent(AppQueueEvent):
in_parent_node_id: str | None = None
"""parent node id if this is an extractor node event"""
start_at: datetime
finished_at: datetime | None = None
inputs: Mapping[str, object] = Field(default_factory=dict)
process_data: Mapping[str, object] = Field(default_factory=dict)
@ -435,6 +436,7 @@ class QueueNodeExceptionEvent(AppQueueEvent):
in_parent_node_id: str | None = None
"""parent node id if this is an extractor node event"""
start_at: datetime
finished_at: datetime | None = None
inputs: Mapping[str, object] = Field(default_factory=dict)
process_data: Mapping[str, object] = Field(default_factory=dict)
@ -461,6 +463,7 @@ class QueueNodeFailedEvent(AppQueueEvent):
in_parent_node_id: str | None = None
"""parent node id if this is an extractor node event"""
start_at: datetime
finished_at: datetime | None = None
inputs: Mapping[str, object] = Field(default_factory=dict)
process_data: Mapping[str, object] = Field(default_factory=dict)