@xrkseek/harness 0.7.7 → 0.7.9

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.
Files changed (180) hide show
  1. package/node_modules/@xrkseek/core-tools/dist/output-bound.d.ts +4 -1
  2. package/node_modules/@xrkseek/core-tools/dist/output-bound.d.ts.map +1 -1
  3. package/node_modules/@xrkseek/core-tools/dist/output-bound.js +19 -5
  4. package/node_modules/@xrkseek/core-tools/dist/output-bound.js.map +1 -1
  5. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +2 -2
  6. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
  7. package/node_modules/@xrkseek/exec-memory/dist/layered.d.ts +2 -0
  8. package/node_modules/@xrkseek/exec-memory/dist/layered.d.ts.map +1 -1
  9. package/node_modules/@xrkseek/exec-memory/dist/layered.js +12 -1
  10. package/node_modules/@xrkseek/exec-memory/dist/layered.js.map +1 -1
  11. package/node_modules/@xrkseek/exec-memory/dist/tools.d.ts.map +1 -1
  12. package/node_modules/@xrkseek/exec-memory/dist/tools.js +25 -10
  13. package/node_modules/@xrkseek/exec-memory/dist/tools.js.map +1 -1
  14. package/node_modules/@xrkseek/exec-voice/dist/download-http.d.ts +25 -6
  15. package/node_modules/@xrkseek/exec-voice/dist/download-http.d.ts.map +1 -1
  16. package/node_modules/@xrkseek/exec-voice/dist/download-http.js +55 -11
  17. package/node_modules/@xrkseek/exec-voice/dist/download-http.js.map +1 -1
  18. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.d.ts +60 -0
  19. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.d.ts.map +1 -0
  20. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.js +393 -0
  21. package/node_modules/@xrkseek/exec-voice/dist/edge-tts.js.map +1 -0
  22. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.d.ts.map +1 -1
  23. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.js +1 -0
  24. package/node_modules/@xrkseek/exec-voice/dist/engine-ids.js.map +1 -1
  25. package/node_modules/@xrkseek/exec-voice/dist/engines.d.ts +1 -1
  26. package/node_modules/@xrkseek/exec-voice/dist/engines.d.ts.map +1 -1
  27. package/node_modules/@xrkseek/exec-voice/dist/engines.js +19 -1
  28. package/node_modules/@xrkseek/exec-voice/dist/engines.js.map +1 -1
  29. package/node_modules/@xrkseek/exec-voice/dist/format.js +1 -1
  30. package/node_modules/@xrkseek/exec-voice/dist/format.js.map +1 -1
  31. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts +2 -0
  32. package/node_modules/@xrkseek/exec-voice/dist/index.d.ts.map +1 -1
  33. package/node_modules/@xrkseek/exec-voice/dist/index.js +2 -0
  34. package/node_modules/@xrkseek/exec-voice/dist/index.js.map +1 -1
  35. package/node_modules/@xrkseek/exec-voice/dist/openai-http.d.ts.map +1 -1
  36. package/node_modules/@xrkseek/exec-voice/dist/openai-http.js +1 -0
  37. package/node_modules/@xrkseek/exec-voice/dist/openai-http.js.map +1 -1
  38. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts +1 -1
  39. package/node_modules/@xrkseek/exec-voice/dist/readiness.d.ts.map +1 -1
  40. package/node_modules/@xrkseek/exec-voice/dist/readiness.js +13 -1
  41. package/node_modules/@xrkseek/exec-voice/dist/readiness.js.map +1 -1
  42. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.d.ts.map +1 -1
  43. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.js +6 -5
  44. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-local.js.map +1 -1
  45. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.d.ts +3 -1
  46. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.d.ts.map +1 -1
  47. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.js +18 -1
  48. package/node_modules/@xrkseek/exec-voice/dist/sensevoice-runtime.js.map +1 -1
  49. package/node_modules/@xrkseek/exec-voice/dist/system-tts.d.ts +2 -0
  50. package/node_modules/@xrkseek/exec-voice/dist/system-tts.d.ts.map +1 -1
  51. package/node_modules/@xrkseek/exec-voice/dist/system-tts.js +10 -7
  52. package/node_modules/@xrkseek/exec-voice/dist/system-tts.js.map +1 -1
  53. package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts +19 -0
  54. package/node_modules/@xrkseek/exec-voice/dist/tools.d.ts.map +1 -1
  55. package/node_modules/@xrkseek/exec-voice/dist/tools.js +160 -25
  56. package/node_modules/@xrkseek/exec-voice/dist/tools.js.map +1 -1
  57. package/node_modules/@xrkseek/exec-voice/dist/types.d.ts +12 -1
  58. package/node_modules/@xrkseek/exec-voice/dist/types.d.ts.map +1 -1
  59. package/node_modules/@xrkseek/exec-voice/dist/types.js +6 -0
  60. package/node_modules/@xrkseek/exec-voice/dist/types.js.map +1 -1
  61. package/node_modules/@xrkseek/exec-voice/package.json +10 -2
  62. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  63. package/node_modules/@xrkseek/preset-harness/dist/preset.js +8 -3
  64. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  65. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  66. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  67. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  68. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts +14 -0
  69. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.d.ts.map +1 -1
  70. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js +40 -0
  71. package/node_modules/@xrkseek/server-face/dist/agent-home-boundary.js.map +1 -1
  72. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.d.ts +21 -1
  73. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.d.ts.map +1 -1
  74. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.js +29 -1
  75. package/node_modules/@xrkseek/server-face/dist/agent-member-pack.js.map +1 -1
  76. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +4 -4
  77. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -1
  78. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.d.ts.map +1 -1
  79. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js +30 -15
  80. package/node_modules/@xrkseek/server-face/dist/agent-team-roles.js.map +1 -1
  81. package/node_modules/@xrkseek/server-face/dist/canvas-tools.d.ts.map +1 -1
  82. package/node_modules/@xrkseek/server-face/dist/canvas-tools.js +2 -1
  83. package/node_modules/@xrkseek/server-face/dist/canvas-tools.js.map +1 -1
  84. package/node_modules/@xrkseek/server-face/dist/handlers/voice.d.ts.map +1 -1
  85. package/node_modules/@xrkseek/server-face/dist/handlers/voice.js +47 -6
  86. package/node_modules/@xrkseek/server-face/dist/handlers/voice.js.map +1 -1
  87. package/node_modules/@xrkseek/server-face/dist/index.d.ts +2 -0
  88. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  89. package/node_modules/@xrkseek/server-face/dist/index.js +2 -0
  90. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  91. package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
  92. package/node_modules/@xrkseek/server-face/dist/model-catalog.js +18 -8
  93. package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
  94. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  95. package/node_modules/@xrkseek/server-face/dist/runtime.js +12 -0
  96. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  97. package/node_modules/@xrkseek/server-face/dist/session-attachment.d.ts.map +1 -1
  98. package/node_modules/@xrkseek/server-face/dist/session-attachment.js +60 -5
  99. package/node_modules/@xrkseek/server-face/dist/session-attachment.js.map +1 -1
  100. package/node_modules/@xrkseek/server-face/dist/session-capability.d.ts.map +1 -1
  101. package/node_modules/@xrkseek/server-face/dist/session-capability.js +45 -19
  102. package/node_modules/@xrkseek/server-face/dist/session-capability.js.map +1 -1
  103. package/node_modules/@xrkseek/server-face/dist/session-posture.js +1 -1
  104. package/node_modules/@xrkseek/server-face/dist/session-posture.js.map +1 -1
  105. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +2 -2
  106. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
  107. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +5 -38
  108. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
  109. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.d.ts.map +1 -1
  110. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js +6 -2
  111. package/node_modules/@xrkseek/server-face/dist/session-tool-copy.js.map +1 -1
  112. package/node_modules/@xrkseek/server-face/dist/session-tools.d.ts.map +1 -1
  113. package/node_modules/@xrkseek/server-face/dist/session-tools.js +0 -2
  114. package/node_modules/@xrkseek/server-face/dist/session-tools.js.map +1 -1
  115. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  116. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +40 -7
  117. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  118. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts +2 -2
  119. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  120. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +15 -56
  121. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  122. package/node_modules/@xrkseek/server-face/dist/tts-availability.d.ts +33 -0
  123. package/node_modules/@xrkseek/server-face/dist/tts-availability.d.ts.map +1 -0
  124. package/node_modules/@xrkseek/server-face/dist/tts-availability.js +67 -0
  125. package/node_modules/@xrkseek/server-face/dist/tts-availability.js.map +1 -0
  126. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts.map +1 -1
  127. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js +62 -19
  128. package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js.map +1 -1
  129. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.d.ts +1 -1
  130. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.d.ts.map +1 -1
  131. package/node_modules/@xrkseek/server-face/dist/xiangyang-skill-bodies/mainline-sideline.js +1 -1
  132. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.d.ts +5 -1
  133. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.d.ts.map +1 -1
  134. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.js +1 -1
  135. package/node_modules/@xrkseek/server-host/dist/im-reply-tool.js.map +1 -1
  136. package/node_modules/@xrkseek/server-host/dist/index.d.ts +2 -2
  137. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  138. package/node_modules/@xrkseek/server-host/dist/index.js +57 -9
  139. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  140. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts +10 -4
  141. package/node_modules/@xrkseek/workspace/dist/durable-inject.d.ts.map +1 -1
  142. package/node_modules/@xrkseek/workspace/dist/durable-inject.js +26 -8
  143. package/node_modules/@xrkseek/workspace/dist/durable-inject.js.map +1 -1
  144. package/node_modules/@xrkseek/workspace/dist/skill-tools.js +1 -1
  145. package/node_modules/@xrkseek/workspace/dist/skill-tools.js.map +1 -1
  146. package/node_modules/@xrkseek/workspace/dist/skills.d.ts +1 -1
  147. package/node_modules/@xrkseek/workspace/dist/skills.d.ts.map +1 -1
  148. package/node_modules/@xrkseek/workspace/dist/skills.js +2 -2
  149. package/node_modules/@xrkseek/workspace/dist/skills.js.map +1 -1
  150. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.d.ts.map +1 -1
  151. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js +1 -7
  152. package/node_modules/@xrkseek/workspace/dist/standing-skill-dirs.js.map +1 -1
  153. package/node_modules/sherpa-onnx-node/README.md +11 -0
  154. package/node_modules/sherpa-onnx-node/addon-static-import.js +76 -0
  155. package/node_modules/sherpa-onnx-node/addon.js +98 -0
  156. package/node_modules/sherpa-onnx-node/audio-tagg.js +45 -0
  157. package/node_modules/sherpa-onnx-node/keyword-spotter.js +68 -0
  158. package/node_modules/sherpa-onnx-node/non-streaming-asr.js +158 -0
  159. package/node_modules/sherpa-onnx-node/non-streaming-speaker-diarization.js +38 -0
  160. package/node_modules/sherpa-onnx-node/non-streaming-speech-denoiser.js +32 -0
  161. package/node_modules/sherpa-onnx-node/non-streaming-tts.js +117 -0
  162. package/node_modules/sherpa-onnx-node/online-speech-denoiser.js +46 -0
  163. package/node_modules/sherpa-onnx-node/package.json +68 -0
  164. package/node_modules/sherpa-onnx-node/punctuation.js +43 -0
  165. package/node_modules/sherpa-onnx-node/resampler.js +80 -0
  166. package/node_modules/sherpa-onnx-node/sherpa-onnx.js +49 -0
  167. package/node_modules/sherpa-onnx-node/speaker-identification.js +152 -0
  168. package/node_modules/sherpa-onnx-node/spoken-language-identification.js +38 -0
  169. package/node_modules/sherpa-onnx-node/streaming-asr.js +181 -0
  170. package/node_modules/sherpa-onnx-node/types.js +833 -0
  171. package/node_modules/sherpa-onnx-node/vad.js +134 -0
  172. package/node_modules/sherpa-onnx-win-x64/README.md +3 -0
  173. package/node_modules/sherpa-onnx-win-x64/index.js +1 -0
  174. package/node_modules/sherpa-onnx-win-x64/onnxruntime.dll +0 -0
  175. package/node_modules/sherpa-onnx-win-x64/onnxruntime_providers_shared.dll +0 -0
  176. package/node_modules/sherpa-onnx-win-x64/package.json +65 -0
  177. package/node_modules/sherpa-onnx-win-x64/sherpa-onnx-c-api.dll +0 -0
  178. package/node_modules/sherpa-onnx-win-x64/sherpa-onnx-cxx-api.dll +0 -0
  179. package/node_modules/sherpa-onnx-win-x64/sherpa-onnx.node +0 -0
  180. package/package.json +5 -1
@@ -0,0 +1,833 @@
1
+ /**
2
+ * Centralized JSDoc typedefs for the Node addon API.
3
+ * These typedefs mirror the shapes produced/consumed by the C++ bindings
4
+ * in `scripts/node-addon-api/src/*` and by the underlying SherpaOnnx C API.
5
+ *
6
+ * Keep these typedefs specialized (no `any`/`unknown`) and concise.
7
+ */
8
+
9
+ /**
10
+ * Opaque handle types returned by native constructors. These are opaque
11
+ * JavaScript objects backed by native pointers. Do not introspect or
12
+ * mutate their internals; pass them to the API functions as-is.
13
+ *
14
+ * @typedef {Object} OfflineStreamHandle
15
+ * @see src/non-streaming-asr.cc
16
+ */
17
+
18
+ /**
19
+ * @typedef {Object} OnlineStreamHandle
20
+ * @see src/streaming-asr.cc
21
+ */
22
+
23
+ /**
24
+ * @typedef {Object} OfflineRecognizerHandle
25
+ * @see src/non-streaming-asr.cc
26
+ */
27
+
28
+ /**
29
+ * @typedef {Object} OnlineRecognizerHandle
30
+ * @see src/streaming-asr.cc
31
+ */
32
+
33
+ /**
34
+ * @typedef {Object} DisplayHandle
35
+ * @see src/streaming-asr.cc
36
+ */
37
+
38
+ /**
39
+ * @typedef {Object} CircularBufferHandle
40
+ * @see src/vad.cc
41
+ */
42
+
43
+ /**
44
+ * @typedef {Object} VoiceActivityDetectorHandle
45
+ * @see src/vad.cc
46
+ */
47
+
48
+ /**
49
+ * @typedef {Object} AudioTaggingHandle
50
+ * @see src/audio-tagging.cc
51
+ */
52
+
53
+ /**
54
+ * @typedef {Object} OfflinePunctuationHandle
55
+ * @see src/offline-punctuation.cc
56
+ */
57
+
58
+ /**
59
+ * @typedef {Object} LinearResamplerHandle
60
+ * @see src/resampler.cc
61
+ */
62
+
63
+ /**
64
+ * @typedef {Object} OfflineTtsHandle
65
+ * @see src/non-streaming-tts.cc
66
+ */
67
+
68
+ /**
69
+ * @typedef {Object} OnlinePunctuationHandle
70
+ * @see src/punctuation.cc
71
+ */
72
+
73
+ /**
74
+ * @typedef {Object} KeywordSpotterHandle
75
+ * @see src/keyword-spotter.cc
76
+ */
77
+
78
+ /**
79
+ * @typedef {Object} SpeakerEmbeddingExtractorHandle
80
+ * @see src/speaker-identification.cc
81
+ */
82
+
83
+ /**
84
+ * @typedef {Object} SpeakerEmbeddingManagerHandle
85
+ * @see src/speaker-identification.cc
86
+ */
87
+
88
+ /**
89
+ * @typedef {Object} SpokenLanguageIdentificationHandle
90
+ * @see src/spoken-language-identification.cc
91
+ */
92
+
93
+ /**
94
+ * @typedef {Object} OfflineSpeakerDiarizationHandle
95
+ * @see src/non-streaming-speaker-diarization.cc
96
+ */
97
+
98
+ /**
99
+ * @typedef {Object} OfflineSpeechDenoiserHandle
100
+ * @see src/non-streaming-speech-denoiser.cc
101
+ */
102
+
103
+ /**
104
+ * @typedef {Object} OnlineSpeechDenoiserHandle
105
+ * @see src/online-speech-denoiser.cc
106
+ */
107
+
108
+ /**
109
+ * A single audio event returned by AudioTagging.compute().
110
+ * @typedef {Object} AudioEvent
111
+ * @property {string} name - The event name.
112
+ * @property {number} prob - Probability in [0,1].
113
+ * @property {number} index - Index (integer) of the event.
114
+ */
115
+
116
+ /**
117
+ * AudioTagging specific model config for Zipformer variant
118
+ * @typedef {Object} AudioTaggingZipformerModelConfig
119
+ * @property {string} [model]
120
+ */
121
+
122
+ /**
123
+ * AudioTagging model config.
124
+ * @typedef {Object} AudioTaggingModelConfig
125
+ * @property {AudioTaggingZipformerModelConfig} [zipformer]
126
+ * @property {string} [ced]
127
+ * @property {number} [numThreads]
128
+ * @property {boolean|number} [debug]
129
+ * @property {string} [provider]
130
+ */
131
+
132
+ /**
133
+ * AudioTagging configuration passed to constructor.
134
+ * @typedef {Object} AudioTaggingConfig
135
+ * @property {AudioTaggingModelConfig} [model]
136
+ * @property {string} [labels]
137
+ * @property {number} [topK]
138
+ */
139
+
140
+ /**
141
+ * Waveform input object used by acceptWaveform methods.
142
+ * @typedef {Object} Waveform
143
+ * @property {Float32Array} samples - Float32Array of samples in [-1, 1].
144
+ * @property {number} sampleRate - Sample rate as an integer (e.g., 16000).
145
+ */
146
+
147
+ /**
148
+ * Feature config used by recognizers and models.
149
+ * @typedef {Object} FeatureConfig
150
+ * @property {number} [sampleRate]
151
+ * @property {number} [featureDim]
152
+ */
153
+
154
+ /**
155
+ * Silero VAD model config
156
+ * @typedef {Object} SileroVadModelConfig
157
+ * @property {string} [model]
158
+ * @property {number} [threshold]
159
+ * @property {number} [minSilenceDuration]
160
+ * @property {number} [minSpeechDuration]
161
+ * @property {number} [windowSize]
162
+ * @property {number} [maxSpeechDuration]
163
+ */
164
+
165
+ /**
166
+ * Ten-VAD model config
167
+ * @typedef {Object} TenVadModelConfig
168
+ * @property {string} [model]
169
+ * @property {number} [threshold]
170
+ * @property {number} [minSilenceDuration]
171
+ * @property {number} [minSpeechDuration]
172
+ * @property {number} [windowSize]
173
+ * @property {number} [maxSpeechDuration]
174
+ */
175
+
176
+ /**
177
+ * Voice activity detector configuration.
178
+ * @typedef {Object} VadConfig
179
+ * @property {SileroVadModelConfig} [sileroVad]
180
+ * @property {TenVadModelConfig} [tenVad]
181
+ * @property {number} [sampleRate]
182
+ * @property {number} [numThreads]
183
+ * @property {string} [provider]
184
+ * @property {boolean|number} [debug]
185
+ */
186
+
187
+ /**
188
+ * Offline Transducer model config
189
+ * @typedef {Object} OfflineTransducerModelConfig
190
+ * @property {string} [encoder]
191
+ * @property {string} [decoder]
192
+ * @property {string} [joiner]
193
+ */
194
+
195
+ /**
196
+ * Offline Paraformer model config
197
+ * @typedef {Object} OfflineParaformerModelConfig
198
+ * @property {string} [model]
199
+ */
200
+
201
+ /**
202
+ * Offline Zipformer CTC model config
203
+ * @typedef {Object} OfflineZipformerCtcModelConfig
204
+ * @property {string} [model]
205
+ */
206
+
207
+ /**
208
+ * Offline Wenet CTC model config
209
+ * @typedef {Object} OfflineWenetCtcModelConfig
210
+ * @property {string} [model]
211
+ */
212
+
213
+ /**
214
+ * Offline Omnilingual ASR CTC model config
215
+ * @typedef {Object} OfflineOmnilingualAsrCtcModelConfig
216
+ * @property {string} [model]
217
+ */
218
+
219
+ /**
220
+ * Offline Med ASR CTC model config
221
+ * @typedef {Object} OfflineMedAsrCtcModelConfig
222
+ * @property {string} [model]
223
+ */
224
+
225
+ /**
226
+ * Offline Dolphin model config
227
+ * @typedef {Object} OfflineDolphinModelConfig
228
+ * @property {string} [model]
229
+ */
230
+
231
+ /**
232
+ * Offline NeMo CTC model config
233
+ * @typedef {Object} OfflineNeMoCtcModelConfig
234
+ * @property {string} [model]
235
+ */
236
+
237
+ /**
238
+ * Offline Canary model config
239
+ * @typedef {Object} OfflineCanaryModelConfig
240
+ * @property {string} [encoder]
241
+ * @property {string} [decoder]
242
+ * @property {string} [srcLang]
243
+ * @property {string} [tgtLang]
244
+ * @property {number} [usePnc]
245
+ */
246
+
247
+ /**
248
+ * Offline Whisper model config
249
+ * @typedef {Object} OfflineWhisperModelConfig
250
+ * @property {string} [encoder]
251
+ * @property {string} [decoder]
252
+ * @property {string} [language]
253
+ * @property {string} [task]
254
+ * @property {number} [tailPaddings]
255
+ */
256
+
257
+ /**
258
+ * Offline FireRed ASR model config
259
+ * @typedef {Object} OfflineFireRedAsrModelConfig
260
+ * @property {string} [encoder]
261
+ * @property {string} [decoder]
262
+ */
263
+
264
+ /**
265
+ * Offline Moonshine model config
266
+ * @typedef {Object} OfflineMoonshineModelConfig
267
+ * @property {string} [preprocessor]
268
+ * @property {string} [encoder]
269
+ * @property {string} [uncachedDecoder]
270
+ * @property {string} [cachedDecoder]
271
+ */
272
+
273
+ /**
274
+ * Offline TDNN model config
275
+ * @typedef {Object} OfflineTdnnModelConfig
276
+ * @property {string} [model]
277
+ */
278
+
279
+ /**
280
+ * Offline SenseVoice model config
281
+ * @typedef {Object} OfflineSenseVoiceModelConfig
282
+ * @property {string} [model]
283
+ * @property {string} [language]
284
+ * @property {number} [useInverseTextNormalization]
285
+ */
286
+
287
+ /**
288
+ * Offline Cohere Transcribe model config
289
+ * @typedef {Object} OfflineCohereTranscribeModelConfig
290
+ * @property {string} [encoder]
291
+ * @property {string} [decoder]
292
+ * @property {string} [language]
293
+ * @property {number} [usePunct]
294
+ * @property {number} [useItn]
295
+ */
296
+
297
+ /**
298
+ * Offline model config.
299
+ * @typedef {Object} OfflineModelConfig
300
+ * @property {OfflineTransducerModelConfig} [transducer]
301
+ * @property {OfflineParaformerModelConfig} [paraformer]
302
+ * @property {OfflineZipformerCtcModelConfig} [zipformerCtc]
303
+ * @property {OfflineWenetCtcModelConfig} [wenetCtc]
304
+ * @property {OfflineOmnilingualAsrCtcModelConfig} [omnilingual]
305
+ * @property {OfflineMedAsrCtcModelConfig} [medasr]
306
+ * @property {OfflineDolphinModelConfig} [dolphin]
307
+ * @property {OfflineNeMoCtcModelConfig} [nemoCtc]
308
+ * @property {OfflineCanaryModelConfig} [canary]
309
+ * @property {OfflineWhisperModelConfig} [whisper]
310
+ * @property {OfflineFireRedAsrModelConfig} [fireRedAsr]
311
+ * @property {OfflineMoonshineModelConfig} [moonshine]
312
+ * @property {OfflineTdnnModelConfig} [tdnn]
313
+ * @property {OfflineSenseVoiceModelConfig} [senseVoice]
314
+ * @property {OfflineCohereTranscribeModelConfig} [cohereTranscribe]
315
+ * @property {string} [tokens]
316
+ * @property {number} [numThreads]
317
+ * @property {boolean|number} [debug]
318
+ * @property {string} [provider]
319
+ */
320
+
321
+ /**
322
+ * Transducer model config
323
+ * @typedef {Object} TransducerModelConfig
324
+ * @property {string} [encoder]
325
+ * @property {string} [decoder]
326
+ * @property {string} [joiner]
327
+ */
328
+
329
+ /**
330
+ * Paraformer model config
331
+ * @typedef {Object} ParaformerModelConfig
332
+ * @property {string} [encoder]
333
+ * @property {string} [decoder]
334
+ */
335
+
336
+ /**
337
+ * Zipformer2 CTC model config
338
+ * @typedef {Object} Zipformer2CtcModelConfig
339
+ * @property {string} [model]
340
+ */
341
+
342
+ /**
343
+ * NeMo CTC model config
344
+ * @typedef {Object} NemoCtcModelConfig
345
+ * @property {string} [model]
346
+ */
347
+
348
+ /**
349
+ * Tone CTC model config
350
+ * @typedef {Object} ToneCtcModelConfig
351
+ * @property {string} [model]
352
+ */
353
+
354
+ /**
355
+ * Online model config (subset of C++ `OnlineModelConfig`).
356
+ * @typedef {Object} OnlineModelConfig
357
+ * @property {TransducerModelConfig} [transducer]
358
+ * @property {ParaformerModelConfig} [paraformer]
359
+ * @property {Zipformer2CtcModelConfig} [zipformer2Ctc]
360
+ * @property {NemoCtcModelConfig} [nemoCtc]
361
+ * @property {ToneCtcModelConfig} [toneCtc]
362
+ * @property {string} [tokens]
363
+ * @property {number} [numThreads]
364
+ * @property {boolean|number} [debug]
365
+ * @property {string} [provider]
366
+ * @property {string} [modelType]
367
+ * @property {string} [modelingUnit]
368
+ * @property {string} [bpeVocab]
369
+ * @property {string} [tokensBuf]
370
+ * @property {number} [tokensBufSize]
371
+ */
372
+
373
+ /**
374
+ * Homophone replacer configuration used both in online and offline recognizers.
375
+ * @typedef {Object} HomophoneReplacerConfig
376
+ * @property {string} [lexicon]
377
+ * @property {string} [ruleFsts]
378
+ */
379
+
380
+ /**
381
+ * Online recognizer configuration passed to createOnlineRecognizer.
382
+ * @typedef {Object} OnlineRecognizerConfig
383
+ * @property {FeatureConfig} [featConfig]
384
+ * @property {OnlineModelConfig} [modelConfig]
385
+ * @property {HomophoneReplacerConfig} [hr]
386
+ * @property {string} [decodingMethod]
387
+ * @property {number} [maxActivePaths]
388
+ * @property {boolean|number} [enableEndpoint]
389
+ * @property {number} [rule1MinTrailingSilence]
390
+ * @property {number} [rule2MinTrailingSilence]
391
+ * @property {number} [rule3MinUtteranceLength]
392
+ * @property {string} [hotwordsFile]
393
+ * @property {number} [hotwordsScore]
394
+ * @property {string} [ruleFsts]
395
+ * @property {string} [ruleFars]
396
+ * @property {number} [blankPenalty]
397
+ */
398
+
399
+ /**
400
+ * CTC FST decoder options for offline CTC models.
401
+ * @typedef {Object} OfflineCtcFstDecoderConfig
402
+ * @property {string} [graph] - Path to the decoding graph.
403
+ * @property {number} [maxActive] - Decoder max-active setting. 0 means 3000.
404
+ */
405
+
406
+ /**
407
+ * Offline recognizer config passed to createOfflineRecognizer.
408
+ * @typedef {Object} OfflineRecognizerConfig
409
+ * @property {FeatureConfig} [featConfig]
410
+ * @property {OfflineModelConfig} [modelConfig]
411
+ * @property {OfflineCtcFstDecoderConfig} [ctcFstDecoderConfig]
412
+ */
413
+
414
+ /**
415
+ * Wave object returned by readWave and used by writeWave.
416
+ * @typedef {Object} WaveObject
417
+ * @property {Float32Array} samples - 1-D float32 samples in [-1, 1].
418
+ * @property {number} sampleRate - Sample rate as an integer (e.g., 16000).
419
+ * @see src/wave-reader.cc
420
+ */
421
+
422
+ /**
423
+ * Speech segment returned by Vad.front().
424
+ * @typedef {Object} SpeechSegment
425
+ * @property {number} start - Start index (int64 sample position) of this segment.
426
+ * @property {Float32Array} samples - Float32Array of samples.
427
+ * @see src/vad.cc
428
+ */
429
+
430
+ /**
431
+ * Audio returned by TTS and speech denoiser.
432
+ * @typedef {Object} GeneratedAudio
433
+ * @property {Float32Array} samples - The generated/denoised audio samples.
434
+ * @property {number} sampleRate - Sample rate in Hz.
435
+ * @see src/non-streaming-tts.cc
436
+ * @see src/non-streaming-speech-denoiser.cc
437
+ */
438
+
439
+ /**
440
+ * @typedef {Object} GenerationConfig
441
+ * @property {number=} silenceScale
442
+ * @property {number=} speed
443
+ * @property {number=} sid
444
+ * @property {number=} numSteps
445
+ *
446
+ * @property {Float32Array=} referenceAudio
447
+ * @property {number=} referenceSampleRate
448
+ * @property {string=} referenceText
449
+ *
450
+ * @property {{[key: string]: number | string}} [extra]
451
+ *
452
+ * @property {number[][]} [phonemeCodepoints] - Pre-phonemized input as
453
+ * Unicode codepoints, one inner array per sentence. When set, it is
454
+ * used in place of the text argument. Mutually exclusive with
455
+ * `tokens`.
456
+ * @property {string[][]} [tokens] - Pre-tokenized input, e.g. Chinese pinyin
457
+ * like "zhong1", one inner array per sentence. Mutually exclusive
458
+ * with `phonemeCodepoints`.
459
+ */
460
+
461
+
462
+ /**
463
+ * TTS request object passed to generate/generateAsync.
464
+ * @typedef {Object} TtsRequest
465
+ * @property {string} text - Input text to synthesize.
466
+ * @property {number} sid - Speaker id (integer).
467
+ * @property {number} speed - Playback speed (float).
468
+ * @property {boolean} [enableExternalBuffer=true] - Whether to use an external
469
+ * buffer.
470
+ * @property {GenerationConfig=} generationConfig - Optional
471
+ */
472
+
473
+ /**
474
+ * Spoken Language ID whisper config
475
+ * @typedef {Object} SpokenLanguageIdentificationWhisperConfig
476
+ * @property {string} [encoder]
477
+ * @property {string} [decoder]
478
+ * @property {number} [tailPaddings]
479
+ */
480
+
481
+ /**
482
+ * SpokenLanguageIdentification config
483
+ * @typedef {Object} SpokenLanguageIdentificationConfig
484
+ * @property {SpokenLanguageIdentificationWhisperConfig} [whisper]
485
+ * @property {number} [numThreads]
486
+ * @property {boolean|number} [debug]
487
+ * @property {string} [provider]
488
+ */
489
+
490
+ /**
491
+ * Speaker embedding extractor config
492
+ * @typedef {Object} SpeakerEmbeddingExtractorConfig
493
+ * @property {string} [model]
494
+ * @property {number} [numThreads]
495
+ * @property {boolean|number} [debug]
496
+ * @property {string} [provider]
497
+ */
498
+
499
+ /**
500
+ * Offline punctuation model config
501
+ * @typedef {Object} OfflinePunctuationModelConfig
502
+ * @property {string} [ctTransformer]
503
+ * @property {number} [numThreads]
504
+ * @property {boolean|number} [debug]
505
+ * @property {string} [provider]
506
+ */
507
+
508
+ /**
509
+ * Offline punctuation config
510
+ * @typedef {Object} OfflinePunctuationConfig
511
+ * @property {OfflinePunctuationModelConfig} [model]
512
+ */
513
+
514
+ /**
515
+ * Online punctuation model config
516
+ * @typedef {Object} OnlinePunctuationModelConfig
517
+ * @property {string} [cnnBilstm]
518
+ * @property {string} [bpeVocab]
519
+ * @property {number} [numThreads]
520
+ * @property {boolean|number} [debug]
521
+ * @property {string} [provider]
522
+ */
523
+
524
+ /**
525
+ * Online punctuation config
526
+ * @typedef {Object} OnlinePunctuationConfig
527
+ * @property {OnlinePunctuationModelConfig} [model]
528
+ */
529
+
530
+ /**
531
+ * Generic audio processing request used by denoisers/tts generators.
532
+ * @typedef {Object} AudioProcessRequest
533
+ * @property {Float32Array} samples
534
+ * @property {number} sampleRate
535
+ * @property {boolean} [enableExternalBuffer]
536
+ */
537
+
538
+ /**
539
+ * Offline TTS model configs
540
+ * @typedef {Object} OfflineTtsVitsModelConfig
541
+ * @property {string} [model]
542
+ * @property {string} [lexicon]
543
+ * @property {string} [tokens]
544
+ * @property {string} [dataDir] - Deprecated. Ignored. Use lexicon, or
545
+ * phonemeCodepoints or tokens instead.
546
+ * @property {number} [noiseScale]
547
+ * @property {number} [noiseScaleW]
548
+ * @property {number} [lengthScale]
549
+ */
550
+
551
+ /**
552
+ * @typedef {Object} OfflineTtsMatchaModelConfig
553
+ * @property {string} [acousticModel]
554
+ * @property {string} [vocoder]
555
+ * @property {string} [lexicon]
556
+ * @property {string} [tokens]
557
+ * @property {string} [dataDir] - Deprecated. Ignored. Use lexicon, or
558
+ * phonemeCodepoints or tokens instead.
559
+ * @property {number} [noiseScale]
560
+ * @property {number} [lengthScale]
561
+ */
562
+
563
+ /**
564
+ * @typedef {Object} OfflineTtsKokoroModelConfig
565
+ * @property {string} [model]
566
+ * @property {string} [voices]
567
+ * @property {string} [tokens]
568
+ * @property {string} [dataDir] - Deprecated. Ignored. Use lexicon, or
569
+ * phonemeCodepoints or tokens instead.
570
+ * @property {number} [lengthScale]
571
+ * @property {string} [lexicon]
572
+ * @property {string} [lang]
573
+ */
574
+
575
+ /**
576
+ * @typedef {Object} OfflineTtsKittenModelConfig
577
+ * @property {string} [model]
578
+ * @property {string} [voices]
579
+ * @property {string} [tokens]
580
+ * @property {string} [lexicon]
581
+ * @property {string} [dataDir] - Deprecated. Ignored. Use lexicon, or
582
+ * phonemeCodepoints or tokens instead.
583
+ * @property {number} [lengthScale]
584
+ */
585
+
586
+ /**
587
+ * @typedef {Object} OfflineTtsZipvoiceModelConfig
588
+ * @property {string} [tokens]
589
+ * @property {string} [encoder]
590
+ * @property {string} [decoder]
591
+ * @property {string} [vocoder]
592
+ * @property {string} [dataDir] - Deprecated. Ignored. Use lexicon, or
593
+ * phonemeCodepoints or tokens instead.
594
+ * @property {string} [lexicon]
595
+ * @property {number} [featScale]
596
+ * @property {number} [tShift]
597
+ * @property {number} [targetRms]
598
+ * @property {number} [guidanceScale]
599
+ */
600
+
601
+ /**
602
+ * @typedef {Object} OfflineTtsPocketModelConfig
603
+ * @property {string} [lmFlow]
604
+ * @property {string} [lmMain]
605
+ * @property {string} [encoder]
606
+ * @property {string} [decoder]
607
+ * @property {string} [textConditioner]
608
+ * @property {string} [vocabJson]
609
+ * @property {string} [tokenScoresJson]
610
+ * @property {number} [voiceEmbeddingCacheCapacity]
611
+ */
612
+
613
+ /**
614
+ * Offline TTS model config
615
+ * @typedef {Object} OfflineTtsModelConfig
616
+ * @property {OfflineTtsVitsModelConfig} [vits]
617
+ * @property {OfflineTtsMatchaModelConfig} [matcha]
618
+ * @property {OfflineTtsKokoroModelConfig} [kokoro]
619
+ * @property {OfflineTtsKittenModelConfig} [kitten]
620
+ * @property {OfflineTtsZipvoiceModelConfig} [zipvoice]
621
+ * @property {OfflineTtsPocketModelConfig} [pocket]
622
+ */
623
+
624
+ /**
625
+ * Offline TTS configuration (partial, commonly used props).
626
+ * @typedef {Object} OfflineTtsConfig
627
+ * @property {OfflineTtsModelConfig} [model]
628
+ * @property {number} [maxNumSentences]
629
+ * @property {number} [silenceScale]
630
+ * @property {number} [numThreads]
631
+ * @property {string} [provider]
632
+ */
633
+
634
+ /**
635
+ * Offline Speech Denoiser model config
636
+ * @typedef {Object} OfflineSpeechDenoiserGtcrnModelConfig
637
+ * @property {string} [model]
638
+ */
639
+
640
+ /**
641
+ * Offline Speech Denoiser model config
642
+ * @typedef {Object} OfflineSpeechDenoiserDpdfNetModelConfig
643
+ * @property {string} [model]
644
+ * @property {number} [attenuationLimitDb] Offline attenuation limit in dB.
645
+ */
646
+
647
+ /**
648
+ * VoxLock target-speaker voice isolation model config.
649
+ *
650
+ * VoxLock keeps the voice of one speaker (the caller) and removes the other
651
+ * voices. The model is from https://github.com/arbazsiddiqui/voxlock
652
+ *
653
+ * @typedef {Object} OfflineSpeechDenoiserVoxLockModelConfig
654
+ * @property {string} [enrollModel] Path to the enroll model, e.g.,
655
+ * `enroll.onnx`. It runs once on a voice sample of the speaker to keep.
656
+ * @property {string} [chunkModel] Path to the chunk model, e.g., `chunk.onnx`
657
+ * or `chunk_int8.onnx`. It runs on each chunk of the audio.
658
+ * @property {string} [voiceSample] Optional. Path to a wave file with at least
659
+ * 3 seconds of the caller's voice. VoxLock keeps this voice and removes the
660
+ * others. From a longer file, it uses the loudest 3 seconds within the first
661
+ * 30 seconds. A file that is shorter or cannot be read is ignored, as if it
662
+ * were empty. If empty or ignored, the voice sample is taken from the input
663
+ * audio: the offline denoiser uses the loudest 3 seconds in the first 15
664
+ * seconds of the input, and the online denoiser passes the audio through
665
+ * unchanged until 3 seconds of speech have been heard, then uses that
666
+ * speech.
667
+ */
668
+
669
+ /**
670
+ * Offline Speech Denoiser model config
671
+ * @typedef {Object} OfflineSpeechDenoiserModelConfig
672
+ * @property {OfflineSpeechDenoiserGtcrnModelConfig} [gtcrn]
673
+ * @property {OfflineSpeechDenoiserDpdfNetModelConfig} [dpdfnet]
674
+ * @property {OfflineSpeechDenoiserVoxLockModelConfig} [voxlock]
675
+ * @property {number} [numThreads]
676
+ * @property {boolean|number} [debug]
677
+ * @property {string} [provider]
678
+ */
679
+
680
+ /**
681
+ * Offline Speech Denoiser configuration (partial).
682
+ * @typedef {Object} OfflineSpeechDenoiserConfig
683
+ * @property {OfflineSpeechDenoiserModelConfig} [model]
684
+ */
685
+
686
+ /**
687
+ * Online Speech Denoiser configuration (partial).
688
+ * @typedef {Object} OnlineSpeechDenoiserConfig
689
+ * @property {OfflineSpeechDenoiserModelConfig} [model]
690
+ */
691
+
692
+ /**
693
+ * Offline speaker segmentation (pyannote) model config
694
+ * @typedef {Object} OfflineSpeakerSegmentationPyannoteModelConfig
695
+ * @property {string} [model]
696
+ * @property {number} [windowShiftRatio=0.1]
697
+ */
698
+
699
+ /**
700
+ * Offline speaker segmentation model config
701
+ * @typedef {Object} OfflineSpeakerSegmentationModelConfig
702
+ * @property {OfflineSpeakerSegmentationPyannoteModelConfig} [pyannote]
703
+ * @property {number} [numThreads]
704
+ * @property {boolean|number} [debug]
705
+ * @property {string} [provider]
706
+ */
707
+
708
+ /**
709
+ * Offline Speaker Diarization configuration (partial).
710
+ * @typedef {Object} OfflineSpeakerDiarizationConfig
711
+ * @property {OfflineSpeakerSegmentationModelConfig} [segmentation]
712
+ * @property {SpeakerEmbeddingExtractorConfig} [embedding]
713
+ * @property {FastClusteringConfig} [clustering]
714
+ * @property {number} [minDurationOn]
715
+ * @property {number} [minDurationOff]
716
+ */
717
+
718
+ /**
719
+ * Fast clustering configuration used by diarization.
720
+ * @typedef {Object} FastClusteringConfig
721
+ * @property {number} [numClusters]
722
+ * @property {number} [threshold]
723
+ */
724
+
725
+ /**
726
+ * SpeakerEmbeddingManager add-multi flattened object
727
+ * @typedef {Object} SpeakerEmbeddingManagerAddListFlattenedObj
728
+ * @property {string} name
729
+ * @property {Float32Array} vv
730
+ * @property {number} n
731
+ */
732
+
733
+ /**
734
+ * SpeakerEmbeddingManager search object
735
+ * @typedef {Object} SpeakerEmbeddingManagerSearchObj
736
+ * @property {Float32Array} v
737
+ * @property {number} threshold
738
+ */
739
+
740
+ /**
741
+ * SpeakerEmbeddingManager verify object
742
+ * @typedef {Object} SpeakerEmbeddingManagerVerifyObj
743
+ * @property {string} name
744
+ * @property {Float32Array} v
745
+ * @property {number} threshold
746
+ */
747
+
748
+ /**
749
+ * KeywordSpotter config (partial)
750
+ * @typedef {Object} KeywordSpotterConfig
751
+ * @property {FeatureConfig} [featConfig]
752
+ * @property {OfflineModelConfig} [modelConfig]
753
+ * @property {number} [maxActivePaths]
754
+ * @property {number} [numTrailingBlanks]
755
+ * @property {number} [keywordsScore]
756
+ * @property {number} [keywordsThreshold]
757
+ * @property {string} [keywordsFile]
758
+ */
759
+
760
+ /**
761
+ * Offline recognition result returned by `getOfflineStreamResultAsJson`.
762
+ * See `OfflineRecognitionResult::AsJsonString()` in C++ for precise fields.
763
+ * @typedef {Object} OfflineRecognizerResult
764
+ * @property {string} lang
765
+ * @property {string} emotion
766
+ * @property {string} event
767
+ * @property {string} text
768
+ * @property {number[]} timestamps
769
+ * @property {number[]} durations
770
+ * @property {string[]} tokens
771
+ * @property {number[]} ys_log_probs
772
+ * @property {number[]} words
773
+ */
774
+
775
+ /**
776
+ * Online recognition result returned by `getOnlineStreamResultAsJson`.
777
+ * See `OnlineRecognizerResult::AsJsonString()` in C++.
778
+ * @typedef {Object} OnlineRecognizerResult
779
+ * @property {string} text
780
+ * @property {string[]} tokens
781
+ * @property {number[]} timestamps
782
+ * @property {number[]} ys_probs
783
+ * @property {number[]} lm_probs
784
+ * @property {number[]} context_scores
785
+ * @property {number} segment
786
+ * @property {number[]} words
787
+ * @property {number} num_trailing_blanks
788
+ * @property {number} start_time
789
+ * @property {boolean} is_final
790
+ * @property {boolean} is_eof
791
+ */
792
+
793
+ /**
794
+ * Keyword spotter result returned by `getKeywordResultAsJson`.
795
+ * @typedef {Object} KeywordResult
796
+ * @property {number} start_time
797
+ * @property {string} keyword
798
+ * @property {number[]} timestamps
799
+ * @property {string[]} tokens
800
+ */
801
+
802
+ /**
803
+ * Speaker diarization segment returned by `offlineSpeakerDiarizationProcess`.
804
+ * @typedef {Object} SpeakerDiarizationSegment
805
+ * @property {number} start - start time in seconds
806
+ * @property {number} end - end time in seconds
807
+ * @property {number} speaker - speaker id (integer)
808
+ */
809
+
810
+ /**
811
+ * Speaker embedding entry used by SpeakerEmbeddingManager.add
812
+ * @typedef {Object} SpeakerEmbeddingEntry
813
+ * @property {string} name - speaker name
814
+ * @property {Float32Array} v - embedding vector
815
+ */
816
+
817
+ /**
818
+ * @typedef {Object} OfflineStreamObject
819
+ * @property {OfflineStreamHandle} handle
820
+ */
821
+
822
+ /**
823
+ * @typedef {Object} OnlineStreamObject
824
+ * @property {OnlineStreamHandle} handle
825
+ */
826
+
827
+ /**
828
+ * @typedef {Object} DisplayObject
829
+ * @property {DisplayHandle} handle
830
+ */
831
+
832
+ // Export typedefs so they can be referenced by require('./types.js')
833
+ module.exports = {};