@ohm_studio/sdk-core 0.3.3 → 0.4.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 +134 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +186 -15
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +16 -0
- package/dist/errors.js.map +1 -1
- package/dist/types.d.ts +45 -4
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { AudioExtractInput, AudioExtractResult, AudioTranscribeInput, AudioTranscribeResult, ExtractInput, ExtractResult, InsightsInput, InsightsResult, OHMClientOptions, OHMInit, StreamChunk, SummarizeInput, SummarizeResult, UsageEvent } from "./types";
|
|
1
|
+
import type { ApiSummary, AudioExtractInput, AudioExtractResult, AudioTranscribeInput, AudioTranscribeResult, ExtractInput, ExtractResult, InsightsInput, InsightsResult, ListApisOptions, OHMClientOptions, OHMInit, RequestOptions, StreamChunk, SummarizeInput, SummarizeResult, UploadProgressEvent, 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`
|
|
@@ -15,9 +15,49 @@ export declare abstract class OHMCoreClient {
|
|
|
15
15
|
protected readonly _mock: boolean;
|
|
16
16
|
protected readonly _mockResponses?: OHMClientOptions["mockResponses"];
|
|
17
17
|
constructor(init: OHMInit);
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Audio surface — speech-to-text and audio-to-structured-JSON.
|
|
20
|
+
* Subclasses fill in the platform-specific multipart adapter (browser
|
|
21
|
+
* `File`/`Blob`, Node `Buffer`/`ReadStream`, RN `{ uri, name, type }`).
|
|
22
|
+
*/
|
|
19
23
|
audio: {
|
|
24
|
+
/**
|
|
25
|
+
* Transcribe an audio file to text. The transcript is **always returned
|
|
26
|
+
* in English**, regardless of the spoken language — the server runs
|
|
27
|
+
* Sarvam saaras:v3 in `mode: 'translate'`, so a Tamil / Hindi / Telugu
|
|
28
|
+
* / Bengali / code-mixed consult comes back as clean English text.
|
|
29
|
+
*
|
|
30
|
+
* Use this when you only need the transcript and not structured fields.
|
|
31
|
+
* If you want both, use {@link audio.extract} instead — it does
|
|
32
|
+
* transcription + extraction in a single round-trip.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* const { transcript, language } = await ohm.audio.transcribe({
|
|
36
|
+
* file: blob, // browser File/Blob
|
|
37
|
+
* language: "auto", // or "en" / "hi" / "ta" / ...
|
|
38
|
+
* speakerMode: "doctor", // or "doctor_patient"
|
|
39
|
+
* });
|
|
40
|
+
* console.log(transcript); // English text
|
|
41
|
+
* console.log(language); // detected source language
|
|
42
|
+
*/
|
|
20
43
|
transcribe: (input: AudioTranscribeInput) => Promise<AudioTranscribeResult>;
|
|
44
|
+
/**
|
|
45
|
+
* Audio → transcript → structured JSON in one call. The most common
|
|
46
|
+
* entry point — pair with {@link useOhmAudioExtract} in React or pass
|
|
47
|
+
* the result of `Recorder.stop()` directly.
|
|
48
|
+
*
|
|
49
|
+
* Throws {@link OHMValidationError} on schema violations (with the
|
|
50
|
+
* failing JSON-Schema path), {@link OHMRateLimitError} on 429,
|
|
51
|
+
* {@link OHMAuthError} on 401, {@link OHMServerError} on 5xx.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* const { transcript, data } = await ohm.audio.extract({
|
|
55
|
+
* apiSlug: "opd-clinic",
|
|
56
|
+
* file: blob,
|
|
57
|
+
* inputs: { patientAge: 35 },
|
|
58
|
+
* });
|
|
59
|
+
* form.setValues(data); // your published API's shape
|
|
60
|
+
*/
|
|
21
61
|
extract: <T = Record<string, unknown>>(input: AudioExtractInput) => Promise<AudioExtractResult<T>>;
|
|
22
62
|
/**
|
|
23
63
|
* Streaming variant of audio.extract — returns an AsyncIterable of
|
|
@@ -34,20 +74,108 @@ export declare abstract class OHMCoreClient {
|
|
|
34
74
|
*/
|
|
35
75
|
extractStream: <T = Record<string, unknown>>(input: AudioExtractInput) => AsyncIterable<StreamChunk<T>>;
|
|
36
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Text → structured JSON. Use this when you already have a transcript
|
|
79
|
+
* (e.g. typed notes, prior STT output, OCR'd lab reports). For audio
|
|
80
|
+
* input, use {@link audio.extract} which does both steps in one call.
|
|
81
|
+
*
|
|
82
|
+
* `apiSlug` is your published Studio API's slug (visible in the Studio
|
|
83
|
+
* URL). `text` should be in English — the server's clinical foundation
|
|
84
|
+
* prompt is English-first.
|
|
85
|
+
*
|
|
86
|
+
* Throws {@link OHMValidationError} on schema violations (the error's
|
|
87
|
+
* `fields` array points to the failing JSON-Schema path),
|
|
88
|
+
* {@link OHMAuthError} on bad/missing API key,
|
|
89
|
+
* {@link OHMRateLimitError} with `retryAfterSec` on 429.
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* try {
|
|
93
|
+
* const { data, version } = await ohm.extract({
|
|
94
|
+
* apiSlug: "opd-clinic",
|
|
95
|
+
* text: "Patient reports fever for 3 days...",
|
|
96
|
+
* inputs: { patientAge: 35 },
|
|
97
|
+
* });
|
|
98
|
+
* console.log(data); // matches your schema
|
|
99
|
+
* } catch (e) {
|
|
100
|
+
* if (e instanceof OHMValidationError) console.warn(e.fields);
|
|
101
|
+
* if (e instanceof OHMRateLimitError) await sleep(e.retryAfterSec! * 1000);
|
|
102
|
+
* }
|
|
103
|
+
*/
|
|
37
104
|
extract<T = Record<string, unknown>>(input: ExtractInput): Promise<ExtractResult<T>>;
|
|
38
105
|
/**
|
|
39
106
|
* One-line convenience: pass a transcript, get back the data field.
|
|
40
107
|
* Equivalent to `(await ohm.extract({ apiSlug, text })).data` — the most
|
|
41
108
|
* common shape customers want.
|
|
42
109
|
*/
|
|
43
|
-
extractData<T = Record<string, unknown>>(apiSlug: string, text: string, inputs?: Record<string, unknown
|
|
110
|
+
extractData<T = Record<string, unknown>>(apiSlug: string, text: string, inputs?: Record<string, unknown>, options?: RequestOptions): Promise<T>;
|
|
111
|
+
/**
|
|
112
|
+
* Summarise free clinical text in one of four styles:
|
|
113
|
+
*
|
|
114
|
+
* - `"patient"` — patient-friendly, plain language, second person
|
|
115
|
+
* - `"handover"` — clinician-to-clinician SBAR (Situation / Background /
|
|
116
|
+
* Assessment / Recommendation)
|
|
117
|
+
* - `"executive"` — for hospital admins; leads with action items
|
|
118
|
+
* - `"progress-note"` — condensed SOAP, 2–4 lines per section
|
|
119
|
+
*
|
|
120
|
+
* Honours clinical safety priors (negation, hedging, past-vs-current,
|
|
121
|
+
* verbatim numbers) so "denies chest pain" never flattens to "chest
|
|
122
|
+
* pain" and "probably dengue" stays "probably dengue" in the output.
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* const { summary } = await ohm.summarize({
|
|
126
|
+
* text: longConsultTranscript,
|
|
127
|
+
* style: "patient",
|
|
128
|
+
* maxLines: 5,
|
|
129
|
+
* language: "en",
|
|
130
|
+
* });
|
|
131
|
+
* showInPatientPortal(summary);
|
|
132
|
+
*/
|
|
44
133
|
summarize(input: SummarizeInput): Promise<SummarizeResult>;
|
|
134
|
+
/**
|
|
135
|
+
* Run the second-pass insights extraction on a transcript. Insights are
|
|
136
|
+
* the specialty-specific analytics layer (e.g. psychiatry: mental status
|
|
137
|
+
* exam structured fields; cardiology: risk-stratification flags). The
|
|
138
|
+
* `apiSlug` must point at a published Studio API that has insights
|
|
139
|
+
* enabled in its Settings tab.
|
|
140
|
+
*
|
|
141
|
+
* Pass `priorNoteSummary` for follow-up visits — the assistant uses it
|
|
142
|
+
* to track changes across encounters.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* const { insights } = await ohm.insights({
|
|
146
|
+
* apiSlug: "psychiatry-followup",
|
|
147
|
+
* transcript: visitTranscript,
|
|
148
|
+
* priorNoteSummary: "Patient seen 4 weeks ago, on Sertraline 50mg, ...",
|
|
149
|
+
* });
|
|
150
|
+
* updateInsightsTab(insights);
|
|
151
|
+
*/
|
|
45
152
|
insights<T = unknown>(input: InsightsInput): Promise<InsightsResult<T>>;
|
|
46
|
-
|
|
153
|
+
/**
|
|
154
|
+
* Discover the published Studio APIs available to the current
|
|
155
|
+
* credential. Powered by the Studio management API; works with either
|
|
156
|
+
* an API key (returns project-scoped APIs) or a JWT (returns
|
|
157
|
+
* organisation-wide APIs).
|
|
158
|
+
*
|
|
159
|
+
* Useful for typeahead pickers, dashboards, or codegen tools that need
|
|
160
|
+
* to enumerate slugs without hard-coding them.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* const apis = await ohm.apis.list();
|
|
164
|
+
* for (const a of apis) console.log(a.slug, a.status, "v" + a.version);
|
|
165
|
+
*
|
|
166
|
+
* // Filter to drafts (admin dashboards)
|
|
167
|
+
* const drafts = await ohm.apis.list({ status: "DRAFT" });
|
|
168
|
+
*/
|
|
169
|
+
apis: {
|
|
170
|
+
list: (options?: ListApisOptions) => Promise<ApiSummary[]>;
|
|
171
|
+
};
|
|
172
|
+
protected requestJson<T>(method: string, path: string, body?: unknown, options?: RequestOptions): Promise<T>;
|
|
47
173
|
protected abstract runMultipart<T>(opts: {
|
|
48
174
|
path: string;
|
|
49
175
|
file: any;
|
|
50
176
|
fields?: Record<string, string>;
|
|
177
|
+
signal?: AbortSignal;
|
|
178
|
+
onProgress?: (event: UploadProgressEvent) => void;
|
|
51
179
|
}): Promise<T>;
|
|
52
180
|
/**
|
|
53
181
|
* Default SSE-based streaming for audio.extract.stream. Subclasses
|
|
@@ -65,6 +193,7 @@ export declare abstract class OHMCoreClient {
|
|
|
65
193
|
path: string;
|
|
66
194
|
file: any;
|
|
67
195
|
fields?: Record<string, string>;
|
|
196
|
+
signal?: AbortSignal;
|
|
68
197
|
}): AsyncGenerator<StreamChunk<T>>;
|
|
69
198
|
/**
|
|
70
199
|
* Builds a `FormData` (web/Node) or RN-shaped FormData. Subclasses
|
|
@@ -73,7 +202,7 @@ export declare abstract class OHMCoreClient {
|
|
|
73
202
|
* implement.
|
|
74
203
|
*/
|
|
75
204
|
protected buildMultipartBody(_file: unknown, _fields?: Record<string, string>): Promise<unknown>;
|
|
76
|
-
protected requestRaw<T>(method: string, path: string, init: RequestInit): Promise<T>;
|
|
205
|
+
protected requestRaw<T>(method: string, path: string, init: RequestInit, options?: RequestOptions): Promise<T>;
|
|
77
206
|
private parseError;
|
|
78
207
|
}
|
|
79
208
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OHMAuthError, OHMConfigError, OHMError, OHMRateLimitError, OHMServerError, OHMValidationError, } from "./errors";
|
|
1
|
+
import { OHMAbortError, OHMAuthError, OHMConfigError, OHMError, OHMRateLimitError, OHMServerError, OHMValidationError, } from "./errors";
|
|
2
2
|
import { backoffMs, isRetriableStatus } from "./retry";
|
|
3
3
|
import { mockResponseFor } from "./mock";
|
|
4
4
|
const DEFAULT_BASE_URL = "https://api.ohm.doctor";
|
|
@@ -40,8 +40,31 @@ export class OHMCoreClient {
|
|
|
40
40
|
this._mock = !!opts.mock;
|
|
41
41
|
this._mockResponses = opts.mockResponses;
|
|
42
42
|
}
|
|
43
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Audio surface — speech-to-text and audio-to-structured-JSON.
|
|
45
|
+
* Subclasses fill in the platform-specific multipart adapter (browser
|
|
46
|
+
* `File`/`Blob`, Node `Buffer`/`ReadStream`, RN `{ uri, name, type }`).
|
|
47
|
+
*/
|
|
44
48
|
audio = {
|
|
49
|
+
/**
|
|
50
|
+
* Transcribe an audio file to text. The transcript is **always returned
|
|
51
|
+
* in English**, regardless of the spoken language — the server runs
|
|
52
|
+
* Sarvam saaras:v3 in `mode: 'translate'`, so a Tamil / Hindi / Telugu
|
|
53
|
+
* / Bengali / code-mixed consult comes back as clean English text.
|
|
54
|
+
*
|
|
55
|
+
* Use this when you only need the transcript and not structured fields.
|
|
56
|
+
* If you want both, use {@link audio.extract} instead — it does
|
|
57
|
+
* transcription + extraction in a single round-trip.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* const { transcript, language } = await ohm.audio.transcribe({
|
|
61
|
+
* file: blob, // browser File/Blob
|
|
62
|
+
* language: "auto", // or "en" / "hi" / "ta" / ...
|
|
63
|
+
* speakerMode: "doctor", // or "doctor_patient"
|
|
64
|
+
* });
|
|
65
|
+
* console.log(transcript); // English text
|
|
66
|
+
* console.log(language); // detected source language
|
|
67
|
+
*/
|
|
45
68
|
transcribe: (input) => {
|
|
46
69
|
if (this._mock) {
|
|
47
70
|
return Promise.resolve(mockResponseFor.transcribe(this._mockResponses));
|
|
@@ -53,8 +76,27 @@ export class OHMCoreClient {
|
|
|
53
76
|
...(input.language ? { language: input.language } : {}),
|
|
54
77
|
...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
|
|
55
78
|
},
|
|
79
|
+
signal: input.signal,
|
|
80
|
+
onProgress: input.onProgress,
|
|
56
81
|
});
|
|
57
82
|
},
|
|
83
|
+
/**
|
|
84
|
+
* Audio → transcript → structured JSON in one call. The most common
|
|
85
|
+
* entry point — pair with {@link useOhmAudioExtract} in React or pass
|
|
86
|
+
* the result of `Recorder.stop()` directly.
|
|
87
|
+
*
|
|
88
|
+
* Throws {@link OHMValidationError} on schema violations (with the
|
|
89
|
+
* failing JSON-Schema path), {@link OHMRateLimitError} on 429,
|
|
90
|
+
* {@link OHMAuthError} on 401, {@link OHMServerError} on 5xx.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* const { transcript, data } = await ohm.audio.extract({
|
|
94
|
+
* apiSlug: "opd-clinic",
|
|
95
|
+
* file: blob,
|
|
96
|
+
* inputs: { patientAge: 35 },
|
|
97
|
+
* });
|
|
98
|
+
* form.setValues(data); // your published API's shape
|
|
99
|
+
*/
|
|
58
100
|
extract: (input) => {
|
|
59
101
|
if (this._mock) {
|
|
60
102
|
return Promise.resolve(mockResponseFor.audioExtract(input.apiSlug, this._mockResponses));
|
|
@@ -67,6 +109,8 @@ export class OHMCoreClient {
|
|
|
67
109
|
...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
|
|
68
110
|
...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
|
|
69
111
|
},
|
|
112
|
+
signal: input.signal,
|
|
113
|
+
onProgress: input.onProgress,
|
|
70
114
|
});
|
|
71
115
|
},
|
|
72
116
|
/**
|
|
@@ -94,9 +138,37 @@ export class OHMCoreClient {
|
|
|
94
138
|
...(input.speakerMode ? { speakerMode: input.speakerMode } : {}),
|
|
95
139
|
...(input.inputs ? { inputs: JSON.stringify(input.inputs) } : {}),
|
|
96
140
|
},
|
|
141
|
+
signal: input.signal,
|
|
97
142
|
});
|
|
98
143
|
},
|
|
99
144
|
};
|
|
145
|
+
/**
|
|
146
|
+
* Text → structured JSON. Use this when you already have a transcript
|
|
147
|
+
* (e.g. typed notes, prior STT output, OCR'd lab reports). For audio
|
|
148
|
+
* input, use {@link audio.extract} which does both steps in one call.
|
|
149
|
+
*
|
|
150
|
+
* `apiSlug` is your published Studio API's slug (visible in the Studio
|
|
151
|
+
* URL). `text` should be in English — the server's clinical foundation
|
|
152
|
+
* prompt is English-first.
|
|
153
|
+
*
|
|
154
|
+
* Throws {@link OHMValidationError} on schema violations (the error's
|
|
155
|
+
* `fields` array points to the failing JSON-Schema path),
|
|
156
|
+
* {@link OHMAuthError} on bad/missing API key,
|
|
157
|
+
* {@link OHMRateLimitError} with `retryAfterSec` on 429.
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* try {
|
|
161
|
+
* const { data, version } = await ohm.extract({
|
|
162
|
+
* apiSlug: "opd-clinic",
|
|
163
|
+
* text: "Patient reports fever for 3 days...",
|
|
164
|
+
* inputs: { patientAge: 35 },
|
|
165
|
+
* });
|
|
166
|
+
* console.log(data); // matches your schema
|
|
167
|
+
* } catch (e) {
|
|
168
|
+
* if (e instanceof OHMValidationError) console.warn(e.fields);
|
|
169
|
+
* if (e instanceof OHMRateLimitError) await sleep(e.retryAfterSec! * 1000);
|
|
170
|
+
* }
|
|
171
|
+
*/
|
|
100
172
|
async extract(input) {
|
|
101
173
|
if (this._mock) {
|
|
102
174
|
return mockResponseFor.extract(input.apiSlug, this._mockResponses);
|
|
@@ -105,36 +177,105 @@ export class OHMCoreClient {
|
|
|
105
177
|
text: input.text,
|
|
106
178
|
inputs: input.inputs,
|
|
107
179
|
includeInsights: input.includeInsights,
|
|
108
|
-
});
|
|
180
|
+
}, { signal: input.signal });
|
|
109
181
|
}
|
|
110
182
|
/**
|
|
111
183
|
* One-line convenience: pass a transcript, get back the data field.
|
|
112
184
|
* Equivalent to `(await ohm.extract({ apiSlug, text })).data` — the most
|
|
113
185
|
* common shape customers want.
|
|
114
186
|
*/
|
|
115
|
-
async extractData(apiSlug, text, inputs) {
|
|
116
|
-
const r = await this.extract({ apiSlug, text, inputs });
|
|
187
|
+
async extractData(apiSlug, text, inputs, options) {
|
|
188
|
+
const r = await this.extract({ apiSlug, text, inputs, signal: options?.signal });
|
|
117
189
|
return r.data;
|
|
118
190
|
}
|
|
191
|
+
/**
|
|
192
|
+
* Summarise free clinical text in one of four styles:
|
|
193
|
+
*
|
|
194
|
+
* - `"patient"` — patient-friendly, plain language, second person
|
|
195
|
+
* - `"handover"` — clinician-to-clinician SBAR (Situation / Background /
|
|
196
|
+
* Assessment / Recommendation)
|
|
197
|
+
* - `"executive"` — for hospital admins; leads with action items
|
|
198
|
+
* - `"progress-note"` — condensed SOAP, 2–4 lines per section
|
|
199
|
+
*
|
|
200
|
+
* Honours clinical safety priors (negation, hedging, past-vs-current,
|
|
201
|
+
* verbatim numbers) so "denies chest pain" never flattens to "chest
|
|
202
|
+
* pain" and "probably dengue" stays "probably dengue" in the output.
|
|
203
|
+
*
|
|
204
|
+
* @example
|
|
205
|
+
* const { summary } = await ohm.summarize({
|
|
206
|
+
* text: longConsultTranscript,
|
|
207
|
+
* style: "patient",
|
|
208
|
+
* maxLines: 5,
|
|
209
|
+
* language: "en",
|
|
210
|
+
* });
|
|
211
|
+
* showInPatientPortal(summary);
|
|
212
|
+
*/
|
|
119
213
|
async summarize(input) {
|
|
120
214
|
if (this._mock)
|
|
121
215
|
return mockResponseFor.summarize(this._mockResponses);
|
|
122
|
-
|
|
216
|
+
const { signal, ...body } = input;
|
|
217
|
+
return this.requestJson("POST", "/api/studio/v1/summarize", body, { signal });
|
|
123
218
|
}
|
|
219
|
+
/**
|
|
220
|
+
* Run the second-pass insights extraction on a transcript. Insights are
|
|
221
|
+
* the specialty-specific analytics layer (e.g. psychiatry: mental status
|
|
222
|
+
* exam structured fields; cardiology: risk-stratification flags). The
|
|
223
|
+
* `apiSlug` must point at a published Studio API that has insights
|
|
224
|
+
* enabled in its Settings tab.
|
|
225
|
+
*
|
|
226
|
+
* Pass `priorNoteSummary` for follow-up visits — the assistant uses it
|
|
227
|
+
* to track changes across encounters.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* const { insights } = await ohm.insights({
|
|
231
|
+
* apiSlug: "psychiatry-followup",
|
|
232
|
+
* transcript: visitTranscript,
|
|
233
|
+
* priorNoteSummary: "Patient seen 4 weeks ago, on Sertraline 50mg, ...",
|
|
234
|
+
* });
|
|
235
|
+
* updateInsightsTab(insights);
|
|
236
|
+
*/
|
|
124
237
|
async insights(input) {
|
|
125
238
|
if (this._mock)
|
|
126
239
|
return mockResponseFor.insights(this._mockResponses);
|
|
127
240
|
return this.requestJson("POST", `/api/studio/v1/insights/${encodeURIComponent(input.apiSlug)}`, {
|
|
128
241
|
transcript: input.transcript,
|
|
129
242
|
priorNoteSummary: input.priorNoteSummary,
|
|
130
|
-
});
|
|
243
|
+
}, { signal: input.signal });
|
|
131
244
|
}
|
|
245
|
+
/**
|
|
246
|
+
* Discover the published Studio APIs available to the current
|
|
247
|
+
* credential. Powered by the Studio management API; works with either
|
|
248
|
+
* an API key (returns project-scoped APIs) or a JWT (returns
|
|
249
|
+
* organisation-wide APIs).
|
|
250
|
+
*
|
|
251
|
+
* Useful for typeahead pickers, dashboards, or codegen tools that need
|
|
252
|
+
* to enumerate slugs without hard-coding them.
|
|
253
|
+
*
|
|
254
|
+
* @example
|
|
255
|
+
* const apis = await ohm.apis.list();
|
|
256
|
+
* for (const a of apis) console.log(a.slug, a.status, "v" + a.version);
|
|
257
|
+
*
|
|
258
|
+
* // Filter to drafts (admin dashboards)
|
|
259
|
+
* const drafts = await ohm.apis.list({ status: "DRAFT" });
|
|
260
|
+
*/
|
|
261
|
+
apis = {
|
|
262
|
+
list: async (options = {}) => {
|
|
263
|
+
if (this._mock)
|
|
264
|
+
return [];
|
|
265
|
+
const status = options.status ?? "PUBLISHED";
|
|
266
|
+
const qs = status === "ALL" ? "" : `?status=${encodeURIComponent(status)}`;
|
|
267
|
+
return this.requestJson("GET", `/api/studio/v1/apis${qs}`, undefined, { signal: options.signal });
|
|
268
|
+
},
|
|
269
|
+
};
|
|
132
270
|
// ─── HTTP plumbing ───────────────────────────────────────────────────────
|
|
133
|
-
async requestJson(method, path, body) {
|
|
134
|
-
|
|
135
|
-
headers: { "Content-Type": "application/json" },
|
|
271
|
+
async requestJson(method, path, body, options) {
|
|
272
|
+
const init = {
|
|
136
273
|
body: body !== undefined ? JSON.stringify(body) : undefined,
|
|
137
|
-
}
|
|
274
|
+
};
|
|
275
|
+
if (body !== undefined) {
|
|
276
|
+
init.headers = { "Content-Type": "application/json" };
|
|
277
|
+
}
|
|
278
|
+
return this.requestRaw(method, path, init, options);
|
|
138
279
|
}
|
|
139
280
|
/**
|
|
140
281
|
* Default SSE-based streaming for audio.extract.stream. Subclasses
|
|
@@ -155,11 +296,16 @@ export class OHMCoreClient {
|
|
|
155
296
|
headers.Authorization = `Bearer ${this.apiKey}`;
|
|
156
297
|
else if (this.jwt)
|
|
157
298
|
headers.Authorization = `Bearer ${this.jwt}`;
|
|
158
|
-
headers["X-OHM-Client"] = "@ohm_studio/sdk@0.
|
|
299
|
+
headers["X-OHM-Client"] = "@ohm_studio/sdk-core@0.4.0";
|
|
159
300
|
const body = (await this.buildMultipartBody(opts.file, opts.fields));
|
|
160
301
|
let res;
|
|
161
302
|
try {
|
|
162
|
-
res = await this.fetchImpl(url, {
|
|
303
|
+
res = await this.fetchImpl(url, {
|
|
304
|
+
method: "POST",
|
|
305
|
+
headers,
|
|
306
|
+
body,
|
|
307
|
+
signal: opts.signal,
|
|
308
|
+
});
|
|
163
309
|
}
|
|
164
310
|
catch (err) {
|
|
165
311
|
yield { type: "error", message: err?.message || "network error" };
|
|
@@ -223,7 +369,7 @@ export class OHMCoreClient {
|
|
|
223
369
|
message: "Streaming requires the SDK wrapper to implement buildMultipartBody",
|
|
224
370
|
});
|
|
225
371
|
}
|
|
226
|
-
async requestRaw(method, path, init) {
|
|
372
|
+
async requestRaw(method, path, init, options) {
|
|
227
373
|
const url = `${this.baseUrl}${path}`;
|
|
228
374
|
const headers = new Headers(init.headers || {});
|
|
229
375
|
if (this.apiKey)
|
|
@@ -231,12 +377,25 @@ export class OHMCoreClient {
|
|
|
231
377
|
else if (this.jwt)
|
|
232
378
|
headers.set("Authorization", `Bearer ${this.jwt}`);
|
|
233
379
|
if (!headers.has("X-OHM-Client")) {
|
|
234
|
-
headers.set("X-OHM-Client", "@ohm_studio/sdk@0.
|
|
380
|
+
headers.set("X-OHM-Client", "@ohm_studio/sdk-core@0.4.0");
|
|
381
|
+
}
|
|
382
|
+
// Caller-supplied signal short-circuits before any work is started —
|
|
383
|
+
// matches DOM fetch() semantics and avoids burning a retry on an
|
|
384
|
+
// already-cancelled request.
|
|
385
|
+
if (options?.signal?.aborted) {
|
|
386
|
+
throw new OHMAbortError();
|
|
235
387
|
}
|
|
236
388
|
let lastError;
|
|
237
389
|
for (let attempt = 0; attempt <= this.maxRetries; attempt++) {
|
|
238
390
|
const ac = new AbortController();
|
|
239
391
|
const t = setTimeout(() => ac.abort(), this.timeoutMs);
|
|
392
|
+
// Bridge the caller's signal into our internal AbortController so
|
|
393
|
+
// either source (timeout, user cancel) trips the same fetch abort.
|
|
394
|
+
let onCallerAbort;
|
|
395
|
+
if (options?.signal) {
|
|
396
|
+
onCallerAbort = () => ac.abort();
|
|
397
|
+
options.signal.addEventListener("abort", onCallerAbort, { once: true });
|
|
398
|
+
}
|
|
240
399
|
const tStart = Date.now();
|
|
241
400
|
try {
|
|
242
401
|
const res = await this.fetchImpl(url, {
|
|
@@ -270,6 +429,15 @@ export class OHMCoreClient {
|
|
|
270
429
|
clearTimeout(t);
|
|
271
430
|
if (err instanceof OHMError)
|
|
272
431
|
throw err;
|
|
432
|
+
// If the caller cancelled, surface that immediately — don't
|
|
433
|
+
// burn retries on a request the user no longer wants.
|
|
434
|
+
if (options?.signal?.aborted) {
|
|
435
|
+
throw new OHMError({
|
|
436
|
+
code: "aborted",
|
|
437
|
+
message: "Request aborted by caller",
|
|
438
|
+
status: 0,
|
|
439
|
+
});
|
|
440
|
+
}
|
|
273
441
|
lastError = err;
|
|
274
442
|
if (attempt < this.maxRetries) {
|
|
275
443
|
await sleep(backoffMs(attempt));
|
|
@@ -278,6 +446,9 @@ export class OHMCoreClient {
|
|
|
278
446
|
}
|
|
279
447
|
finally {
|
|
280
448
|
clearTimeout(t);
|
|
449
|
+
if (onCallerAbort && options?.signal) {
|
|
450
|
+
options.signal.removeEventListener("abort", onCallerAbort);
|
|
451
|
+
}
|
|
281
452
|
}
|
|
282
453
|
}
|
|
283
454
|
if (lastError instanceof OHMError)
|
package/dist/client.js.map
CHANGED
|
@@ -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/errors.d.ts
CHANGED
|
@@ -59,4 +59,15 @@ export declare class OHMConfigError extends OHMError {
|
|
|
59
59
|
message: string;
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Thrown when the caller's `AbortSignal` fires (e.g. a React component
|
|
64
|
+
* unmounts mid-extract, or the user navigates away). Carries `code:
|
|
65
|
+
* "aborted"` so callers can distinguish cancellation from genuine
|
|
66
|
+
* server / network failures.
|
|
67
|
+
*/
|
|
68
|
+
export declare class OHMAbortError extends OHMError {
|
|
69
|
+
constructor(opts?: {
|
|
70
|
+
message?: string;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
62
73
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAOF;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBACpB,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CAKF;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBACf,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB;CAKF;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAItC"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAChB,IAAI,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB;CAOF;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,iBAAkB,SAAQ,QAAQ;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBACpB,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB;CAKF;AAED,qBAAa,kBAAmB,SAAQ,QAAQ;IAC9C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;gBACf,IAAI,EAAE;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB;CAKF;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAI1E;AAED,qBAAa,cAAe,SAAQ,QAAQ;gBAC9B,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;CAItC;AAED;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,QAAQ;gBAC7B,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;CAQ5C"}
|
package/dist/errors.js
CHANGED
|
@@ -57,4 +57,20 @@ export class OHMConfigError extends OHMError {
|
|
|
57
57
|
this.name = "OHMConfigError";
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Thrown when the caller's `AbortSignal` fires (e.g. a React component
|
|
62
|
+
* unmounts mid-extract, or the user navigates away). Carries `code:
|
|
63
|
+
* "aborted"` so callers can distinguish cancellation from genuine
|
|
64
|
+
* server / network failures.
|
|
65
|
+
*/
|
|
66
|
+
export class OHMAbortError extends OHMError {
|
|
67
|
+
constructor(opts = {}) {
|
|
68
|
+
super({
|
|
69
|
+
code: "aborted",
|
|
70
|
+
message: opts.message || "Request aborted by caller",
|
|
71
|
+
status: 0,
|
|
72
|
+
});
|
|
73
|
+
this.name = "OHMAbortError";
|
|
74
|
+
}
|
|
75
|
+
}
|
|
60
76
|
//# sourceMappingURL=errors.js.map
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,MAAM,CAAS;IACf,SAAS,CAAU;IAC5B,YAAY,IAKX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IACpC,aAAa,CAAU;IAChC,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IACrC,MAAM,CAAY;IAC3B,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACxB,IAAI,CAAS;IACb,MAAM,CAAS;IACf,SAAS,CAAU;IAC5B,YAAY,IAKX;QACC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IACpC,aAAa,CAAU;IAChC,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,QAAQ;IACrC,MAAM,CAAY;IAC3B,YAAY,IAKX;QACC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAA6D;QACvE,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,QAAQ;IAC1C,YAAY,IAAyB;QACnC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,QAAQ;IACzC,YAAY,OAA6B,EAAE;QACzC,KAAK,CAAC;YACJ,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,2BAA2B;YACpD,MAAM,EAAE,CAAC;SACV,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
|
package/dist/types.d.ts
CHANGED
|
@@ -60,7 +60,31 @@ export interface UsageEvent {
|
|
|
60
60
|
latencyMs: number;
|
|
61
61
|
retries: number;
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Mixin for request-scoped controls. Every public method accepts these.
|
|
65
|
+
*
|
|
66
|
+
* - `signal` — pass an `AbortController.signal` to cancel the request.
|
|
67
|
+
* React hooks auto-attach a signal that fires on unmount, so a user
|
|
68
|
+
* navigating away never debits a half-finished extraction.
|
|
69
|
+
* - `onProgress` — multipart-upload methods (`audio.transcribe`,
|
|
70
|
+
* `audio.extract`) emit upload progress events. No-op for JSON
|
|
71
|
+
* methods (`extract`, `summarize`, `insights`).
|
|
72
|
+
*/
|
|
73
|
+
export interface RequestOptions {
|
|
74
|
+
signal?: AbortSignal;
|
|
75
|
+
}
|
|
76
|
+
export interface UploadProgressEvent {
|
|
77
|
+
/** Bytes uploaded so far. */
|
|
78
|
+
loaded: number;
|
|
79
|
+
/** Total bytes (0 if unknown — RN polyfills sometimes can't measure). */
|
|
80
|
+
total: number;
|
|
81
|
+
/** loaded/total × 100, rounded to one decimal. 0 when total is unknown. */
|
|
82
|
+
percent: number;
|
|
83
|
+
}
|
|
84
|
+
export interface UploadOptions extends RequestOptions {
|
|
85
|
+
onProgress?: (event: UploadProgressEvent) => void;
|
|
86
|
+
}
|
|
87
|
+
export interface ExtractInput extends RequestOptions {
|
|
64
88
|
apiSlug: string;
|
|
65
89
|
text: string;
|
|
66
90
|
inputs?: Record<string, unknown>;
|
|
@@ -83,7 +107,7 @@ export interface ExtractResult<T = Record<string, unknown>> {
|
|
|
83
107
|
* plan to the doctor. Use for full visit recordings.
|
|
84
108
|
*/
|
|
85
109
|
export type SpeakerMode = "doctor" | "doctor_patient";
|
|
86
|
-
export interface AudioTranscribeInput {
|
|
110
|
+
export interface AudioTranscribeInput extends UploadOptions {
|
|
87
111
|
/** Platform-specific file shape resolved by the wrapper. */
|
|
88
112
|
file: any;
|
|
89
113
|
language?: string;
|
|
@@ -104,7 +128,7 @@ export interface AudioExtractResult<T = Record<string, unknown>> extends AudioTr
|
|
|
104
128
|
data: T;
|
|
105
129
|
apiSlug: string;
|
|
106
130
|
}
|
|
107
|
-
export interface SummarizeInput {
|
|
131
|
+
export interface SummarizeInput extends RequestOptions {
|
|
108
132
|
text: string;
|
|
109
133
|
style: "patient" | "handover" | "executive" | "progress-note";
|
|
110
134
|
maxLines?: number;
|
|
@@ -113,7 +137,7 @@ export interface SummarizeInput {
|
|
|
113
137
|
export interface SummarizeResult {
|
|
114
138
|
summary: string;
|
|
115
139
|
}
|
|
116
|
-
export interface InsightsInput {
|
|
140
|
+
export interface InsightsInput extends RequestOptions {
|
|
117
141
|
apiSlug: string;
|
|
118
142
|
transcript: string;
|
|
119
143
|
priorNoteSummary?: string;
|
|
@@ -121,6 +145,23 @@ export interface InsightsInput {
|
|
|
121
145
|
export interface InsightsResult<T = unknown> {
|
|
122
146
|
insights: T;
|
|
123
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* One entry returned by `ohm.apis.list()`. Useful for typeahead pickers
|
|
150
|
+
* and dashboards that need to enumerate the customer's published Studio
|
|
151
|
+
* APIs without hard-coding slug strings.
|
|
152
|
+
*/
|
|
153
|
+
export interface ApiSummary {
|
|
154
|
+
slug: string;
|
|
155
|
+
name: string;
|
|
156
|
+
status: "DRAFT" | "PUBLISHED" | "ARCHIVED";
|
|
157
|
+
version: number;
|
|
158
|
+
/** ISO-8601 timestamp of the last publish, when available. */
|
|
159
|
+
updatedAt?: string;
|
|
160
|
+
}
|
|
161
|
+
export interface ListApisOptions extends RequestOptions {
|
|
162
|
+
/** Filter by status. Defaults to PUBLISHED only. */
|
|
163
|
+
status?: "DRAFT" | "PUBLISHED" | "ARCHIVED" | "ALL";
|
|
164
|
+
}
|
|
124
165
|
/**
|
|
125
166
|
* Streaming chunk emitted by `ohm.audio.extract.stream(...)`.
|
|
126
167
|
* Server emits, in order:
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAEhD,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;IAChC;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;QACtB,OAAO,EAAE,aAAa,CAAC;QACvB,UAAU,EAAE,qBAAqB,CAAC;QAClC,YAAY,EAAE,kBAAkB,CAAC;QACjC,SAAS,EAAE,eAAe,CAAC;QAC3B,QAAQ,EAAE,cAAc,CAAC;KAC1B,CAAC,CAAC;CACJ;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,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ohm_studio/sdk-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.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
|
+
"keywords": [
|
|
7
|
+
"ohm",
|
|
8
|
+
"ohm-studio",
|
|
9
|
+
"clinical",
|
|
10
|
+
"ehr",
|
|
11
|
+
"fhir",
|
|
12
|
+
"stt",
|
|
13
|
+
"extraction",
|
|
14
|
+
"sdk-core"
|
|
15
|
+
],
|
|
6
16
|
"publishConfig": {
|
|
7
17
|
"access": "public"
|
|
8
18
|
},
|