@mhome/conversation-protocol 2.0.0 → 2.0.1

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
@@ -29,3 +29,13 @@ from the retired Agent contract/protocol crates. Client-facing root modules rema
29
29
  Model data is re-exported from `llm-api`; there is one model-message representation. User-facing
30
30
  messages intentionally use separate content types and never contain private model continuation.
31
31
  Runtime state machines, checkpoint formats, prompts and recovery policy remain in Agent Runtime.
32
+
33
+ ## Cloud admission model snapshot
34
+
35
+ Every cloud `LlmRoute` carries a required `model_snapshot` containing confirmed capabilities
36
+ and catalog `generation_support` (the camelCase `metadata.generationSupport` shape). Lion
37
+ persists it with desired parameters at request admission. Deployments adapt preferences against
38
+ these immutable facts; tool rounds and approval resumption never rediscover current metadata.
39
+ The portable `CompletionRequest` and its caller-owned constraints are unchanged. An old plan
40
+ without the snapshot fails decoding instead of silently changing behavior. This development
41
+ contract change must be published and adopted by Lion and Cloud together before deployment.
@@ -75,7 +75,25 @@
75
75
  "max_output_tokens": 8192,
76
76
  "context_window_tokens": 128000,
77
77
  "cache_control": true,
78
- "reasoning_effort": null
78
+ "reasoning_effort": null,
79
+ "model_snapshot": {
80
+ "capabilities": {
81
+ "vision": true,
82
+ "tool_calling": true,
83
+ "structured_output": true
84
+ },
85
+ "generation_support": {
86
+ "temperature": true,
87
+ "maxTokens": true,
88
+ "reasoningEfforts": [
89
+ "none",
90
+ "high"
91
+ ],
92
+ "temperatureWithReasoning": true,
93
+ "temperatureMax": null,
94
+ "maxOutputTokens": null
95
+ }
96
+ }
79
97
  }
80
98
  },
81
99
  {
@@ -93,7 +111,25 @@
93
111
  "max_output_tokens": 8192,
94
112
  "context_window_tokens": 128000,
95
113
  "cache_control": true,
96
- "reasoning_effort": null
114
+ "reasoning_effort": null,
115
+ "model_snapshot": {
116
+ "capabilities": {
117
+ "vision": true,
118
+ "tool_calling": true,
119
+ "structured_output": true
120
+ },
121
+ "generation_support": {
122
+ "temperature": true,
123
+ "maxTokens": true,
124
+ "reasoningEfforts": [
125
+ "none",
126
+ "high"
127
+ ],
128
+ "temperatureWithReasoning": true,
129
+ "temperatureMax": null,
130
+ "maxOutputTokens": null
131
+ }
132
+ }
97
133
  }
98
134
  },
99
135
  {
@@ -111,7 +147,25 @@
111
147
  "max_output_tokens": 8192,
112
148
  "context_window_tokens": 128000,
113
149
  "cache_control": true,
114
- "reasoning_effort": null
150
+ "reasoning_effort": null,
151
+ "model_snapshot": {
152
+ "capabilities": {
153
+ "vision": true,
154
+ "tool_calling": true,
155
+ "structured_output": true
156
+ },
157
+ "generation_support": {
158
+ "temperature": true,
159
+ "maxTokens": true,
160
+ "reasoningEfforts": [
161
+ "none",
162
+ "high"
163
+ ],
164
+ "temperatureWithReasoning": true,
165
+ "temperatureMax": null,
166
+ "maxOutputTokens": null
167
+ }
168
+ }
115
169
  }
116
170
  },
117
171
  {
@@ -129,7 +183,25 @@
129
183
  "max_output_tokens": 8192,
130
184
  "context_window_tokens": 128000,
131
185
  "cache_control": true,
132
- "reasoning_effort": null
186
+ "reasoning_effort": null,
187
+ "model_snapshot": {
188
+ "capabilities": {
189
+ "vision": true,
190
+ "tool_calling": true,
191
+ "structured_output": true
192
+ },
193
+ "generation_support": {
194
+ "temperature": true,
195
+ "maxTokens": true,
196
+ "reasoningEfforts": [
197
+ "none",
198
+ "high"
199
+ ],
200
+ "temperatureWithReasoning": true,
201
+ "temperatureMax": null,
202
+ "maxOutputTokens": null
203
+ }
204
+ }
133
205
  }
134
206
  },
135
207
  {
@@ -147,7 +219,25 @@
147
219
  "max_output_tokens": 8192,
148
220
  "context_window_tokens": 128000,
149
221
  "cache_control": true,
150
- "reasoning_effort": null
222
+ "reasoning_effort": null,
223
+ "model_snapshot": {
224
+ "capabilities": {
225
+ "vision": true,
226
+ "tool_calling": true,
227
+ "structured_output": true
228
+ },
229
+ "generation_support": {
230
+ "temperature": true,
231
+ "maxTokens": true,
232
+ "reasoningEfforts": [
233
+ "none",
234
+ "high"
235
+ ],
236
+ "temperatureWithReasoning": true,
237
+ "temperatureMax": null,
238
+ "maxOutputTokens": null
239
+ }
240
+ }
151
241
  }
152
242
  },
153
243
  {
@@ -165,7 +255,25 @@
165
255
  "max_output_tokens": 8192,
166
256
  "context_window_tokens": 128000,
167
257
  "cache_control": true,
168
- "reasoning_effort": null
258
+ "reasoning_effort": null,
259
+ "model_snapshot": {
260
+ "capabilities": {
261
+ "vision": true,
262
+ "tool_calling": true,
263
+ "structured_output": true
264
+ },
265
+ "generation_support": {
266
+ "temperature": true,
267
+ "maxTokens": true,
268
+ "reasoningEfforts": [
269
+ "none",
270
+ "high"
271
+ ],
272
+ "temperatureWithReasoning": true,
273
+ "temperatureMax": null,
274
+ "maxOutputTokens": null
275
+ }
276
+ }
169
277
  }
170
278
  },
171
279
  {
@@ -183,7 +291,25 @@
183
291
  "max_output_tokens": 8192,
184
292
  "context_window_tokens": 128000,
185
293
  "cache_control": true,
186
- "reasoning_effort": null
294
+ "reasoning_effort": null,
295
+ "model_snapshot": {
296
+ "capabilities": {
297
+ "vision": true,
298
+ "tool_calling": true,
299
+ "structured_output": true
300
+ },
301
+ "generation_support": {
302
+ "temperature": true,
303
+ "maxTokens": true,
304
+ "reasoningEfforts": [
305
+ "none",
306
+ "high"
307
+ ],
308
+ "temperatureWithReasoning": true,
309
+ "temperatureMax": null,
310
+ "maxOutputTokens": null
311
+ }
312
+ }
187
313
  }
188
314
  },
189
315
  {
@@ -201,7 +327,25 @@
201
327
  "max_output_tokens": 8192,
202
328
  "context_window_tokens": 128000,
203
329
  "cache_control": true,
204
- "reasoning_effort": null
330
+ "reasoning_effort": null,
331
+ "model_snapshot": {
332
+ "capabilities": {
333
+ "vision": true,
334
+ "tool_calling": true,
335
+ "structured_output": true
336
+ },
337
+ "generation_support": {
338
+ "temperature": true,
339
+ "maxTokens": true,
340
+ "reasoningEfforts": [
341
+ "none",
342
+ "high"
343
+ ],
344
+ "temperatureWithReasoning": true,
345
+ "temperatureMax": null,
346
+ "maxOutputTokens": null
347
+ }
348
+ }
205
349
  }
206
350
  }
207
351
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.conversation.targets.v1",
3
- "contractVersion": "2.0.0",
3
+ "contractVersion": "2.0.1",
4
4
  "requestTargets": [
5
5
  "/chat/thread/list",
6
6
  "/chat/thread/create",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mhome/conversation-protocol",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "Build-time protocol artifacts for mhome.conversation",
5
5
  "license": "MIT",
6
6
  "repository": {
package/protocol.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "protocol": "mhome.conversation",
3
- "contractVersion": "2.0.0",
3
+ "contractVersion": "2.0.1",
4
4
  "manifest": "manifest/targets.v1.json",
5
5
  "schemas": {
6
6
  "frame": "schema/conversation-frame.v2.schema.json",
@@ -537,7 +537,8 @@
537
537
  "max_output_tokens",
538
538
  "context_window_tokens",
539
539
  "cache_control",
540
- "reasoning_effort"
540
+ "reasoning_effort",
541
+ "model_snapshot"
541
542
  ],
542
543
  "properties": {
543
544
  "backend": {
@@ -600,6 +601,9 @@
600
601
  "type": "null"
601
602
  }
602
603
  ]
604
+ },
605
+ "model_snapshot": {
606
+ "$ref": "#/$defs/llm_model_snapshot"
603
607
  }
604
608
  }
605
609
  },
@@ -1841,6 +1845,95 @@
1841
1845
  "type": "integer"
1842
1846
  }
1843
1847
  }
1848
+ },
1849
+ "llm_generation_support": {
1850
+ "type": "object",
1851
+ "additionalProperties": false,
1852
+ "properties": {
1853
+ "temperature": {
1854
+ "type": [
1855
+ "boolean",
1856
+ "null"
1857
+ ]
1858
+ },
1859
+ "maxTokens": {
1860
+ "type": [
1861
+ "boolean",
1862
+ "null"
1863
+ ]
1864
+ },
1865
+ "temperatureWithReasoning": {
1866
+ "type": [
1867
+ "boolean",
1868
+ "null"
1869
+ ]
1870
+ },
1871
+ "reasoningEfforts": {
1872
+ "type": [
1873
+ "array",
1874
+ "null"
1875
+ ],
1876
+ "items": {
1877
+ "enum": [
1878
+ "none",
1879
+ "minimal",
1880
+ "low",
1881
+ "medium",
1882
+ "high",
1883
+ "xhigh",
1884
+ "max",
1885
+ "ultra"
1886
+ ]
1887
+ }
1888
+ },
1889
+ "temperatureMax": {
1890
+ "type": [
1891
+ "number",
1892
+ "null"
1893
+ ],
1894
+ "minimum": 0
1895
+ },
1896
+ "maxOutputTokens": {
1897
+ "type": [
1898
+ "integer",
1899
+ "null"
1900
+ ],
1901
+ "minimum": 1
1902
+ }
1903
+ }
1904
+ },
1905
+ "llm_model_snapshot": {
1906
+ "type": "object",
1907
+ "additionalProperties": false,
1908
+ "required": [
1909
+ "capabilities",
1910
+ "generation_support"
1911
+ ],
1912
+ "properties": {
1913
+ "capabilities": {
1914
+ "type": "object",
1915
+ "additionalProperties": false,
1916
+ "required": [
1917
+ "vision",
1918
+ "tool_calling",
1919
+ "structured_output"
1920
+ ],
1921
+ "properties": {
1922
+ "vision": {
1923
+ "type": "boolean"
1924
+ },
1925
+ "tool_calling": {
1926
+ "type": "boolean"
1927
+ },
1928
+ "structured_output": {
1929
+ "type": "boolean"
1930
+ }
1931
+ }
1932
+ },
1933
+ "generation_support": {
1934
+ "$ref": "#/$defs/llm_generation_support"
1935
+ }
1936
+ }
1844
1937
  }
1845
1938
  }
1846
1939
  }