Wire Atlas browser bridge into app-server

Add the AgentLib js_repl bridge, persist browser replay items in thread history, and surface remote browser artifacts through turn/start.

Co-authored-by: Codex <noreply@openai.com>
This commit is contained in:
Liang-Ting Jiang
2026-03-24 21:12:20 +00:00
parent ba0d3b467b
commit ee865bcddc
41 changed files with 5135 additions and 48 deletions

View File

@@ -384,6 +384,111 @@
}
]
},
"BrowserReplayFrame": {
"properties": {
"browserState": {
"anyOf": [
{
"$ref": "#/definitions/BrowserSessionState"
},
{
"type": "null"
}
]
},
"imageUrl": {
"type": [
"string",
"null"
]
},
"sequenceNumber": {
"format": "uint32",
"minimum": 0.0,
"type": "integer"
},
"sourceItemId": {
"type": "string"
},
"status": {
"$ref": "#/definitions/DynamicToolCallStatus"
},
"textSnapshot": {
"type": [
"string",
"null"
]
},
"textSnapshotFormat": {
"anyOf": [
{
"$ref": "#/definitions/BrowserReplayTextSnapshotFormat"
},
{
"type": "null"
}
]
},
"tool": {
"type": "string"
}
},
"required": [
"sequenceNumber",
"sourceItemId",
"status",
"tool"
],
"type": "object"
},
"BrowserReplayRenderMode": {
"enum": [
"animation",
"frames",
"textOnly"
],
"type": "string"
},
"BrowserReplayTextSnapshotFormat": {
"enum": [
"plain",
"json"
],
"type": "string"
},
"BrowserSessionArtifacts": {
"properties": {
"replayFrameCount": {
"format": "uint32",
"minimum": 0.0,
"type": [
"integer",
"null"
]
},
"replayFrameDurationMs": {
"format": "uint32",
"minimum": 0.0,
"type": [
"integer",
"null"
]
},
"replayGifImageUrl": {
"type": [
"string",
"null"
]
},
"screenshotImageUrl": {
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"BrowserSessionState": {
"properties": {
"selectedTabId": {
@@ -404,6 +509,16 @@
},
"BrowserSessionUpdatedNotification": {
"properties": {
"artifacts": {
"anyOf": [
{
"$ref": "#/definitions/BrowserSessionArtifacts"
},
{
"type": "null"
}
]
},
"browserSessionId": {
"type": "string"
},
@@ -2760,6 +2875,51 @@
"title": "DynamicToolCallThreadItem",
"type": "object"
},
{
"properties": {
"animationImageUrl": {
"type": [
"string",
"null"
]
},
"frameDurationMs": {
"format": "uint32",
"minimum": 0.0,
"type": [
"integer",
"null"
]
},
"frames": {
"items": {
"$ref": "#/definitions/BrowserReplayFrame"
},
"type": "array"
},
"id": {
"type": "string"
},
"renderMode": {
"$ref": "#/definitions/BrowserReplayRenderMode"
},
"type": {
"enum": [
"browserReplay"
],
"title": "BrowserReplayThreadItemType",
"type": "string"
}
},
"required": [
"frames",
"id",
"renderMode",
"type"
],
"title": "BrowserReplayThreadItem",
"type": "object"
},
{
"properties": {
"agentsStates": {