mirror of
https://github.com/stablyai/orca.git
synced 2026-11-14 09:57:48 +00:00
refactor(mobile): read host capabilities from one status read per connection (#39157)
This commit is contained in:
@@ -35,70 +35,6 @@
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"0ddf5d4952fd": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-5",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"issues": [],
|
||||
"sessions": [
|
||||
{
|
||||
"agent": "claude",
|
||||
"branch": "feature",
|
||||
"codexHome": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"createdAt": "2025-12-31T23:00:00.000Z",
|
||||
"cwd": "/repo/feature",
|
||||
"executionHostId": "local",
|
||||
"filePath": "/repo/feature/.claude/sess-1.jsonl",
|
||||
"id": "s1",
|
||||
"messageCount": 4,
|
||||
"model": "opus",
|
||||
"modifiedAt": "2025-12-31T23:30:00.000Z",
|
||||
"previewMessages": [
|
||||
{
|
||||
"role": "user",
|
||||
"text": "fix it",
|
||||
"timestamp": "2025-12-31T23:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"sessionId": "sess-1",
|
||||
"title": "Fix the explorer",
|
||||
"totalTokens": 1200,
|
||||
"updatedAt": "2025-12-31T23:30:00.000Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"222a3ba1d974": {
|
||||
"name": "worktree.ps#1",
|
||||
"ordinal": 3,
|
||||
@@ -144,26 +80,43 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"40fa6811eb00": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 10,
|
||||
"value": [
|
||||
{
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"4d68bff46cff": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 4,
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
"613355526cb5": {
|
||||
"595e6c3bbfed": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 9,
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
},
|
||||
"6cd39311d5ec": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"7368414c8786": {
|
||||
"name": "worktree.ps#1",
|
||||
@@ -207,72 +160,16 @@
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": ["Agent Session History", "orca-history", "Loading agent sessions…"]
|
||||
},
|
||||
"7a008ca8521f": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "status.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["aiVault.v1"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"98d7022b1300": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"7e8b2964ad63": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
"value": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"a26eb8ffaa7c": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
]
|
||||
},
|
||||
"acf501fa9958": {
|
||||
"name": "status.get#1",
|
||||
@@ -338,6 +235,70 @@
|
||||
],
|
||||
"text": ["Agent Session History", "orca-history", "Workspace", "Project", "All"]
|
||||
},
|
||||
"c630476f4fd3": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"issues": [],
|
||||
"sessions": [
|
||||
{
|
||||
"agent": "claude",
|
||||
"branch": "feature",
|
||||
"codexHome": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"createdAt": "2025-12-31T23:00:00.000Z",
|
||||
"cwd": "/repo/feature",
|
||||
"executionHostId": "local",
|
||||
"filePath": "/repo/feature/.claude/sess-1.jsonl",
|
||||
"id": "s1",
|
||||
"messageCount": 4,
|
||||
"model": "opus",
|
||||
"modifiedAt": "2025-12-31T23:30:00.000Z",
|
||||
"previewMessages": [
|
||||
{
|
||||
"role": "user",
|
||||
"text": "fix it",
|
||||
"timestamp": "2025-12-31T23:00:00.000Z"
|
||||
}
|
||||
],
|
||||
"sessionId": "sess-1",
|
||||
"title": "Fix the explorer",
|
||||
"totalTokens": 1200,
|
||||
"updatedAt": "2025-12-31T23:30:00.000Z"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"e28c488ce6b2": {
|
||||
"name": "agentSession.subscribeStatus#1",
|
||||
"ordinal": 1,
|
||||
@@ -370,14 +331,8 @@
|
||||
{
|
||||
"id": "worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "6cd39311d5ec"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -388,14 +343,8 @@
|
||||
{
|
||||
"id": "ready",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "0ddf5d4952fd"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "c630476f4fd3"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -406,19 +355,13 @@
|
||||
{
|
||||
"id": "cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "0ddf5d4952fd"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "c630476f4fd3"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "b7a7af14c8a5",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -80,26 +80,77 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"40fa6811eb00": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 10,
|
||||
"value": [
|
||||
{
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"4d68bff46cff": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 4,
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
"613355526cb5": {
|
||||
"4f7d48d96db6": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 9,
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"595e6c3bbfed": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
},
|
||||
"6cd39311d5ec": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"7368414c8786": {
|
||||
"name": "worktree.ps#1",
|
||||
@@ -143,106 +194,16 @@
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": ["Agent Session History", "orca-history", "Loading agent sessions…"]
|
||||
},
|
||||
"79fc75a7b709": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"7e8b2964ad63": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
"value": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"7a008ca8521f": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "status.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["aiVault.v1"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"98d7022b1300": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"a26eb8ffaa7c": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
]
|
||||
},
|
||||
"acf501fa9958": {
|
||||
"name": "status.get#1",
|
||||
@@ -310,14 +271,8 @@
|
||||
{
|
||||
"id": "worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "6cd39311d5ec"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -328,19 +283,13 @@
|
||||
{
|
||||
"id": "cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "4f7d48d96db6"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+292
-354
@@ -115,17 +115,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"40fa6811eb00": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 10,
|
||||
"value": [
|
||||
{
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"471bd606315a": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 2,
|
||||
@@ -165,6 +154,40 @@
|
||||
"ordinal": 4,
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
"4f7d48d96db6": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"51e670a85520": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 2,
|
||||
@@ -228,10 +251,38 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"613355526cb5": {
|
||||
"595e6c3bbfed": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 9,
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
},
|
||||
"6cd39311d5ec": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"7368414c8786": {
|
||||
"name": "worktree.ps#1",
|
||||
@@ -259,6 +310,17 @@
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"758b3fde1948": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 6,
|
||||
"value": [
|
||||
{
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"7623e8b568b1": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
@@ -275,74 +337,6 @@
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": ["Agent Session History", "orca-history", "Loading agent sessions…"]
|
||||
},
|
||||
"79fc75a7b709": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"7a008ca8521f": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "status.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["aiVault.v1"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"7b715c94cd95": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 2,
|
||||
@@ -424,33 +418,43 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"98d7022b1300": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
"8502a1cdf759": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"CircleAlert": 1,
|
||||
"Pressable": 3,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 5,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": ["Agent Session History", "orca-history", "Unable to Load", "outer refused", "Retry"]
|
||||
},
|
||||
"89ca6152d289": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"CircleAlert": 1,
|
||||
"Pressable": 3,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 5,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": [
|
||||
"Agent Session History",
|
||||
"orca-history",
|
||||
"Unable to Load",
|
||||
"The host sent a reply this app could not read (status.get)",
|
||||
"Retry"
|
||||
]
|
||||
},
|
||||
"9b8c00f534c6": {
|
||||
"name": "status.get#1",
|
||||
@@ -550,10 +554,27 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"a26eb8ffaa7c": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
"a1cee1ec8f4c": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"CircleAlert": 1,
|
||||
"Pressable": 3,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 5,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": [
|
||||
"Agent Session History",
|
||||
"orca-history",
|
||||
"Unable to Load",
|
||||
"transport failure",
|
||||
"Retry"
|
||||
]
|
||||
},
|
||||
"a5e3c1935fd2": {
|
||||
"name": "status.get#1",
|
||||
@@ -624,37 +645,21 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ba8394a4ce03": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "status.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
"c3d0a79c37c8": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"CircleAlert": 1,
|
||||
"Pressable": 3,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 5,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": ["Agent Session History", "orca-history", "Unable to Load", "Unknown method", "Retry"]
|
||||
},
|
||||
"d302f4eada82": {
|
||||
"name": "status.get#1",
|
||||
@@ -693,11 +698,54 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ddc03a109a53": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"History": 1,
|
||||
"Pressable": 2,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 4,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": [
|
||||
"Agent Session History",
|
||||
"orca-history",
|
||||
"Agent Session History Unavailable",
|
||||
"Update Orca on this host to browse agent session history."
|
||||
]
|
||||
},
|
||||
"e28c488ce6b2": {
|
||||
"name": "agentSession.subscribeStatus#1",
|
||||
"ordinal": 1,
|
||||
"json": "{\"id\":\"frame-1\",\"deviceToken\":\"recording-device\",\"method\":\"agentSession.subscribeStatus\",\"params\":{}}"
|
||||
},
|
||||
"e2d097a144bc": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"CircleAlert": 1,
|
||||
"Pressable": 3,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 5,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": [
|
||||
"Agent Session History",
|
||||
"orca-history",
|
||||
"Unable to Load",
|
||||
"Something went wrong. Try again.",
|
||||
"Retry"
|
||||
]
|
||||
},
|
||||
"eb79a9b3682a": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
@@ -705,6 +753,28 @@
|
||||
"value": {
|
||||
"$rpc": "undefined"
|
||||
}
|
||||
},
|
||||
"f975325adbf9": {
|
||||
"crash": {
|
||||
"$rpc": "null"
|
||||
},
|
||||
"elements": {
|
||||
"ChevronLeft": 1,
|
||||
"CircleAlert": 1,
|
||||
"Pressable": 3,
|
||||
"RefreshCw": 1,
|
||||
"SafeAreaView": 1,
|
||||
"Text": 5,
|
||||
"View": 8
|
||||
},
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": [
|
||||
"Agent Session History",
|
||||
"orca-history",
|
||||
"Unable to Load",
|
||||
"Unable to reach host",
|
||||
"Retry"
|
||||
]
|
||||
}
|
||||
},
|
||||
"recording": {
|
||||
@@ -725,26 +795,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.prelude:cleanup",
|
||||
"observation": {
|
||||
"sender": ["9b8c00f534c6", "222a3ba1d974", "ba8394a4ce03"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "a26eb8ffaa7c"],
|
||||
"sender": ["9b8c00f534c6", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["7e8b2964ad63"]
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.normal:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "6cd39311d5ec"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -755,379 +819,253 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.normal:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "4f7d48d96db6"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-absent:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["59290155f27a", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["59290155f27a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "89ca6152d289",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-absent:cleanup",
|
||||
"observation": {
|
||||
"sender": ["59290155f27a", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["59290155f27a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "89ca6152d289",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-null:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["471bd606315a", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["471bd606315a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "89ca6152d289",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-null:cleanup",
|
||||
"observation": {
|
||||
"sender": ["471bd606315a", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["471bd606315a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "89ca6152d289",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-ok-missing:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["9efd8381401a", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["9efd8381401a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "ddc03a109a53",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-ok-missing:cleanup",
|
||||
"observation": {
|
||||
"sender": ["9efd8381401a", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["9efd8381401a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "ddc03a109a53",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-string-error:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["7b715c94cd95", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["7b715c94cd95", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "ddc03a109a53",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-string-error:cleanup",
|
||||
"observation": {
|
||||
"sender": ["7b715c94cd95", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["7b715c94cd95", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "ddc03a109a53",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-object-error:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["d302f4eada82", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["d302f4eada82", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "ddc03a109a53",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-object-error:cleanup",
|
||||
"observation": {
|
||||
"sender": ["d302f4eada82", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["d302f4eada82", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "ddc03a109a53",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["824e7d747f2a", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["824e7d747f2a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "8502a1cdf759",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused:cleanup",
|
||||
"observation": {
|
||||
"sender": ["824e7d747f2a", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["824e7d747f2a", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "8502a1cdf759",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused-no-message:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["a5e3c1935fd2", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["a5e3c1935fd2", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "f975325adbf9",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused-no-message:cleanup",
|
||||
"observation": {
|
||||
"sender": ["a5e3c1935fd2", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["a5e3c1935fd2", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "f975325adbf9",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.method-not-found:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["1675b1df2d81", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["1675b1df2d81", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "c3d0a79c37c8",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.method-not-found:cleanup",
|
||||
"observation": {
|
||||
"sender": ["1675b1df2d81", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["1675b1df2d81", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "c3d0a79c37c8",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["51e670a85520", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["51e670a85520", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "a1cee1ec8f4c",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection:cleanup",
|
||||
"observation": {
|
||||
"sender": ["51e670a85520", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["51e670a85520", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "a1cee1ec8f4c",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection-no-message:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["9cfa291517f9", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["9cfa291517f9", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"state": "e2d097a144bc",
|
||||
"effects": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection-no-message:cleanup",
|
||||
"observation": {
|
||||
"sender": ["9cfa291517f9", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["9cfa291517f9", "222a3ba1d974"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"state": "e2d097a144bc",
|
||||
"effects": ["758b3fde1948"]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -137,34 +137,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"1ff410f2eb07": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"222a3ba1d974": {
|
||||
"name": "worktree.ps#1",
|
||||
"ordinal": 3,
|
||||
@@ -244,26 +216,49 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"40fa6811eb00": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 10,
|
||||
"value": [
|
||||
{
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
]
|
||||
},
|
||||
"4d68bff46cff": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 4,
|
||||
"json": "{\"id\":\"frame-2\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
"613355526cb5": {
|
||||
"4f7d48d96db6": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 9,
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"595e6c3bbfed": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[\"/repo/feature\"]}}"
|
||||
},
|
||||
"6405fa9d6a94": {
|
||||
"name": "worktree.ps#1",
|
||||
@@ -300,6 +295,34 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"6cd39311d5ec": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"7182750ca2d1": {
|
||||
"name": "worktree.ps#1",
|
||||
"ordinal": 3,
|
||||
@@ -335,6 +358,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"7312d72e532d": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[]}}"
|
||||
},
|
||||
"7368414c8786": {
|
||||
"name": "worktree.ps#1",
|
||||
"ordinal": 3,
|
||||
@@ -361,6 +389,34 @@
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"739d442628ed": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"758b3fde1948": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 6,
|
||||
@@ -388,107 +444,16 @@
|
||||
"labels": ["Back", "Refresh agent sessions"],
|
||||
"text": ["Agent Session History", "orca-history", "Loading agent sessions…"]
|
||||
},
|
||||
"79fc75a7b709": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"7e8b2964ad63": {
|
||||
"name": "streams-registered-at-teardown",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
"value": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
"cancelled": false,
|
||||
"method": "agentSession.subscribeStatus",
|
||||
"payload": "agentSession.subscribeStatus#1"
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"7a008ca8521f": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "status.get"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "fulfilled",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"value": {
|
||||
"id": "frame-4",
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["aiVault.v1"]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"8123e6fb3b52": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"858c23d8f3ef": {
|
||||
"name": "worktree.ps#1",
|
||||
@@ -554,34 +519,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"98d7022b1300": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 8,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": ["/repo/feature"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "pending",
|
||||
"startedAt": 0
|
||||
}
|
||||
},
|
||||
"9a209a9534f9": {
|
||||
"name": "worktree.ps#1",
|
||||
"ordinal": 3,
|
||||
@@ -649,11 +586,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"a26eb8ffaa7c": {
|
||||
"name": "status.get#2",
|
||||
"ordinal": 7,
|
||||
"json": "{\"id\":\"frame-4\",\"deviceToken\":\"recording-device\",\"method\":\"status.get\"}"
|
||||
},
|
||||
"acf501fa9958": {
|
||||
"name": "status.get#1",
|
||||
"ordinal": 2,
|
||||
@@ -720,10 +652,39 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"ddb026ba4968": {
|
||||
"c8a1368e170b": {
|
||||
"name": "aiVault.listSessions#1",
|
||||
"ordinal": 9,
|
||||
"json": "{\"id\":\"frame-5\",\"deviceToken\":\"recording-device\",\"method\":\"aiVault.listSessions\",\"params\":{\"limit\":500,\"force\":false,\"scopePaths\":[]}}"
|
||||
"ordinal": 6,
|
||||
"args": [
|
||||
{
|
||||
"name": "method",
|
||||
"value": "aiVault.listSessions"
|
||||
},
|
||||
{
|
||||
"name": "params",
|
||||
"value": {
|
||||
"force": false,
|
||||
"limit": 500,
|
||||
"scopePaths": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "options",
|
||||
"value": {
|
||||
"$rpc": "absent"
|
||||
}
|
||||
}
|
||||
],
|
||||
"settlement": {
|
||||
"status": "rejected",
|
||||
"startedAt": 0,
|
||||
"settledAt": 0,
|
||||
"error": {
|
||||
"category": "Error",
|
||||
"message": "Connection closed",
|
||||
"isRpcDeliveryUnknown": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"de6f51a372a1": {
|
||||
"name": "worktree.ps#1",
|
||||
@@ -804,14 +765,8 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.normal:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "98d7022b1300"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "6cd39311d5ec"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -822,32 +777,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.normal:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "7a008ca8521f", "79fc75a7b709"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"613355526cb5"
|
||||
],
|
||||
"sender": ["acf501fa9958", "222a3ba1d974", "4f7d48d96db6"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "595e6c3bbfed"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-absent:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "19cf1a6a7639", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "19cf1a6a7639", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -858,32 +801,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-absent:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "19cf1a6a7639", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "19cf1a6a7639", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-null:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "30b5ef327e47", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "30b5ef327e47", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -894,32 +825,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.result-null:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "30b5ef327e47", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "30b5ef327e47", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-ok-missing:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "00b7efbaf87f", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "00b7efbaf87f", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -930,32 +849,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-ok-missing:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "00b7efbaf87f", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "00b7efbaf87f", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-string-error:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "7182750ca2d1", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "7182750ca2d1", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -966,32 +873,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-string-error:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "7182750ca2d1", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "7182750ca2d1", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-object-error:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "0569ef4f06ba", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "0569ef4f06ba", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -1002,32 +897,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.inner-false-object-error:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "0569ef4f06ba", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "0569ef4f06ba", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "9a209a9534f9", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "9a209a9534f9", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -1038,32 +921,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "9a209a9534f9", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "9a209a9534f9", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused-no-message:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "de6f51a372a1", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "de6f51a372a1", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -1074,32 +945,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.outer-refused-no-message:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "de6f51a372a1", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "de6f51a372a1", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.method-not-found:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "6405fa9d6a94", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "6405fa9d6a94", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -1110,32 +969,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.method-not-found:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "6405fa9d6a94", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "6405fa9d6a94", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "c4a0ee2acc32", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "c4a0ee2acc32", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -1146,32 +993,20 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "c4a0ee2acc32", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "c4a0ee2acc32", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection-no-message:worktrees-listed",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "858c23d8f3ef", "7a008ca8521f", "1ff410f2eb07"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "858c23d8f3ef", "739d442628ed"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
@@ -1182,19 +1017,13 @@
|
||||
{
|
||||
"id": "aivault-history-screen-worktrees.transport-rejection-no-message:cleanup",
|
||||
"observation": {
|
||||
"sender": ["acf501fa9958", "858c23d8f3ef", "7a008ca8521f", "8123e6fb3b52"],
|
||||
"payloads": [
|
||||
"e28c488ce6b2",
|
||||
"4d68bff46cff",
|
||||
"0180d22edc2e",
|
||||
"a26eb8ffaa7c",
|
||||
"ddb026ba4968"
|
||||
],
|
||||
"sender": ["acf501fa9958", "858c23d8f3ef", "c8a1368e170b"],
|
||||
"payloads": ["e28c488ce6b2", "4d68bff46cff", "0180d22edc2e", "7312d72e532d"],
|
||||
"settlements": {
|
||||
"mount": "eb79a9b3682a"
|
||||
},
|
||||
"state": "7623e8b568b1",
|
||||
"effects": ["40fa6811eb00"]
|
||||
"effects": ["7e8b2964ad63"]
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3119,18 +3119,6 @@
|
||||
{
|
||||
"checkpoint": "refresh-pending"
|
||||
},
|
||||
{
|
||||
"complete": "status.get#2",
|
||||
"params": {
|
||||
"$undefined": true
|
||||
},
|
||||
"reply": {
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["mobile.tasks.v1"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"complete": "settings.get#2",
|
||||
"params": {
|
||||
@@ -20351,18 +20339,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"complete": "status.get#2",
|
||||
"params": {
|
||||
"$undefined": true
|
||||
},
|
||||
"reply": {
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["aiVault.v1"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"checkpoint": "worktrees-listed"
|
||||
}
|
||||
@@ -20425,18 +20401,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"complete": "status.get#2",
|
||||
"params": {
|
||||
"$undefined": true
|
||||
},
|
||||
"reply": {
|
||||
"ok": true,
|
||||
"result": {
|
||||
"capabilities": ["aiVault.v1"]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"checkpoint": "worktrees-listed"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation'
|
||||
import { rpcResultVariant } from '../transport/rpc-operation-result-reader'
|
||||
import { connectionHostStatusRead } from '../query/host-status-query'
|
||||
import {
|
||||
agentHistoryHostStatusSchema,
|
||||
agentHistorySessionScanSchema,
|
||||
@@ -10,14 +11,18 @@ import {
|
||||
// History capability/scan reads run on open; resume workspace metadata waits for explicit user intent.
|
||||
|
||||
// Keep status capability family separate from Tasks hydration: both raise host message via same reader, but fail different screen/barrier states.
|
||||
export const agentHistoryHostStatusRead = bindDeferredRpcOperation(
|
||||
defineRpcOperation({
|
||||
name: 'status.agent-history',
|
||||
method: 'status.get',
|
||||
acceptance: 'require-result-or-throw-message',
|
||||
barrier: 'after-caller-barrier',
|
||||
read: rpcResultVariant('host-status', agentHistoryHostStatusSchema)
|
||||
})
|
||||
// Live: resume quotes for the desktop's Windows shell setting, which can change while connected.
|
||||
export const agentHistoryHostStatusRead = connectionHostStatusRead(
|
||||
bindDeferredRpcOperation(
|
||||
defineRpcOperation({
|
||||
name: 'status.agent-history',
|
||||
method: 'status.get',
|
||||
acceptance: 'require-result-or-throw-message',
|
||||
barrier: 'after-caller-barrier',
|
||||
read: rpcResultVariant('host-status', agentHistoryHostStatusSchema)
|
||||
})
|
||||
),
|
||||
'live'
|
||||
)
|
||||
|
||||
export const agentHistorySessionScan = bindDeferredRpcOperation(
|
||||
|
||||
@@ -10,6 +10,7 @@ import { AppState } from 'react-native'
|
||||
import type { RpcResponse } from '../transport/types'
|
||||
import type { RpcClient } from '../transport/rpc-client'
|
||||
import { hostStatusProbe } from '../transport/host-status-probe-operations'
|
||||
import { readHostStatusReply } from '../query/host-status-query'
|
||||
import { subscribeConnectionRevival } from '../transport/connection-revival-signal'
|
||||
import { subscribeSharedClientEvents } from '../transport/shared-client-events'
|
||||
import { automationListRead } from './automation-operations'
|
||||
@@ -115,9 +116,7 @@ export function useAutomationCatalog(client: RpcClient | null, server: boolean)
|
||||
try {
|
||||
const listRequest = automationListRead.request(client, {}, { signal: controller.signal })
|
||||
requests.push(listRequest)
|
||||
const statusRequest = hostStatusProbe.request(client, undefined, {
|
||||
signal: controller.signal
|
||||
})
|
||||
const statusRequest = readHostStatusReply(client, { signal: controller.signal })
|
||||
requests.push(statusRequest)
|
||||
const [parsed, host] = await Promise.all([
|
||||
listRequest.then(automationListRead.interpret),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { sharedPromiseSettlementWaiters } from '../../../src/shared/promise-settlement-waiters'
|
||||
import { hostStatusProbe } from '../transport/host-status-probe-operations'
|
||||
import { readHostStatusReply } from '../query/host-status-query'
|
||||
import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation'
|
||||
import { rpcResultVariant } from '../transport/rpc-operation-result-reader'
|
||||
import {
|
||||
@@ -30,7 +31,7 @@ export function createMobileChatAttachmentReader(
|
||||
): AttachmentTextRead {
|
||||
const connectedAt = client?.getLastConnectedAt()
|
||||
const generation = client?.getGeneration?.()
|
||||
let status: ReturnType<typeof hostStatusProbe.request> | undefined
|
||||
let status: ReturnType<typeof readHostStatusReply> | undefined
|
||||
const assertCurrent = () => {
|
||||
if (
|
||||
!client ||
|
||||
@@ -48,7 +49,7 @@ export function createMobileChatAttachmentReader(
|
||||
if (!request.expectedSnapshot) {
|
||||
status = undefined
|
||||
}
|
||||
status ??= hostStatusProbe.request(client!, undefined, {
|
||||
status ??= readHostStatusReply(client!, {
|
||||
signal,
|
||||
timeoutMs: 15_000,
|
||||
failWhenDisconnected: true,
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
import { hostStatusProbe, readProbedHostStatus } from '../transport/host-status-probe-operations'
|
||||
import type { HostStatusReply } from '../transport/host-status-reply-schema'
|
||||
import type { RpcClient, SendRequestOptions } from '../transport/rpc-client'
|
||||
import type { RpcResponse } from '../transport/types'
|
||||
import type { UnvalidatedRpcRequestPort } from '../transport/unvalidated-rpc-request-port'
|
||||
|
||||
export type HostStatusClient = UnvalidatedRpcRequestPort &
|
||||
Partial<Pick<RpcClient, 'getState' | 'getGeneration' | 'getLastConnectedAt' | 'requestRoute'>>
|
||||
|
||||
type LandedStatus = { reply: RpcResponse; status: HostStatusReply }
|
||||
type ConnectionStatus = { epoch: string; landed?: LandedStatus; pending?: Promise<RpcResponse> }
|
||||
|
||||
// Keyed by client, so each JS world (native heap, each page document) holds its own.
|
||||
const statuses = new WeakMap<object, ConnectionStatus>()
|
||||
|
||||
export const hostConnectionEpoch = (client: HostStatusClient) =>
|
||||
`${client.getGeneration?.()}:${client.getLastConnectedAt?.()}`
|
||||
|
||||
// Why: a routed view answers status.get from a server behind the desktop, which can restart or reconnect while
|
||||
// this connection stays up, and a client with no connect time has no epoch to hold an answer to.
|
||||
export function directConnectionEpoch(client: HostStatusClient): string | null {
|
||||
return client.requestRoute === undefined && typeof client.getLastConnectedAt?.() === 'number'
|
||||
? hostConnectionEpoch(client)
|
||||
: null
|
||||
}
|
||||
|
||||
const decodedReplies = new WeakMap<RpcResponse, ReturnType<typeof readProbedHostStatus>>()
|
||||
|
||||
/** Decodes a status.get reply once; decoding reports salvaged fields, and joined readers share one reply. */
|
||||
export function decodeHostStatusReply(reply: RpcResponse): ReturnType<typeof readProbedHostStatus> {
|
||||
if (decodedReplies.has(reply)) {
|
||||
return decodedReplies.get(reply) ?? null
|
||||
}
|
||||
const decoded = readProbedHostStatus(reply)
|
||||
decodedReplies.set(reply, decoded)
|
||||
return decoded
|
||||
}
|
||||
|
||||
// Keep each caller's own call shape: recordings pin the arguments a read was sent with.
|
||||
function sendStatusGet(client: HostStatusClient, options: SendRequestOptions | undefined) {
|
||||
return options
|
||||
? hostStatusProbe.request(client, undefined, options)
|
||||
: hostStatusProbe.request(client)
|
||||
}
|
||||
|
||||
// The live direct connection that answers this client's status.get, or null when none may hold an answer.
|
||||
// status.get carries no params, so a view that routes by params sends it where its base client would.
|
||||
function statusConnection(
|
||||
client: HostStatusClient
|
||||
): { connection: HostStatusClient; epoch: string } | null {
|
||||
const route = client.requestRoute?.(undefined)
|
||||
if (route) {
|
||||
return route.intermediary || route.client === client ? null : statusConnection(route.client)
|
||||
}
|
||||
const epoch = client.getState?.() === 'connected' ? directConnectionEpoch(client) : null
|
||||
return epoch === null ? null : { connection: client, epoch }
|
||||
}
|
||||
|
||||
/** The status this connection already received; undefined when it has none or may not reuse one. */
|
||||
export function connectionHostStatus(client: HostStatusClient): LandedStatus | undefined {
|
||||
const live = statusConnection(client)
|
||||
if (!live) {
|
||||
return undefined
|
||||
}
|
||||
const entry = statuses.get(live.connection)
|
||||
return entry?.epoch === live.epoch ? entry.landed : undefined
|
||||
}
|
||||
|
||||
/** Sends status.get, joining one already out on this connection; a readable answer becomes the connection's status. */
|
||||
export function sendHostStatusRead(
|
||||
client: HostStatusClient,
|
||||
options?: SendRequestOptions
|
||||
): Promise<RpcResponse> {
|
||||
const live = statusConnection(client)
|
||||
if (!live) {
|
||||
return sendStatusGet(client, options)
|
||||
}
|
||||
const { connection, epoch } = live
|
||||
let entry = statuses.get(connection)
|
||||
if (entry?.epoch !== epoch) {
|
||||
entry = { epoch }
|
||||
statuses.set(connection, entry)
|
||||
}
|
||||
if (entry.pending) {
|
||||
return entry.pending
|
||||
}
|
||||
const owner = entry
|
||||
// Other readers join this send, so one reader's abort or fence must not fail theirs; it is a read, so sending is safe.
|
||||
const { signal: _signal, beforeSend: _beforeSend, ...shared } = options ?? {}
|
||||
const pending = sendStatusGet(client, options && shared).then((reply) => {
|
||||
const status = decodeHostStatusReply(reply)?.status
|
||||
const now = statusConnection(client)
|
||||
if (status && now?.connection === connection && now.epoch === epoch) {
|
||||
owner.landed = { reply, status }
|
||||
}
|
||||
return reply
|
||||
})
|
||||
owner.pending = pending
|
||||
const settle = () => {
|
||||
if (owner.pending === pending) {
|
||||
owner.pending = undefined
|
||||
}
|
||||
}
|
||||
void pending.then(settle, settle)
|
||||
return pending
|
||||
}
|
||||
|
||||
/**
|
||||
* The connection's status, read at most once per connection. Only for fields fixed for the desktop process's life
|
||||
* (protocol window, non-browser capabilities, platform, runtime id); a restart is a new connection. Live fields
|
||||
* (screencast capability, floating workspace flag, Windows shell) need a fresh read: the host gate reads on every mount.
|
||||
*/
|
||||
export function readHostStatusReply(
|
||||
client: HostStatusClient,
|
||||
options?: SendRequestOptions
|
||||
): Promise<RpcResponse> {
|
||||
const landed = connectionHostStatus(client)
|
||||
return landed ? Promise.resolve(landed.reply) : sendHostStatusRead(client, options)
|
||||
}
|
||||
|
||||
/**
|
||||
* A status.get operation whose requests take the connection's status instead of sending their own.
|
||||
* `live` readers need a field the desktop can change while connected, so they only join a read already out.
|
||||
*/
|
||||
export function connectionHostStatusRead<Verdict>(
|
||||
read: { operation: { method: 'status.get' }; interpret: (reply: RpcResponse) => Verdict },
|
||||
reuse: 'landed' | 'live' = 'landed'
|
||||
) {
|
||||
const send = reuse === 'live' ? sendHostStatusRead : readHostStatusReply
|
||||
return Object.freeze({
|
||||
interpret: read.interpret,
|
||||
request: (client: HostStatusClient, _params?: undefined, options?: SendRequestOptions) =>
|
||||
send(client, options)
|
||||
})
|
||||
}
|
||||
@@ -94,6 +94,7 @@ function scenario(
|
||||
// oxlint-disable-next-line typescript/consistent-type-assertions -- SAFETY: the logical client reaches these transport methods; each mutation uses the production dispatcher.
|
||||
return {
|
||||
getState: () => 'connected',
|
||||
getLastConnectedAt: () => null,
|
||||
onStateChange: () => () => {},
|
||||
close: () => rejectFirst?.(markRpcDeliveryUnknown(new Error('Connection lost'))),
|
||||
sendRequest: async (method: string, params: unknown) => {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation'
|
||||
import { rpcResultVariant } from '../transport/rpc-operation-result-reader'
|
||||
import { connectionHostStatusRead } from '../query/host-status-query'
|
||||
import {
|
||||
taskLinearStatusSchema,
|
||||
taskPreferenceWriteSchema,
|
||||
@@ -9,14 +10,16 @@ import {
|
||||
} from './task-runtime-reply-schema'
|
||||
|
||||
// Task hydration requires status; create-time capability probing may skip the same method’s refusal.
|
||||
export const taskRuntimeStatusRead = bindDeferredRpcOperation(
|
||||
defineRpcOperation({
|
||||
name: 'status.task-runtime',
|
||||
method: 'status.get',
|
||||
acceptance: 'require-result-or-throw-message',
|
||||
barrier: 'after-caller-barrier',
|
||||
read: rpcResultVariant('runtime-status', taskRuntimeStatusSchema)
|
||||
})
|
||||
export const taskRuntimeStatusRead = connectionHostStatusRead(
|
||||
bindDeferredRpcOperation(
|
||||
defineRpcOperation({
|
||||
name: 'status.task-runtime',
|
||||
method: 'status.get',
|
||||
acceptance: 'require-result-or-throw-message',
|
||||
barrier: 'after-caller-barrier',
|
||||
read: rpcResultVariant('runtime-status', taskRuntimeStatusSchema)
|
||||
})
|
||||
)
|
||||
)
|
||||
|
||||
// Persisted UI state is advisory; refusal retains screen defaults.
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
} from '../../../src/shared/agent-launch/contracts/agent-launch-intent'
|
||||
import { bindDeferredRpcOperation, defineRpcOperation } from '../transport/rpc-operation'
|
||||
import { rpcResultVariant } from '../transport/rpc-operation-result-reader'
|
||||
import { connectionHostStatusRead } from '../query/host-status-query'
|
||||
import {
|
||||
agentLaunchCreateReceiptSchema,
|
||||
worktreeCreateReceiptSchema,
|
||||
@@ -67,14 +68,16 @@ export const worktreeMrBaseResolve = bindDeferredRpcOperation(
|
||||
)
|
||||
|
||||
// Create-time status is advisory and may skip refusal; Tasks hydration requires the same reply to succeed.
|
||||
export const worktreeCreateCapabilityRead = bindDeferredRpcOperation(
|
||||
defineRpcOperation({
|
||||
name: 'status.create-capabilities-or-skip',
|
||||
method: 'status.get',
|
||||
acceptance: 'success-result-or-skip',
|
||||
barrier: 'after-caller-barrier',
|
||||
read: rpcResultVariant('runtime-status', taskRuntimeStatusSchema)
|
||||
})
|
||||
export const worktreeCreateCapabilityRead = connectionHostStatusRead(
|
||||
bindDeferredRpcOperation(
|
||||
defineRpcOperation({
|
||||
name: 'status.create-capabilities-or-skip',
|
||||
method: 'status.get',
|
||||
acceptance: 'success-result-or-skip',
|
||||
barrier: 'after-caller-barrier',
|
||||
read: rpcResultVariant('runtime-status', taskRuntimeStatusSchema)
|
||||
})
|
||||
)
|
||||
)
|
||||
|
||||
// Warmup refusal only loses a speed-up, including on older hosts without the method.
|
||||
|
||||
@@ -15,7 +15,6 @@ export const C5_PAGE_CLOSURE: PageClosurePins = {
|
||||
'aivault-history-screen-listed': 'write-ordinal',
|
||||
'aivault-history-screen-worktrees': 'write-ordinal',
|
||||
'matrix-aivault.history-screen-platform-status': 'result-absent-settlement',
|
||||
'matrix-aivault.history-screen-status.get-2': 'result-absent-settlement',
|
||||
'matrix-aivault.history-screen-worktree.ps-1': 'result-absent-settlement'
|
||||
},
|
||||
'aiVault.resume-launch': {
|
||||
|
||||
@@ -118,7 +118,7 @@ export const BRIDGED_PARITY_EXCLUSIONS: Readonly<Partial<Record<BridgedParityCla
|
||||
export const BRIDGED_PARITY_BASELINE: Readonly<Record<BridgedParityClass | 'identical', number>> = {
|
||||
identical: 387,
|
||||
'reply-meta-required': 0,
|
||||
'result-absent-settlement': 336,
|
||||
'result-absent-settlement': 335,
|
||||
'result-absent-observation': 3,
|
||||
'result-absent-stream-release': 6,
|
||||
'params-undefined': 27,
|
||||
|
||||
@@ -74,10 +74,6 @@ export function hostStatusGatesFromStatus(
|
||||
|
||||
// Keyed by the cached answer so a connection's proven gates keep one identity across renders.
|
||||
const gatesByProbedStatus = new WeakMap<HostStatusReply, HostStatusGates>()
|
||||
const PROBED_UNREADABLE_GATES: HostStatusGates = {
|
||||
...UNREADABLE_STATUS_GATES,
|
||||
statusPending: false
|
||||
}
|
||||
|
||||
// Draw at once from the status this connection already proved; the gate's own read still refreshes live capabilities.
|
||||
function readProbedGates(
|
||||
@@ -85,12 +81,9 @@ function readProbedGates(
|
||||
connState: ConnectionState
|
||||
): HostStatusGates | null {
|
||||
const status = client && connState === 'connected' ? readConnectionStatusProbe(client) : undefined
|
||||
if (status === undefined) {
|
||||
if (!status) {
|
||||
return null
|
||||
}
|
||||
if (status === null) {
|
||||
return PROBED_UNREADABLE_GATES
|
||||
}
|
||||
let gates = gatesByProbedStatus.get(status)
|
||||
if (!gates) {
|
||||
gates = { ...hostStatusGatesFromStatus(status), statusPending: false }
|
||||
|
||||
@@ -10,7 +10,7 @@ type ProbeOutcome = RpcResponse | Error
|
||||
function makeClient(outcomes: ProbeOutcome[]): {
|
||||
client: UnvalidatedRpcRequestPort
|
||||
calls: () => number
|
||||
requests: () => Parameters<UnvalidatedRpcRequestPort['sendRequest']>[]
|
||||
methods: () => string[]
|
||||
} {
|
||||
let calls = 0
|
||||
const client = {
|
||||
@@ -20,7 +20,11 @@ function makeClient(outcomes: ProbeOutcome[]): {
|
||||
return outcome instanceof Error ? Promise.reject(outcome) : Promise.resolve(outcome)
|
||||
})
|
||||
}
|
||||
return { client, calls: () => calls, requests: () => client.sendRequest.mock.calls }
|
||||
return {
|
||||
client,
|
||||
calls: () => calls,
|
||||
methods: () => client.sendRequest.mock.calls.map(([method]) => method)
|
||||
}
|
||||
}
|
||||
|
||||
const ok = (result: unknown): RpcResponse => ({
|
||||
@@ -47,7 +51,7 @@ describe('startRuntimeStatusProbe', () => {
|
||||
})
|
||||
|
||||
it('delivers the parsed status once and stops', async () => {
|
||||
const { client, calls, requests } = makeClient([
|
||||
const { client, calls, methods } = makeClient([
|
||||
ok({ machineName: 'm4airs-Air', hostPlatform: 'darwin', capabilities: ['a.v1'] })
|
||||
])
|
||||
const seen: (HostStatusReply | null)[] = []
|
||||
@@ -59,7 +63,7 @@ describe('startRuntimeStatusProbe', () => {
|
||||
hostPlatform: 'darwin',
|
||||
capabilities: ['a.v1']
|
||||
})
|
||||
expect(requests()).toEqual([['status.get']])
|
||||
expect(methods()).toEqual(['status.get'])
|
||||
expect(calls()).toBe(1)
|
||||
await vi.advanceTimersByTimeAsync(60_000)
|
||||
expect(calls()).toBe(1)
|
||||
@@ -67,7 +71,7 @@ describe('startRuntimeStatusProbe', () => {
|
||||
})
|
||||
|
||||
it('delivers null for an answer this build cannot decode, without retrying', async () => {
|
||||
const { client, calls, requests } = makeClient([ok(null)])
|
||||
const { client, calls, methods } = makeClient([ok(null)])
|
||||
const seen: (HostStatusReply | null)[] = []
|
||||
const failed = vi.fn()
|
||||
cancelProbe = startRuntimeStatusProbe(client, (status) => seen.push(status), failed)
|
||||
@@ -76,7 +80,7 @@ describe('startRuntimeStatusProbe', () => {
|
||||
await vi.advanceTimersByTimeAsync(60_000)
|
||||
expect(seen).toEqual([null])
|
||||
expect(failed).not.toHaveBeenCalled()
|
||||
expect(requests()).toEqual([['status.get']])
|
||||
expect(methods()).toEqual(['status.get'])
|
||||
expect(vi.getTimerCount()).toBe(0)
|
||||
expect(calls()).toBe(1)
|
||||
cancelProbe()
|
||||
@@ -89,7 +93,7 @@ describe('startRuntimeStatusProbe', () => {
|
||||
error: { code: 'unavailable', message: 'no' },
|
||||
_meta: { runtimeId: 'r1' }
|
||||
}
|
||||
const { client, calls, requests } = makeClient([
|
||||
const { client, calls, methods } = makeClient([
|
||||
refusal,
|
||||
new LogicalClientCutoverError(),
|
||||
ok({ machineName: 'Studio' })
|
||||
@@ -112,13 +116,13 @@ describe('startRuntimeStatusProbe', () => {
|
||||
expect(seen).toHaveLength(1)
|
||||
expect(seen[0]).toMatchObject({ machineName: 'Studio' })
|
||||
expect(calls()).toBe(3)
|
||||
expect(requests()).toEqual([['status.get'], ['status.get'], ['status.get']])
|
||||
expect(methods()).toEqual(['status.get', 'status.get', 'status.get'])
|
||||
expect(vi.getTimerCount()).toBe(0)
|
||||
cancelProbe()
|
||||
})
|
||||
|
||||
it('reports failed attempts after scheduling retries and cancels pending work', async () => {
|
||||
const { client, calls, requests } = makeClient([
|
||||
const { client, calls, methods } = makeClient([
|
||||
new Error('request timed out'),
|
||||
new LogicalClientCutoverError()
|
||||
])
|
||||
@@ -149,6 +153,6 @@ describe('startRuntimeStatusProbe', () => {
|
||||
expect(failed).toBe(2)
|
||||
expect(failedTimerCounts).toEqual([1, 1])
|
||||
expect(calls()).toBe(2)
|
||||
expect(requests()).toEqual([['status.get'], ['status.get']])
|
||||
expect(methods()).toEqual(['status.get', 'status.get'])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import type { RpcClient } from './rpc-client'
|
||||
import type { UnvalidatedRpcRequestPort } from './unvalidated-rpc-request-port'
|
||||
import { hostStatusProbe, readProbedHostStatus } from './host-status-probe-operations'
|
||||
import type { HostStatusReply } from './host-status-reply-schema'
|
||||
import { isLogicalClientCutoverError } from './stable-logical-rpc-client'
|
||||
import {
|
||||
connectionHostStatus,
|
||||
decodeHostStatusReply,
|
||||
directConnectionEpoch,
|
||||
hostConnectionEpoch,
|
||||
sendHostStatusRead,
|
||||
type HostStatusClient
|
||||
} from '../query/host-status-query'
|
||||
|
||||
type ProbeClient = UnvalidatedRpcRequestPort &
|
||||
Partial<Pick<RpcClient, 'getGeneration' | 'getLastConnectedAt' | 'requestRoute'>>
|
||||
type ProbeListener = {
|
||||
onStatus: (status: HostStatusReply | null) => void
|
||||
onAttemptFailed?: () => void
|
||||
@@ -18,33 +21,22 @@ type SharedProbe = {
|
||||
}
|
||||
type EpochStatus = { epoch: string; status: HostStatusReply | null }
|
||||
const observed = new WeakMap<object, EpochStatus>()
|
||||
// Only answers this probe received; recorded proofs may merge in capabilities from an earlier read.
|
||||
const probed = new WeakMap<object, EpochStatus>()
|
||||
const sharedProbes = new WeakMap<object, SharedProbe>()
|
||||
export const runtimeStatusProbeEpoch = (client: ProbeClient) =>
|
||||
`${client.getGeneration?.()}:${client.getLastConnectedAt?.()}`
|
||||
export function readRuntimeStatusProbe(client: ProbeClient): HostStatusReply | null | undefined {
|
||||
export const runtimeStatusProbeEpoch = hostConnectionEpoch
|
||||
export function readRuntimeStatusProbe(
|
||||
client: HostStatusClient
|
||||
): HostStatusReply | null | undefined {
|
||||
const entry = observed.get(client)
|
||||
return entry?.epoch === runtimeStatusProbeEpoch(client) ? entry.status : undefined
|
||||
}
|
||||
|
||||
// Why: a routed view answers status.get from a server behind the desktop, which can restart or reconnect while
|
||||
// this connection stays up, and a client with no connect time has no epoch to hold an answer to.
|
||||
function connectionEpoch(client: ProbeClient): string | null {
|
||||
return client.requestRoute === undefined && typeof client.getLastConnectedAt?.() === 'number'
|
||||
? runtimeStatusProbeEpoch(client)
|
||||
: null
|
||||
}
|
||||
|
||||
/** The status this connection already proved, or undefined when it may not stand in for a new read. */
|
||||
export function readConnectionStatusProbe(client: ProbeClient): HostStatusReply | null | undefined {
|
||||
const epoch = connectionEpoch(client)
|
||||
const entry = probed.get(client)
|
||||
return epoch !== null && entry?.epoch === epoch ? entry.status : undefined
|
||||
/** The status this connection already received, or undefined when it may not stand in for a new read. */
|
||||
export function readConnectionStatusProbe(client: HostStatusClient): HostStatusReply | undefined {
|
||||
return connectionHostStatus(client)?.status
|
||||
}
|
||||
|
||||
export function recordRuntimeStatusProbe(
|
||||
client: ProbeClient,
|
||||
client: HostStatusClient,
|
||||
status: HostStatusReply | null
|
||||
): void {
|
||||
observed.set(client, { epoch: runtimeStatusProbeEpoch(client), status })
|
||||
@@ -58,11 +50,11 @@ const FAILURE_RETRY_MAX_DELAY_MS = 15_000
|
||||
// Deliver unreadable answers as null without retry; refusals/rejections retry and notify onAttemptFailed after scheduling.
|
||||
// Accept the raw sender type because capability callers need not hold a full client.
|
||||
export function startRuntimeStatusProbe(
|
||||
client: ProbeClient,
|
||||
client: HostStatusClient,
|
||||
onStatus: (status: HostStatusReply | null) => void,
|
||||
onAttemptFailed?: () => void
|
||||
): () => void {
|
||||
const epoch = connectionEpoch(client)
|
||||
const epoch = directConnectionEpoch(client)
|
||||
if (epoch === null) {
|
||||
return runProbe(client, { onStatus, onAttemptFailed }).stop
|
||||
}
|
||||
@@ -87,7 +79,7 @@ export function startRuntimeStatusProbe(
|
||||
}
|
||||
}
|
||||
|
||||
function startSharedProbe(client: ProbeClient, epoch: string): SharedProbe {
|
||||
function startSharedProbe(client: HostStatusClient, epoch: string): SharedProbe {
|
||||
const listeners = new Set<ProbeListener>()
|
||||
const each = (notify: (listener: ProbeListener) => void) => [...listeners].forEach(notify)
|
||||
const probe: SharedProbe = {
|
||||
@@ -108,7 +100,7 @@ function startSharedProbe(client: ProbeClient, epoch: string): SharedProbe {
|
||||
}
|
||||
|
||||
function runProbe(
|
||||
client: ProbeClient,
|
||||
client: HostStatusClient,
|
||||
listener: ProbeListener
|
||||
): { retryNow: () => void; stop: () => void } {
|
||||
const epoch = runtimeStatusProbeEpoch(client)
|
||||
@@ -118,20 +110,18 @@ function runProbe(
|
||||
|
||||
function attempt(): void {
|
||||
retryTimer = null
|
||||
void hostStatusProbe.request(client).then(
|
||||
void sendHostStatusRead(client).then(
|
||||
(reply) => {
|
||||
if (cancelled) {
|
||||
return
|
||||
}
|
||||
const landed = readProbedHostStatus(reply)
|
||||
const landed = decodeHostStatusReply(reply)
|
||||
if (!landed) {
|
||||
scheduleRetry(false)
|
||||
return
|
||||
}
|
||||
if (epoch === runtimeStatusProbeEpoch(client)) {
|
||||
const entry = { epoch, status: landed.status }
|
||||
observed.set(client, entry)
|
||||
probed.set(client, entry)
|
||||
observed.set(client, { epoch, status: landed.status })
|
||||
}
|
||||
listener.onStatus(landed.status)
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user