hci-atrium 0.1.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.
Files changed (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +182 -0
  3. package/dist/atrium.d.ts +522 -0
  4. package/dist/atrium.d.ts.map +1 -0
  5. package/dist/atrium.js +806 -0
  6. package/dist/atrium.js.map +1 -0
  7. package/dist/auth.d.ts +85 -0
  8. package/dist/auth.d.ts.map +1 -0
  9. package/dist/auth.js +369 -0
  10. package/dist/auth.js.map +1 -0
  11. package/dist/by.d.ts +84 -0
  12. package/dist/by.d.ts.map +1 -0
  13. package/dist/by.js +87 -0
  14. package/dist/by.js.map +1 -0
  15. package/dist/decider.d.ts +40 -0
  16. package/dist/decider.d.ts.map +1 -0
  17. package/dist/decider.js +76 -0
  18. package/dist/decider.js.map +1 -0
  19. package/dist/discovery.d.ts +15 -0
  20. package/dist/discovery.d.ts.map +1 -0
  21. package/dist/discovery.js +38 -0
  22. package/dist/discovery.js.map +1 -0
  23. package/dist/env.d.ts +11 -0
  24. package/dist/env.d.ts.map +1 -0
  25. package/dist/env.js +28 -0
  26. package/dist/env.js.map +1 -0
  27. package/dist/errors.d.ts +67 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +86 -0
  30. package/dist/errors.js.map +1 -0
  31. package/dist/files.d.ts +7 -0
  32. package/dist/files.d.ts.map +1 -0
  33. package/dist/files.js +2 -0
  34. package/dist/files.js.map +1 -0
  35. package/dist/http.d.ts +11 -0
  36. package/dist/http.d.ts.map +1 -0
  37. package/dist/http.js +21 -0
  38. package/dist/http.js.map +1 -0
  39. package/dist/index.d.ts +17 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +14 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/models.d.ts +456 -0
  44. package/dist/models.d.ts.map +1 -0
  45. package/dist/models.js +487 -0
  46. package/dist/models.js.map +1 -0
  47. package/dist/pkce.d.ts +16 -0
  48. package/dist/pkce.d.ts.map +1 -0
  49. package/dist/pkce.js +40 -0
  50. package/dist/pkce.js.map +1 -0
  51. package/dist/react/index.d.ts +37 -0
  52. package/dist/react/index.d.ts.map +1 -0
  53. package/dist/react/index.js +89 -0
  54. package/dist/react/index.js.map +1 -0
  55. package/dist/rooms/armed-set.d.ts +33 -0
  56. package/dist/rooms/armed-set.d.ts.map +1 -0
  57. package/dist/rooms/armed-set.js +65 -0
  58. package/dist/rooms/armed-set.js.map +1 -0
  59. package/dist/rooms/brokers.d.ts +62 -0
  60. package/dist/rooms/brokers.d.ts.map +1 -0
  61. package/dist/rooms/brokers.js +109 -0
  62. package/dist/rooms/brokers.js.map +1 -0
  63. package/dist/rooms/codec.d.ts +100 -0
  64. package/dist/rooms/codec.d.ts.map +1 -0
  65. package/dist/rooms/codec.js +101 -0
  66. package/dist/rooms/codec.js.map +1 -0
  67. package/dist/rooms/index.d.ts +40 -0
  68. package/dist/rooms/index.d.ts.map +1 -0
  69. package/dist/rooms/index.js +45 -0
  70. package/dist/rooms/index.js.map +1 -0
  71. package/dist/rooms/offer-capture.d.ts +96 -0
  72. package/dist/rooms/offer-capture.d.ts.map +1 -0
  73. package/dist/rooms/offer-capture.js +338 -0
  74. package/dist/rooms/offer-capture.js.map +1 -0
  75. package/dist/rooms/offer-transcription.d.ts +63 -0
  76. package/dist/rooms/offer-transcription.d.ts.map +1 -0
  77. package/dist/rooms/offer-transcription.js +231 -0
  78. package/dist/rooms/offer-transcription.js.map +1 -0
  79. package/dist/rooms/participant.d.ts +35 -0
  80. package/dist/rooms/participant.d.ts.map +1 -0
  81. package/dist/rooms/participant.js +53 -0
  82. package/dist/rooms/participant.js.map +1 -0
  83. package/dist/rooms/recorder.d.ts +74 -0
  84. package/dist/rooms/recorder.d.ts.map +1 -0
  85. package/dist/rooms/recorder.js +157 -0
  86. package/dist/rooms/recorder.js.map +1 -0
  87. package/dist/rooms/room.d.ts +542 -0
  88. package/dist/rooms/room.d.ts.map +1 -0
  89. package/dist/rooms/room.js +1357 -0
  90. package/dist/rooms/room.js.map +1 -0
  91. package/dist/rooms/snippet.d.ts +48 -0
  92. package/dist/rooms/snippet.d.ts.map +1 -0
  93. package/dist/rooms/snippet.js +70 -0
  94. package/dist/rooms/snippet.js.map +1 -0
  95. package/dist/rooms/sse.d.ts +102 -0
  96. package/dist/rooms/sse.d.ts.map +1 -0
  97. package/dist/rooms/sse.js +347 -0
  98. package/dist/rooms/sse.js.map +1 -0
  99. package/dist/rooms/standing-source.d.ts +190 -0
  100. package/dist/rooms/standing-source.d.ts.map +1 -0
  101. package/dist/rooms/standing-source.js +431 -0
  102. package/dist/rooms/standing-source.js.map +1 -0
  103. package/dist/rooms/transcriber.d.ts +81 -0
  104. package/dist/rooms/transcriber.d.ts.map +1 -0
  105. package/dist/rooms/transcriber.js +111 -0
  106. package/dist/rooms/transcriber.js.map +1 -0
  107. package/dist/rooms/transport-shared.d.ts +28 -0
  108. package/dist/rooms/transport-shared.d.ts.map +1 -0
  109. package/dist/rooms/transport-shared.js +42 -0
  110. package/dist/rooms/transport-shared.js.map +1 -0
  111. package/dist/rooms/transport.d.ts +161 -0
  112. package/dist/rooms/transport.d.ts.map +1 -0
  113. package/dist/rooms/transport.js +258 -0
  114. package/dist/rooms/transport.js.map +1 -0
  115. package/dist/shaping/assets.d.ts +42 -0
  116. package/dist/shaping/assets.d.ts.map +1 -0
  117. package/dist/shaping/assets.js +77 -0
  118. package/dist/shaping/assets.js.map +1 -0
  119. package/dist/shaping/chat.d.ts +39 -0
  120. package/dist/shaping/chat.d.ts.map +1 -0
  121. package/dist/shaping/chat.js +62 -0
  122. package/dist/shaping/chat.js.map +1 -0
  123. package/dist/shaping/index.d.ts +14 -0
  124. package/dist/shaping/index.d.ts.map +1 -0
  125. package/dist/shaping/index.js +13 -0
  126. package/dist/shaping/index.js.map +1 -0
  127. package/dist/shaping/library.d.ts +84 -0
  128. package/dist/shaping/library.d.ts.map +1 -0
  129. package/dist/shaping/library.js +288 -0
  130. package/dist/shaping/library.js.map +1 -0
  131. package/dist/shaping/request.d.ts +47 -0
  132. package/dist/shaping/request.d.ts.map +1 -0
  133. package/dist/shaping/request.js +25 -0
  134. package/dist/shaping/request.js.map +1 -0
  135. package/dist/shaping/rooms.d.ts +128 -0
  136. package/dist/shaping/rooms.d.ts.map +1 -0
  137. package/dist/shaping/rooms.js +330 -0
  138. package/dist/shaping/rooms.js.map +1 -0
  139. package/dist/shaping/sources.d.ts +29 -0
  140. package/dist/shaping/sources.d.ts.map +1 -0
  141. package/dist/shaping/sources.js +51 -0
  142. package/dist/shaping/sources.js.map +1 -0
  143. package/dist/shaping/structured.d.ts +47 -0
  144. package/dist/shaping/structured.d.ts.map +1 -0
  145. package/dist/shaping/structured.js +115 -0
  146. package/dist/shaping/structured.js.map +1 -0
  147. package/dist/storage.d.ts +36 -0
  148. package/dist/storage.d.ts.map +1 -0
  149. package/dist/storage.js +86 -0
  150. package/dist/storage.js.map +1 -0
  151. package/dist/transcribe-stream.d.ts +81 -0
  152. package/dist/transcribe-stream.d.ts.map +1 -0
  153. package/dist/transcribe-stream.js +253 -0
  154. package/dist/transcribe-stream.js.map +1 -0
  155. package/dist/transcribe.d.ts +57 -0
  156. package/dist/transcribe.d.ts.map +1 -0
  157. package/dist/transcribe.js +267 -0
  158. package/dist/transcribe.js.map +1 -0
  159. package/dist/types.d.ts +20 -0
  160. package/dist/types.d.ts.map +1 -0
  161. package/dist/types.js +3 -0
  162. package/dist/types.js.map +1 -0
  163. package/package.json +56 -0
@@ -0,0 +1,522 @@
1
+ /** The ``Atrium`` client — the entry point that owns auth, an authenticated transport, and the
2
+ * phase-1 namespaces (``library`` / ``assets`` / ``sources`` / ``sessions`` / ``rooms``) plus the
3
+ * ``chat`` and ``embed`` methods. */
4
+ import { Auth } from "./auth.js";
5
+ import type { OperandLike } from "./by.js";
6
+ import { DEFAULT_BASE_URL } from "./env.js";
7
+ import type { FileSource } from "./files.js";
8
+ import type { Candidate } from "./models.js";
9
+ import { type Asset, type AssetBinder, type AssetPage, type AssetRef, type AssetVector, type AssetVectorsOptions, type ChatReply, type CompareResult, type Filters, type IndexEntry, type SessionEvent as ReadSessionEvent, type SearchByExamplesHit, type SearchHit, type SegmentRef, type Session, type Event as SessionEvent, type SessionInfo, type SourceInfo, type SourceSearchResult, type Space, type TagDefinition, type Transcript } from "./models.js";
10
+ import { type FetchImpl, Room, type RoomTransportMode, type WebSocketCtor } from "./rooms/index.js";
11
+ import { type ChatMessage, type SessionExportFormat, type ShapedRequest, type ZodLike } from "./shaping/index.js";
12
+ export type { SessionExportFormat } from "./shaping/rooms.js";
13
+ import { type AudioChunk, type TranscribeStreamOptions } from "./transcribe.js";
14
+ export { DEFAULT_BASE_URL };
15
+ export interface AtriumOptions {
16
+ /** The Atrium instance URL. Falls back to ``ATRIUM_BASE_URL``, then the deployed instance. */
17
+ baseUrl?: string;
18
+ /** The app's public OAuth client id (for "Sign in with Atrium"). Falls back to ``ATRIUM_CLIENT_ID``. */
19
+ clientId?: string;
20
+ /**
21
+ * An ``atr_…`` API key. Falls back to ``ATRIUM_API_KEY``. When set, requests authenticate with the
22
+ * key and the OAuth flow is bypassed. Works in the browser too (research prototypes hosted
23
+ * locally) — see the one-time console note when a key is used in a page.
24
+ */
25
+ apiKey?: string;
26
+ /** Default project scope applied to calls that don't pass their own ``project``. */
27
+ project?: string;
28
+ /** Default collection scope applied to calls that don't pass their own ``collection``. */
29
+ collection?: string;
30
+ }
31
+ /** The internal transport the namespaces build on. */
32
+ interface ClientInternal {
33
+ readonly baseUrl: string;
34
+ request(req: ShapedRequest, signal?: AbortSignal): Promise<unknown>;
35
+ /** Like {@link request} but returns the raw response bytes (session/data exports serve
36
+ * jsonl/csv/zip, not JSON). */
37
+ requestBytes(req: ShapedRequest, signal?: AbortSignal): Promise<Uint8Array>;
38
+ /** The client's ``assets`` namespace, threaded into parsed assets so their bound
39
+ * ``vectors()`` / ``segments()`` / ``index()`` methods resolve. */
40
+ readonly assetBinder: AssetBinder;
41
+ scope(project?: string, collection?: string): {
42
+ project?: string;
43
+ collection?: string;
44
+ };
45
+ /** Resolve a space by id (passthrough) or friendly name to its id, via a per-client cached list. */
46
+ resolveSpace(nameOrId: string): Promise<string>;
47
+ /** The full space list, fetched once and cached per client (shared with {@link resolveSpace}). */
48
+ cachedSpaces(): Promise<Space[]>;
49
+ /** Embed text or media into a vector — the surface a room's ``audioVectors`` embeds each snippet with. */
50
+ embed(opts: EmbedOptions): Promise<number[]>;
51
+ /** Chat completion — a room's ``offerChat`` broker generates replies with it. */
52
+ chat(messages: string | ChatMessage[], opts?: ChatOptions): Promise<ChatReply>;
53
+ /** The library namespace — a room's ``audioVectors`` / ``audioScores`` read ``spaces`` / ``compare``. */
54
+ readonly library: Library;
55
+ /** The shared live-transcription engine — behind ``transcribeLive`` and a room's ``transcribe``. */
56
+ transcribeStream(clips: AsyncIterable<AudioChunk>, opts: TranscribeStreamOptions): AsyncIterable<Transcript>;
57
+ }
58
+ /**
59
+ * A client bound to one Atrium instance and one credential (an OAuth ``clientId`` or an ``apiKey``).
60
+ *
61
+ * Construction is import-safe and side-effect-light. Namespaces (``library`` / ``assets`` /
62
+ * ``sources`` / ``sessions`` / ``rooms``) and the ``chat`` / ``embed`` methods each shape a request,
63
+ * send it over the authenticated transport, and parse the response. ``close()`` (or
64
+ * ``await using``) aborts any in-flight calls.
65
+ */
66
+ export declare class Atrium implements ClientInternal, AsyncDisposable {
67
+ /** The auth module: ``signIn``, ``signOut``, ``user``, ``onChange`` (OAuth path). */
68
+ readonly auth: Auth;
69
+ readonly baseUrl: string;
70
+ readonly clientId: string | undefined;
71
+ readonly library: Library;
72
+ readonly assets: Assets;
73
+ readonly sources: Sources;
74
+ readonly sessions: Sessions;
75
+ readonly rooms: Rooms;
76
+ private readonly apiKey;
77
+ private readonly defaultProject;
78
+ private readonly defaultCollection;
79
+ private readonly lifecycle;
80
+ private spacesPromise;
81
+ constructor(opts?: AtriumOptions);
82
+ /**
83
+ * ``fetch`` against this instance with the signed-in user's bearer token attached, silent refresh,
84
+ * and a one-shot retry on 401. Relative paths resolve against ``baseUrl``.
85
+ */
86
+ fetch(path: string, init?: RequestInit): Promise<Response>;
87
+ /** Resolves once initial auth (callback handling / session resume) has settled. */
88
+ ready(): Promise<void>;
89
+ /** Abort any in-flight requests. Idempotent; called automatically by ``await using``. */
90
+ close(): Promise<void>;
91
+ [Symbol.asyncDispose]: () => Promise<void>;
92
+ /**
93
+ * Chat completion (``POST /v1/chat/completions``). Pass ``responseFormat`` a **Zod schema** for
94
+ * structured output: the reply is validated and the parsed value returned (with one repair turn,
95
+ * then {@link StructuredOutputError}). A raw ``responseFormat`` dict passes through as an OpenAI
96
+ * param. Streaming is a later pass.
97
+ */
98
+ chat<T>(messages: string | ChatMessage[], opts: ChatOptions & {
99
+ responseFormat: ZodLike<T>;
100
+ }): Promise<T>;
101
+ chat(messages: string | ChatMessage[], opts?: ChatOptions): Promise<ChatReply>;
102
+ private chatParse;
103
+ /**
104
+ * Embed text or a media file into a vector (``POST /v1/embeddings``). Pass exactly one of
105
+ * ``text`` / ``image`` / ``audio`` / ``video``. ``model`` is required — an embedding's model is
106
+ * part of your data contract.
107
+ */
108
+ embed(opts: EmbedOptions): Promise<number[]>;
109
+ /**
110
+ * Transcribe speech to text (``POST /v1/audio/transcriptions``). ``opts.verbose`` fills
111
+ * ``.language`` / ``.duration`` / ``.segments`` on the result; ``opts.format`` names the media
112
+ * type for nameless bytes.
113
+ */
114
+ transcribe(audio: FileSource, opts?: TranscribeOptions): Promise<Transcript>;
115
+ /**
116
+ * Transcribe a live audio stream, yielding a {@link Transcript} per finalized sentence.
117
+ *
118
+ * **True streaming when the backend offers it, with a silent fallback.** The primary path opens the
119
+ * live transcription route (``WS /v1/audio/transcriptions/stream``) and pumps ``chunks`` up while
120
+ * reading transcript events down. If that route can't be reached — an old deploy, a proxy that
121
+ * strips the WebSocket upgrade, a refused connection — it degrades to the batch ``transcribe`` route
122
+ * (each chunk POSTed, finals only). A **rejected credential** (close 4401) is *not* a fallback case
123
+ * — it throws {@link AuthError}, since retrying won't heal it. The fallback is **connect-time only**:
124
+ * once live, a mid-session drop throws rather than silently degrading.
125
+ *
126
+ * By default (``partials`` off) it yields **finals only** — each a settled sentence with
127
+ * ``.final === true`` and ``.raw`` carrying ``start`` / ``end`` timings. ``partials`` additionally
128
+ * yields the live partial hypothesis (``.final === false``), a revisable guess at the current tail —
129
+ * render the latest, don't append.
130
+ *
131
+ * Input comes in two shapes: **container clips** (``format`` = ``"webm"`` / ``"wav"`` / … — each
132
+ * chunk a self-contained clip, the browser ``MediaRecorder`` shape) or **raw PCM**
133
+ * (``format="pcm16"``, a continuous PCM16LE-mono stream, which **requires** ``sampleRate`` because
134
+ * raw PCM is headerless). Passing ``sampleRate`` with a container format is an error.
135
+ */
136
+ transcribeLive(chunks: AsyncIterable<AudioChunk>, opts?: TranscribeLiveOptions): AsyncGenerator<Transcript>;
137
+ transcribeStream(clips: AsyncIterable<AudioChunk>, opts: TranscribeStreamOptions): AsyncGenerator<Transcript>;
138
+ private streamToken;
139
+ private encodeMedia;
140
+ scope(project?: string, collection?: string): {
141
+ project?: string;
142
+ collection?: string;
143
+ };
144
+ /** Resolve a space name-or-id to its id via the client-cached space list (mirror of Python's
145
+ * ``_resolve_space``): an id passes through; a case-insensitive name maps to its id; an unknown
146
+ * value is returned as-is for the server to report. The list is fetched once and cached. */
147
+ resolveSpace(nameOrId: string): Promise<string>;
148
+ /** The full space list, fetched once and cached per client (shared with {@link resolveSpace}). */
149
+ cachedSpaces(): Promise<Space[]>;
150
+ /** The client's ``assets`` namespace — the binder threaded into every parsed asset so a bound
151
+ * ``asset.vectors()`` / ``.segments()`` / ``.index()`` resolves through this client. */
152
+ get assetBinder(): AssetBinder;
153
+ private send;
154
+ request(req: ShapedRequest, signal?: AbortSignal): Promise<unknown>;
155
+ requestBytes(req: ShapedRequest, signal?: AbortSignal): Promise<Uint8Array>;
156
+ private keyedFetch;
157
+ private resolveUrl;
158
+ private buildInit;
159
+ }
160
+ interface Scoped {
161
+ project?: string;
162
+ collection?: string;
163
+ signal?: AbortSignal;
164
+ }
165
+ export interface SearchOptions extends Scoped {
166
+ like?: Asset | SearchHit | string;
167
+ likeBy?: string;
168
+ modality?: string;
169
+ space?: string;
170
+ limit?: number;
171
+ tags?: string[];
172
+ anyTags?: string[];
173
+ excludeTags?: string[];
174
+ provider?: string | string[];
175
+ filters?: Filters;
176
+ image?: FileSource;
177
+ audio?: FileSource;
178
+ video?: FileSource;
179
+ vector?: number[];
180
+ /** Inline one vector per hit onto ``hit.vector`` (off by default — vectors are large and never
181
+ * leave Postgres in the search path). ``true`` returns the vector that scored the hit (its
182
+ * identity is the hit's ``matchedBy``); a space id/name returns that space's vector per hit (which
183
+ * can differ from the one that ranked it). */
184
+ includeVectors?: boolean | string;
185
+ }
186
+ export interface CompareOptions {
187
+ /** Force the embedding space (required for a raw ``vector`` operand or cross-modal operands). */
188
+ space?: string;
189
+ /** Fill {@link CompareResult.features} with per-feature terms — concept operands only (a plain
190
+ * asset/vector compare has no per-feature structure, so it stays ``undefined``). Read them as raw
191
+ * per-feature terms, not additive contributions (see {@link CompareFeature}). */
192
+ breakdown?: boolean;
193
+ signal?: AbortSignal;
194
+ }
195
+ export interface LibraryVectorsOptions {
196
+ /** The space(s) to fetch (id or human name, one or a list). Required — a bulk fetch is a
197
+ * single-select context. */
198
+ space: string | string[];
199
+ /** An exact stored signal to fetch. Omitted → per-asset resolution (one call can then return mixed
200
+ * ``matchedBy`` values across assets). */
201
+ matchBy?: string;
202
+ /** Throw if any id is missing (doesn't exist / isn't visible), listing them; default silently omits. */
203
+ strict?: boolean;
204
+ signal?: AbortSignal;
205
+ }
206
+ export interface TagOptions {
207
+ /** Also fetch the materialized concept boundary onto ``tag.snapshot``. */
208
+ includeSnapshot?: boolean;
209
+ signal?: AbortSignal;
210
+ }
211
+ export interface SessionListOptions {
212
+ project?: string;
213
+ /** Filter by study phase (a string or list); the empty string ``""`` matches sessions with no
214
+ * phase set. */
215
+ phase?: string | string[];
216
+ signal?: AbortSignal;
217
+ }
218
+ export interface SessionEventsOptions {
219
+ /** Return only events with ``seq`` greater than this (a sequence number, not a timestamp). */
220
+ after?: number;
221
+ /** Cap the page (1..500, server default 100). */
222
+ limit?: number;
223
+ signal?: AbortSignal;
224
+ }
225
+ export interface EnrichOptions {
226
+ /** The asset modality to enrich, e.g. ``"audio"``. */
227
+ modality: string;
228
+ tags?: string[];
229
+ total?: number;
230
+ /** Dry-run — return the candidates that *would* be pulled, importing nothing. */
231
+ preview?: boolean;
232
+ /** With ``preview`` off, stage synchronously and return the queued rows (else enqueue a job). */
233
+ wait?: boolean;
234
+ signal?: AbortSignal;
235
+ }
236
+ export interface TranscribeOptions {
237
+ model?: string;
238
+ language?: string;
239
+ prompt?: string;
240
+ /** Ask for segment timings + detected language (fills ``.segments`` / ``.language`` / ``.duration``). */
241
+ verbose?: boolean;
242
+ /** Override the inferred media format (e.g. ``"wav"``) — needed for nameless bytes. */
243
+ format?: string;
244
+ signal?: AbortSignal;
245
+ }
246
+ export interface TranscribeLiveOptions {
247
+ model?: string;
248
+ language?: string;
249
+ /** ``"pcm16"`` for a raw headerless PCM16LE-mono stream (needs ``sampleRate``), else a container
250
+ * format (default ``"wav"``) — each chunk a self-contained clip (the ``MediaRecorder`` shape). */
251
+ format?: string;
252
+ /** Required iff ``format: 'pcm16'`` (raw PCM carries no embedded rate); rejected otherwise. */
253
+ sampleRate?: number;
254
+ /** Also yield revisable partial hypotheses (``.final === false``) — the streaming path only. */
255
+ partials?: boolean;
256
+ /** Drop finalized sentences that transcribe to empty text (default ``true``). */
257
+ skipEmpty?: boolean;
258
+ /** Injected ``WebSocket`` constructor for the stream handshake (defaults to the runtime global) —
259
+ * the test seam, and the Node <22 escape hatch (no global ``WebSocket``). */
260
+ webSocketCtor?: WebSocketCtor;
261
+ }
262
+ export interface SearchByExamplesOptions extends Scoped {
263
+ negatives?: OperandLike[];
264
+ method?: "centroid" | "cav" | "probe";
265
+ limit?: number;
266
+ matchBy?: string[] | Record<string, number>;
267
+ filters?: Filters;
268
+ spaces?: string[];
269
+ features?: Record<string, unknown>;
270
+ contrastSamples?: number;
271
+ }
272
+ export interface AssetListOptions extends Scoped {
273
+ modality?: string;
274
+ contentKind?: string[];
275
+ limit?: number;
276
+ cursor?: string;
277
+ }
278
+ export interface UploadOptions {
279
+ modality?: string;
280
+ description?: string;
281
+ collection?: string;
282
+ signal?: AbortSignal;
283
+ }
284
+ export interface SourcesSearchOptions {
285
+ providers?: string | string[];
286
+ k?: number;
287
+ mode?: string;
288
+ modality?: string;
289
+ signal?: AbortSignal;
290
+ }
291
+ export interface SourceImportOptions {
292
+ candidate?: Candidate;
293
+ sourceId?: string;
294
+ externalId?: string;
295
+ modality?: string;
296
+ description?: string;
297
+ signal?: AbortSignal;
298
+ }
299
+ export interface SessionStartOptions {
300
+ project?: string;
301
+ name?: string;
302
+ participantRef?: string;
303
+ /** The experimental condition/arm the session belongs to. */
304
+ condition?: string;
305
+ meta?: Record<string, unknown>;
306
+ signal?: AbortSignal;
307
+ }
308
+ export interface SessionEventOptions {
309
+ payload?: Record<string, unknown>;
310
+ source?: string;
311
+ via?: Record<string, unknown>;
312
+ signal?: AbortSignal;
313
+ }
314
+ /** Live-connection knobs shared by ``rooms.open`` / ``rooms.get`` / ``rooms.join`` (all optional). */
315
+ export interface LiveRoomOptions {
316
+ /** Stable presence identity for the returned handle (e.g. ``"host:studio"``). */
317
+ identity?: string;
318
+ /** Presence announce metadata peers see on join. */
319
+ announce?: Record<string, unknown>;
320
+ /** Default ``room.request`` timeout (ms). */
321
+ requestTimeout?: number;
322
+ /** Reconnect on unexpected drop (default true). */
323
+ reconnect?: boolean;
324
+ /** Signal transport preference (default ``"auto"`` — WS, falling back to SSE behind a proxy that
325
+ * strips WS upgrades, like the production edge). */
326
+ transport?: RoomTransportMode;
327
+ /** Injected ``WebSocket`` constructor (Node <22 has none global; also the test seam). */
328
+ WebSocketCtor?: WebSocketCtor;
329
+ /** Injected ``fetch`` for the SSE transport / roster reads — the test seam. */
330
+ fetchImpl?: FetchImpl;
331
+ /** Aborting this closes the returned room handle. */
332
+ signal?: AbortSignal;
333
+ }
334
+ export interface RoomOpenOptions extends LiveRoomOptions {
335
+ name?: string;
336
+ project?: string;
337
+ embeddingSpace?: string;
338
+ }
339
+ export interface ChatOptions {
340
+ model?: string;
341
+ responseFormat?: ZodLike | Record<string, unknown>;
342
+ strictParams?: boolean;
343
+ signal?: AbortSignal;
344
+ [key: string]: unknown;
345
+ }
346
+ export interface EmbedOptions {
347
+ model: string;
348
+ text?: string;
349
+ image?: FileSource;
350
+ audio?: FileSource;
351
+ video?: FileSource;
352
+ format?: string;
353
+ signal?: AbortSignal;
354
+ }
355
+ /** Semantic library search and mood-board (search-by-examples) queries. */
356
+ export declare class Library {
357
+ private readonly c;
358
+ constructor(c: ClientInternal);
359
+ /** List the searchable embedding spaces (``GET /v1/library/spaces``). */
360
+ spaces(opts?: {
361
+ signal?: AbortSignal;
362
+ }): Promise<Space[]>;
363
+ /**
364
+ * Resolve ``modality`` to the deployment's default space (or ``undefined``).
365
+ *
366
+ * So an app never has to hardcode a deployment's space ids — those leak deployment config into
367
+ * caller code. The deployment declares its defaults (``defaultModalities``); the app just asks.
368
+ * Returns the first space whose ``defaultModalities`` include ``modality``, else the first whose
369
+ * ``modalities`` include it, else ``undefined`` — reading the client's cached space list (no
370
+ * per-call refetch). The returned space's ``id`` is what search/scoring take as ``space``.
371
+ */
372
+ defaultSpace(modality: string): Promise<Space | undefined>;
373
+ /** Semantic search — by text, an example asset (``like``), a media file, or a raw ``vector``. */
374
+ search(query?: string, opts?: SearchOptions): Promise<SearchHit[]>;
375
+ /** Find assets similar to a *set* of example assets (a mood board). */
376
+ searchByExamples(positives: OperandLike[], opts?: SearchByExamplesOptions): Promise<SearchByExamplesHit[]>;
377
+ /**
378
+ * Compare two operands and return their similarity (raw + calibrated when available). Each operand
379
+ * is an ``Asset``, a bare text string, or a ``by.*`` marker — ``by.asset(id)`` for a bare id,
380
+ * ``by.vector([…])`` for a raw vector, ``by.file(…)`` for a file, ``by.concept(name)`` for a tag's
381
+ * concept. ``space`` forces the embedding space (required for a raw vector or cross-modal pair).
382
+ */
383
+ compare(a: OperandLike, b: OperandLike, opts?: CompareOptions): Promise<CompareResult>;
384
+ /**
385
+ * Pull external candidates (Freesound / Openverse / …) for a query into the library. ``preview``
386
+ * is a dry-run that returns the candidates that *would* be pulled. The response is the raw payload
387
+ * (a deliberately unwrapped long tail — preview steps, or the staged/enqueued result).
388
+ */
389
+ enrich(query: string, opts: EnrichOptions): Promise<Record<string, unknown>>;
390
+ /**
391
+ * Fetch stored embedding vectors for many assets at once (``POST /v1/library/vectors``,
392
+ * member-gated). ``ids`` elements are ``Asset`` objects, ``SearchHit`` results, or bare id strings.
393
+ * ``space`` (id or human name, one or a list) selects the space(s); ``matchBy`` picks an exact
394
+ * stored signal. **With ``matchBy`` omitted the signal is resolved per asset**, so one call can
395
+ * return mixed ``matchedBy`` values across assets — read {@link AssetVector.matchedBy}. Ids that
396
+ * don't exist or aren't visible land in the server's ``missing`` list: default silently omits them;
397
+ * ``strict: true`` throws, listing them.
398
+ */
399
+ vectors(ids: AssetRef[], opts: LibraryVectorsOptions): Promise<AssetVector[]>;
400
+ private resolveSpaceArg;
401
+ /** List the tag definitions in scope (``GET /v1/library/tags``) — read-only. Inherits the
402
+ * client's collection scoping (own + inherited tags, else the root Library's vocabulary). Tag
403
+ * create/update/delete stay platform-only. */
404
+ tags(opts?: {
405
+ signal?: AbortSignal;
406
+ }): Promise<TagDefinition[]>;
407
+ /** Fetch one tag definition by name or id (``GET /v1/library/tags/{ref}``) — read-only. The name
408
+ * is resolved within the client's collection scope. ``includeSnapshot: true`` also fetches the
409
+ * materialized concept boundary onto ``tag.snapshot``. */
410
+ tag(nameOrId: string, opts?: TagOptions): Promise<TagDefinition>;
411
+ }
412
+ /** Browse and fetch asset metadata. */
413
+ export declare class Assets {
414
+ private readonly c;
415
+ constructor(c: ClientInternal);
416
+ /** List assets in scope, newest first (``GET /v1/assets``). */
417
+ list(opts?: AssetListOptions): Promise<AssetPage>;
418
+ /** Fetch a single asset's metadata (``GET /v1/assets/{id}``). */
419
+ get(assetId: string, opts?: {
420
+ collection?: string;
421
+ signal?: AbortSignal;
422
+ }): Promise<Asset>;
423
+ /**
424
+ * Fetch one asset's stored embedding vectors (``GET /v1/assets/{id}/vectors``, public by-id).
425
+ * ``assetOrId`` is an ``Asset``, a ``SearchHit``, or a bare id. No ``space``/``matchBy`` returns
426
+ * every stored vector; ``space`` (id or human name, one or a list) and ``matchBy`` (a coarse class
427
+ * like ``native``/``manual``, or an exact value like ``bridge:text``/``seg:<id>``) narrow them.
428
+ * Also available as the bound ``asset.vectors(...)``.
429
+ */
430
+ vectors(assetOrId: AssetRef, opts?: AssetVectorsOptions): Promise<AssetVector[]>;
431
+ /** Fetch one asset's sound-event segments (``GET /v1/assets/{id}/segments``, public by-id). Each
432
+ * {@link SegmentRef} carries a ``contentUrl`` for just that slice's pre-cut bytes. Also available
433
+ * as the bound ``asset.segments()``. */
434
+ segments(assetOrId: AssetRef): Promise<SegmentRef[]>;
435
+ /** Fetch one asset's per-signal index map (``GET /v1/assets/{id}/index``, authenticated). Each
436
+ * {@link IndexEntry} is one stored signal's processing state; the server's internal ``via``
437
+ * surfaces as ``matchedBy``. Also available as the bound ``asset.index()``. */
438
+ index(assetOrId: AssetRef): Promise<IndexEntry[]>;
439
+ /** Upload a file to the library (``POST /v1/assets``); it indexes in the background. */
440
+ upload(file: FileSource, opts?: UploadOptions): Promise<Asset>;
441
+ }
442
+ /** External sources — search several providers at once, then import what you pick. */
443
+ export declare class Sources {
444
+ private readonly c;
445
+ constructor(c: ClientInternal);
446
+ /** List the registered external sources (``GET /v1/library/sources``). */
447
+ list(opts?: {
448
+ signal?: AbortSignal;
449
+ }): Promise<SourceInfo[]>;
450
+ /** Search external sources for a query (``POST /v1/library/sources/search``) — read-only. */
451
+ search(query: string, opts?: SourcesSearchOptions): Promise<SourceSearchResult>;
452
+ /** Import one candidate into the shared library (``POST …/{source}/import``). */
453
+ import(opts: SourceImportOptions): Promise<Asset>;
454
+ }
455
+ /** Start / resume sessions and append to their durable log. */
456
+ export declare class Sessions {
457
+ private readonly c;
458
+ constructor(c: ClientInternal);
459
+ /** Start a new session — a standalone durable record (``POST /v1/sessions``). */
460
+ start(opts?: SessionStartOptions): Promise<Session>;
461
+ /** Resume an existing session by id (``GET /v1/sessions/{id}``) — the live {@link Session} handle
462
+ * for continued logging. For a read-only analysis view use {@link get}, which GETs the same route
463
+ * but returns a {@link SessionInfo} read model. */
464
+ resume(sessionId: string, opts?: {
465
+ signal?: AbortSignal;
466
+ }): Promise<Session>;
467
+ /** List a project's sessions, newest first (``GET /v1/sessions``) — the read model. No ``project``
468
+ * → the client's default project. ``phase`` (a string or list) filters by study phase; the empty
469
+ * string ``""`` matches sessions with no phase set. Each row is a {@link SessionInfo};
470
+ * ``hasTranscript`` is ``null`` in list results (only {@link get} populates it). There is no
471
+ * participant filter server-side — filter the returned rows on ``participantRef`` yourself. */
472
+ list(opts?: SessionListOptions): Promise<SessionInfo[]>;
473
+ /** Fetch a session's read model for analysis (``GET /v1/sessions/{id}``) — a {@link SessionInfo}
474
+ * with ``hasTranscript`` populated. This is the **read model**; to keep *writing* to the log use
475
+ * {@link resume}, which GETs the same route but returns the live {@link Session} handle. */
476
+ get(sessionId: string, opts?: {
477
+ signal?: AbortSignal;
478
+ }): Promise<SessionInfo>;
479
+ /** A session's durable event log as flat rows (``GET /v1/sessions/{id}/events/history``). ``after``
480
+ * returns only events with ``seq`` greater than it (a sequence number, not a timestamp); ``limit``
481
+ * caps the page (1..500, server default 100). Each row is a {@link ReadSessionEvent}. */
482
+ events(sessionId: string, opts?: SessionEventsOptions): Promise<ReadSessionEvent[]>;
483
+ /**
484
+ * Export one session's data as raw bytes, dispatching ``format`` to its fixed export route.
485
+ * ``"jsonl"`` / ``"csv"`` are the event log; ``"transcript"`` is the plain-text transcript (404s
486
+ * when the session has none); ``"bundle"`` is a zip of everything. There is no ``?format=`` param
487
+ * server-side — each is a distinct path.
488
+ *
489
+ * Returns a ``Uint8Array``: the SDK is browser + Node, and the core never touches the filesystem
490
+ * (``files.ts``), so there is no ``path=`` file-writing (a Node caller writes the bytes itself).
491
+ */
492
+ export(sessionId: string, format?: SessionExportFormat, opts?: {
493
+ signal?: AbortSignal;
494
+ }): Promise<Uint8Array>;
495
+ /** Export several sessions as one zip (``GET /v1/sessions/export/bundle``), returned as raw bytes.
496
+ * ``ids`` is required; the server caps a call at 100 **distinct** ids — more (or an empty list)
497
+ * throws (never silently truncated or chunked). Data access is required on every id. */
498
+ exportBundle(ids: string[], opts?: {
499
+ signal?: AbortSignal;
500
+ }): Promise<Uint8Array>;
501
+ /** Append a durable event to a session's log (``POST /v1/sessions/{id}/events``). */
502
+ event(sessionId: string, type: string, opts?: SessionEventOptions): Promise<SessionEvent>;
503
+ }
504
+ /** Open / fetch / join rooms — each returns a live {@link Room} handle (connect, send, on, request,
505
+ * player controls, audio signals). ``connect()`` (called for you by any wire method) opens the socket. */
506
+ export declare class Rooms {
507
+ private readonly c;
508
+ constructor(c: ClientInternal);
509
+ private wrap;
510
+ /** Open a room (``POST /v1/rooms``) and return a live handle. */
511
+ open(opts?: RoomOpenOptions): Promise<Room>;
512
+ /** Fetch a room by id (``GET /v1/rooms/{id}``) and return a live handle. */
513
+ get(roomId: string, opts?: LiveRoomOptions): Promise<Room>;
514
+ /** List the rooms you can see (``GET /v1/rooms``) as live handles. */
515
+ list(opts?: {
516
+ signal?: AbortSignal;
517
+ }): Promise<Room[]>;
518
+ /** Join a room by its connect code (``GET /v1/rooms/resolve``) — a participant handle that can
519
+ * ``send`` / ``on`` / ``request`` / play / consume audio, but not manage the room. */
520
+ join(code: string, opts?: LiveRoomOptions): Promise<Room>;
521
+ }
522
+ //# sourceMappingURL=atrium.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atrium.d.ts","sourceRoot":"","sources":["../src/atrium.ts"],"names":[],"mappings":"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"}