@mhome/conversation-protocol 2.0.1 → 3.0.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
@@ -36,6 +36,8 @@ Every cloud `LlmRoute` carries a required `model_snapshot` containing confirmed
36
36
  and catalog `generation_support` (the camelCase `metadata.generationSupport` shape). Lion
37
37
  persists it with desired parameters at request admission. Deployments adapt preferences against
38
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.
39
+ The portable `CompletionRequest` and its caller-owned constraints remain separate from this
40
+ snapshot. Version 3 stores `capabilities.input` as `image|video|audio|file` instead of
41
+ `vision: bool`. An old plan without the snapshot, or with `vision`, fails decoding instead
42
+ of silently changing behavior. This development contract change must be published and
43
+ adopted by Lion and Cloud together before deployment.
@@ -72,21 +72,20 @@
72
72
  "OpenAI"
73
73
  ],
74
74
  "temperature": 0.5,
75
- "max_output_tokens": 8192,
76
75
  "context_window_tokens": 128000,
77
76
  "cache_control": true,
78
77
  "reasoning_effort": null,
79
78
  "model_snapshot": {
80
79
  "capabilities": {
81
- "vision": true,
80
+ "input": ["image"],
82
81
  "tool_calling": true,
83
82
  "structured_output": true
84
83
  },
85
84
  "generation_support": {
86
85
  "temperature": true,
87
86
  "maxTokens": true,
87
+ "thinking": true,
88
88
  "reasoningEfforts": [
89
- "none",
90
89
  "high"
91
90
  ],
92
91
  "temperatureWithReasoning": true,
@@ -108,21 +107,20 @@
108
107
  "OpenAI"
109
108
  ],
110
109
  "temperature": 0.5,
111
- "max_output_tokens": 8192,
112
110
  "context_window_tokens": 128000,
113
111
  "cache_control": true,
114
112
  "reasoning_effort": null,
115
113
  "model_snapshot": {
116
114
  "capabilities": {
117
- "vision": true,
115
+ "input": ["image"],
118
116
  "tool_calling": true,
119
117
  "structured_output": true
120
118
  },
121
119
  "generation_support": {
122
120
  "temperature": true,
123
121
  "maxTokens": true,
122
+ "thinking": true,
124
123
  "reasoningEfforts": [
125
- "none",
126
124
  "high"
127
125
  ],
128
126
  "temperatureWithReasoning": true,
@@ -144,21 +142,20 @@
144
142
  "OpenAI"
145
143
  ],
146
144
  "temperature": 0.5,
147
- "max_output_tokens": 8192,
148
145
  "context_window_tokens": 128000,
149
146
  "cache_control": true,
150
147
  "reasoning_effort": null,
151
148
  "model_snapshot": {
152
149
  "capabilities": {
153
- "vision": true,
150
+ "input": ["image"],
154
151
  "tool_calling": true,
155
152
  "structured_output": true
156
153
  },
157
154
  "generation_support": {
158
155
  "temperature": true,
159
156
  "maxTokens": true,
157
+ "thinking": true,
160
158
  "reasoningEfforts": [
161
- "none",
162
159
  "high"
163
160
  ],
164
161
  "temperatureWithReasoning": true,
@@ -180,21 +177,20 @@
180
177
  "OpenAI"
181
178
  ],
182
179
  "temperature": 0.5,
183
- "max_output_tokens": 8192,
184
180
  "context_window_tokens": 128000,
185
181
  "cache_control": true,
186
182
  "reasoning_effort": null,
187
183
  "model_snapshot": {
188
184
  "capabilities": {
189
- "vision": true,
185
+ "input": ["image"],
190
186
  "tool_calling": true,
191
187
  "structured_output": true
192
188
  },
193
189
  "generation_support": {
194
190
  "temperature": true,
195
191
  "maxTokens": true,
192
+ "thinking": true,
196
193
  "reasoningEfforts": [
197
- "none",
198
194
  "high"
199
195
  ],
200
196
  "temperatureWithReasoning": true,
@@ -216,21 +212,20 @@
216
212
  "OpenAI"
217
213
  ],
218
214
  "temperature": 0.5,
219
- "max_output_tokens": 8192,
220
215
  "context_window_tokens": 128000,
221
216
  "cache_control": true,
222
217
  "reasoning_effort": null,
223
218
  "model_snapshot": {
224
219
  "capabilities": {
225
- "vision": true,
220
+ "input": ["image"],
226
221
  "tool_calling": true,
227
222
  "structured_output": true
228
223
  },
229
224
  "generation_support": {
230
225
  "temperature": true,
231
226
  "maxTokens": true,
227
+ "thinking": true,
232
228
  "reasoningEfforts": [
233
- "none",
234
229
  "high"
235
230
  ],
236
231
  "temperatureWithReasoning": true,
@@ -252,21 +247,20 @@
252
247
  "OpenAI"
253
248
  ],
254
249
  "temperature": 0.5,
255
- "max_output_tokens": 8192,
256
250
  "context_window_tokens": 128000,
257
251
  "cache_control": true,
258
252
  "reasoning_effort": null,
259
253
  "model_snapshot": {
260
254
  "capabilities": {
261
- "vision": true,
255
+ "input": ["image"],
262
256
  "tool_calling": true,
263
257
  "structured_output": true
264
258
  },
265
259
  "generation_support": {
266
260
  "temperature": true,
267
261
  "maxTokens": true,
262
+ "thinking": true,
268
263
  "reasoningEfforts": [
269
- "none",
270
264
  "high"
271
265
  ],
272
266
  "temperatureWithReasoning": true,
@@ -288,21 +282,20 @@
288
282
  "OpenAI"
289
283
  ],
290
284
  "temperature": 0.5,
291
- "max_output_tokens": 8192,
292
285
  "context_window_tokens": 128000,
293
286
  "cache_control": true,
294
287
  "reasoning_effort": null,
295
288
  "model_snapshot": {
296
289
  "capabilities": {
297
- "vision": true,
290
+ "input": ["image"],
298
291
  "tool_calling": true,
299
292
  "structured_output": true
300
293
  },
301
294
  "generation_support": {
302
295
  "temperature": true,
303
296
  "maxTokens": true,
297
+ "thinking": true,
304
298
  "reasoningEfforts": [
305
- "none",
306
299
  "high"
307
300
  ],
308
301
  "temperatureWithReasoning": true,
@@ -324,21 +317,20 @@
324
317
  "OpenAI"
325
318
  ],
326
319
  "temperature": 0.5,
327
- "max_output_tokens": 8192,
328
320
  "context_window_tokens": 128000,
329
321
  "cache_control": true,
330
322
  "reasoning_effort": null,
331
323
  "model_snapshot": {
332
324
  "capabilities": {
333
- "vision": true,
325
+ "input": ["image"],
334
326
  "tool_calling": true,
335
327
  "structured_output": true
336
328
  },
337
329
  "generation_support": {
338
330
  "temperature": true,
339
331
  "maxTokens": true,
332
+ "thinking": true,
340
333
  "reasoningEfforts": [
341
- "none",
342
334
  "high"
343
335
  ],
344
336
  "temperatureWithReasoning": true,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "manifest": "mhome.conversation.targets.v1",
3
- "contractVersion": "2.0.1",
3
+ "contractVersion": "3.0.0",
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.1",
3
+ "version": "3.0.0",
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.1",
3
+ "contractVersion": "3.0.0",
4
4
  "manifest": "manifest/targets.v1.json",
5
5
  "schemas": {
6
6
  "frame": "schema/conversation-frame.v2.schema.json",
@@ -534,7 +534,6 @@
534
534
  "model",
535
535
  "provider_preferences",
536
536
  "temperature",
537
- "max_output_tokens",
538
537
  "context_window_tokens",
539
538
  "cache_control",
540
539
  "reasoning_effort",
@@ -566,22 +565,32 @@
566
565
  }
567
566
  ]
568
567
  },
569
- "max_output_tokens": {
568
+ "context_window_tokens": {
569
+ "type": "integer",
570
+ "exclusiveMinimum": 20000
571
+ },
572
+ "cache_control": {
570
573
  "oneOf": [
571
574
  {
572
- "type": "integer",
573
- "minimum": 1
575
+ "type": "boolean"
574
576
  },
575
577
  {
576
578
  "type": "null"
577
579
  }
578
580
  ]
579
581
  },
580
- "context_window_tokens": {
581
- "type": "integer",
582
- "exclusiveMinimum": 20000
582
+ "reasoning_effort": {
583
+ "oneOf": [
584
+ {
585
+ "type": "string",
586
+ "minLength": 1
587
+ },
588
+ {
589
+ "type": "null"
590
+ }
591
+ ]
583
592
  },
584
- "cache_control": {
593
+ "thinking": {
585
594
  "oneOf": [
586
595
  {
587
596
  "type": "boolean"
@@ -591,11 +600,10 @@
591
600
  }
592
601
  ]
593
602
  },
594
- "reasoning_effort": {
603
+ "fast_mode": {
595
604
  "oneOf": [
596
605
  {
597
- "type": "string",
598
- "minLength": 1
606
+ "type": "boolean"
599
607
  },
600
608
  {
601
609
  "type": "null"
@@ -1862,6 +1870,18 @@
1862
1870
  "null"
1863
1871
  ]
1864
1872
  },
1873
+ "thinking": {
1874
+ "type": [
1875
+ "boolean",
1876
+ "null"
1877
+ ]
1878
+ },
1879
+ "reasoningEffortDefault": {
1880
+ "type": [
1881
+ "string",
1882
+ "null"
1883
+ ]
1884
+ },
1865
1885
  "temperatureWithReasoning": {
1866
1886
  "type": [
1867
1887
  "boolean",
@@ -1875,7 +1895,6 @@
1875
1895
  ],
1876
1896
  "items": {
1877
1897
  "enum": [
1878
- "none",
1879
1898
  "minimal",
1880
1899
  "low",
1881
1900
  "medium",
@@ -1899,6 +1918,12 @@
1899
1918
  "null"
1900
1919
  ],
1901
1920
  "minimum": 1
1921
+ },
1922
+ "fastMode": {
1923
+ "type": [
1924
+ "boolean",
1925
+ "null"
1926
+ ]
1902
1927
  }
1903
1928
  }
1904
1929
  },
@@ -1914,13 +1939,18 @@
1914
1939
  "type": "object",
1915
1940
  "additionalProperties": false,
1916
1941
  "required": [
1917
- "vision",
1942
+ "input",
1918
1943
  "tool_calling",
1919
1944
  "structured_output"
1920
1945
  ],
1921
1946
  "properties": {
1922
- "vision": {
1923
- "type": "boolean"
1947
+ "input": {
1948
+ "type": "array",
1949
+ "uniqueItems": true,
1950
+ "items": {
1951
+ "type": "string",
1952
+ "enum": ["image", "video", "audio", "file"]
1953
+ }
1924
1954
  },
1925
1955
  "tool_calling": {
1926
1956
  "type": "boolean"