Report selected environment connection transitions (#33251)

## What changed

- Track connected and disconnected states across initial remote exec-server connections and reconnection attempts.
- Emit experimental `thread/environment/connected` and `thread/environment/disconnected` app-server notifications for each thread selecting the environment. Each payload identifies the thread and environment; current state is not replayed when a thread starts.
- Stop forwarding connection events when an environment selection is removed or replaced.

## Testing

- Cover connection, disconnection, reconnection, shared-environment notifications, and replacement of a selected environment.

GitOrigin-RevId: 5dd767372363c4a2a8319fc16164be117d5bd20c
This commit is contained in:
sayan-oai
2026-07-15 05:21:13 +00:00
committed by copyberry
parent 8aae858958
commit 3afbd8dd45
28 changed files with 672 additions and 32 deletions
@@ -1140,6 +1140,21 @@
],
"type": "string"
},
"EnvironmentConnectionNotification": {
"properties": {
"environmentId": {
"type": "string"
},
"threadId": {
"type": "string"
}
},
"required": [
"environmentId",
"threadId"
],
"type": "object"
},
"ErrorNotification": {
"properties": {
"error": {
@@ -5991,6 +6006,46 @@
"title": "Thread/goal/clearedNotification",
"type": "object"
},
{
"properties": {
"method": {
"enum": [
"thread/environment/connected"
],
"title": "Thread/environment/connectedNotificationMethod",
"type": "string"
},
"params": {
"$ref": "#/definitions/EnvironmentConnectionNotification"
}
},
"required": [
"method",
"params"
],
"title": "Thread/environment/connectedNotification",
"type": "object"
},
{
"properties": {
"method": {
"enum": [
"thread/environment/disconnected"
],
"title": "Thread/environment/disconnectedNotificationMethod",
"type": "string"
},
"params": {
"$ref": "#/definitions/EnvironmentConnectionNotification"
}
},
"required": [
"method",
"params"
],
"title": "Thread/environment/disconnectedNotification",
"type": "object"
},
{
"properties": {
"method": {