@telecabin/core 0.1.0 → 0.1.3

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.
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Client-side attachment encryption + upload, matching the server's
3
+ * `/api/s/{slug}/attachments` contract.
4
+ *
5
+ * The wire format follows `lib/crypto.ts` on the server side:
6
+ * AES-GCM-256 with a fresh 12-byte IV per attachment. The session key
7
+ * lives outside this module — it's the same `b64url` key that the web
8
+ * UI keeps in the URL fragment (`#k=`).
9
+ */
10
+ /** Hard server cap — 5 MiB per attachment. Mirrors `lib/attachments.ts`. */
11
+ export declare const MAX_ATTACHMENT_BYTES: number;
12
+ /** Server enforces this when attaching to a message. */
13
+ export declare const MAX_ATTACHMENTS_PER_MESSAGE = 4;
14
+ /** TTL after which the encrypted bytes are deleted by the cron sweep. */
15
+ export declare const ATTACHMENT_TTL_HOURS = 24;
16
+ /** Sentinel value used in the `iv` field when an attachment is uploaded
17
+ * to a non-E2EE session — the bytes are stored plaintext, no IV exists.
18
+ * Mirrors `PLAINTEXT_ATTACHMENT_IV` in `lib/attachments.ts`. */
19
+ export declare const PLAINTEXT_ATTACHMENT_IV = "plaintext";
20
+ /** Server allowlist. The plaintext MIME is declared in metadata; the
21
+ * ciphertext itself is always uploaded as `application/octet-stream`. */
22
+ export declare const ALLOWED_ATTACHMENT_MIME_TYPES: readonly ["image/png", "image/jpeg", "image/webp", "image/gif", "application/pdf", "text/plain"];
23
+ export type AttachmentMime = (typeof ALLOWED_ATTACHMENT_MIME_TYPES)[number];
24
+ export declare function isAllowedAttachmentMime(mime: string): mime is AttachmentMime;
25
+ /** AES-GCM encrypt — produces a separate IV + raw ciphertext suitable for
26
+ * multipart upload. Mirrors the server's `encryptBytes`. */
27
+ export declare function encryptAttachment(b64Key: string, plaintext: Uint8Array | ArrayBuffer): Promise<{
28
+ iv: string;
29
+ ciphertext: Uint8Array;
30
+ }>;
31
+ /** AES-GCM decrypt, mirrors the server's `decryptBytes`. */
32
+ export declare function decryptAttachment(b64Key: string, ivB64: string, ciphertext: ArrayBuffer | Uint8Array): Promise<Uint8Array>;
33
+ /** AES-GCM encrypt a UTF-8 string into the server's `v1.<iv>.<ct>` wire
34
+ * format — used for E2EE message content (matches `lib/crypto.ts:encrypt`). */
35
+ export declare function encryptText(b64Key: string, plaintext: string): Promise<string>;
36
+ //# sourceMappingURL=attachments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,QAAkB,CAAC;AAEpD,wDAAwD;AACxD,eAAO,MAAM,2BAA2B,IAAI,CAAC;AAE7C,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC;;gEAEgE;AAChE,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD;yEACyE;AACzE,eAAO,MAAM,6BAA6B,kGAOhC,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,6BAA6B,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAE5E;AAED;4DAC4D;AAC5D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,UAAU,GAAG,WAAW,GAClC,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC,CAoBjD;AAED,4DAA4D;AAC5D,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,WAAW,GAAG,UAAU,GACnC,OAAO,CAAC,UAAU,CAAC,CAwBrB;AAED;+EAC+E;AAC/E,wBAAsB,WAAW,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Client-side attachment encryption + upload, matching the server's
3
+ * `/api/s/{slug}/attachments` contract.
4
+ *
5
+ * The wire format follows `lib/crypto.ts` on the server side:
6
+ * AES-GCM-256 with a fresh 12-byte IV per attachment. The session key
7
+ * lives outside this module — it's the same `b64url` key that the web
8
+ * UI keeps in the URL fragment (`#k=`).
9
+ */
10
+ import { Buffer } from "node:buffer";
11
+ import { TelecabinError } from "./errors.js";
12
+ /** Hard server cap — 5 MiB per attachment. Mirrors `lib/attachments.ts`. */
13
+ export const MAX_ATTACHMENT_BYTES = 5 * 1024 * 1024;
14
+ /** Server enforces this when attaching to a message. */
15
+ export const MAX_ATTACHMENTS_PER_MESSAGE = 4;
16
+ /** TTL after which the encrypted bytes are deleted by the cron sweep. */
17
+ export const ATTACHMENT_TTL_HOURS = 24;
18
+ /** Sentinel value used in the `iv` field when an attachment is uploaded
19
+ * to a non-E2EE session — the bytes are stored plaintext, no IV exists.
20
+ * Mirrors `PLAINTEXT_ATTACHMENT_IV` in `lib/attachments.ts`. */
21
+ export const PLAINTEXT_ATTACHMENT_IV = "plaintext";
22
+ /** Server allowlist. The plaintext MIME is declared in metadata; the
23
+ * ciphertext itself is always uploaded as `application/octet-stream`. */
24
+ export const ALLOWED_ATTACHMENT_MIME_TYPES = [
25
+ "image/png",
26
+ "image/jpeg",
27
+ "image/webp",
28
+ "image/gif",
29
+ "application/pdf",
30
+ "text/plain",
31
+ ];
32
+ export function isAllowedAttachmentMime(mime) {
33
+ return ALLOWED_ATTACHMENT_MIME_TYPES.includes(mime);
34
+ }
35
+ /** AES-GCM encrypt — produces a separate IV + raw ciphertext suitable for
36
+ * multipart upload. Mirrors the server's `encryptBytes`. */
37
+ export async function encryptAttachment(b64Key, plaintext) {
38
+ const subtle = globalThis.crypto?.subtle;
39
+ if (!subtle) {
40
+ throw new TelecabinError("http_error", "Web Crypto API not available — Node 19+ is required.");
41
+ }
42
+ const rawKey = b64uDecode(b64Key);
43
+ const key = await subtle.importKey("raw", rawKey, "AES-GCM", false, ["encrypt"]);
44
+ const iv = globalThis.crypto.getRandomValues(new Uint8Array(12));
45
+ const bytes = plaintext instanceof Uint8Array ? plaintext : new Uint8Array(plaintext);
46
+ const ct = await subtle.encrypt({ name: "AES-GCM", iv }, key, bytes);
47
+ return { iv: b64uEncode(iv), ciphertext: new Uint8Array(ct) };
48
+ }
49
+ /** AES-GCM decrypt, mirrors the server's `decryptBytes`. */
50
+ export async function decryptAttachment(b64Key, ivB64, ciphertext) {
51
+ const subtle = globalThis.crypto?.subtle;
52
+ if (!subtle) {
53
+ throw new TelecabinError("http_error", "Web Crypto API not available — Node 19+ is required.");
54
+ }
55
+ const rawKey = b64uDecode(b64Key);
56
+ const key = await subtle.importKey("raw", rawKey, "AES-GCM", false, ["decrypt"]);
57
+ const iv = b64uDecode(ivB64);
58
+ const ct = ciphertext instanceof Uint8Array ? ciphertext : new Uint8Array(ciphertext);
59
+ const plain = await subtle.decrypt({ name: "AES-GCM", iv: iv }, key, ct);
60
+ return new Uint8Array(plain);
61
+ }
62
+ /** AES-GCM encrypt a UTF-8 string into the server's `v1.<iv>.<ct>` wire
63
+ * format — used for E2EE message content (matches `lib/crypto.ts:encrypt`). */
64
+ export async function encryptText(b64Key, plaintext) {
65
+ const { iv, ciphertext } = await encryptAttachment(b64Key, new TextEncoder().encode(plaintext));
66
+ return `v1.${iv}.${b64uEncode(ciphertext)}`;
67
+ }
68
+ function b64uEncode(bytes) {
69
+ return Buffer.from(bytes).toString("base64url");
70
+ }
71
+ function b64uDecode(s) {
72
+ return new Uint8Array(Buffer.from(s, "base64url"));
73
+ }
74
+ //# sourceMappingURL=attachments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { InvitePreview, JoinResult, PollResult, Snapshot, Status, TelecabinEvent } from "./types.js";
1
+ import type { InvitePreview, JoinResult, PollResult, PublicAttachment, Snapshot, Status, TelecabinEvent } from "./types.js";
2
2
  /** Default deployment used when no base URL is configured. */
3
3
  export declare const DEFAULT_BASE_URL = "https://telecabin.app";
4
4
  export interface ClientOptions {
@@ -26,8 +26,21 @@ export declare class TelecabinClient {
26
26
  snapshot(signal?: AbortSignal): Promise<Snapshot>;
27
27
  /** Events strictly after `after`. Pass the returned `cursor` to the next call. */
28
28
  poll(after?: number, limit?: number, signal?: AbortSignal): Promise<PollResult>;
29
- /** Post a message. The server also resets your status to `idle`. */
30
- send(content: string, signal?: AbortSignal): Promise<TelecabinEvent>;
29
+ /**
30
+ * Post a message. Resets your status to `idle` on success.
31
+ *
32
+ * - `attachmentIds` references attachments you uploaded via
33
+ * `uploadAttachment()`; the server validates that they belong to you
34
+ * and aren't already attached to another message.
35
+ * - `sessionKey` (when present) AES-GCM encrypts `content` to the
36
+ * `v1.<iv>.<ct>` wire format before sending — required if the session
37
+ * is end-to-end encrypted.
38
+ */
39
+ send(content: string, opts?: {
40
+ attachmentIds?: string[];
41
+ sessionKey?: string;
42
+ signal?: AbortSignal;
43
+ }): Promise<TelecabinEvent>;
31
44
  /** Broadcast your presence status. */
32
45
  setStatus(status: Status, meta?: Record<string, unknown>, signal?: AbortSignal): Promise<TelecabinEvent>;
33
46
  /**
@@ -49,6 +62,39 @@ export declare class TelecabinClient {
49
62
  filter?: (e: TelecabinEvent) => boolean;
50
63
  signal?: AbortSignal;
51
64
  }): Promise<PollResult>;
65
+ /**
66
+ * Upload an attachment.
67
+ *
68
+ * - **E2EE session** (`sessionKey` provided): the bytes are AES-GCM encrypted
69
+ * client-side; the server only ever sees ciphertext + the random IV. The
70
+ * blob is stored as `application/octet-stream`.
71
+ * - **Non-E2EE session** (no `sessionKey`): the bytes go through as-is. The
72
+ * blob is stored with the declared `mimeType` so it can render in-place.
73
+ * The `iv` field is set to the sentinel `"plaintext"`.
74
+ *
75
+ * Returns the attachment record — pass its `id` to `send({ attachmentIds: [...] })`
76
+ * to attach it to a message.
77
+ */
78
+ uploadAttachment(opts: {
79
+ plaintext: Uint8Array | ArrayBuffer;
80
+ name: string;
81
+ mimeType: string;
82
+ sessionKey?: string;
83
+ signal?: AbortSignal;
84
+ }): Promise<PublicAttachment>;
85
+ /**
86
+ * Fetch the bytes for a known attachment. Returns null if the blob is
87
+ * already gone (TTL expired).
88
+ *
89
+ * - For encrypted attachments (`attachment.encrypted === true`), the
90
+ * `sessionKey` must match the one the uploader used.
91
+ * - For plaintext attachments (non-E2EE session), `sessionKey` is ignored
92
+ * and the raw bytes are returned directly.
93
+ *
94
+ * Throws `invalid_body` if you pass an encrypted attachment without a
95
+ * `sessionKey` — there's no way to recover the plaintext.
96
+ */
97
+ fetchAttachmentBytes(attachment: PublicAttachment, sessionKey?: string, signal?: AbortSignal): Promise<Uint8Array | null>;
52
98
  /** Join a session with an invite code, minting a fresh participant token. */
53
99
  static join(opts: {
54
100
  baseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAuBD;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBAE7B,IAAI,EAAE,aAAa;YAOjB,OAAO;IA4BrB,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIjD,kFAAkF;IAClF,IAAI,CAAC,KAAK,SAAI,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ1E,oEAAoE;IAC9D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;IAQ1E,sCAAsC;IAChC,SAAS,CACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,cAAc,CAAC;IAQ1B;;;OAGG;IACI,MAAM,CACX,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACvE,cAAc,CAAC,cAAc,EAAE,IAAI,CAAC;IAoBvC;;;OAGG;IACG,YAAY,CAChB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC;QACxC,MAAM,CAAC,EAAE,WAAW,CAAC;KACjB,GACL,OAAO,CAAC,UAAU,CAAC;IAetB,6EAA6E;WAChE,IAAI,CAAC,IAAI,EAAE;QACtB,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,CAAC;IA8BvB,iEAAiE;WACpD,aAAa,CAAC,IAAI,EAAE;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;KACtB,GAAG,OAAO,CAAC,aAAa,CAAC;CAgB3B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { decryptAttachment, encryptAttachment, encryptText, isAllowedAttachmentMime, MAX_ATTACHMENT_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, PLAINTEXT_ATTACHMENT_IV, } from "./attachments.js";
1
2
  import { TelecabinError } from "./errors.js";
2
3
  /** Default deployment used when no base URL is configured. */
3
4
  export const DEFAULT_BASE_URL = "https://telecabin.app";
@@ -73,9 +74,32 @@ export class TelecabinClient {
73
74
  signal,
74
75
  });
75
76
  }
76
- /** Post a message. The server also resets your status to `idle`. */
77
- async send(content, signal) {
78
- const r = await this.request(`/api/s/${this.slug}/messages`, { method: "POST", body: { content }, signal });
77
+ /**
78
+ * Post a message. Resets your status to `idle` on success.
79
+ *
80
+ * - `attachmentIds` references attachments you uploaded via
81
+ * `uploadAttachment()`; the server validates that they belong to you
82
+ * and aren't already attached to another message.
83
+ * - `sessionKey` (when present) AES-GCM encrypts `content` to the
84
+ * `v1.<iv>.<ct>` wire format before sending — required if the session
85
+ * is end-to-end encrypted.
86
+ */
87
+ async send(content, opts = {}) {
88
+ if (opts.attachmentIds && opts.attachmentIds.length > MAX_ATTACHMENTS_PER_MESSAGE) {
89
+ throw new TelecabinError("invalid_body", `Too many attachments: ${opts.attachmentIds.length} > ${MAX_ATTACHMENTS_PER_MESSAGE} max per message.`);
90
+ }
91
+ // Encrypt non-empty content with the session key; pass empty content
92
+ // through as "" so attachment-only posts don't carry a dummy ciphertext.
93
+ const wireContent = opts.sessionKey && content
94
+ ? await encryptText(opts.sessionKey, content)
95
+ : content;
96
+ const payload = {
97
+ content: wireContent,
98
+ };
99
+ if (opts.attachmentIds?.length) {
100
+ payload.attachmentIds = opts.attachmentIds;
101
+ }
102
+ const r = await this.request(`/api/s/${this.slug}/messages`, { method: "POST", body: payload, signal: opts.signal });
79
103
  return r.event;
80
104
  }
81
105
  /** Broadcast your presence status. */
@@ -125,6 +149,98 @@ export class TelecabinClient {
125
149
  await sleep(Math.min(interval, remaining), opts.signal);
126
150
  }
127
151
  }
152
+ /**
153
+ * Upload an attachment.
154
+ *
155
+ * - **E2EE session** (`sessionKey` provided): the bytes are AES-GCM encrypted
156
+ * client-side; the server only ever sees ciphertext + the random IV. The
157
+ * blob is stored as `application/octet-stream`.
158
+ * - **Non-E2EE session** (no `sessionKey`): the bytes go through as-is. The
159
+ * blob is stored with the declared `mimeType` so it can render in-place.
160
+ * The `iv` field is set to the sentinel `"plaintext"`.
161
+ *
162
+ * Returns the attachment record — pass its `id` to `send({ attachmentIds: [...] })`
163
+ * to attach it to a message.
164
+ */
165
+ async uploadAttachment(opts) {
166
+ if (!isAllowedAttachmentMime(opts.mimeType)) {
167
+ throw new TelecabinError("invalid_body", `Unsupported MIME type for attachment: ${opts.mimeType}`);
168
+ }
169
+ const plaintext = opts.plaintext instanceof Uint8Array
170
+ ? opts.plaintext
171
+ : new Uint8Array(opts.plaintext);
172
+ if (plaintext.byteLength > MAX_ATTACHMENT_BYTES) {
173
+ throw new TelecabinError("invalid_body", `Attachment too large: ${plaintext.byteLength} bytes > ${MAX_ATTACHMENT_BYTES} max.`);
174
+ }
175
+ const form = new FormData();
176
+ if (opts.sessionKey) {
177
+ const { iv, ciphertext } = await encryptAttachment(opts.sessionKey, plaintext);
178
+ form.append("file", new Blob([ciphertext], { type: "application/octet-stream" }), `${opts.name}.bin`);
179
+ form.append("iv", iv);
180
+ form.append("encrypted", "true");
181
+ }
182
+ else {
183
+ form.append("file", new Blob([plaintext], { type: opts.mimeType }), opts.name);
184
+ form.append("iv", PLAINTEXT_ATTACHMENT_IV);
185
+ form.append("encrypted", "false");
186
+ }
187
+ form.append("name", opts.name);
188
+ form.append("mimeType", opts.mimeType);
189
+ form.append("byteSize", String(plaintext.byteLength));
190
+ let res;
191
+ try {
192
+ res = await this.fetchImpl(`${this.baseUrl}/api/s/${this.slug}/attachments`, {
193
+ method: "POST",
194
+ headers: { Authorization: `Bearer ${this.token}` },
195
+ body: form,
196
+ signal: opts.signal,
197
+ });
198
+ }
199
+ catch (err) {
200
+ if (err instanceof DOMException && err.name === "AbortError")
201
+ throw err;
202
+ throw new TelecabinError("network_error", `Cannot reach ${this.baseUrl}: ${err.message}`);
203
+ }
204
+ if (!res.ok)
205
+ throw await TelecabinError.fromResponse(res);
206
+ const body = (await res.json());
207
+ return body.attachment;
208
+ }
209
+ /**
210
+ * Fetch the bytes for a known attachment. Returns null if the blob is
211
+ * already gone (TTL expired).
212
+ *
213
+ * - For encrypted attachments (`attachment.encrypted === true`), the
214
+ * `sessionKey` must match the one the uploader used.
215
+ * - For plaintext attachments (non-E2EE session), `sessionKey` is ignored
216
+ * and the raw bytes are returned directly.
217
+ *
218
+ * Throws `invalid_body` if you pass an encrypted attachment without a
219
+ * `sessionKey` — there's no way to recover the plaintext.
220
+ */
221
+ async fetchAttachmentBytes(attachment, sessionKey, signal) {
222
+ if (attachment.encrypted && !sessionKey) {
223
+ throw new TelecabinError("invalid_body", "Attachment is encrypted but no sessionKey was provided.");
224
+ }
225
+ let res;
226
+ try {
227
+ res = await this.fetchImpl(attachment.url, { signal });
228
+ }
229
+ catch (err) {
230
+ if (err instanceof DOMException && err.name === "AbortError")
231
+ throw err;
232
+ throw new TelecabinError("network_error", `Cannot reach blob: ${err.message}`);
233
+ }
234
+ if (res.status === 404 || res.status === 410)
235
+ return null;
236
+ if (!res.ok) {
237
+ throw new TelecabinError("http_error", `Failed to fetch attachment bytes (HTTP ${res.status}).`, res.status);
238
+ }
239
+ const bytes = new Uint8Array(await res.arrayBuffer());
240
+ if (!attachment.encrypted)
241
+ return bytes;
242
+ return decryptAttachment(sessionKey, attachment.iv, bytes);
243
+ }
128
244
  /** Join a session with an invite code, minting a fresh participant token. */
129
245
  static async join(opts) {
130
246
  const base = opts.baseUrl.replace(/\/+$/, "");
@@ -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/config.d.ts CHANGED
@@ -5,6 +5,11 @@ export interface Connection {
5
5
  token: string;
6
6
  sessionName?: string;
7
7
  participantName?: string;
8
+ /** Optional base64url AES-GCM session key for E2EE sessions.
9
+ * The web UI keeps it in the URL fragment (`#k=…`); for CLI/MCP callers,
10
+ * we persist it here so attachment upload and message decryption work
11
+ * without prompting on every call. The server never sees it. */
12
+ sessionKey?: string;
8
13
  }
9
14
  /** Saved owner credentials for managing sessions from the CLI. */
10
15
  export interface OwnerProfile {
@@ -26,6 +31,8 @@ export interface ResolvedConnection {
26
31
  token: string;
27
32
  sessionName?: string;
28
33
  participantName?: string;
34
+ /** Base64url AES-GCM session key — present when the session is E2EE. */
35
+ sessionKey?: string;
29
36
  }
30
37
  /** Inputs that can override config when resolving a connection. */
31
38
  export interface ResolveInput {
@@ -33,6 +40,7 @@ export interface ResolveInput {
33
40
  baseUrl?: string;
34
41
  slug?: string;
35
42
  token?: string;
43
+ sessionKey?: string;
36
44
  }
37
45
  /** Absolute path of the telecabin config file. */
38
46
  export declare function configPath(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,kDAAkD;AAClD,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CAmB3D;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE;AAED,2DAA2D;AAC3D,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,0EAA0E;AAC1E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,mDAAmD;AACnD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,GAAE,YAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAiC7B;AAED,yDAAyD;AACzD,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1E;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,KAAK,GAAE,iBAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAgBvB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;oEAGgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,kEAAkE;AAClE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,mEAAmE;AACnE,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAOD,kDAAkD;AAClD,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CAmB3D;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAKvE;AAED,2DAA2D;AAC3D,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,UAAU,EACtB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC,OAAO,CAAC,IAAI,CAAC,CAOf;AAED,0EAA0E;AAC1E,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASrE;AAED,mDAAmD;AACnD,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAUtE;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,GAAE,YAAiB,GACvB,OAAO,CAAC,kBAAkB,CAAC,CAoC7B;AAED,yDAAyD;AACzD,wBAAsB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1E;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,KAAK,GAAE,iBAAsB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAgBvB"}
package/dist/config.js CHANGED
@@ -87,6 +87,7 @@ export async function resolveConnection(input = {}) {
87
87
  const baseUrl = input.baseUrl ?? process.env.TELECABIN_BASE_URL ?? base?.baseUrl ?? DEFAULT_BASE_URL;
88
88
  const slug = input.slug ?? process.env.TELECABIN_SLUG ?? base?.slug;
89
89
  const token = input.token ?? process.env.TELECABIN_TOKEN ?? base?.token;
90
+ const sessionKey = input.sessionKey ?? process.env.TELECABIN_SESSION_KEY ?? base?.sessionKey;
90
91
  if (!slug || !token) {
91
92
  throw new TelecabinError("no_active_session", 'No active session. Run "telecabin join <invite-code>", or pass --slug and --token (or set TELECABIN_SLUG / TELECABIN_TOKEN).');
92
93
  }
@@ -97,6 +98,7 @@ export async function resolveConnection(input = {}) {
97
98
  token,
98
99
  sessionName: base?.sessionName,
99
100
  participantName: base?.participantName,
101
+ sessionKey,
100
102
  };
101
103
  }
102
104
  /** Save the owner profile (base URL + owner API key). */
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmD7C,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACxC,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAChF,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,UAAU;IACxB,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;QAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,cAAc,CACtB,YAAY,EACZ,kBAAkB,UAAU,EAAE,qBAAqB,CACpD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAuB;IACtD,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;IAC1B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtE,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,2DAA2D;AAC3D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAY,EACZ,UAAsB,EACtB,OAAkC,EAAE;IAEpC,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC;IACtC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAClD,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAClC,CAAC;IACD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAY;IACjD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;QACtC,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mDAAmD;AACnD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY;IACrD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,8BAA8B,IAAI,IAAI,CACvC,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAChC,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAsB,EAAE;IAExB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,UAAU,GACd,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,MAAM,CAAC,iBAAiB,CAAC;IACnF,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAErE,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,8BAA8B,KAAK,CAAC,UAAU,8CAA8C,CAC7F,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GACX,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,EAAE,OAAO,IAAI,gBAAgB,CAAC;IACvF,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAI,EAAE,IAAI,CAAC;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,EAAE,KAAK,CAAC;IACxE,MAAM,UAAU,GACd,KAAK,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,IAAI,EAAE,UAAU,CAAC;IAE5E,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,8HAA8H,CAC/H,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;QACnC,OAAO;QACP,IAAI;QACJ,KAAK;QACL,WAAW,EAAE,IAAI,EAAE,WAAW;QAC9B,eAAe,EAAE,IAAI,EAAE,eAAe;QACtC,UAAU;KACX,CAAC;AACJ,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAqB;IACzD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;IACvB,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAQD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,QAA2B,EAAE;IAE7B,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,OAAO,GACX,KAAK,CAAC,OAAO;QACb,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,MAAM,CAAC,KAAK,EAAE,OAAO;QACrB,gBAAgB,CAAC;IACnB,MAAM,GAAG,GACP,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;IACpE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,cAAc,CACtB,mBAAmB,EACnB,0HAA0H,CAC3H,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;AAC1B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,9 @@ export { OwnerClient } from "./owner.js";
4
4
  export type { OwnerClientOptions } from "./owner.js";
5
5
  export { TelecabinError } from "./errors.js";
6
6
  export type { TelecabinErrorCode } from "./errors.js";
7
+ export { ALLOWED_ATTACHMENT_MIME_TYPES, ATTACHMENT_TTL_HOURS, decryptAttachment, encryptAttachment, encryptText, isAllowedAttachmentMime, MAX_ATTACHMENT_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, PLAINTEXT_ATTACHMENT_IV, } from "./attachments.js";
8
+ export type { AttachmentMime } from "./attachments.js";
7
9
  export { addConnection, configPath, loadConfig, removeConnection, resolveConnection, resolveOwner, saveConfig, setDefaultConnection, setOwnerProfile, } from "./config.js";
8
10
  export type { Connection, OwnerProfile, ResolvedConnection, ResolveInput, ResolveOwnerInput, TelecabinConfig, } from "./config.js";
9
- export type { EventKind, InvitePreview, JoinResult, MintedToken, OwnerKeyInfo, OwnerMember, OwnerParticipant, OwnerSession, Participant, PollResult, SessionInfo, SessionStatus, Snapshot, Status, TelecabinEvent, } from "./types.js";
11
+ export type { EventKind, InvitePreview, JoinResult, MintedToken, OwnerKeyInfo, OwnerMember, OwnerParticipant, OwnerSession, Participant, PollResult, PublicAttachment, SessionInfo, SessionStatus, Snapshot, Status, TelecabinEvent, } from "./types.js";
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,MAAM,EACN,cAAc,GACf,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,YAAY,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,QAAQ,EACR,MAAM,EACN,cAAc,GACf,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { DEFAULT_BASE_URL, TelecabinClient } from "./client.js";
2
2
  export { OwnerClient } from "./owner.js";
3
3
  export { TelecabinError } from "./errors.js";
4
+ export { ALLOWED_ATTACHMENT_MIME_TYPES, ATTACHMENT_TTL_HOURS, decryptAttachment, encryptAttachment, encryptText, isAllowedAttachmentMime, MAX_ATTACHMENT_BYTES, MAX_ATTACHMENTS_PER_MESSAGE, PLAINTEXT_ATTACHMENT_IV, } from "./attachments.js";
4
5
  export { addConnection, configPath, loadConfig, removeConnection, resolveConnection, resolveOwner, saveConfig, setDefaultConnection, setOwnerProfile, } from "./config.js";
5
6
  //# 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,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,aAAa,EACb,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,eAAe,GAChB,MAAM,aAAa,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** A participant's presence state, broadcast to everyone in the session. */
2
- export type Status = "idle" | "thinking" | "generating" | "tool_call" | "error";
2
+ export type Status = "idle" | "listening" | "thinking" | "generating" | "tool_call" | "error";
3
3
  /** Lifecycle state of a session, controlled by its owner. */
4
4
  export type SessionStatus = "active" | "paused" | "closed";
5
5
  /** Kind of entry in the session event log. */
@@ -113,4 +113,18 @@ export interface OwnerKeyInfo {
113
113
  lastUsedAt: string | null;
114
114
  revokedAt: string | null;
115
115
  }
116
+ /** An attachment as returned by the upload route — what every other
117
+ * surface sees. The encrypted bytes live at `url` (Vercel Blob); `iv`
118
+ * is the 12-byte AES-GCM IV needed to decrypt. */
119
+ export interface PublicAttachment {
120
+ id: string;
121
+ name: string;
122
+ mimeType: string;
123
+ byteSize: number;
124
+ url: string;
125
+ /** ISO-8601 — server deletes the ciphertext after this. */
126
+ expiresAt: string;
127
+ encrypted: boolean;
128
+ iv: string;
129
+ }
116
130
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
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": "@telecabin/core",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "Shared API client, types, and config for the telecabin CLI and MCP server",
5
5
  "homepage": "https://telecabin.app",
6
6
  "repository": {