@deepseek-ai/dsh-experimental-api-speech-to-text 0.2.1-alpha.2 → 0.2.1-alpha.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.
@@ -1,8 +1,10 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
+ import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
5
+
4
6
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema$value
5
- const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
7
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema$value ??= z.string())
6
8
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema$value
7
9
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema$value ??= z.void())
8
10
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$schema$value
@@ -10,38 +12,35 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$sch
10
12
  'maxAudioBytes': z.number().readonly(),
11
13
  'maxDurationSeconds': z.number().readonly(),
12
14
  'providers': z.array(z.object({
13
- 'preparation': z.union([z.intersection(z.object({
15
+ 'preparation': z.union([z.object({
14
16
  'phase': z.union([z.literal("cancelled"), z.literal("ready"), z.literal("unprepared"), z.literal("standby")]).readonly(),
15
- }), z.object({
16
17
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
17
18
  'steps': z.array(z.object({
18
19
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
19
20
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
20
21
  'startedAt': z.number().readonly().optional(),
21
22
  })).readonly().optional(),
22
- })), z.intersection(z.object({
23
+ }), z.object({
23
24
  'phase': z.literal("downloading").readonly(),
24
25
  'resource': z.string().readonly(),
25
26
  'completedBytes': z.number().readonly(),
26
27
  'totalBytes': z.number().readonly().optional(),
27
- }), z.object({
28
28
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
29
29
  'steps': z.array(z.object({
30
30
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
31
31
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
32
32
  'startedAt': z.number().readonly().optional(),
33
33
  })).readonly().optional(),
34
- })), z.intersection(z.object({
34
+ }), z.object({
35
35
  'phase': z.union([z.literal("checking"), z.literal("loading"), z.literal("waking"), z.literal("cancelling")]).readonly(),
36
36
  'startedAt': z.number().readonly(),
37
- }), z.object({
38
37
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
39
38
  'steps': z.array(z.object({
40
39
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
41
40
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
42
41
  'startedAt': z.number().readonly().optional(),
43
42
  })).readonly().optional(),
44
- })), z.intersection(z.object({
43
+ }), z.object({
45
44
  'phase': z.literal("failed").readonly(),
46
45
  'message': z.string().readonly(),
47
46
  'download': z.object({
@@ -51,34 +50,33 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$sch
51
50
  'code': z.string().readonly().optional(),
52
51
  'status': z.number().readonly().optional(),
53
52
  }).readonly().optional(),
54
- }), z.object({
55
53
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
56
54
  'steps': z.array(z.object({
57
55
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
58
56
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
59
57
  'startedAt': z.number().readonly().optional(),
60
58
  })).readonly().optional(),
61
- }))]).readonly(),
62
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
59
+ })]).readonly(),
60
+ 'id': z.string().readonly(),
63
61
  'name': z.string().readonly(),
64
62
  'location': z.union([z.literal("host-local"), z.literal("cloud")]).readonly(),
65
- 'languages': z.array(z.string()).readonly(),
63
+ 'languages': z.array(z.string()).readonly().describe('Accepted language hints, including automatic detection when supported.'),
66
64
  'setupEstimate': z.object({
67
65
  'recommendedDiskBytes': z.number().readonly(),
68
66
  'expectedMemoryBytes': z.number().readonly(),
69
67
  'minimumMinutes': z.number().readonly(),
70
68
  'maximumMinutes': z.number().readonly(),
71
69
  }).readonly().optional(),
72
- 'downloadSources': z.array(z.string()).readonly().optional(),
70
+ 'downloadSources': z.array(z.string()).readonly().optional().describe('Origins offered for an explicit preparation download; omitted or empty when no choice applies.'),
73
71
  })).readonly(),
74
72
  'selection': z.object({
75
- 'providerId': z.intersection(z.string(), z.unknown()).readonly(),
73
+ 'providerId': z.string().readonly(),
76
74
  'language': z.string().readonly(),
77
75
  }).readonly(),
78
76
  }))
79
77
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema$value
80
78
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema$value ??= z.object({
81
- 'providerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
79
+ 'providerId': z.string().readonly().optional(),
82
80
  'language': z.string().readonly().optional(),
83
81
  }))
84
82
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_result$schema$value
@@ -88,38 +86,35 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_follow_result$sche
88
86
  'maxAudioBytes': z.number().readonly(),
89
87
  'maxDurationSeconds': z.number().readonly(),
90
88
  'providers': z.array(z.object({
91
- 'preparation': z.union([z.intersection(z.object({
89
+ 'preparation': z.union([z.object({
92
90
  'phase': z.union([z.literal("cancelled"), z.literal("ready"), z.literal("unprepared"), z.literal("standby")]).readonly(),
93
- }), z.object({
94
91
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
95
92
  'steps': z.array(z.object({
96
93
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
97
94
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
98
95
  'startedAt': z.number().readonly().optional(),
99
96
  })).readonly().optional(),
100
- })), z.intersection(z.object({
97
+ }), z.object({
101
98
  'phase': z.literal("downloading").readonly(),
102
99
  'resource': z.string().readonly(),
103
100
  'completedBytes': z.number().readonly(),
104
101
  'totalBytes': z.number().readonly().optional(),
105
- }), z.object({
106
102
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
107
103
  'steps': z.array(z.object({
108
104
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
109
105
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
110
106
  'startedAt': z.number().readonly().optional(),
111
107
  })).readonly().optional(),
112
- })), z.intersection(z.object({
108
+ }), z.object({
113
109
  'phase': z.union([z.literal("checking"), z.literal("loading"), z.literal("waking"), z.literal("cancelling")]).readonly(),
114
110
  'startedAt': z.number().readonly(),
115
- }), z.object({
116
111
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
117
112
  'steps': z.array(z.object({
118
113
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
119
114
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
120
115
  'startedAt': z.number().readonly().optional(),
121
116
  })).readonly().optional(),
122
- })), z.intersection(z.object({
117
+ }), z.object({
123
118
  'phase': z.literal("failed").readonly(),
124
119
  'message': z.string().readonly(),
125
120
  'download': z.object({
@@ -129,43 +124,42 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_follow_result$sche
129
124
  'code': z.string().readonly().optional(),
130
125
  'status': z.number().readonly().optional(),
131
126
  }).readonly().optional(),
132
- }), z.object({
133
127
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
134
128
  'steps': z.array(z.object({
135
129
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
136
130
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
137
131
  'startedAt': z.number().readonly().optional(),
138
132
  })).readonly().optional(),
139
- }))]).readonly(),
140
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
133
+ })]).readonly(),
134
+ 'id': z.string().readonly(),
141
135
  'name': z.string().readonly(),
142
136
  'location': z.union([z.literal("host-local"), z.literal("cloud")]).readonly(),
143
- 'languages': z.array(z.string()).readonly(),
137
+ 'languages': z.array(z.string()).readonly().describe('Accepted language hints, including automatic detection when supported.'),
144
138
  'setupEstimate': z.object({
145
139
  'recommendedDiskBytes': z.number().readonly(),
146
140
  'expectedMemoryBytes': z.number().readonly(),
147
141
  'minimumMinutes': z.number().readonly(),
148
142
  'maximumMinutes': z.number().readonly(),
149
143
  }).readonly().optional(),
150
- 'downloadSources': z.array(z.string()).readonly().optional(),
144
+ 'downloadSources': z.array(z.string()).readonly().optional().describe('Origins offered for an explicit preparation download; omitted or empty when no choice applies.'),
151
145
  })).readonly(),
152
146
  'selection': z.object({
153
- 'providerId': z.intersection(z.string(), z.unknown()).readonly(),
147
+ 'providerId': z.string().readonly(),
154
148
  'language': z.string().readonly(),
155
149
  }).readonly(),
156
150
  }))
157
151
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema$value
158
- const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
152
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema$value ??= z.string())
159
153
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema$value
160
154
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema$value ??= z.union([z.undefined(), z.object({
161
- 'downloadSource': z.string().readonly().optional(),
155
+ 'downloadSource': z.string().readonly().optional().describe('One advertised origin; providers reject unavailable sources and use a manual choice without fallback.'),
162
156
  })]))
163
157
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema$value
164
158
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema$value ??= z.void())
165
159
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema$value
166
160
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema$value ??= z.object({
167
161
  'audioBase64': z.string().readonly(),
168
- 'providerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
162
+ 'providerId': z.string().readonly().optional(),
169
163
  'language': z.string().readonly().optional(),
170
164
  }))
171
165
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_result$schema$value
@@ -174,28 +168,49 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_result$
174
168
  'audioSeconds': z.number().readonly(),
175
169
  'inferenceSeconds': z.number().readonly(),
176
170
  }))
171
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema$value
172
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema$value ??= z.string())
173
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema$value
174
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema$value ??= z.strictObject({
175
+ 'providerId': z.string().readonly().optional(),
176
+ 'language': z.string().readonly().optional(),
177
+ }))
178
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema$value
179
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema$value ??= z.string())
180
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema$value
181
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema$value ??= z.union([z.undefined(), z.strictObject({
182
+ 'downloadSource': z.string().readonly().optional().describe('One advertised origin; providers reject unavailable sources and use a manual choice without fallback.'),
183
+ })]))
184
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema$value
185
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema$value ??= z.strictObject({
186
+ 'audioBase64': z.string().readonly(),
187
+ 'providerId': z.string().readonly().optional(),
188
+ 'language': z.string().readonly().optional(),
189
+ }))
177
190
 
178
- export const TYPERT = {
191
+ const $remote = createTypertRemoteInfo({
179
192
  package: '@deepseek-ai/dsh-experimental-api-speech-to-text',
180
- face: 'host',
181
- schemas: [
182
- ],
183
- invocations: [
184
- {
185
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/cancelPreparation',
193
+ methods: {
194
+ 'speech/cancelPreparation': {
186
195
  service: 'speechController',
187
- namespace: 'speech',
188
- method: 'cancelPreparation',
196
+ description: 'Explicitly cancel resource preparation.',
189
197
  invocation: { kind: 'direct' },
190
198
  parameters: [
191
199
  {
192
200
  name: 'providerId',
193
- wire: 'providerId',
201
+ description: 'selected recognizer.',
194
202
  source: 'json',
195
203
  codec: {
196
204
  mode: 'strict',
197
205
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
198
206
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema,
207
+ jsonSchema: {"type":"string"},
208
+ },
209
+ strictCodec: {
210
+ mode: 'strict',
211
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
212
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema,
213
+ jsonSchema: {"type":"string"},
199
214
  },
200
215
  },
201
216
  ],
@@ -203,14 +218,14 @@ export const TYPERT = {
203
218
  mode: 'strict',
204
219
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/cancelPreparation:result',
205
220
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema,
221
+ description: 'after the preparation task settles.',
222
+ jsonSchemaError: 'typert tool schema: unsupported void value',
206
223
  },
207
224
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":80,"column":3},
208
225
  },
209
- {
210
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/catalog',
226
+ 'speech/catalog': {
211
227
  service: 'speechController',
212
- namespace: 'speech',
213
- method: 'catalog',
228
+ description: 'Read provider choices without preparing a recognizer.',
214
229
  invocation: { kind: 'direct' },
215
230
  parameters: [
216
231
  ],
@@ -218,24 +233,31 @@ export const TYPERT = {
218
233
  mode: 'strict',
219
234
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#SpeechCatalog',
220
235
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$schema,
236
+ description: 'available providers, resolved default, and recording limits.',
237
+ jsonSchema: {"type":"object","properties":{"maxAudioBytes":{"type":"number"},"maxDurationSeconds":{"type":"number"},"providers":{"type":"array","items":{"type":"object","properties":{"preparation":{"oneOf":[{"type":"object","properties":{"phase":{"type":"string","enum":["cancelled","ready","unprepared","standby"]},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"downloading"},"resource":{"type":"string"},"completedBytes":{"type":"number"},"totalBytes":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","resource","completedBytes"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","enum":["checking","loading","waking","cancelling"]},"startedAt":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","startedAt"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"failed"},"message":{"type":"string"},"download":{"type":"object","properties":{"resource":{"type":"string"},"source":{"type":"string"},"reason":{"type":"string","enum":["network","storage","unknown","dns","timeout","certificate","http","integrity"]},"code":{"type":"string"},"status":{"type":"number"}},"required":["resource","source","reason"],"additionalProperties":true},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","message"],"additionalProperties":true}]},"id":{"type":"string"},"name":{"type":"string"},"location":{"type":"string","enum":["host-local","cloud"]},"languages":{"type":"array","items":{"type":"string"},"description":"Accepted language hints, including automatic detection when supported."},"setupEstimate":{"type":"object","properties":{"recommendedDiskBytes":{"type":"number"},"expectedMemoryBytes":{"type":"number"},"minimumMinutes":{"type":"number"},"maximumMinutes":{"type":"number"}},"required":["recommendedDiskBytes","expectedMemoryBytes","minimumMinutes","maximumMinutes"],"additionalProperties":true},"downloadSources":{"type":"array","items":{"type":"string"},"description":"Origins offered for an explicit preparation download; omitted or empty when no choice applies."}},"required":["preparation","id","name","location","languages"],"additionalProperties":true}},"selection":{"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":["providerId","language"],"additionalProperties":true}},"required":["maxAudioBytes","maxDurationSeconds","providers","selection"],"additionalProperties":true},
221
238
  },
222
239
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":44,"column":3},
223
240
  },
224
- {
225
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/configure',
241
+ 'speech/configure': {
226
242
  service: 'speechController',
227
- namespace: 'speech',
228
- method: 'configure',
243
+ description: 'Persist the user\'s recognition preferences.',
229
244
  invocation: { kind: 'direct' },
230
245
  parameters: [
231
246
  {
232
247
  name: 'patch',
233
- wire: 'patch',
248
+ description: 'changed preference fields.',
234
249
  source: 'json',
235
250
  codec: {
236
251
  mode: 'strict',
237
252
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechSelectionPatch',
238
253
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema,
254
+ jsonSchema: {"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":[],"additionalProperties":true},
255
+ },
256
+ strictCodec: {
257
+ mode: 'strict',
258
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechSelectionPatch',
259
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema,
260
+ jsonSchema: {"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":[],"additionalProperties":false},
239
261
  },
240
262
  },
241
263
  ],
@@ -243,14 +265,14 @@ export const TYPERT = {
243
265
  mode: 'strict',
244
266
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/configure:result',
245
267
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_result$schema,
268
+ description: 'after preferences are saved.',
269
+ jsonSchemaError: 'typert tool schema: unsupported void value',
246
270
  },
247
271
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":64,"column":3},
248
272
  },
249
- {
250
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/follow',
273
+ 'speech/follow': {
251
274
  service: 'speechController',
252
- namespace: 'speech',
253
- method: 'follow',
275
+ description: 'Follow provider readiness independently of Session and preparation lifetimes.',
254
276
  mode: 'stream',
255
277
  invocation: { kind: 'direct' },
256
278
  parameters: [
@@ -260,35 +282,49 @@ export const TYPERT = {
260
282
  mode: 'strict',
261
283
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#SpeechCatalog',
262
284
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_follow_result$schema,
285
+ description: 'initial and subsequent complete readiness snapshots.',
286
+ jsonSchema: {"type":"object","properties":{"maxAudioBytes":{"type":"number"},"maxDurationSeconds":{"type":"number"},"providers":{"type":"array","items":{"type":"object","properties":{"preparation":{"oneOf":[{"type":"object","properties":{"phase":{"type":"string","enum":["cancelled","ready","unprepared","standby"]},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"downloading"},"resource":{"type":"string"},"completedBytes":{"type":"number"},"totalBytes":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","resource","completedBytes"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","enum":["checking","loading","waking","cancelling"]},"startedAt":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","startedAt"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"failed"},"message":{"type":"string"},"download":{"type":"object","properties":{"resource":{"type":"string"},"source":{"type":"string"},"reason":{"type":"string","enum":["network","storage","unknown","dns","timeout","certificate","http","integrity"]},"code":{"type":"string"},"status":{"type":"number"}},"required":["resource","source","reason"],"additionalProperties":true},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","message"],"additionalProperties":true}]},"id":{"type":"string"},"name":{"type":"string"},"location":{"type":"string","enum":["host-local","cloud"]},"languages":{"type":"array","items":{"type":"string"},"description":"Accepted language hints, including automatic detection when supported."},"setupEstimate":{"type":"object","properties":{"recommendedDiskBytes":{"type":"number"},"expectedMemoryBytes":{"type":"number"},"minimumMinutes":{"type":"number"},"maximumMinutes":{"type":"number"}},"required":["recommendedDiskBytes","expectedMemoryBytes","minimumMinutes","maximumMinutes"],"additionalProperties":true},"downloadSources":{"type":"array","items":{"type":"string"},"description":"Origins offered for an explicit preparation download; omitted or empty when no choice applies."}},"required":["preparation","id","name","location","languages"],"additionalProperties":true}},"selection":{"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":["providerId","language"],"additionalProperties":true}},"required":["maxAudioBytes","maxDurationSeconds","providers","selection"],"additionalProperties":true},
263
287
  },
264
288
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":54,"column":10},
265
289
  },
266
- {
267
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/prepare',
290
+ 'speech/prepare': {
268
291
  service: 'speechController',
269
- namespace: 'speech',
270
- method: 'prepare',
292
+ description: 'Start or join one Host-owned preparation task.',
271
293
  invocation: { kind: 'direct' },
272
294
  parameters: [
273
295
  {
274
296
  name: 'providerId',
275
- wire: 'providerId',
297
+ description: 'selected recognizer.',
276
298
  source: 'json',
277
299
  codec: {
278
300
  mode: 'strict',
279
301
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
280
302
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema,
303
+ jsonSchema: {"type":"string"},
304
+ },
305
+ strictCodec: {
306
+ mode: 'strict',
307
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
308
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema,
309
+ jsonSchema: {"type":"string"},
281
310
  },
282
311
  },
283
312
  {
284
313
  name: 'options',
285
- wire: 'options',
314
+ description: 'task-local source selection validated by the provider.',
286
315
  source: 'json',
287
316
  acceptsUndefined: true,
288
317
  codec: {
289
318
  mode: 'strict',
290
319
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechPreparationOptions',
291
320
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema,
321
+ jsonSchema: {"type":"object","properties":{"downloadSource":{"type":"string","description":"One advertised origin; providers reject unavailable sources and use a manual choice without fallback."}},"required":[],"additionalProperties":true},
322
+ },
323
+ strictCodec: {
324
+ mode: 'strict',
325
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechPreparationOptions',
326
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema,
327
+ jsonSchema: {"type":"object","properties":{"downloadSource":{"type":"string","description":"One advertised origin; providers reject unavailable sources and use a manual choice without fallback."}},"required":[],"additionalProperties":false},
292
328
  },
293
329
  },
294
330
  ],
@@ -296,24 +332,30 @@ export const TYPERT = {
296
332
  mode: 'strict',
297
333
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/prepare:result',
298
334
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema,
335
+ jsonSchemaError: 'typert tool schema: unsupported void value',
299
336
  },
300
337
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":72,"column":3},
301
338
  },
302
- {
303
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/transcribe',
339
+ 'speech/transcribe': {
304
340
  service: 'speechController',
305
- namespace: 'speech',
306
- method: 'transcribe',
341
+ description: 'Validate and transcribe one recording through the explicit provider selection.',
307
342
  invocation: { kind: 'direct' },
308
343
  parameters: [
309
344
  {
310
345
  name: 'request',
311
- wire: 'request',
346
+ description: 'canonical WAV encoded as base64, provider id and language hint.',
312
347
  source: 'json',
313
348
  codec: {
314
349
  mode: 'strict',
315
350
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#TranscriptionRequest',
316
351
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema,
352
+ jsonSchema: {"type":"object","properties":{"audioBase64":{"type":"string"},"providerId":{"type":"string"},"language":{"type":"string"}},"required":["audioBase64"],"additionalProperties":true},
353
+ },
354
+ strictCodec: {
355
+ mode: 'strict',
356
+ typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#TranscriptionRequest',
357
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema,
358
+ jsonSchema: {"type":"object","properties":{"audioBase64":{"type":"string"},"providerId":{"type":"string"},"language":{"type":"string"}},"required":["audioBase64"],"additionalProperties":false},
317
359
  },
318
360
  },
319
361
  ],
@@ -322,10 +364,20 @@ export const TYPERT = {
322
364
  mode: 'strict',
323
365
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#Transcript',
324
366
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_result$schema,
367
+ description: 'final transcript without adding a Session event.',
368
+ jsonSchema: {"type":"object","properties":{"text":{"type":"string"},"audioSeconds":{"type":"number"},"inferenceSeconds":{"type":"number"}},"required":["text","audioSeconds","inferenceSeconds"],"additionalProperties":true},
325
369
  },
326
370
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":89,"column":9},
327
371
  },
372
+ },
373
+ }, z)
374
+
375
+ export const TYPERT = {
376
+ package: '@deepseek-ai/dsh-experimental-api-speech-to-text',
377
+ face: 'host',
378
+ schemas: [
328
379
  ],
380
+ get invocations() { return $remote.descriptors },
329
381
  model: {
330
382
  "services": [
331
383
  {
@@ -2,7 +2,8 @@
2
2
  import type {
3
3
  RemoteResult,
4
4
  RemoteStreamHandle,
5
- TypertRemoteContribution,
5
+ TypertRemoteInfo,
6
+ TypertRemoteMethod,
6
7
  } from '@deepseek-ai/dsh-typert-protocol'
7
8
  import type { SpeechCatalog, TranscriptionRequest } from '@deepseek-ai/dsh-experimental-api-speech-to-text/types'
8
9
  import type { SpeechPreparationOptions, SpeechProviderId, SpeechSelectionPatch, Transcript } from '@deepseek-ai/dsh-experimental-speech-to-text/types'
@@ -29,6 +30,13 @@ declare module '@deepseek-ai/dsh-typert-protocol' {
29
30
  }
30
31
  }
31
32
 
32
- export declare const TYPERT_REMOTE: TypertRemoteContribution
33
+ export declare const TYPERT_REMOTE: TypertRemoteInfo<{
34
+ readonly 'speech/cancelPreparation': TypertRemoteMethod<{ readonly 'providerId': SpeechProviderId }, void>
35
+ readonly 'speech/catalog': TypertRemoteMethod<{ }, SpeechCatalog>
36
+ readonly 'speech/configure': TypertRemoteMethod<{ readonly 'patch': SpeechSelectionPatch }, void>
37
+ readonly 'speech/follow': TypertRemoteMethod<{ }, SpeechCatalog, 'stream'>
38
+ readonly 'speech/prepare': TypertRemoteMethod<{ readonly 'providerId': SpeechProviderId; readonly 'options'?: SpeechPreparationOptions }, void>
39
+ readonly 'speech/transcribe': TypertRemoteMethod<{ readonly 'request': TranscriptionRequest }, Transcript>
40
+ }>
33
41
  export default TYPERT_REMOTE
34
42
  //# sourceMappingURL=typert.remote-client.d.ts.map
@@ -1,8 +1,10 @@
1
1
  /* Generated by @deepseek-ai/dsh-typert-generator from the Host FaceModel — do not edit. */
2
2
  import { z } from 'zod'
3
3
 
4
+ import { createTypertRemoteInfo } from '@deepseek-ai/dsh-typert-protocol/remote-info'
5
+
4
6
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema$value
5
- const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
7
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema$value ??= z.string())
6
8
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema$value
7
9
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema$value ??= z.void())
8
10
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$schema$value
@@ -10,38 +12,35 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$sch
10
12
  'maxAudioBytes': z.number().readonly(),
11
13
  'maxDurationSeconds': z.number().readonly(),
12
14
  'providers': z.array(z.object({
13
- 'preparation': z.union([z.intersection(z.object({
15
+ 'preparation': z.union([z.object({
14
16
  'phase': z.union([z.literal("cancelled"), z.literal("ready"), z.literal("unprepared"), z.literal("standby")]).readonly(),
15
- }), z.object({
16
17
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
17
18
  'steps': z.array(z.object({
18
19
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
19
20
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
20
21
  'startedAt': z.number().readonly().optional(),
21
22
  })).readonly().optional(),
22
- })), z.intersection(z.object({
23
+ }), z.object({
23
24
  'phase': z.literal("downloading").readonly(),
24
25
  'resource': z.string().readonly(),
25
26
  'completedBytes': z.number().readonly(),
26
27
  'totalBytes': z.number().readonly().optional(),
27
- }), z.object({
28
28
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
29
29
  'steps': z.array(z.object({
30
30
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
31
31
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
32
32
  'startedAt': z.number().readonly().optional(),
33
33
  })).readonly().optional(),
34
- })), z.intersection(z.object({
34
+ }), z.object({
35
35
  'phase': z.union([z.literal("checking"), z.literal("loading"), z.literal("waking"), z.literal("cancelling")]).readonly(),
36
36
  'startedAt': z.number().readonly(),
37
- }), z.object({
38
37
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
39
38
  'steps': z.array(z.object({
40
39
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
41
40
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
42
41
  'startedAt': z.number().readonly().optional(),
43
42
  })).readonly().optional(),
44
- })), z.intersection(z.object({
43
+ }), z.object({
45
44
  'phase': z.literal("failed").readonly(),
46
45
  'message': z.string().readonly(),
47
46
  'download': z.object({
@@ -51,34 +50,33 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$sch
51
50
  'code': z.string().readonly().optional(),
52
51
  'status': z.number().readonly().optional(),
53
52
  }).readonly().optional(),
54
- }), z.object({
55
53
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
56
54
  'steps': z.array(z.object({
57
55
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
58
56
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
59
57
  'startedAt': z.number().readonly().optional(),
60
58
  })).readonly().optional(),
61
- }))]).readonly(),
62
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
59
+ })]).readonly(),
60
+ 'id': z.string().readonly(),
63
61
  'name': z.string().readonly(),
64
62
  'location': z.union([z.literal("host-local"), z.literal("cloud")]).readonly(),
65
- 'languages': z.array(z.string()).readonly(),
63
+ 'languages': z.array(z.string()).readonly().describe('Accepted language hints, including automatic detection when supported.'),
66
64
  'setupEstimate': z.object({
67
65
  'recommendedDiskBytes': z.number().readonly(),
68
66
  'expectedMemoryBytes': z.number().readonly(),
69
67
  'minimumMinutes': z.number().readonly(),
70
68
  'maximumMinutes': z.number().readonly(),
71
69
  }).readonly().optional(),
72
- 'downloadSources': z.array(z.string()).readonly().optional(),
70
+ 'downloadSources': z.array(z.string()).readonly().optional().describe('Origins offered for an explicit preparation download; omitted or empty when no choice applies.'),
73
71
  })).readonly(),
74
72
  'selection': z.object({
75
- 'providerId': z.intersection(z.string(), z.unknown()).readonly(),
73
+ 'providerId': z.string().readonly(),
76
74
  'language': z.string().readonly(),
77
75
  }).readonly(),
78
76
  }))
79
77
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema$value
80
78
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema$value ??= z.object({
81
- 'providerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
79
+ 'providerId': z.string().readonly().optional(),
82
80
  'language': z.string().readonly().optional(),
83
81
  }))
84
82
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_result$schema$value
@@ -88,38 +86,35 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_follow_result$sche
88
86
  'maxAudioBytes': z.number().readonly(),
89
87
  'maxDurationSeconds': z.number().readonly(),
90
88
  'providers': z.array(z.object({
91
- 'preparation': z.union([z.intersection(z.object({
89
+ 'preparation': z.union([z.object({
92
90
  'phase': z.union([z.literal("cancelled"), z.literal("ready"), z.literal("unprepared"), z.literal("standby")]).readonly(),
93
- }), z.object({
94
91
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
95
92
  'steps': z.array(z.object({
96
93
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
97
94
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
98
95
  'startedAt': z.number().readonly().optional(),
99
96
  })).readonly().optional(),
100
- })), z.intersection(z.object({
97
+ }), z.object({
101
98
  'phase': z.literal("downloading").readonly(),
102
99
  'resource': z.string().readonly(),
103
100
  'completedBytes': z.number().readonly(),
104
101
  'totalBytes': z.number().readonly().optional(),
105
- }), z.object({
106
102
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
107
103
  'steps': z.array(z.object({
108
104
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
109
105
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
110
106
  'startedAt': z.number().readonly().optional(),
111
107
  })).readonly().optional(),
112
- })), z.intersection(z.object({
108
+ }), z.object({
113
109
  'phase': z.union([z.literal("checking"), z.literal("loading"), z.literal("waking"), z.literal("cancelling")]).readonly(),
114
110
  'startedAt': z.number().readonly(),
115
- }), z.object({
116
111
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
117
112
  'steps': z.array(z.object({
118
113
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
119
114
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
120
115
  'startedAt': z.number().readonly().optional(),
121
116
  })).readonly().optional(),
122
- })), z.intersection(z.object({
117
+ }), z.object({
123
118
  'phase': z.literal("failed").readonly(),
124
119
  'message': z.string().readonly(),
125
120
  'download': z.object({
@@ -129,43 +124,42 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_follow_result$sche
129
124
  'code': z.string().readonly().optional(),
130
125
  'status': z.number().readonly().optional(),
131
126
  }).readonly().optional(),
132
- }), z.object({
133
127
  'step': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly().optional(),
134
128
  'steps': z.array(z.object({
135
129
  'kind': z.union([z.literal("check"), z.literal("model"), z.literal("vad"), z.literal("verify"), z.literal("load")]).readonly(),
136
130
  'status': z.union([z.literal("cancelled"), z.literal("failed"), z.literal("running"), z.literal("pending"), z.literal("complete")]).readonly(),
137
131
  'startedAt': z.number().readonly().optional(),
138
132
  })).readonly().optional(),
139
- }))]).readonly(),
140
- 'id': z.intersection(z.string(), z.unknown()).readonly(),
133
+ })]).readonly(),
134
+ 'id': z.string().readonly(),
141
135
  'name': z.string().readonly(),
142
136
  'location': z.union([z.literal("host-local"), z.literal("cloud")]).readonly(),
143
- 'languages': z.array(z.string()).readonly(),
137
+ 'languages': z.array(z.string()).readonly().describe('Accepted language hints, including automatic detection when supported.'),
144
138
  'setupEstimate': z.object({
145
139
  'recommendedDiskBytes': z.number().readonly(),
146
140
  'expectedMemoryBytes': z.number().readonly(),
147
141
  'minimumMinutes': z.number().readonly(),
148
142
  'maximumMinutes': z.number().readonly(),
149
143
  }).readonly().optional(),
150
- 'downloadSources': z.array(z.string()).readonly().optional(),
144
+ 'downloadSources': z.array(z.string()).readonly().optional().describe('Origins offered for an explicit preparation download; omitted or empty when no choice applies.'),
151
145
  })).readonly(),
152
146
  'selection': z.object({
153
- 'providerId': z.intersection(z.string(), z.unknown()).readonly(),
147
+ 'providerId': z.string().readonly(),
154
148
  'language': z.string().readonly(),
155
149
  }).readonly(),
156
150
  }))
157
151
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema$value
158
- const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema$value ??= z.intersection(z.string(), z.unknown()))
152
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema$value ??= z.string())
159
153
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema$value
160
154
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema$value ??= z.union([z.undefined(), z.object({
161
- 'downloadSource': z.string().readonly().optional(),
155
+ 'downloadSource': z.string().readonly().optional().describe('One advertised origin; providers reject unavailable sources and use a manual choice without fallback.'),
162
156
  })]))
163
157
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema$value
164
158
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema$value ??= z.void())
165
159
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema$value
166
160
  const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema$value ??= z.object({
167
161
  'audioBase64': z.string().readonly(),
168
- 'providerId': z.intersection(z.string(), z.unknown()).readonly().optional(),
162
+ 'providerId': z.string().readonly().optional(),
169
163
  'language': z.string().readonly().optional(),
170
164
  }))
171
165
  let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_result$schema$value
@@ -174,25 +168,49 @@ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_result$
174
168
  'audioSeconds': z.number().readonly(),
175
169
  'inferenceSeconds': z.number().readonly(),
176
170
  }))
171
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema$value
172
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema$value ??= z.string())
173
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema$value
174
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema$value ??= z.strictObject({
175
+ 'providerId': z.string().readonly().optional(),
176
+ 'language': z.string().readonly().optional(),
177
+ }))
178
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema$value
179
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema$value ??= z.string())
180
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema$value
181
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema$value ??= z.union([z.undefined(), z.strictObject({
182
+ 'downloadSource': z.string().readonly().optional().describe('One advertised origin; providers reject unavailable sources and use a manual choice without fallback.'),
183
+ })]))
184
+ let _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema$value
185
+ const _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema = () => (_deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema$value ??= z.strictObject({
186
+ 'audioBase64': z.string().readonly(),
187
+ 'providerId': z.string().readonly().optional(),
188
+ 'language': z.string().readonly().optional(),
189
+ }))
177
190
 
178
- export const TYPERT_REMOTE = {
191
+ export const TYPERT_REMOTE = createTypertRemoteInfo({
179
192
  package: '@deepseek-ai/dsh-experimental-api-speech-to-text',
180
- descriptors: [
181
- {
182
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/cancelPreparation',
193
+ methods: {
194
+ 'speech/cancelPreparation': {
183
195
  service: 'speechController',
184
- namespace: 'speech',
185
- method: 'cancelPreparation',
196
+ description: 'Explicitly cancel resource preparation.',
186
197
  invocation: { kind: 'direct' },
187
198
  parameters: [
188
199
  {
189
200
  name: 'providerId',
190
- wire: 'providerId',
201
+ description: 'selected recognizer.',
191
202
  source: 'json',
192
203
  codec: {
193
204
  mode: 'strict',
194
205
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
195
206
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0$schema,
207
+ jsonSchema: {"type":"string"},
208
+ },
209
+ strictCodec: {
210
+ mode: 'strict',
211
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
212
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_parameter_0_strict$schema,
213
+ jsonSchema: {"type":"string"},
196
214
  },
197
215
  },
198
216
  ],
@@ -200,14 +218,14 @@ export const TYPERT_REMOTE = {
200
218
  mode: 'strict',
201
219
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/cancelPreparation:result',
202
220
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_cancelPreparation_result$schema,
221
+ description: 'after the preparation task settles.',
222
+ jsonSchemaError: 'typert tool schema: unsupported void value',
203
223
  },
204
224
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":80,"column":3},
205
225
  },
206
- {
207
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/catalog',
226
+ 'speech/catalog': {
208
227
  service: 'speechController',
209
- namespace: 'speech',
210
- method: 'catalog',
228
+ description: 'Read provider choices without preparing a recognizer.',
211
229
  invocation: { kind: 'direct' },
212
230
  parameters: [
213
231
  ],
@@ -215,24 +233,31 @@ export const TYPERT_REMOTE = {
215
233
  mode: 'strict',
216
234
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#SpeechCatalog',
217
235
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_catalog_result$schema,
236
+ description: 'available providers, resolved default, and recording limits.',
237
+ jsonSchema: {"type":"object","properties":{"maxAudioBytes":{"type":"number"},"maxDurationSeconds":{"type":"number"},"providers":{"type":"array","items":{"type":"object","properties":{"preparation":{"oneOf":[{"type":"object","properties":{"phase":{"type":"string","enum":["cancelled","ready","unprepared","standby"]},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"downloading"},"resource":{"type":"string"},"completedBytes":{"type":"number"},"totalBytes":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","resource","completedBytes"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","enum":["checking","loading","waking","cancelling"]},"startedAt":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","startedAt"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"failed"},"message":{"type":"string"},"download":{"type":"object","properties":{"resource":{"type":"string"},"source":{"type":"string"},"reason":{"type":"string","enum":["network","storage","unknown","dns","timeout","certificate","http","integrity"]},"code":{"type":"string"},"status":{"type":"number"}},"required":["resource","source","reason"],"additionalProperties":true},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","message"],"additionalProperties":true}]},"id":{"type":"string"},"name":{"type":"string"},"location":{"type":"string","enum":["host-local","cloud"]},"languages":{"type":"array","items":{"type":"string"},"description":"Accepted language hints, including automatic detection when supported."},"setupEstimate":{"type":"object","properties":{"recommendedDiskBytes":{"type":"number"},"expectedMemoryBytes":{"type":"number"},"minimumMinutes":{"type":"number"},"maximumMinutes":{"type":"number"}},"required":["recommendedDiskBytes","expectedMemoryBytes","minimumMinutes","maximumMinutes"],"additionalProperties":true},"downloadSources":{"type":"array","items":{"type":"string"},"description":"Origins offered for an explicit preparation download; omitted or empty when no choice applies."}},"required":["preparation","id","name","location","languages"],"additionalProperties":true}},"selection":{"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":["providerId","language"],"additionalProperties":true}},"required":["maxAudioBytes","maxDurationSeconds","providers","selection"],"additionalProperties":true},
218
238
  },
219
239
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":44,"column":3},
220
240
  },
221
- {
222
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/configure',
241
+ 'speech/configure': {
223
242
  service: 'speechController',
224
- namespace: 'speech',
225
- method: 'configure',
243
+ description: 'Persist the user\'s recognition preferences.',
226
244
  invocation: { kind: 'direct' },
227
245
  parameters: [
228
246
  {
229
247
  name: 'patch',
230
- wire: 'patch',
248
+ description: 'changed preference fields.',
231
249
  source: 'json',
232
250
  codec: {
233
251
  mode: 'strict',
234
252
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechSelectionPatch',
235
253
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0$schema,
254
+ jsonSchema: {"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":[],"additionalProperties":true},
255
+ },
256
+ strictCodec: {
257
+ mode: 'strict',
258
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechSelectionPatch',
259
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_parameter_0_strict$schema,
260
+ jsonSchema: {"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":[],"additionalProperties":false},
236
261
  },
237
262
  },
238
263
  ],
@@ -240,14 +265,14 @@ export const TYPERT_REMOTE = {
240
265
  mode: 'strict',
241
266
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/configure:result',
242
267
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_configure_result$schema,
268
+ description: 'after preferences are saved.',
269
+ jsonSchemaError: 'typert tool schema: unsupported void value',
243
270
  },
244
271
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":64,"column":3},
245
272
  },
246
- {
247
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/follow',
273
+ 'speech/follow': {
248
274
  service: 'speechController',
249
- namespace: 'speech',
250
- method: 'follow',
275
+ description: 'Follow provider readiness independently of Session and preparation lifetimes.',
251
276
  mode: 'stream',
252
277
  invocation: { kind: 'direct' },
253
278
  parameters: [
@@ -257,35 +282,49 @@ export const TYPERT_REMOTE = {
257
282
  mode: 'strict',
258
283
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#SpeechCatalog',
259
284
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_follow_result$schema,
285
+ description: 'initial and subsequent complete readiness snapshots.',
286
+ jsonSchema: {"type":"object","properties":{"maxAudioBytes":{"type":"number"},"maxDurationSeconds":{"type":"number"},"providers":{"type":"array","items":{"type":"object","properties":{"preparation":{"oneOf":[{"type":"object","properties":{"phase":{"type":"string","enum":["cancelled","ready","unprepared","standby"]},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"downloading"},"resource":{"type":"string"},"completedBytes":{"type":"number"},"totalBytes":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","resource","completedBytes"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","enum":["checking","loading","waking","cancelling"]},"startedAt":{"type":"number"},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","startedAt"],"additionalProperties":true},{"type":"object","properties":{"phase":{"type":"string","const":"failed"},"message":{"type":"string"},"download":{"type":"object","properties":{"resource":{"type":"string"},"source":{"type":"string"},"reason":{"type":"string","enum":["network","storage","unknown","dns","timeout","certificate","http","integrity"]},"code":{"type":"string"},"status":{"type":"number"}},"required":["resource","source","reason"],"additionalProperties":true},"step":{"type":"string","enum":["check","model","vad","verify","load"]},"steps":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["check","model","vad","verify","load"]},"status":{"type":"string","enum":["cancelled","failed","running","pending","complete"]},"startedAt":{"type":"number"}},"required":["kind","status"],"additionalProperties":true}}},"required":["phase","message"],"additionalProperties":true}]},"id":{"type":"string"},"name":{"type":"string"},"location":{"type":"string","enum":["host-local","cloud"]},"languages":{"type":"array","items":{"type":"string"},"description":"Accepted language hints, including automatic detection when supported."},"setupEstimate":{"type":"object","properties":{"recommendedDiskBytes":{"type":"number"},"expectedMemoryBytes":{"type":"number"},"minimumMinutes":{"type":"number"},"maximumMinutes":{"type":"number"}},"required":["recommendedDiskBytes","expectedMemoryBytes","minimumMinutes","maximumMinutes"],"additionalProperties":true},"downloadSources":{"type":"array","items":{"type":"string"},"description":"Origins offered for an explicit preparation download; omitted or empty when no choice applies."}},"required":["preparation","id","name","location","languages"],"additionalProperties":true}},"selection":{"type":"object","properties":{"providerId":{"type":"string"},"language":{"type":"string"}},"required":["providerId","language"],"additionalProperties":true}},"required":["maxAudioBytes","maxDurationSeconds","providers","selection"],"additionalProperties":true},
260
287
  },
261
288
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":54,"column":10},
262
289
  },
263
- {
264
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/prepare',
290
+ 'speech/prepare': {
265
291
  service: 'speechController',
266
- namespace: 'speech',
267
- method: 'prepare',
292
+ description: 'Start or join one Host-owned preparation task.',
268
293
  invocation: { kind: 'direct' },
269
294
  parameters: [
270
295
  {
271
296
  name: 'providerId',
272
- wire: 'providerId',
297
+ description: 'selected recognizer.',
273
298
  source: 'json',
274
299
  codec: {
275
300
  mode: 'strict',
276
301
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
277
302
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0$schema,
303
+ jsonSchema: {"type":"string"},
304
+ },
305
+ strictCodec: {
306
+ mode: 'strict',
307
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechProviderId',
308
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_0_strict$schema,
309
+ jsonSchema: {"type":"string"},
278
310
  },
279
311
  },
280
312
  {
281
313
  name: 'options',
282
- wire: 'options',
314
+ description: 'task-local source selection validated by the provider.',
283
315
  source: 'json',
284
316
  acceptsUndefined: true,
285
317
  codec: {
286
318
  mode: 'strict',
287
319
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechPreparationOptions',
288
320
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1$schema,
321
+ jsonSchema: {"type":"object","properties":{"downloadSource":{"type":"string","description":"One advertised origin; providers reject unavailable sources and use a manual choice without fallback."}},"required":[],"additionalProperties":true},
322
+ },
323
+ strictCodec: {
324
+ mode: 'strict',
325
+ typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#SpeechPreparationOptions',
326
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_parameter_1_strict$schema,
327
+ jsonSchema: {"type":"object","properties":{"downloadSource":{"type":"string","description":"One advertised origin; providers reject unavailable sources and use a manual choice without fallback."}},"required":[],"additionalProperties":false},
289
328
  },
290
329
  },
291
330
  ],
@@ -293,24 +332,30 @@ export const TYPERT_REMOTE = {
293
332
  mode: 'strict',
294
333
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/prepare:result',
295
334
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_prepare_result$schema,
335
+ jsonSchemaError: 'typert tool schema: unsupported void value',
296
336
  },
297
337
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":72,"column":3},
298
338
  },
299
- {
300
- id: '@deepseek-ai/dsh-experimental-api-speech-to-text#speech/transcribe',
339
+ 'speech/transcribe': {
301
340
  service: 'speechController',
302
- namespace: 'speech',
303
- method: 'transcribe',
341
+ description: 'Validate and transcribe one recording through the explicit provider selection.',
304
342
  invocation: { kind: 'direct' },
305
343
  parameters: [
306
344
  {
307
345
  name: 'request',
308
- wire: 'request',
346
+ description: 'canonical WAV encoded as base64, provider id and language hint.',
309
347
  source: 'json',
310
348
  codec: {
311
349
  mode: 'strict',
312
350
  typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#TranscriptionRequest',
313
351
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0$schema,
352
+ jsonSchema: {"type":"object","properties":{"audioBase64":{"type":"string"},"providerId":{"type":"string"},"language":{"type":"string"}},"required":["audioBase64"],"additionalProperties":true},
353
+ },
354
+ strictCodec: {
355
+ mode: 'strict',
356
+ typeSymbol: '@deepseek-ai/dsh-experimental-api-speech-to-text/types#TranscriptionRequest',
357
+ create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_parameter_0_strict$schema,
358
+ jsonSchema: {"type":"object","properties":{"audioBase64":{"type":"string"},"providerId":{"type":"string"},"language":{"type":"string"}},"required":["audioBase64"],"additionalProperties":false},
314
359
  },
315
360
  },
316
361
  ],
@@ -319,10 +364,12 @@ export const TYPERT_REMOTE = {
319
364
  mode: 'strict',
320
365
  typeSymbol: '@deepseek-ai/dsh-experimental-speech-to-text/types#Transcript',
321
366
  create: _deepseek_ai_dsh_experimental_api_speech_to_text_speech_transcribe_result$schema,
367
+ description: 'final transcript without adding a Session event.',
368
+ jsonSchema: {"type":"object","properties":{"text":{"type":"string"},"audioSeconds":{"type":"number"},"inferenceSeconds":{"type":"number"}},"required":["text","audioSeconds","inferenceSeconds"],"additionalProperties":true},
322
369
  },
323
370
  sourceLocation: {"file":"packages/experimental/api-speech-to-text/src/index.ts","line":89,"column":9},
324
371
  },
325
- ],
326
- }
372
+ },
373
+ }, z)
327
374
 
328
375
  export default TYPERT_REMOTE
package/locale/en.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "Speech transcription API",
4
+ "description": "Provide speech transcription for browser clients."
5
+ }
6
+ }
package/locale/zh.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "meta": {
3
+ "title": "语音转写接口",
4
+ "description": "为浏览器提供录音转写接口。"
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-experimental-api-speech-to-text",
3
3
  "description": "Authenticated experimental speech transcription for browser clients",
4
- "version": "0.2.1-alpha.2",
4
+ "version": "0.2.1-alpha.4",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -20,6 +20,7 @@
20
20
  },
21
21
  "./src/*": "./src/*",
22
22
  "./package.json": "./package.json",
23
+ "./locale/*.json": "./locale/*.json",
23
24
  "./types": {
24
25
  "types": "./lib/types/types.d.ts",
25
26
  "default": "./lib/types/types.js"
@@ -34,6 +35,7 @@
34
35
  }
35
36
  },
36
37
  "files": [
38
+ "locale/*.json",
37
39
  "lib/index.js",
38
40
  "lib/types/**/*.js",
39
41
  "lib/types/**/*.d.ts",
@@ -44,17 +46,17 @@
44
46
  ],
45
47
  "license": "MIT",
46
48
  "dependencies": {
47
- "@deepseek-ai/schemastery": "~3.18.5-alpha.1",
48
- "zod": "^4.4.3"
49
+ "@deepseek-ai/schemastery": "~3.18.5-alpha.2",
50
+ "zod": "4.4.3"
49
51
  },
50
52
  "peerDependencies": {
51
- "@deepseek-ai/cordis": "~4.0.5-alpha.1",
52
- "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-alpha.2",
53
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.2"
53
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2",
54
+ "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-alpha.4",
55
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.4"
54
56
  },
55
57
  "devDependencies": {
56
- "@deepseek-ai/cordis": "~4.0.5-alpha.1",
57
- "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-alpha.2",
58
- "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.2"
58
+ "@deepseek-ai/cordis": "~4.0.5-alpha.2",
59
+ "@deepseek-ai/dsh-experimental-speech-to-text": "0.2.1-alpha.4",
60
+ "@deepseek-ai/dsh-typert-protocol": "0.2.1-alpha.4"
59
61
  }
60
62
  }