@ohm_studio/sdk-core 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { AudioExtractInput, AudioExtractResult, AudioTranscribeInput, AudioTranscribeResult, ExtractInput, ExtractResult, InsightsInput, InsightsResult, OHMClientOptions, SummarizeInput, SummarizeResult, UsageEvent } from "./types";
1
+ import type { AudioExtractInput, AudioExtractResult, AudioTranscribeInput, AudioTranscribeResult, ExtractInput, ExtractResult, InsightsInput, InsightsResult, OHMClientOptions, OHMInit, StreamChunk, SummarizeInput, SummarizeResult, UsageEvent } from "./types";
2
2
  /**
3
3
  * Platform-agnostic core client. Subclasses (sdk-js, sdk-react-native)
4
4
  * supply the platform-specific multipart/audio adapter via the `attachAudio`
@@ -12,13 +12,35 @@ export declare abstract class OHMCoreClient {
12
12
  protected readonly maxRetries: number;
13
13
  protected readonly fetchImpl: typeof fetch;
14
14
  protected readonly onUsage?: (e: UsageEvent) => void;
15
- constructor(opts: OHMClientOptions);
15
+ protected readonly _mock: boolean;
16
+ protected readonly _mockResponses?: OHMClientOptions["mockResponses"];
17
+ constructor(init: OHMInit);
16
18
  /** Audio surface — subclasses fill in the multipart adapter. */
17
19
  audio: {
18
20
  transcribe: (input: AudioTranscribeInput) => Promise<AudioTranscribeResult>;
19
21
  extract: <T = Record<string, unknown>>(input: AudioExtractInput) => Promise<AudioExtractResult<T>>;
22
+ /**
23
+ * Streaming variant of audio.extract — returns an AsyncIterable of
24
+ * StreamChunk events so UI can update transcript-then-fields as each
25
+ * step finishes. Backend uses Server-Sent Events.
26
+ *
27
+ * @example
28
+ * const stream = ohm.audio.extract.stream({ apiSlug, file });
29
+ * for await (const chunk of stream) {
30
+ * if (chunk.type === "transcript") setT(chunk.transcript);
31
+ * if (chunk.type === "data") setData(chunk.data);
32
+ * if (chunk.type === "error") throw new Error(chunk.message);
33
+ * }
34
+ */
35
+ extractStream: <T = Record<string, unknown>>(input: AudioExtractInput) => AsyncIterable<StreamChunk<T>>;
20
36
  };
21
37
  extract<T = Record<string, unknown>>(input: ExtractInput): Promise<ExtractResult<T>>;
38
+ /**
39
+ * One-line convenience: pass a transcript, get back the data field.
40
+ * Equivalent to `(await ohm.extract({ apiSlug, text })).data` — the most
41
+ * common shape customers want.
42
+ */
43
+ extractData<T = Record<string, unknown>>(apiSlug: string, text: string, inputs?: Record<string, unknown>): Promise<T>;
22
44
  summarize(input: SummarizeInput): Promise<SummarizeResult>;
23
45
  insights<T = unknown>(input: InsightsInput): Promise<InsightsResult<T>>;
24
46
  protected requestJson<T>(method: string, path: string, body?: unknown): Promise<T>;
@@ -27,6 +49,30 @@ export declare abstract class OHMCoreClient {
27
49
  file: any;
28
50
  fields?: Record<string, string>;
29
51
  }): Promise<T>;
52
+ /**
53
+ * Default SSE-based streaming for audio.extract.stream. Subclasses
54
+ * override `runMultipart` to construct the FormData body for their
55
+ * platform; this method reuses that body and parses an SSE event stream
56
+ * off the response.
57
+ *
58
+ * Each SSE message is a JSON object matching `StreamChunk`. The stream
59
+ * ends on the first `done` or `error` chunk (or when the response body
60
+ * closes). Errors during transport are surfaced as a synthetic
61
+ * `{ type: "error", message }` chunk so consumers always see one final
62
+ * frame.
63
+ */
64
+ protected runMultipartStream<T>(opts: {
65
+ path: string;
66
+ file: any;
67
+ fields?: Record<string, string>;
68
+ }): AsyncGenerator<StreamChunk<T>>;
69
+ /**
70
+ * Builds a `FormData` (web/Node) or RN-shaped FormData. Subclasses
71
+ * already do this inside `runMultipart`; the streaming path needs the
72
+ * same logic. Default implementation throws — overrides should
73
+ * implement.
74
+ */
75
+ protected buildMultipartBody(_file: unknown, _fields?: Record<string, string>): Promise<unknown>;
30
76
  protected requestRaw<T>(method: string, path: string, init: RequestInit): Promise<T>;
31
77
  private parseError;
32
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AAMjB;;;;GAIG;AACH,8BAAsB,aAAa;IACjC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;gBAEzC,IAAI,EAAE,gBAAgB;IAelC,gEAAgE;IAChE,KAAK;4BACiB,oBAAoB;kBAM9B,CAAC,mCAAmC,iBAAiB;MAS/D;IAEI,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAYtB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAQ1D,QAAQ,CAAC,CAAC,GAAG,OAAO,EACxB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;cAab,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAOb,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,GAAG,CAAC;QACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,GAAG,OAAO,CAAC,CAAC,CAAC;cAEE,UAAU,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,CAAC,CAAC;YA4DC,UAAU;CAkCzB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,cAAc,EACd,eAAe,EACf,UAAU,EACX,MAAM,SAAS,CAAC;AAOjB;;;;GAIG;AACH,8BAAsB,aAAa;IACjC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,gBAAgB,CAAC,eAAe,CAAC,CAAC;gBAE1D,IAAI,EAAE,OAAO;IAyBzB,gEAAgE;IAChE,KAAK;4BACiB,oBAAoB,KAAG,OAAO,CAAC,qBAAqB,CAAC;kBAa/D,CAAC,mCACF,iBAAiB,KACvB,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAgBjC;;;;;;;;;;;;WAYG;wBACa,CAAC,mCACR,iBAAiB,KACvB,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;MAiBhC;IAEI,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAe5B;;;;OAIG;IACG,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC3C,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,CAAC,CAAC;IAKP,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAS1D,QAAQ,CAAC,CAAC,GAAG,OAAO,EACxB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;cAcb,WAAW,CAAC,CAAC,EAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,OAAO,GACb,OAAO,CAAC,CAAC,CAAC;IAOb,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE;QACvC,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,GAAG,CAAC;QACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,GAAG,OAAO,CAAC,CAAC,CAAC;IAEd;;;;;;;;;;;OAWG;cACc,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE;QAC3C,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,GAAG,CAAC;QACV,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACjC,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IA4DlC;;;;;OAKG;IACH,SAAS,CAAC,kBAAkB,CAC1B,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,OAAO,CAAC,OAAO,CAAC;cAOH,UAAU,CAAC,CAAC,EAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,CAAC,CAAC;YA4DC,UAAU;CAkCzB"}
package/dist/client.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { OHMAuthError, OHMConfigError, OHMError, OHMRateLimitError, OHMServerError, OHMValidationError, } from "./errors";
2
2
  import { backoffMs, isRetriableStatus } from "./retry";
3
+ import { mockResponseFor } from "./mock";
3
4
  const DEFAULT_BASE_URL = "https://api.ohm.doctor";
4
5
  const DEFAULT_TIMEOUT_MS = 60_000;
5
6
  const DEFAULT_MAX_RETRIES = 2;
@@ -16,10 +17,17 @@ export class OHMCoreClient {
16
17
  maxRetries;
17
18
  fetchImpl;
18
19
  onUsage;
19
- constructor(opts) {
20
- if (!opts.apiKey && !opts.jwt) {
20
+ _mock;
21
+ _mockResponses;
22
+ constructor(init) {
23
+ // Accept either a bare `ohms_live_…` string (`new OHM("…")`) or the
24
+ // full options object. Most customers want the one-liner.
25
+ const opts = typeof init === "string" ? { apiKey: init } : init;
26
+ // In mock mode the client doesn't need real auth — let tests construct
27
+ // freely. In normal mode at least one of apiKey/jwt is required.
28
+ if (!opts.mock && !opts.apiKey && !opts.jwt) {
21
29
  throw new OHMConfigError({
22
- message: "OHM client requires either `apiKey` or `jwt`",
30
+ message: "OHM client requires an apiKey. Pass it as `new OHM('ohms_live_…')` or `new OHM({ apiKey: '…' })`.",
23
31
  });
24
32
  }
25
33
  this.baseUrl = (opts.baseUrl || DEFAULT_BASE_URL).replace(/\/+$/, "");
@@ -29,34 +37,93 @@ export class OHMCoreClient {
29
37
  this.maxRetries = opts.maxRetries ?? DEFAULT_MAX_RETRIES;
30
38
  this.fetchImpl = opts.fetch ?? globalThis.fetch.bind(globalThis);
31
39
  this.onUsage = opts.onUsage;
40
+ this._mock = !!opts.mock;
41
+ this._mockResponses = opts.mockResponses;
32
42
  }
33
43
  /** Audio surface — subclasses fill in the multipart adapter. */
34
44
  audio = {
35
- transcribe: (input) => this.runMultipart({
36
- path: "/api/studio/v1/audio/transcribe",
37
- file: input.file,
38
- fields: input.language ? { language: input.language } : undefined,
39
- }),
40
- extract: (input) => this.runMultipart({
41
- path: `/api/studio/v1/audio/extract/${encodeURIComponent(input.apiSlug)}`,
42
- file: input.file,
43
- fields: {
44
- ...(input.language ? { language: input.language } : {}),
45
- ...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
46
- },
47
- }),
45
+ transcribe: (input) => {
46
+ if (this._mock) {
47
+ return Promise.resolve(mockResponseFor.transcribe(this._mockResponses));
48
+ }
49
+ return this.runMultipart({
50
+ path: "/api/studio/v1/audio/transcribe",
51
+ file: input.file,
52
+ fields: {
53
+ ...(input.language ? { language: input.language } : {}),
54
+ ...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
55
+ },
56
+ });
57
+ },
58
+ extract: (input) => {
59
+ if (this._mock) {
60
+ return Promise.resolve(mockResponseFor.audioExtract(input.apiSlug, this._mockResponses));
61
+ }
62
+ return this.runMultipart({
63
+ path: `/api/studio/v1/audio/extract/${encodeURIComponent(input.apiSlug)}`,
64
+ file: input.file,
65
+ fields: {
66
+ ...(input.language ? { language: input.language } : {}),
67
+ ...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
68
+ ...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
69
+ },
70
+ });
71
+ },
72
+ /**
73
+ * Streaming variant of audio.extract — returns an AsyncIterable of
74
+ * StreamChunk events so UI can update transcript-then-fields as each
75
+ * step finishes. Backend uses Server-Sent Events.
76
+ *
77
+ * @example
78
+ * const stream = ohm.audio.extract.stream({ apiSlug, file });
79
+ * for await (const chunk of stream) {
80
+ * if (chunk.type === "transcript") setT(chunk.transcript);
81
+ * if (chunk.type === "data") setData(chunk.data);
82
+ * if (chunk.type === "error") throw new Error(chunk.message);
83
+ * }
84
+ */
85
+ extractStream: (input) => {
86
+ if (this._mock) {
87
+ return mockResponseFor.audioExtractStream(input.apiSlug, this._mockResponses);
88
+ }
89
+ return this.runMultipartStream({
90
+ path: `/api/studio/v1/audio/extract/${encodeURIComponent(input.apiSlug)}/stream`,
91
+ file: input.file,
92
+ fields: {
93
+ ...(input.language ? { language: input.language } : {}),
94
+ ...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
95
+ ...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
96
+ },
97
+ });
98
+ },
48
99
  };
49
100
  async extract(input) {
101
+ if (this._mock) {
102
+ return mockResponseFor.extract(input.apiSlug, this._mockResponses);
103
+ }
50
104
  return this.requestJson("POST", `/api/studio/v1/extract/${encodeURIComponent(input.apiSlug)}`, {
51
105
  text: input.text,
52
106
  inputs: input.inputs,
53
107
  includeInsights: input.includeInsights,
54
108
  });
55
109
  }
110
+ /**
111
+ * One-line convenience: pass a transcript, get back the data field.
112
+ * Equivalent to `(await ohm.extract({ apiSlug, text })).data` — the most
113
+ * common shape customers want.
114
+ */
115
+ async extractData(apiSlug, text, inputs) {
116
+ const r = await this.extract({ apiSlug, text, inputs });
117
+ return r.data;
118
+ }
56
119
  async summarize(input) {
120
+ if (this._mock)
121
+ return mockResponseFor.summarize(this._mockResponses);
57
122
  return this.requestJson("POST", "/api/studio/v1/summarize", input);
58
123
  }
59
124
  async insights(input) {
125
+ if (this._mock)
126
+ return mockResponseFor.insights(this._mockResponses);
60
127
  return this.requestJson("POST", `/api/studio/v1/insights/${encodeURIComponent(input.apiSlug)}`, {
61
128
  transcript: input.transcript,
62
129
  priorNoteSummary: input.priorNoteSummary,
@@ -69,6 +136,93 @@ export class OHMCoreClient {
69
136
  body: body !== undefined ? JSON.stringify(body) : undefined,
70
137
  });
71
138
  }
139
+ /**
140
+ * Default SSE-based streaming for audio.extract.stream. Subclasses
141
+ * override `runMultipart` to construct the FormData body for their
142
+ * platform; this method reuses that body and parses an SSE event stream
143
+ * off the response.
144
+ *
145
+ * Each SSE message is a JSON object matching `StreamChunk`. The stream
146
+ * ends on the first `done` or `error` chunk (or when the response body
147
+ * closes). Errors during transport are surfaced as a synthetic
148
+ * `{ type: "error", message }` chunk so consumers always see one final
149
+ * frame.
150
+ */
151
+ async *runMultipartStream(opts) {
152
+ const url = `${this.baseUrl}${opts.path}`;
153
+ const headers = { Accept: "text/event-stream" };
154
+ if (this.apiKey)
155
+ headers.Authorization = `Bearer ${this.apiKey}`;
156
+ else if (this.jwt)
157
+ headers.Authorization = `Bearer ${this.jwt}`;
158
+ headers["X-OHM-Client"] = "@ohm_studio/sdk@0.2.0";
159
+ const body = (await this.buildMultipartBody(opts.file, opts.fields));
160
+ let res;
161
+ try {
162
+ res = await this.fetchImpl(url, { method: "POST", headers, body });
163
+ }
164
+ catch (err) {
165
+ yield { type: "error", message: err?.message || "network error" };
166
+ return;
167
+ }
168
+ if (!res.ok || !res.body) {
169
+ yield {
170
+ type: "error",
171
+ message: `HTTP ${res.status}`,
172
+ code: String(res.status),
173
+ };
174
+ return;
175
+ }
176
+ const reader = res.body.getReader();
177
+ const decoder = new TextDecoder();
178
+ let buf = "";
179
+ try {
180
+ while (true) {
181
+ const { value, done } = await reader.read();
182
+ if (done)
183
+ break;
184
+ buf += decoder.decode(value, { stream: true });
185
+ // SSE messages are separated by blank lines. Each message can have
186
+ // multiple `data:` fields; we concatenate them.
187
+ let sep;
188
+ while ((sep = buf.indexOf("\n\n")) !== -1) {
189
+ const block = buf.slice(0, sep);
190
+ buf = buf.slice(sep + 2);
191
+ const dataLines = block
192
+ .split(/\r?\n/)
193
+ .filter((l) => l.startsWith("data:"))
194
+ .map((l) => l.slice(5).trimStart());
195
+ if (dataLines.length === 0)
196
+ continue;
197
+ const payload = dataLines.join("\n");
198
+ try {
199
+ const parsed = JSON.parse(payload);
200
+ yield parsed;
201
+ if (parsed.type === "done" || parsed.type === "error")
202
+ return;
203
+ }
204
+ catch {
205
+ yield { type: "error", message: "malformed stream event" };
206
+ return;
207
+ }
208
+ }
209
+ }
210
+ }
211
+ catch (err) {
212
+ yield { type: "error", message: err?.message || "stream broken" };
213
+ }
214
+ }
215
+ /**
216
+ * Builds a `FormData` (web/Node) or RN-shaped FormData. Subclasses
217
+ * already do this inside `runMultipart`; the streaming path needs the
218
+ * same logic. Default implementation throws — overrides should
219
+ * implement.
220
+ */
221
+ buildMultipartBody(_file, _fields) {
222
+ throw new OHMConfigError({
223
+ message: "Streaming requires the SDK wrapper to implement buildMultipartBody",
224
+ });
225
+ }
72
226
  async requestRaw(method, path, init) {
73
227
  const url = `${this.baseUrl}${path}`;
74
228
  const headers = new Headers(init.headers || {});
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,4 +11,5 @@ export * from "./types";
11
11
  export * from "./errors";
12
12
  export * from "./client";
13
13
  export * from "./retry";
14
+ export * from "./languages";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -11,4 +11,5 @@ export * from "./types";
11
11
  export * from "./errors";
12
12
  export * from "./client";
13
13
  export * from "./retry";
14
+ export * from "./languages";
14
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Languages OHM's transcription pipeline accepts. Use this in pickers
3
+ * instead of hard-coding the list — we bump it as the pipeline gains
4
+ * coverage.
5
+ *
6
+ * import { SUPPORTED_LANGUAGES } from "@ohm_studio/sdk";
7
+ *
8
+ * <select onChange={(e) => setLang(e.target.value)}>
9
+ * {SUPPORTED_LANGUAGES.map((l) => (
10
+ * <option key={l.code} value={l.code}>{l.label}</option>
11
+ * ))}
12
+ * </select>
13
+ *
14
+ * Codes accepted by the API:
15
+ * - "auto" — let the model detect the language
16
+ * - ISO short codes — "en", "hi", "ta", …
17
+ * - Provider-shaped codes — "en-IN", "hi-IN", …
18
+ *
19
+ * Pass any of these as `audio.transcribe({ language })` or
20
+ * `audio.extract({ language })`.
21
+ */
22
+ export interface SupportedLanguage {
23
+ /** Stable code to send to the API. */
24
+ code: string;
25
+ /** Human-readable name for pickers. */
26
+ label: string;
27
+ /** Native script name (for bilingual UIs). */
28
+ nativeLabel?: string;
29
+ /** Whether this is the auto-detect placeholder. */
30
+ isAutoDetect?: boolean;
31
+ }
32
+ export declare const SUPPORTED_LANGUAGES: readonly SupportedLanguage[];
33
+ /**
34
+ * Returns true if `code` is one this SDK accepts. Use to validate
35
+ * user-supplied language codes before submitting.
36
+ */
37
+ export declare function isSupportedLanguageCode(code: string): boolean;
38
+ /**
39
+ * The two speaker modes accepted by `audio.extract` / `audio.transcribe`.
40
+ * Use this in pickers — there are exactly two intended modes; we don't
41
+ * expose multi-speaker variants.
42
+ */
43
+ export interface SpeakerModeChoice {
44
+ code: "doctor" | "doctor_patient";
45
+ label: string;
46
+ description: string;
47
+ }
48
+ export declare const SPEAKER_MODES: readonly SpeakerModeChoice[];
49
+ //# sourceMappingURL=languages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAyBlD,CAAC;AAEX;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,gBAAgB,CAAC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,iBAAiB,EAa5C,CAAC"}
@@ -0,0 +1,46 @@
1
+ export const SUPPORTED_LANGUAGES = [
2
+ { code: "auto", label: "Auto-detect", isAutoDetect: true },
3
+ { code: "en", label: "English (India)", nativeLabel: "English" },
4
+ { code: "hi", label: "Hindi", nativeLabel: "हिन्दी" },
5
+ { code: "ta", label: "Tamil", nativeLabel: "தமிழ்" },
6
+ { code: "te", label: "Telugu", nativeLabel: "తెలుగు" },
7
+ { code: "mr", label: "Marathi", nativeLabel: "मराठी" },
8
+ { code: "bn", label: "Bengali", nativeLabel: "বাংলা" },
9
+ { code: "kn", label: "Kannada", nativeLabel: "ಕನ್ನಡ" },
10
+ { code: "ml", label: "Malayalam", nativeLabel: "മലയാളം" },
11
+ { code: "gu", label: "Gujarati", nativeLabel: "ગુજરાતી" },
12
+ { code: "pa", label: "Punjabi", nativeLabel: "ਪੰਜਾਬੀ" },
13
+ { code: "ur", label: "Urdu", nativeLabel: "اردو" },
14
+ { code: "or", label: "Odia", nativeLabel: "ଓଡ଼ିଆ" },
15
+ { code: "as", label: "Assamese", nativeLabel: "অসমীয়া" },
16
+ { code: "ne", label: "Nepali", nativeLabel: "नेपाली" },
17
+ { code: "kok", label: "Konkani", nativeLabel: "कोंकणी" },
18
+ { code: "ks", label: "Kashmiri", nativeLabel: "कॉशुर" },
19
+ { code: "sd", label: "Sindhi", nativeLabel: "سنڌي" },
20
+ { code: "sa", label: "Sanskrit", nativeLabel: "संस्कृत" },
21
+ { code: "sat", label: "Santali", nativeLabel: "ᱥᱟᱱᱛᱟᱲᱤ" },
22
+ { code: "mni", label: "Manipuri", nativeLabel: "ꯃꯩꯇꯩꯂꯣꯟ" },
23
+ { code: "brx", label: "Bodo", nativeLabel: "बड़ो" },
24
+ { code: "mai", label: "Maithili", nativeLabel: "मैथिली" },
25
+ { code: "doi", label: "Dogri", nativeLabel: "डोगरी" },
26
+ ];
27
+ /**
28
+ * Returns true if `code` is one this SDK accepts. Use to validate
29
+ * user-supplied language codes before submitting.
30
+ */
31
+ export function isSupportedLanguageCode(code) {
32
+ return SUPPORTED_LANGUAGES.some((l) => l.code === code);
33
+ }
34
+ export const SPEAKER_MODES = [
35
+ {
36
+ code: "doctor",
37
+ label: "Doctor only",
38
+ description: "Single-speaker dictation. Use for nurse-station vitals, dictated notes, ward rounds — anywhere only the clinician speaks into the mic.",
39
+ },
40
+ {
41
+ code: "doctor_patient",
42
+ label: "Doctor + Patient",
43
+ description: "Two-speaker conversation. Hints the extractor to attribute history to the patient and assessment / plan to the doctor.",
44
+ },
45
+ ];
46
+ //# sourceMappingURL=languages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"languages.js","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"AAgCA,MAAM,CAAC,MAAM,mBAAmB,GAAiC;IAC/D,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE;IAC1D,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE;IAChE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE;IACrD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;IACpD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;IACtD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE;IACtD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE;IACtD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE;IACtD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE;IACzD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;IACzD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE;IACvD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IAClD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE;IACnD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;IACzD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE;IACtD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE;IACxD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE;IACvD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;IACpD,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;IACzD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE;IACzD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE;IAC1D,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE;IACnD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE;IACzD,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE;CAC7C,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC1D,CAAC;AAaD,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD;QACE,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,wIAAwI;KAC3I;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,wHAAwH;KAC3H;CACO,CAAC"}
package/dist/mock.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import type { AudioExtractResult, AudioTranscribeResult, ExtractResult, InsightsResult, OHMClientOptions, StreamChunk, SummarizeResult } from "./types";
2
+ export declare const mockResponseFor: {
3
+ extract<T = Record<string, unknown>>(apiSlug: string, overrides?: OHMClientOptions["mockResponses"]): ExtractResult<T>;
4
+ transcribe(overrides?: OHMClientOptions["mockResponses"]): AudioTranscribeResult;
5
+ audioExtract<T = Record<string, unknown>>(apiSlug: string, overrides?: OHMClientOptions["mockResponses"]): AudioExtractResult<T>;
6
+ summarize(overrides?: OHMClientOptions["mockResponses"]): SummarizeResult;
7
+ insights<T = unknown>(overrides?: OHMClientOptions["mockResponses"]): InsightsResult<T>;
8
+ /** Async iterator that emits the canned stream chunks for tests. */
9
+ audioExtractStream<T = Record<string, unknown>>(apiSlug: string, overrides?: OHMClientOptions["mockResponses"]): AsyncGenerator<StreamChunk<T>>;
10
+ };
11
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EAChB,MAAM,SAAS,CAAC;AA+BjB,eAAO,MAAM,eAAe;YAClB,CAAC,qCACE,MAAM,cACH,gBAAgB,CAAC,eAAe,CAAC,GAC5C,aAAa,CAAC,CAAC,CAAC;2BAQL,gBAAgB,CAAC,eAAe,CAAC,GAC5C,qBAAqB;iBASX,CAAC,qCACH,MAAM,cACH,gBAAgB,CAAC,eAAe,CAAC,GAC5C,kBAAkB,CAAC,CAAC,CAAC;0BASV,gBAAgB,CAAC,eAAe,CAAC,GAC5C,eAAe;aAQT,CAAC,wBACI,gBAAgB,CAAC,eAAe,CAAC,GAC5C,cAAc,CAAC,CAAC,CAAC;IAUpB,oEAAoE;uBAC1C,CAAC,qCAChB,MAAM,cACH,gBAAgB,CAAC,eAAe,CAAC,GAC5C,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAOlC,CAAC"}
package/dist/mock.js ADDED
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Deterministic mock responses used when `new OHM({ mock: true })`. Output
3
+ * is realistic enough for UI snapshots + integration tests without ever
4
+ * hitting the network. Customers can override per-method via `mockResponses`.
5
+ */
6
+ const SAMPLE_DATA = {
7
+ vitals: {
8
+ bp: { systolic: 130, diastolic: 85 },
9
+ hr: 92,
10
+ temp: 38.6,
11
+ spo2: 97,
12
+ },
13
+ diagnoses: [{ name: "Fever", status: "active" }],
14
+ medications: [
15
+ {
16
+ name: "Paracetamol",
17
+ dosage: "650mg",
18
+ frequency: "TDS",
19
+ duration: "5 days",
20
+ },
21
+ ],
22
+ };
23
+ const SAMPLE_TRANSCRIPT = "Patient is a 35-year-old male presenting with fever for 3 days. " +
24
+ "Blood pressure is 130 over 85, heart rate 92, temperature 38.6 Celsius. " +
25
+ "Started on Paracetamol 650mg three times a day for 5 days.";
26
+ export const mockResponseFor = {
27
+ extract(apiSlug, overrides) {
28
+ return overrides?.extract ?? {
29
+ data: SAMPLE_DATA,
30
+ apiSlug,
31
+ version: "mock@v0",
32
+ };
33
+ },
34
+ transcribe(overrides) {
35
+ return (overrides?.transcribe ?? {
36
+ transcript: SAMPLE_TRANSCRIPT,
37
+ language: "en",
38
+ durationSec: 28,
39
+ });
40
+ },
41
+ audioExtract(apiSlug, overrides) {
42
+ return overrides?.audioExtract ?? {
43
+ transcript: SAMPLE_TRANSCRIPT,
44
+ language: "en",
45
+ data: SAMPLE_DATA,
46
+ apiSlug,
47
+ };
48
+ },
49
+ summarize(overrides) {
50
+ return (overrides?.summarize ?? {
51
+ summary: "- 35-year-old male, fever 3 days\n- BP 130/85, HR 92, temp 38.6°C\n- Started on Paracetamol 650mg TDS",
52
+ });
53
+ },
54
+ insights(overrides) {
55
+ return (overrides?.insights ?? ({
56
+ insights: {
57
+ riskFactors: ["fever > 3 days"],
58
+ differentials: ["Viral fever", "Dengue"],
59
+ },
60
+ }));
61
+ },
62
+ /** Async iterator that emits the canned stream chunks for tests. */
63
+ async *audioExtractStream(apiSlug, overrides) {
64
+ const t = this.transcribe(overrides);
65
+ yield { type: "transcript", transcript: t.transcript, language: t.language };
66
+ const d = this.audioExtract(apiSlug, overrides);
67
+ yield { type: "data", data: d.data, apiSlug };
68
+ yield { type: "done", latencyMs: 42 };
69
+ },
70
+ };
71
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../src/mock.ts"],"names":[],"mappings":"AAUA;;;;GAIG;AAEH,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE;QACN,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;QACpC,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,EAAE;KACT;IACD,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAiB,EAAE,CAAC;IACzD,WAAW,EAAE;QACX;YACE,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,OAAO;YACf,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,QAAQ;SACnB;KACF;CACF,CAAC;AAEF,MAAM,iBAAiB,GACrB,kEAAkE;IAClE,0EAA0E;IAC1E,4DAA4D,CAAC;AAE/D,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,CACL,OAAe,EACf,SAA6C;QAE7C,OAAQ,SAAS,EAAE,OAA4B,IAAI;YACjD,IAAI,EAAE,WAA2B;YACjC,OAAO;YACP,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;IACD,UAAU,CACR,SAA6C;QAE7C,OAAO,CACL,SAAS,EAAE,UAAU,IAAI;YACvB,UAAU,EAAE,iBAAiB;YAC7B,QAAQ,EAAE,IAAI;YACd,WAAW,EAAE,EAAE;SAChB,CACF,CAAC;IACJ,CAAC;IACD,YAAY,CACV,OAAe,EACf,SAA6C;QAE7C,OAAQ,SAAS,EAAE,YAAsC,IAAI;YAC3D,UAAU,EAAE,iBAAiB;YAC7B,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,WAA2B;YACjC,OAAO;SACR,CAAC;IACJ,CAAC;IACD,SAAS,CACP,SAA6C;QAE7C,OAAO,CACL,SAAS,EAAE,SAAS,IAAI;YACtB,OAAO,EACL,uGAAuG;SAC1G,CACF,CAAC;IACJ,CAAC;IACD,QAAQ,CACN,SAA6C;QAE7C,OAAO,CACJ,SAAS,EAAE,QAA8B,IAAI,CAAC;YAC7C,QAAQ,EAAE;gBACR,WAAW,EAAE,CAAC,gBAAgB,CAAC;gBAC/B,aAAa,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC;aACzB;SAClB,CAAC,CACH,CAAC;IACJ,CAAC;IACD,oEAAoE;IACpE,KAAK,CAAC,CAAC,kBAAkB,CACvB,OAAe,EACf,SAA6C;QAE7C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC7E,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,CAAI,OAAO,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ export type paths = Record<string, unknown>;
2
+ export type components = {
3
+ schemas: Record<string, unknown>;
4
+ };
5
+ //# sourceMappingURL=openapi.gen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.gen.d.ts","sourceRoot":"","sources":["../src/openapi.gen.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,MAAM,MAAM,UAAU,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Placeholder — replaced on `pnpm --filter @ohm_studio/sdk-core run gen`
2
+ // once a live OHM Studio API is reachable. Until then the SDK uses the
3
+ // hand-written types in ./types.ts; the generated file augments them.
4
+ export {};
5
+ //# sourceMappingURL=openapi.gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi.gen.js","sourceRoot":"","sources":["../src/openapi.gen.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,uEAAuE;AACvE,sEAAsE"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,10 @@
1
+ /**
2
+ * Anything you can pass to `new OHM(...)`.
3
+ *
4
+ * new OHM("ohms_live_…") // bare-string shortcut
5
+ * new OHM({ apiKey: "ohms_live_…" }) // full options object
6
+ */
7
+ export type OHMInit = string | OHMClientOptions;
1
8
  /** Public option bag for the OHM client. */
2
9
  export interface OHMClientOptions {
3
10
  /** API key issued from the Studio Keys page. */
@@ -22,6 +29,28 @@ export interface OHMClientOptions {
22
29
  * runtime. Documented at docs.ohm.doctor/security/rn-key-handling.
23
30
  */
24
31
  acknowledgeBundledKey?: boolean;
32
+ /**
33
+ * Mock mode. When true, every method returns deterministic canned data
34
+ * without hitting the network. Use this in unit tests or local
35
+ * preview builds where you don't want to debit a real key.
36
+ *
37
+ * @example
38
+ * const ohm = new OHM({ apiKey: "test", mock: true });
39
+ * const { data } = await ohm.extract({ apiSlug: "x", text: "..." });
40
+ * // data is a stub matching ExtractResult shape
41
+ */
42
+ mock?: boolean;
43
+ /**
44
+ * Override the canned mock responses for specific methods. Only consulted
45
+ * when `mock: true`. Useful for golden-path test fixtures.
46
+ */
47
+ mockResponses?: Partial<{
48
+ extract: ExtractResult;
49
+ transcribe: AudioTranscribeResult;
50
+ audioExtract: AudioExtractResult;
51
+ summarize: SummarizeResult;
52
+ insights: InsightsResult;
53
+ }>;
25
54
  }
26
55
  export interface UsageEvent {
27
56
  endpoint: string;
@@ -43,15 +72,29 @@ export interface ExtractResult<T = Record<string, unknown>> {
43
72
  version?: string;
44
73
  insights?: unknown;
45
74
  }
75
+ /**
76
+ * Who is speaking on the recording. The two supported modes:
77
+ *
78
+ * - "doctor" (default) — single-speaker dictation. Fastest, cleanest.
79
+ * Use for nurse-station vitals, dictated notes, ward rounds where
80
+ * only the clinician speaks into the mic.
81
+ * - "doctor_patient" — two-speaker conversation. Hints the extractor
82
+ * to attribute history-of-illness to the patient and assessment /
83
+ * plan to the doctor. Use for full visit recordings.
84
+ */
85
+ export type SpeakerMode = "doctor" | "doctor_patient";
46
86
  export interface AudioTranscribeInput {
47
87
  /** Platform-specific file shape resolved by the wrapper. */
48
88
  file: any;
49
89
  language?: string;
90
+ /** Defaults to "doctor". */
91
+ speakerMode?: SpeakerMode;
50
92
  }
51
93
  export interface AudioTranscribeResult {
52
94
  transcript: string;
53
95
  language?: string;
54
96
  durationSec?: number;
97
+ speakerMode?: SpeakerMode;
55
98
  }
56
99
  export interface AudioExtractInput extends AudioTranscribeInput {
57
100
  apiSlug: string;
@@ -78,4 +121,28 @@ export interface InsightsInput {
78
121
  export interface InsightsResult<T = unknown> {
79
122
  insights: T;
80
123
  }
124
+ /**
125
+ * Streaming chunk emitted by `ohm.audio.extract.stream(...)`.
126
+ * Server emits, in order:
127
+ * 1. `transcript` — STT finished, transcript available
128
+ * 2. `data` — extraction finished, structured JSON available
129
+ * 3. `done` — stream complete (always last)
130
+ * `error` — surfaced if any step fails; consumer should break
131
+ */
132
+ export type StreamChunk<T = Record<string, unknown>> = {
133
+ type: "transcript";
134
+ transcript: string;
135
+ language?: string;
136
+ } | {
137
+ type: "data";
138
+ data: T;
139
+ apiSlug: string;
140
+ } | {
141
+ type: "done";
142
+ latencyMs: number;
143
+ } | {
144
+ type: "error";
145
+ message: string;
146
+ code?: string;
147
+ };
81
148
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC7D,SAAQ,qBAAqB;IAC7B,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,eAAe,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,OAAO;IACzC,QAAQ,EAAE,CAAC,CAAC;CACb"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohm_studio/sdk-core",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Shared core for @ohm/sdk and @ohm/sdk-react-native — http client, types, errors, retry, streaming. Use one of the platform wrappers instead of consuming this directly.",
5
5
  "license": "MIT",
6
6
  "publishConfig": {
@@ -25,11 +25,14 @@
25
25
  "files": [
26
26
  "dist"
27
27
  ],
28
+ "scripts": {
29
+ "clean": "rm -rf dist",
30
+ "build": "rm -rf dist && tsc -p tsconfig.json",
31
+ "typecheck": "tsc -p tsconfig.json --noEmit",
32
+ "gen": "node scripts/generate-types.mjs"
33
+ },
28
34
  "devDependencies": {
35
+ "openapi-typescript": "^7.13.0",
29
36
  "typescript": "^5.8.3"
30
- },
31
- "scripts": {
32
- "build": "tsc -p tsconfig.json",
33
- "typecheck": "tsc -p tsconfig.json --noEmit"
34
37
  }
35
- }
38
+ }