@mhome/conversation-protocol 1.1.1 → 1.3.0

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.
package/README.md CHANGED
@@ -19,3 +19,13 @@ Telegram forum topic without changing the provider account's base authorization
19
19
  Message content is a provider-independent ordered list of text, image, audio, video, and file parts.
20
20
  Messaging runtimes must materialize provider media handles into this content before invoking the
21
21
  Conversation application port; the Agent and this contract never receive provider SDK objects.
22
+
23
+ ## Execution contracts
24
+
25
+ `execution` owns Agent command/event DTOs and deployment ports. `execution::wire` owns the cloud
26
+ transport envelopes and `schema/execution` / `fixtures/execution` conformance assets. These moved
27
+ from the retired Agent contract/protocol crates. Client-facing root modules remain unchanged.
28
+
29
+ Model data is re-exported from `llm-api`; there is one model-message representation. User-facing
30
+ messages intentionally use separate content types and never contain private model continuation.
31
+ Runtime state machines, checkpoint formats, prompts and recovery policy remain in Agent Runtime.
@@ -0,0 +1,17 @@
1
+ {
2
+ "target": "/chat/event",
3
+ "direction": "event",
4
+ "body": {
5
+ "type": "admission.changed",
6
+ "surfaceId": "cs1:cp:dXNlci0x",
7
+ "requestId": "request-3",
8
+ "admissionVersion": 8,
9
+ "occurredAt": "2026-08-22T03:00:00Z",
10
+ "data": {
11
+ "state": "bound",
12
+ "reason": "accepted",
13
+ "threadId": "thread-3",
14
+ "queueVersion": 1
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-5",
5
+ "correlation_id": "correlation-1",
6
+ "causation_id": "message-1",
7
+ "sent_at_unix_ms": 1700000000010,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "command_response",
15
+ "payload": {
16
+ "type": "accepted",
17
+ "context": {
18
+ "scope": {
19
+ "tenant_id": "tenant-1",
20
+ "scope_id": "scope-1"
21
+ },
22
+ "actor": {
23
+ "user_id": "user-1",
24
+ "client_id": "client-1"
25
+ },
26
+ "thread_id": "thread-1",
27
+ "run_id": "run-1",
28
+ "operation_id": "operation-1",
29
+ "deadline_unix_ms": null,
30
+ "traceparent": null,
31
+ "surface_id": "cs1:cp:dXNlci0x"
32
+ },
33
+ "disposition": "queued",
34
+ "queue_revision": 1
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-3",
5
+ "correlation_id": "correlation-tool-1",
6
+ "causation_id": "message-1",
7
+ "sent_at_unix_ms": 1700000000500,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "app_facade_request",
15
+ "payload": {
16
+ "phase": "prepare",
17
+ "context": {
18
+ "scope": {
19
+ "tenant_id": "tenant-1",
20
+ "scope_id": "scope-1"
21
+ },
22
+ "actor": {
23
+ "user_id": "user-1",
24
+ "client_id": "client-1"
25
+ },
26
+ "thread_id": "thread-1",
27
+ "run_id": "run-1",
28
+ "operation_id": "operation-1",
29
+ "deadline_unix_ms": null,
30
+ "traceparent": null,
31
+ "surface_id": "cs1:cp:dXNlci0x"
32
+ },
33
+ "request": {
34
+ "operation_id": "run-1:step:0:tool:call-1",
35
+ "target": "/app/capability/invoke",
36
+ "input": {
37
+ "capability": "device.turn_on",
38
+ "device_id": "device-1"
39
+ }
40
+ }
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-6",
5
+ "correlation_id": "correlation-tool-1",
6
+ "causation_id": "message-3",
7
+ "sent_at_unix_ms": 1700000000510,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "app_facade_response",
15
+ "payload": {
16
+ "type": "prepared",
17
+ "action": {
18
+ "action_id": "action-1",
19
+ "operation_id": "run-1:step:0:tool:call-1",
20
+ "preview": {
21
+ "actionCode": "device.power.update",
22
+ "title": "Turn on device",
23
+ "message": "Turn on the kitchen light.",
24
+ "tone": "normal",
25
+ "details": [
26
+ {
27
+ "label": "Device",
28
+ "value": {
29
+ "type": "text",
30
+ "text": "Kitchen light"
31
+ }
32
+ },
33
+ {
34
+ "label": "Power",
35
+ "value": {
36
+ "type": "bool",
37
+ "value": true
38
+ }
39
+ }
40
+ ],
41
+ "proceedLabel": "Continue",
42
+ "rejectLabel": "Cancel"
43
+ },
44
+ "payload": {
45
+ "target": "/app/capability/invoke"
46
+ },
47
+ "revision": 7,
48
+ "approval": "when_interactive",
49
+ "interaction_kind": "approval"
50
+ }
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-user-action-1",
5
+ "correlation_id": "correlation-tool-2",
6
+ "causation_id": "message-prepare-2",
7
+ "sent_at_unix_ms": 1700000000520,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "app_facade_response",
15
+ "payload": {
16
+ "type": "prepared",
17
+ "action": {
18
+ "action_id": "action-install-1",
19
+ "operation_id": "run-1:step:0:tool:call-2",
20
+ "preview": {
21
+ "actionCode": "integration.install",
22
+ "title": "Integration required",
23
+ "message": "Install Matter, then continue.",
24
+ "tone": "normal",
25
+ "details": [
26
+ {
27
+ "label": "Integrations",
28
+ "value": {
29
+ "type": "text_list",
30
+ "items": [
31
+ "matter"
32
+ ]
33
+ }
34
+ }
35
+ ],
36
+ "proceedLabel": "I've installed it",
37
+ "rejectLabel": "Skip",
38
+ "clientTask": {
39
+ "type": "install_integrations",
40
+ "integrationIds": [
41
+ "matter"
42
+ ]
43
+ }
44
+ },
45
+ "payload": {
46
+ "target": "/app/integration/install"
47
+ },
48
+ "revision": 8,
49
+ "approval": "always",
50
+ "interaction_kind": "user_action"
51
+ }
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "purge-ack-1",
5
+ "correlation_id": "purge-1",
6
+ "causation_id": "purge-1",
7
+ "sent_at_unix_ms": 1700000000001,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "checkpoint_purge_ack",
15
+ "payload": {
16
+ "status": "deleted",
17
+ "purge_id": "purge-1",
18
+ "conversation_key": "conversation-1",
19
+ "thread_id": "thread-1",
20
+ "deleted_objects": 2
21
+ }
22
+ }
23
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "purge-1",
5
+ "correlation_id": "purge-1",
6
+ "causation_id": null,
7
+ "sent_at_unix_ms": 1700000000000,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "checkpoint_purge",
15
+ "payload": {
16
+ "purge_id": "purge-1",
17
+ "conversation_key": "conversation-1",
18
+ "scope": {
19
+ "tenant_id": "tenant-1",
20
+ "scope_id": "scope-1"
21
+ },
22
+ "thread_id": "thread-1",
23
+ "surface_id": "cs1:cp:dXNlci0x"
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-2",
5
+ "correlation_id": "correlation-1",
6
+ "causation_id": "message-1",
7
+ "sent_at_unix_ms": 1700000001000,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "event",
15
+ "payload": {
16
+ "event": {
17
+ "id": "event-1",
18
+ "sequence": 2,
19
+ "context": {
20
+ "scope": {
21
+ "tenant_id": "tenant-1",
22
+ "scope_id": "scope-1"
23
+ },
24
+ "actor": {
25
+ "user_id": "user-1",
26
+ "client_id": "client-1"
27
+ },
28
+ "thread_id": "thread-1",
29
+ "run_id": "run-1",
30
+ "operation_id": "operation-1",
31
+ "deadline_unix_ms": null,
32
+ "traceparent": null,
33
+ "surface_id": "cs1:cp:dXNlci0x"
34
+ },
35
+ "event": {
36
+ "type": "completed",
37
+ "result": {
38
+ "text": "done"
39
+ },
40
+ "usage": {
41
+ "model_requests": 1,
42
+ "reported_model_requests": 1,
43
+ "input_tokens": 10,
44
+ "output_tokens": 2,
45
+ "cached_input_tokens": null,
46
+ "reasoning_output_tokens": null,
47
+ "peak_input_tokens": 10,
48
+ "credits": null,
49
+ "tool_calls": 0,
50
+ "window_truncations": 0,
51
+ "trimmed_messages": 0
52
+ }
53
+ }
54
+ },
55
+ "checkpoint": {
56
+ "object_key": "checkpoints/abc.json",
57
+ "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
58
+ "format_version": 1
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,213 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-1",
5
+ "correlation_id": "correlation-1",
6
+ "causation_id": null,
7
+ "sent_at_unix_ms": 1700000000000,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "command",
15
+ "payload": {
16
+ "command": {
17
+ "type": "enqueue",
18
+ "context": {
19
+ "scope": {
20
+ "tenant_id": "tenant-1",
21
+ "scope_id": "scope-1"
22
+ },
23
+ "actor": {
24
+ "user_id": "user-1",
25
+ "client_id": "client-1"
26
+ },
27
+ "thread_id": "thread-1",
28
+ "run_id": "run-1",
29
+ "operation_id": "operation-1",
30
+ "deadline_unix_ms": null,
31
+ "traceparent": null,
32
+ "surface_id": "cs1:cp:dXNlci0x"
33
+ },
34
+ "message": {
35
+ "role": "user",
36
+ "content": [
37
+ {
38
+ "type": "text",
39
+ "text": "hello"
40
+ }
41
+ ]
42
+ },
43
+ "options": {
44
+ "use_case": "chat",
45
+ "model_mode": "auto",
46
+ "access_mode": "interactive",
47
+ "allow_tools": true,
48
+ "max_steps": 8,
49
+ "credit_budget": null,
50
+ "debug": false
51
+ }
52
+ },
53
+ "context_generation": {
54
+ "user_scope": "scope-1",
55
+ "identity": "identity-1",
56
+ "memory": "memory-1",
57
+ "integration_guide": "guide-1",
58
+ "installed_integrations": "installed-1",
59
+ "scope_integrations": "scope-integrations-1"
60
+ },
61
+ "llm_plan": {
62
+ "routes": [
63
+ {
64
+ "use_case": "chat",
65
+ "model_mode": "auto",
66
+ "revision": "1700000000000",
67
+ "route": {
68
+ "backend": "openrouter",
69
+ "profile": "cloud_openrouter",
70
+ "model": "openai/gpt-5.4-mini",
71
+ "provider_preferences": [
72
+ "OpenAI"
73
+ ],
74
+ "temperature": 0.5,
75
+ "max_output_tokens": 8192,
76
+ "context_window_tokens": 128000,
77
+ "cache_control": true,
78
+ "reasoning_effort": null
79
+ }
80
+ },
81
+ {
82
+ "use_case": "agent_info_merge",
83
+ "model_mode": "auto",
84
+ "revision": "1700000000000",
85
+ "route": {
86
+ "backend": "openrouter",
87
+ "profile": "cloud_openrouter",
88
+ "model": "openai/gpt-5.4-mini",
89
+ "provider_preferences": [
90
+ "OpenAI"
91
+ ],
92
+ "temperature": 0.5,
93
+ "max_output_tokens": 8192,
94
+ "context_window_tokens": 128000,
95
+ "cache_control": true,
96
+ "reasoning_effort": null
97
+ }
98
+ },
99
+ {
100
+ "use_case": "automation_judge",
101
+ "model_mode": "auto",
102
+ "revision": "1700000000000",
103
+ "route": {
104
+ "backend": "openrouter",
105
+ "profile": "cloud_openrouter",
106
+ "model": "openai/gpt-5.4-mini",
107
+ "provider_preferences": [
108
+ "OpenAI"
109
+ ],
110
+ "temperature": 0.5,
111
+ "max_output_tokens": 8192,
112
+ "context_window_tokens": 128000,
113
+ "cache_control": true,
114
+ "reasoning_effort": null
115
+ }
116
+ },
117
+ {
118
+ "use_case": "automation_diagnose",
119
+ "model_mode": "auto",
120
+ "revision": "1700000000000",
121
+ "route": {
122
+ "backend": "openrouter",
123
+ "profile": "cloud_openrouter",
124
+ "model": "openai/gpt-5.4-mini",
125
+ "provider_preferences": [
126
+ "OpenAI"
127
+ ],
128
+ "temperature": 0.5,
129
+ "max_output_tokens": 8192,
130
+ "context_window_tokens": 128000,
131
+ "cache_control": true,
132
+ "reasoning_effort": null
133
+ }
134
+ },
135
+ {
136
+ "use_case": "app_guide",
137
+ "model_mode": "auto",
138
+ "revision": "1700000000000",
139
+ "route": {
140
+ "backend": "openrouter",
141
+ "profile": "cloud_openrouter",
142
+ "model": "openai/gpt-5.4-mini",
143
+ "provider_preferences": [
144
+ "OpenAI"
145
+ ],
146
+ "temperature": 0.5,
147
+ "max_output_tokens": 8192,
148
+ "context_window_tokens": 128000,
149
+ "cache_control": true,
150
+ "reasoning_effort": null
151
+ }
152
+ },
153
+ {
154
+ "use_case": "workflow.action_operate",
155
+ "model_mode": "auto",
156
+ "revision": "1700000000000",
157
+ "route": {
158
+ "backend": "openrouter",
159
+ "profile": "cloud_openrouter",
160
+ "model": "openai/gpt-5.4-mini",
161
+ "provider_preferences": [
162
+ "OpenAI"
163
+ ],
164
+ "temperature": 0.5,
165
+ "max_output_tokens": 8192,
166
+ "context_window_tokens": 128000,
167
+ "cache_control": true,
168
+ "reasoning_effort": null
169
+ }
170
+ },
171
+ {
172
+ "use_case": "workflow.automation_generate",
173
+ "model_mode": "auto",
174
+ "revision": "1700000000000",
175
+ "route": {
176
+ "backend": "openrouter",
177
+ "profile": "cloud_openrouter",
178
+ "model": "openai/gpt-5.4-mini",
179
+ "provider_preferences": [
180
+ "OpenAI"
181
+ ],
182
+ "temperature": 0.5,
183
+ "max_output_tokens": 8192,
184
+ "context_window_tokens": 128000,
185
+ "cache_control": true,
186
+ "reasoning_effort": null
187
+ }
188
+ },
189
+ {
190
+ "use_case": "workflow.description_generate",
191
+ "model_mode": "auto",
192
+ "revision": "1700000000000",
193
+ "route": {
194
+ "backend": "openrouter",
195
+ "profile": "cloud_openrouter",
196
+ "model": "openai/gpt-5.4-mini",
197
+ "provider_preferences": [
198
+ "OpenAI"
199
+ ],
200
+ "temperature": 0.5,
201
+ "max_output_tokens": 8192,
202
+ "context_window_tokens": 128000,
203
+ "cache_control": true,
204
+ "reasoning_effort": null
205
+ }
206
+ }
207
+ ]
208
+ },
209
+ "base_checkpoint": null,
210
+ "abandoned_run_id": null
211
+ }
212
+ }
213
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-ack-1",
5
+ "correlation_id": "correlation-event-1",
6
+ "causation_id": "message-event-1",
7
+ "sent_at_unix_ms": 1700000000000,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "event_ack",
15
+ "payload": {
16
+ "event_id": "event-1",
17
+ "checkpoint": {
18
+ "object_key": "checkpoints/abc.json",
19
+ "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
20
+ "format_version": 1
21
+ }
22
+ }
23
+ }
24
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "metadata": {
3
+ "version": 1,
4
+ "message_id": "message-3",
5
+ "correlation_id": "correlation-1",
6
+ "causation_id": "message-2",
7
+ "sent_at_unix_ms": 1700000002000,
8
+ "dispatch": {
9
+ "dispatch_id": "dispatch-1",
10
+ "agent_session_id": "agent-session-1"
11
+ }
12
+ },
13
+ "payload": {
14
+ "family": "event",
15
+ "payload": {
16
+ "event": {
17
+ "id": "event-2",
18
+ "sequence": 3,
19
+ "context": {
20
+ "scope": {
21
+ "tenant_id": "tenant-1",
22
+ "scope_id": "scope-1"
23
+ },
24
+ "actor": {
25
+ "user_id": "user-1",
26
+ "client_id": "client-1"
27
+ },
28
+ "thread_id": "thread-1",
29
+ "run_id": "run-1",
30
+ "operation_id": "operation-1",
31
+ "deadline_unix_ms": null,
32
+ "traceparent": null,
33
+ "surface_id": "cs1:cp:dXNlci0x"
34
+ },
35
+ "event": {
36
+ "type": "failed",
37
+ "code": "OUTPUT_TRUNCATED",
38
+ "message": "Model output reached its configured length limit",
39
+ "usage": {
40
+ "model_requests": 1,
41
+ "reported_model_requests": 1,
42
+ "input_tokens": 10,
43
+ "output_tokens": 20,
44
+ "cached_input_tokens": null,
45
+ "reasoning_output_tokens": null,
46
+ "peak_input_tokens": 10,
47
+ "credits": 7,
48
+ "tool_calls": 0,
49
+ "window_truncations": 0,
50
+ "trimmed_messages": 0
51
+ }
52
+ }
53
+ },
54
+ "checkpoint": {
55
+ "object_key": "checkpoints/abc.json",
56
+ "sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
57
+ "format_version": 1
58
+ }
59
+ }
60
+ }
61
+ }