multi-agent-protocol 0.0.2 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -61,7 +61,20 @@
61
61
  { "$ref": "#/$defs/AuthRefreshRequest" },
62
62
  { "$ref": "#/$defs/InjectRequest" },
63
63
  { "$ref": "#/$defs/FederationConnectRequest" },
64
- { "$ref": "#/$defs/FederationRouteRequest" }
64
+ { "$ref": "#/$defs/FederationRouteRequest" },
65
+ { "$ref": "#/$defs/MailCreateRequest" },
66
+ { "$ref": "#/$defs/MailGetRequest" },
67
+ { "$ref": "#/$defs/MailListRequest" },
68
+ { "$ref": "#/$defs/MailCloseRequest" },
69
+ { "$ref": "#/$defs/MailJoinRequest" },
70
+ { "$ref": "#/$defs/MailLeaveRequest" },
71
+ { "$ref": "#/$defs/MailInviteRequest" },
72
+ { "$ref": "#/$defs/MailTurnRequest" },
73
+ { "$ref": "#/$defs/MailTurnsListRequest" },
74
+ { "$ref": "#/$defs/MailThreadCreateRequest" },
75
+ { "$ref": "#/$defs/MailThreadListRequest" },
76
+ { "$ref": "#/$defs/MailSummaryRequest" },
77
+ { "$ref": "#/$defs/MailReplayRequest" }
65
78
  ]
66
79
  },
67
80
  "MAPResponse": {
@@ -151,6 +164,7 @@
151
164
  "agent",
152
165
  "resource",
153
166
  "federation",
167
+ "mail",
154
168
  "internal"
155
169
  ],
156
170
  "description": "Category of error for handling decisions"
@@ -280,6 +294,19 @@
280
294
  },
281
295
  "additionalProperties": false
282
296
  },
297
+ "mail": {
298
+ "type": "object",
299
+ "description": "Mail protocol capabilities for conversation/turn tracking",
300
+ "properties": {
301
+ "enabled": { "type": "boolean", "description": "Whether mail is enabled (server response only)" },
302
+ "canCreate": { "type": "boolean", "description": "Can create new conversations" },
303
+ "canJoin": { "type": "boolean", "description": "Can join existing conversations" },
304
+ "canInvite": { "type": "boolean", "description": "Can invite participants to conversations" },
305
+ "canViewHistory": { "type": "boolean", "description": "Can view conversation history" },
306
+ "canCreateThreads": { "type": "boolean", "description": "Can create threads within conversations" }
307
+ },
308
+ "additionalProperties": false
309
+ },
283
310
  "_meta": { "$ref": "#/$defs/Meta" }
284
311
  },
285
312
  "additionalProperties": false
@@ -580,6 +607,10 @@
580
607
  "type": "integer",
581
608
  "description": "Time-to-live in milliseconds"
582
609
  },
610
+ "mail": {
611
+ "$ref": "#/$defs/MailMessageMeta",
612
+ "description": "Mail turn tracking metadata. When present on map/send, an intercepted turn is recorded."
613
+ },
583
614
  "_meta": { "$ref": "#/$defs/Meta" }
584
615
  },
585
616
  "additionalProperties": false
@@ -670,7 +701,15 @@
670
701
  "scope_member_left",
671
702
  "system_error",
672
703
  "federation_connected",
673
- "federation_disconnected"
704
+ "federation_disconnected",
705
+ "mail.created",
706
+ "mail.closed",
707
+ "mail.participant.joined",
708
+ "mail.participant.left",
709
+ "mail.turn.added",
710
+ "mail.turn.updated",
711
+ "mail.thread.created",
712
+ "mail.summary.generated"
674
713
  ],
675
714
  "description": "Type of system event"
676
715
  },
@@ -725,6 +764,10 @@
725
764
  "items": { "$ref": "#/$defs/MessagePriority" },
726
765
  "description": "Only events with these priorities"
727
766
  },
767
+ "mail": {
768
+ "$ref": "#/$defs/MailSubscriptionFilter",
769
+ "description": "Mail-specific filter for conversation events"
770
+ },
728
771
  "_meta": { "$ref": "#/$defs/Meta" }
729
772
  },
730
773
  "additionalProperties": false
@@ -1823,6 +1866,693 @@
1823
1866
  }
1824
1867
  },
1825
1868
  "required": ["jsonrpc", "method", "params"]
1869
+ },
1870
+
1871
+ "ConversationId": {
1872
+ "type": "string",
1873
+ "description": "Unique identifier for a conversation"
1874
+ },
1875
+ "TurnId": {
1876
+ "type": "string",
1877
+ "description": "Unique identifier for a turn"
1878
+ },
1879
+ "ThreadId": {
1880
+ "type": "string",
1881
+ "description": "Unique identifier for a thread"
1882
+ },
1883
+ "ConversationType": {
1884
+ "type": "string",
1885
+ "enum": ["user-session", "agent-task", "multi-agent", "mixed"],
1886
+ "description": "Type of conversation"
1887
+ },
1888
+ "ConversationStatus": {
1889
+ "type": "string",
1890
+ "enum": ["active", "paused", "completed", "failed", "archived"],
1891
+ "description": "Status of a conversation"
1892
+ },
1893
+ "ParticipantRole": {
1894
+ "type": "string",
1895
+ "enum": ["initiator", "assistant", "worker", "observer", "moderator"],
1896
+ "description": "Role of a participant within a conversation"
1897
+ },
1898
+ "TurnStatus": {
1899
+ "type": "string",
1900
+ "enum": ["pending", "streaming", "complete", "failed"],
1901
+ "description": "Status of a turn's content lifecycle"
1902
+ },
1903
+ "TurnVisibility": {
1904
+ "description": "Visibility of a turn within a conversation",
1905
+ "oneOf": [
1906
+ { "type": "object", "properties": { "type": { "const": "all" } }, "required": ["type"] },
1907
+ { "type": "object", "properties": { "type": { "const": "participants" }, "ids": { "type": "array", "items": { "$ref": "#/$defs/ParticipantId" } } }, "required": ["type", "ids"] },
1908
+ { "type": "object", "properties": { "type": { "const": "role" }, "roles": { "type": "array", "items": { "$ref": "#/$defs/ParticipantRole" } } }, "required": ["type", "roles"] },
1909
+ { "type": "object", "properties": { "type": { "const": "private" } }, "required": ["type"] }
1910
+ ]
1911
+ },
1912
+ "TurnSource": {
1913
+ "description": "How a turn was created",
1914
+ "oneOf": [
1915
+ { "type": "object", "properties": { "type": { "const": "explicit" }, "method": { "const": "mail/turn" } }, "required": ["type", "method"] },
1916
+ { "type": "object", "properties": { "type": { "const": "intercepted" }, "messageId": { "$ref": "#/$defs/MessageId" } }, "required": ["type", "messageId"] }
1917
+ ]
1918
+ },
1919
+ "ConversationPermissions": {
1920
+ "type": "object",
1921
+ "description": "Permissions for a participant within a conversation",
1922
+ "properties": {
1923
+ "canSend": { "type": "boolean" },
1924
+ "canObserve": { "type": "boolean" },
1925
+ "canInvite": { "type": "boolean" },
1926
+ "canRemove": { "type": "boolean" },
1927
+ "canCreateThreads": { "type": "boolean" },
1928
+ "historyAccess": { "type": "string", "enum": ["none", "from-join", "full"] },
1929
+ "canSeeInternal": { "type": "boolean" }
1930
+ },
1931
+ "additionalProperties": false
1932
+ },
1933
+ "Conversation": {
1934
+ "type": "object",
1935
+ "description": "A conversation - container for tracking related interactions",
1936
+ "properties": {
1937
+ "id": { "$ref": "#/$defs/ConversationId" },
1938
+ "type": { "$ref": "#/$defs/ConversationType" },
1939
+ "status": { "$ref": "#/$defs/ConversationStatus" },
1940
+ "subject": { "type": "string" },
1941
+ "participantCount": { "type": "integer" },
1942
+ "parentConversationId": { "$ref": "#/$defs/ConversationId" },
1943
+ "parentTurnId": { "$ref": "#/$defs/TurnId" },
1944
+ "createdAt": { "$ref": "#/$defs/Timestamp" },
1945
+ "updatedAt": { "$ref": "#/$defs/Timestamp" },
1946
+ "closedAt": { "$ref": "#/$defs/Timestamp" },
1947
+ "createdBy": { "$ref": "#/$defs/ParticipantId" },
1948
+ "metadata": { "type": "object" },
1949
+ "_meta": { "$ref": "#/$defs/Meta" }
1950
+ },
1951
+ "required": ["id", "type", "status", "participantCount", "createdAt", "updatedAt", "createdBy"],
1952
+ "additionalProperties": false
1953
+ },
1954
+ "ConversationParticipant": {
1955
+ "type": "object",
1956
+ "description": "A participant in a conversation with role and permissions",
1957
+ "properties": {
1958
+ "id": { "$ref": "#/$defs/ParticipantId" },
1959
+ "type": { "type": "string", "enum": ["user", "agent", "system"] },
1960
+ "role": { "$ref": "#/$defs/ParticipantRole" },
1961
+ "joinedAt": { "$ref": "#/$defs/Timestamp" },
1962
+ "leftAt": { "$ref": "#/$defs/Timestamp" },
1963
+ "permissions": { "$ref": "#/$defs/ConversationPermissions" },
1964
+ "agentInfo": {
1965
+ "type": "object",
1966
+ "properties": {
1967
+ "agentId": { "$ref": "#/$defs/AgentId" },
1968
+ "name": { "type": "string" },
1969
+ "role": { "type": "string" }
1970
+ },
1971
+ "required": ["agentId"]
1972
+ },
1973
+ "_meta": { "$ref": "#/$defs/Meta" }
1974
+ },
1975
+ "required": ["id", "type", "role", "joinedAt", "permissions"],
1976
+ "additionalProperties": false
1977
+ },
1978
+ "Turn": {
1979
+ "type": "object",
1980
+ "description": "A turn - the atomic unit of conversation",
1981
+ "properties": {
1982
+ "id": { "$ref": "#/$defs/TurnId" },
1983
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
1984
+ "participant": { "$ref": "#/$defs/ParticipantId" },
1985
+ "timestamp": { "$ref": "#/$defs/Timestamp" },
1986
+ "contentType": { "type": "string", "description": "Content type: text, data, event, reference, or x-* custom" },
1987
+ "content": { "description": "Content payload - shape determined by contentType" },
1988
+ "threadId": { "$ref": "#/$defs/ThreadId" },
1989
+ "inReplyTo": { "$ref": "#/$defs/TurnId" },
1990
+ "source": { "$ref": "#/$defs/TurnSource" },
1991
+ "visibility": { "$ref": "#/$defs/TurnVisibility" },
1992
+ "status": { "$ref": "#/$defs/TurnStatus" },
1993
+ "metadata": { "type": "object" },
1994
+ "_meta": { "$ref": "#/$defs/Meta" }
1995
+ },
1996
+ "required": ["id", "conversationId", "participant", "timestamp", "contentType", "content", "source"],
1997
+ "additionalProperties": false
1998
+ },
1999
+ "Thread": {
2000
+ "type": "object",
2001
+ "description": "A thread within a conversation for focused discussion",
2002
+ "properties": {
2003
+ "id": { "$ref": "#/$defs/ThreadId" },
2004
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2005
+ "parentThreadId": { "$ref": "#/$defs/ThreadId" },
2006
+ "subject": { "type": "string" },
2007
+ "rootTurnId": { "$ref": "#/$defs/TurnId" },
2008
+ "turnCount": { "type": "integer" },
2009
+ "participantCount": { "type": "integer" },
2010
+ "createdAt": { "$ref": "#/$defs/Timestamp" },
2011
+ "updatedAt": { "$ref": "#/$defs/Timestamp" },
2012
+ "createdBy": { "$ref": "#/$defs/ParticipantId" },
2013
+ "_meta": { "$ref": "#/$defs/Meta" }
2014
+ },
2015
+ "required": ["id", "conversationId", "rootTurnId", "turnCount", "participantCount", "createdAt", "updatedAt", "createdBy"],
2016
+ "additionalProperties": false
2017
+ },
2018
+ "MailMessageMeta": {
2019
+ "type": "object",
2020
+ "description": "Mail metadata for map/send turn tracking",
2021
+ "properties": {
2022
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2023
+ "threadId": { "$ref": "#/$defs/ThreadId" },
2024
+ "inReplyTo": { "$ref": "#/$defs/TurnId" },
2025
+ "visibility": { "$ref": "#/$defs/TurnVisibility" }
2026
+ },
2027
+ "required": ["conversationId"],
2028
+ "additionalProperties": false
2029
+ },
2030
+ "MailSubscriptionFilter": {
2031
+ "type": "object",
2032
+ "description": "Mail-specific subscription filter for conversation events",
2033
+ "properties": {
2034
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2035
+ "threadId": { "$ref": "#/$defs/ThreadId" },
2036
+ "participantId": { "$ref": "#/$defs/ParticipantId" },
2037
+ "contentType": { "type": "string" }
2038
+ },
2039
+ "additionalProperties": false
2040
+ },
2041
+
2042
+ "MailCreateRequest": {
2043
+ "type": "object",
2044
+ "x-method": "mail/create",
2045
+ "x-tier": "extension",
2046
+ "description": "Create a new conversation",
2047
+ "properties": {
2048
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2049
+ "id": { "$ref": "#/$defs/RequestId" },
2050
+ "method": { "const": "mail/create" },
2051
+ "params": {
2052
+ "type": "object",
2053
+ "properties": {
2054
+ "type": { "$ref": "#/$defs/ConversationType" },
2055
+ "subject": { "type": "string" },
2056
+ "parentConversationId": { "$ref": "#/$defs/ConversationId" },
2057
+ "parentTurnId": { "$ref": "#/$defs/TurnId" },
2058
+ "initialParticipants": {
2059
+ "type": "array",
2060
+ "items": {
2061
+ "type": "object",
2062
+ "properties": {
2063
+ "id": { "$ref": "#/$defs/ParticipantId" },
2064
+ "role": { "$ref": "#/$defs/ParticipantRole" },
2065
+ "permissions": { "$ref": "#/$defs/ConversationPermissions" }
2066
+ },
2067
+ "required": ["id"]
2068
+ }
2069
+ },
2070
+ "initialTurn": {
2071
+ "type": "object",
2072
+ "properties": {
2073
+ "contentType": { "type": "string" },
2074
+ "content": {},
2075
+ "visibility": { "$ref": "#/$defs/TurnVisibility" }
2076
+ },
2077
+ "required": ["contentType", "content"]
2078
+ },
2079
+ "metadata": { "type": "object" },
2080
+ "_meta": { "$ref": "#/$defs/Meta" }
2081
+ }
2082
+ }
2083
+ },
2084
+ "required": ["jsonrpc", "id", "method"]
2085
+ },
2086
+ "MailCreateResponse": {
2087
+ "type": "object",
2088
+ "properties": {
2089
+ "conversation": { "$ref": "#/$defs/Conversation" },
2090
+ "participant": { "$ref": "#/$defs/ConversationParticipant" },
2091
+ "initialTurn": { "$ref": "#/$defs/Turn" },
2092
+ "_meta": { "$ref": "#/$defs/Meta" }
2093
+ },
2094
+ "required": ["conversation", "participant"]
2095
+ },
2096
+ "MailGetRequest": {
2097
+ "type": "object",
2098
+ "x-method": "mail/get",
2099
+ "x-tier": "extension",
2100
+ "description": "Get conversation details",
2101
+ "properties": {
2102
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2103
+ "id": { "$ref": "#/$defs/RequestId" },
2104
+ "method": { "const": "mail/get" },
2105
+ "params": {
2106
+ "type": "object",
2107
+ "properties": {
2108
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2109
+ "include": {
2110
+ "type": "object",
2111
+ "properties": {
2112
+ "participants": { "type": "boolean" },
2113
+ "threads": { "type": "boolean" },
2114
+ "recentTurns": { "type": "integer" },
2115
+ "stats": { "type": "boolean" }
2116
+ }
2117
+ },
2118
+ "_meta": { "$ref": "#/$defs/Meta" }
2119
+ },
2120
+ "required": ["conversationId"]
2121
+ }
2122
+ },
2123
+ "required": ["jsonrpc", "id", "method", "params"]
2124
+ },
2125
+ "MailGetResponse": {
2126
+ "type": "object",
2127
+ "properties": {
2128
+ "conversation": { "$ref": "#/$defs/Conversation" },
2129
+ "participants": { "type": "array", "items": { "$ref": "#/$defs/ConversationParticipant" } },
2130
+ "threads": { "type": "array", "items": { "$ref": "#/$defs/Thread" } },
2131
+ "recentTurns": { "type": "array", "items": { "$ref": "#/$defs/Turn" } },
2132
+ "stats": {
2133
+ "type": "object",
2134
+ "properties": {
2135
+ "totalTurns": { "type": "integer" },
2136
+ "turnsByContentType": { "type": "object" },
2137
+ "activeParticipants": { "type": "integer" },
2138
+ "threadCount": { "type": "integer" }
2139
+ }
2140
+ },
2141
+ "_meta": { "$ref": "#/$defs/Meta" }
2142
+ },
2143
+ "required": ["conversation"]
2144
+ },
2145
+ "MailListRequest": {
2146
+ "type": "object",
2147
+ "x-method": "mail/list",
2148
+ "x-tier": "extension",
2149
+ "description": "List conversations with filtering",
2150
+ "properties": {
2151
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2152
+ "id": { "$ref": "#/$defs/RequestId" },
2153
+ "method": { "const": "mail/list" },
2154
+ "params": {
2155
+ "type": "object",
2156
+ "properties": {
2157
+ "filter": {
2158
+ "type": "object",
2159
+ "properties": {
2160
+ "type": { "type": "array", "items": { "$ref": "#/$defs/ConversationType" } },
2161
+ "status": { "type": "array", "items": { "$ref": "#/$defs/ConversationStatus" } },
2162
+ "participantId": { "$ref": "#/$defs/ParticipantId" },
2163
+ "createdAfter": { "$ref": "#/$defs/Timestamp" },
2164
+ "createdBefore": { "$ref": "#/$defs/Timestamp" },
2165
+ "parentConversationId": { "$ref": "#/$defs/ConversationId" }
2166
+ }
2167
+ },
2168
+ "limit": { "type": "integer", "minimum": 1 },
2169
+ "cursor": { "type": "string" },
2170
+ "_meta": { "$ref": "#/$defs/Meta" }
2171
+ }
2172
+ }
2173
+ },
2174
+ "required": ["jsonrpc", "id", "method"]
2175
+ },
2176
+ "MailListResponse": {
2177
+ "type": "object",
2178
+ "properties": {
2179
+ "conversations": { "type": "array", "items": { "$ref": "#/$defs/Conversation" } },
2180
+ "nextCursor": { "type": "string" },
2181
+ "hasMore": { "type": "boolean" },
2182
+ "_meta": { "$ref": "#/$defs/Meta" }
2183
+ },
2184
+ "required": ["conversations", "hasMore"]
2185
+ },
2186
+ "MailCloseRequest": {
2187
+ "type": "object",
2188
+ "x-method": "mail/close",
2189
+ "x-tier": "extension",
2190
+ "description": "Close a conversation",
2191
+ "properties": {
2192
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2193
+ "id": { "$ref": "#/$defs/RequestId" },
2194
+ "method": { "const": "mail/close" },
2195
+ "params": {
2196
+ "type": "object",
2197
+ "properties": {
2198
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2199
+ "reason": { "type": "string" },
2200
+ "_meta": { "$ref": "#/$defs/Meta" }
2201
+ },
2202
+ "required": ["conversationId"]
2203
+ }
2204
+ },
2205
+ "required": ["jsonrpc", "id", "method", "params"]
2206
+ },
2207
+ "MailCloseResponse": {
2208
+ "type": "object",
2209
+ "properties": {
2210
+ "conversation": { "$ref": "#/$defs/Conversation" },
2211
+ "_meta": { "$ref": "#/$defs/Meta" }
2212
+ },
2213
+ "required": ["conversation"]
2214
+ },
2215
+ "MailJoinRequest": {
2216
+ "type": "object",
2217
+ "x-method": "mail/join",
2218
+ "x-tier": "extension",
2219
+ "description": "Join a conversation",
2220
+ "properties": {
2221
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2222
+ "id": { "$ref": "#/$defs/RequestId" },
2223
+ "method": { "const": "mail/join" },
2224
+ "params": {
2225
+ "type": "object",
2226
+ "properties": {
2227
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2228
+ "role": { "$ref": "#/$defs/ParticipantRole" },
2229
+ "catchUp": {
2230
+ "type": "object",
2231
+ "properties": {
2232
+ "from": { "oneOf": [{ "type": "string" }, { "type": "number" }] },
2233
+ "limit": { "type": "integer" },
2234
+ "includeSummary": { "type": "boolean" }
2235
+ }
2236
+ },
2237
+ "_meta": { "$ref": "#/$defs/Meta" }
2238
+ },
2239
+ "required": ["conversationId"]
2240
+ }
2241
+ },
2242
+ "required": ["jsonrpc", "id", "method", "params"]
2243
+ },
2244
+ "MailJoinResponse": {
2245
+ "type": "object",
2246
+ "properties": {
2247
+ "conversation": { "$ref": "#/$defs/Conversation" },
2248
+ "participant": { "$ref": "#/$defs/ConversationParticipant" },
2249
+ "history": { "type": "array", "items": { "$ref": "#/$defs/Turn" } },
2250
+ "historyCursor": { "type": "string" },
2251
+ "summary": { "type": "string" },
2252
+ "_meta": { "$ref": "#/$defs/Meta" }
2253
+ },
2254
+ "required": ["conversation", "participant"]
2255
+ },
2256
+ "MailLeaveRequest": {
2257
+ "type": "object",
2258
+ "x-method": "mail/leave",
2259
+ "x-tier": "extension",
2260
+ "description": "Leave a conversation",
2261
+ "properties": {
2262
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2263
+ "id": { "$ref": "#/$defs/RequestId" },
2264
+ "method": { "const": "mail/leave" },
2265
+ "params": {
2266
+ "type": "object",
2267
+ "properties": {
2268
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2269
+ "reason": { "type": "string" },
2270
+ "_meta": { "$ref": "#/$defs/Meta" }
2271
+ },
2272
+ "required": ["conversationId"]
2273
+ }
2274
+ },
2275
+ "required": ["jsonrpc", "id", "method", "params"]
2276
+ },
2277
+ "MailLeaveResponse": {
2278
+ "type": "object",
2279
+ "properties": {
2280
+ "success": { "type": "boolean" },
2281
+ "leftAt": { "$ref": "#/$defs/Timestamp" },
2282
+ "_meta": { "$ref": "#/$defs/Meta" }
2283
+ },
2284
+ "required": ["success", "leftAt"]
2285
+ },
2286
+ "MailInviteRequest": {
2287
+ "type": "object",
2288
+ "x-method": "mail/invite",
2289
+ "x-tier": "extension",
2290
+ "description": "Invite a participant to a conversation",
2291
+ "properties": {
2292
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2293
+ "id": { "$ref": "#/$defs/RequestId" },
2294
+ "method": { "const": "mail/invite" },
2295
+ "params": {
2296
+ "type": "object",
2297
+ "properties": {
2298
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2299
+ "participant": {
2300
+ "type": "object",
2301
+ "properties": {
2302
+ "id": { "$ref": "#/$defs/ParticipantId" },
2303
+ "role": { "$ref": "#/$defs/ParticipantRole" },
2304
+ "permissions": { "$ref": "#/$defs/ConversationPermissions" }
2305
+ },
2306
+ "required": ["id"]
2307
+ },
2308
+ "message": { "type": "string" },
2309
+ "_meta": { "$ref": "#/$defs/Meta" }
2310
+ },
2311
+ "required": ["conversationId", "participant"]
2312
+ }
2313
+ },
2314
+ "required": ["jsonrpc", "id", "method", "params"]
2315
+ },
2316
+ "MailInviteResponse": {
2317
+ "type": "object",
2318
+ "properties": {
2319
+ "invited": { "type": "boolean" },
2320
+ "participant": { "$ref": "#/$defs/ConversationParticipant" },
2321
+ "invitationId": { "type": "string" },
2322
+ "pending": { "type": "boolean" },
2323
+ "_meta": { "$ref": "#/$defs/Meta" }
2324
+ },
2325
+ "required": ["invited"]
2326
+ },
2327
+ "MailTurnRequest": {
2328
+ "type": "object",
2329
+ "x-method": "mail/turn",
2330
+ "x-tier": "extension",
2331
+ "description": "Record a turn in a conversation",
2332
+ "properties": {
2333
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2334
+ "id": { "$ref": "#/$defs/RequestId" },
2335
+ "method": { "const": "mail/turn" },
2336
+ "params": {
2337
+ "type": "object",
2338
+ "properties": {
2339
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2340
+ "contentType": { "type": "string" },
2341
+ "content": {},
2342
+ "threadId": { "$ref": "#/$defs/ThreadId" },
2343
+ "inReplyTo": { "$ref": "#/$defs/TurnId" },
2344
+ "visibility": { "$ref": "#/$defs/TurnVisibility" },
2345
+ "metadata": { "type": "object" },
2346
+ "_meta": { "$ref": "#/$defs/Meta" }
2347
+ },
2348
+ "required": ["conversationId", "contentType", "content"]
2349
+ }
2350
+ },
2351
+ "required": ["jsonrpc", "id", "method", "params"]
2352
+ },
2353
+ "MailTurnResponse": {
2354
+ "type": "object",
2355
+ "properties": {
2356
+ "turn": { "$ref": "#/$defs/Turn" },
2357
+ "_meta": { "$ref": "#/$defs/Meta" }
2358
+ },
2359
+ "required": ["turn"]
2360
+ },
2361
+ "MailTurnsListRequest": {
2362
+ "type": "object",
2363
+ "x-method": "mail/turns/list",
2364
+ "x-tier": "extension",
2365
+ "description": "List turns in a conversation",
2366
+ "properties": {
2367
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2368
+ "id": { "$ref": "#/$defs/RequestId" },
2369
+ "method": { "const": "mail/turns/list" },
2370
+ "params": {
2371
+ "type": "object",
2372
+ "properties": {
2373
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2374
+ "filter": {
2375
+ "type": "object",
2376
+ "properties": {
2377
+ "threadId": { "$ref": "#/$defs/ThreadId" },
2378
+ "includeAllThreads": { "type": "boolean" },
2379
+ "contentTypes": { "type": "array", "items": { "type": "string" } },
2380
+ "participantId": { "$ref": "#/$defs/ParticipantId" },
2381
+ "afterTurnId": { "$ref": "#/$defs/TurnId" },
2382
+ "beforeTurnId": { "$ref": "#/$defs/TurnId" },
2383
+ "afterTimestamp": { "$ref": "#/$defs/Timestamp" },
2384
+ "beforeTimestamp": { "$ref": "#/$defs/Timestamp" }
2385
+ }
2386
+ },
2387
+ "limit": { "type": "integer", "minimum": 1 },
2388
+ "order": { "type": "string", "enum": ["asc", "desc"] },
2389
+ "_meta": { "$ref": "#/$defs/Meta" }
2390
+ },
2391
+ "required": ["conversationId"]
2392
+ }
2393
+ },
2394
+ "required": ["jsonrpc", "id", "method", "params"]
2395
+ },
2396
+ "MailTurnsListResponse": {
2397
+ "type": "object",
2398
+ "properties": {
2399
+ "turns": { "type": "array", "items": { "$ref": "#/$defs/Turn" } },
2400
+ "hasMore": { "type": "boolean" },
2401
+ "nextCursor": { "type": "string" },
2402
+ "_meta": { "$ref": "#/$defs/Meta" }
2403
+ },
2404
+ "required": ["turns", "hasMore"]
2405
+ },
2406
+ "MailThreadCreateRequest": {
2407
+ "type": "object",
2408
+ "x-method": "mail/thread/create",
2409
+ "x-tier": "extension",
2410
+ "description": "Create a thread within a conversation",
2411
+ "properties": {
2412
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2413
+ "id": { "$ref": "#/$defs/RequestId" },
2414
+ "method": { "const": "mail/thread/create" },
2415
+ "params": {
2416
+ "type": "object",
2417
+ "properties": {
2418
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2419
+ "rootTurnId": { "$ref": "#/$defs/TurnId" },
2420
+ "subject": { "type": "string" },
2421
+ "parentThreadId": { "$ref": "#/$defs/ThreadId" },
2422
+ "_meta": { "$ref": "#/$defs/Meta" }
2423
+ },
2424
+ "required": ["conversationId", "rootTurnId"]
2425
+ }
2426
+ },
2427
+ "required": ["jsonrpc", "id", "method", "params"]
2428
+ },
2429
+ "MailThreadCreateResponse": {
2430
+ "type": "object",
2431
+ "properties": {
2432
+ "thread": { "$ref": "#/$defs/Thread" },
2433
+ "_meta": { "$ref": "#/$defs/Meta" }
2434
+ },
2435
+ "required": ["thread"]
2436
+ },
2437
+ "MailThreadListRequest": {
2438
+ "type": "object",
2439
+ "x-method": "mail/thread/list",
2440
+ "x-tier": "extension",
2441
+ "description": "List threads in a conversation",
2442
+ "properties": {
2443
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2444
+ "id": { "$ref": "#/$defs/RequestId" },
2445
+ "method": { "const": "mail/thread/list" },
2446
+ "params": {
2447
+ "type": "object",
2448
+ "properties": {
2449
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2450
+ "parentThreadId": { "$ref": "#/$defs/ThreadId" },
2451
+ "limit": { "type": "integer", "minimum": 1 },
2452
+ "cursor": { "type": "string" },
2453
+ "_meta": { "$ref": "#/$defs/Meta" }
2454
+ },
2455
+ "required": ["conversationId"]
2456
+ }
2457
+ },
2458
+ "required": ["jsonrpc", "id", "method", "params"]
2459
+ },
2460
+ "MailThreadListResponse": {
2461
+ "type": "object",
2462
+ "properties": {
2463
+ "threads": { "type": "array", "items": { "$ref": "#/$defs/Thread" } },
2464
+ "hasMore": { "type": "boolean" },
2465
+ "nextCursor": { "type": "string" },
2466
+ "_meta": { "$ref": "#/$defs/Meta" }
2467
+ },
2468
+ "required": ["threads", "hasMore"]
2469
+ },
2470
+ "MailSummaryRequest": {
2471
+ "type": "object",
2472
+ "x-method": "mail/summary",
2473
+ "x-tier": "extension",
2474
+ "description": "Get or generate a conversation summary",
2475
+ "properties": {
2476
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2477
+ "id": { "$ref": "#/$defs/RequestId" },
2478
+ "method": { "const": "mail/summary" },
2479
+ "params": {
2480
+ "type": "object",
2481
+ "properties": {
2482
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2483
+ "scope": {
2484
+ "type": "object",
2485
+ "properties": {
2486
+ "fromTurnId": { "$ref": "#/$defs/TurnId" },
2487
+ "toTurnId": { "$ref": "#/$defs/TurnId" },
2488
+ "threadId": { "$ref": "#/$defs/ThreadId" }
2489
+ }
2490
+ },
2491
+ "regenerate": { "type": "boolean" },
2492
+ "include": {
2493
+ "type": "object",
2494
+ "properties": {
2495
+ "keyPoints": { "type": "boolean" },
2496
+ "keyDecisions": { "type": "boolean" },
2497
+ "openQuestions": { "type": "boolean" },
2498
+ "participants": { "type": "boolean" }
2499
+ }
2500
+ },
2501
+ "_meta": { "$ref": "#/$defs/Meta" }
2502
+ },
2503
+ "required": ["conversationId"]
2504
+ }
2505
+ },
2506
+ "required": ["jsonrpc", "id", "method", "params"]
2507
+ },
2508
+ "MailSummaryResponse": {
2509
+ "type": "object",
2510
+ "properties": {
2511
+ "summary": { "type": "string" },
2512
+ "keyPoints": { "type": "array", "items": { "type": "string" } },
2513
+ "keyDecisions": { "type": "array", "items": { "type": "string" } },
2514
+ "openQuestions": { "type": "array", "items": { "type": "string" } },
2515
+ "generated": { "type": "boolean" },
2516
+ "cachedAt": { "$ref": "#/$defs/Timestamp" },
2517
+ "_meta": { "$ref": "#/$defs/Meta" }
2518
+ },
2519
+ "required": ["summary", "generated"]
2520
+ },
2521
+ "MailReplayRequest": {
2522
+ "type": "object",
2523
+ "x-method": "mail/replay",
2524
+ "x-tier": "extension",
2525
+ "description": "Replay conversation turns from a point",
2526
+ "properties": {
2527
+ "jsonrpc": { "$ref": "#/$defs/JsonRpcVersion" },
2528
+ "id": { "$ref": "#/$defs/RequestId" },
2529
+ "method": { "const": "mail/replay" },
2530
+ "params": {
2531
+ "type": "object",
2532
+ "properties": {
2533
+ "conversationId": { "$ref": "#/$defs/ConversationId" },
2534
+ "fromTurnId": { "$ref": "#/$defs/TurnId" },
2535
+ "fromTimestamp": { "$ref": "#/$defs/Timestamp" },
2536
+ "threadId": { "$ref": "#/$defs/ThreadId" },
2537
+ "limit": { "type": "integer", "minimum": 1 },
2538
+ "contentTypes": { "type": "array", "items": { "type": "string" } },
2539
+ "_meta": { "$ref": "#/$defs/Meta" }
2540
+ },
2541
+ "required": ["conversationId"]
2542
+ }
2543
+ },
2544
+ "required": ["jsonrpc", "id", "method", "params"]
2545
+ },
2546
+ "MailReplayResponse": {
2547
+ "type": "object",
2548
+ "properties": {
2549
+ "turns": { "type": "array", "items": { "$ref": "#/$defs/Turn" } },
2550
+ "hasMore": { "type": "boolean" },
2551
+ "nextCursor": { "type": "string" },
2552
+ "missedCount": { "type": "integer" },
2553
+ "_meta": { "$ref": "#/$defs/Meta" }
2554
+ },
2555
+ "required": ["turns", "hasMore", "missedCount"]
1826
2556
  }
1827
2557
  }
1828
2558
  }