@talqing/client 0.7.0 → 0.9.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.
@@ -8,7 +8,8 @@ export interface TalqingChatCredentials {
8
8
  /** The API this chat lives on. */
9
9
  api_url: string;
10
10
  }
11
- export interface TalqingChatAttachment {
11
+ /** A photo the person sent. */
12
+ export interface TalqingChatImage {
12
13
  id: string;
13
14
  kind: "image";
14
15
  mime_type: string;
@@ -20,6 +21,76 @@ export interface TalqingChatAttachment {
20
21
  url: string;
21
22
  url_expires_at: string;
22
23
  }
24
+ /** A PDF or Word file the person sent, and whether the agent could read it. */
25
+ export interface TalqingChatDocument {
26
+ id: string;
27
+ kind: "document";
28
+ mime_type: string;
29
+ bytes: number;
30
+ filename: string | null;
31
+ /** `pending` until the agent's next turn reads it. */
32
+ status: "pending" | "read" | "unreadable";
33
+ /** A PDF's page count; null for Word files. */
34
+ pages: number | null;
35
+ unreadable_reason: string | null;
36
+ /** A download link, valid until `url_expires_at`. */
37
+ url: string;
38
+ url_expires_at: string;
39
+ }
40
+ /** A voice note or audio file the person sent, and what they said in it. */
41
+ export interface TalqingChatAudio {
42
+ id: string;
43
+ kind: "audio";
44
+ mime_type: string;
45
+ /** The type read from its bytes, e.g. `ogg` or `m4a`. */
46
+ extension: string;
47
+ /** Whether `url` plays in an `<audio>` element. */
48
+ playable: boolean;
49
+ bytes: number;
50
+ filename: string | null;
51
+ /** `pending` until an agent with a speech-to-text model takes a turn. */
52
+ status: "pending" | "transcribed" | "failed";
53
+ duration_seconds: number | null;
54
+ /** What was said; empty when there was no speech. */
55
+ transcript: string | null;
56
+ failed_reason: string | null;
57
+ url: string;
58
+ url_expires_at: string;
59
+ }
60
+ /** One card in a shared contact file. */
61
+ export interface TalqingChatContactCard {
62
+ name: string | null;
63
+ phones: string[];
64
+ emails: string[];
65
+ organization: string | null;
66
+ }
67
+ /** A contact card the person shared, as read from the vCard. */
68
+ export interface TalqingChatContact {
69
+ id: string;
70
+ kind: "contact";
71
+ mime_type: "text/vcard";
72
+ bytes: number;
73
+ filename: string | null;
74
+ contacts: TalqingChatContactCard[];
75
+ /** A download of the `.vcf`, valid until `url_expires_at`. */
76
+ url: string;
77
+ url_expires_at: string;
78
+ }
79
+ /** Any other file the person sent; the agent cannot open it. */
80
+ export interface TalqingChatFileAttachment {
81
+ id: string;
82
+ kind: "file";
83
+ mime_type: string;
84
+ /** The type read from its bytes, e.g. `xlsx`; `bin` if unknown. */
85
+ extension: string;
86
+ /** Set when `url` plays in a `<video>` element. */
87
+ playable: "video" | null;
88
+ bytes: number;
89
+ filename: string | null;
90
+ url: string;
91
+ url_expires_at: string;
92
+ }
93
+ export type TalqingChatAttachment = TalqingChatImage | TalqingChatDocument | TalqingChatAudio | TalqingChatContact | TalqingChatFileAttachment;
23
94
  /** One message in the chat. A browser only ever receives what the person
24
95
  * chatting can see — never the agent's tool calls. */
25
96
  export interface TalqingChatItem {
@@ -29,9 +100,13 @@ export interface TalqingChatItem {
29
100
  direction: "inbound" | "outbound" | "internal";
30
101
  type: string;
31
102
  role: "user" | "assistant" | "system" | "developer" | "tool" | null;
32
- /** Null on a message that is only images. */
103
+ /** Null on a message that is only files. */
33
104
  text: string | null;
34
105
  attachments: TalqingChatAttachment[];
106
+ /** Files the person sent that could not be stored, and why. */
107
+ attachments_not_kept: {
108
+ reason: string;
109
+ }[];
35
110
  created_at: string;
36
111
  }
37
112
  /** What one message led to. */
@@ -63,8 +138,8 @@ export type TalqingChatEvent = {
63
138
  } & TalqingChatItem) | ({
64
139
  event: "turn.result";
65
140
  } & TalqingChatTurn);
66
- /** An image to send with a message, as a `data:` URL. */
67
- export interface TalqingChatImage {
141
+ /** A file to send with a message, as a `data:` URL — see `talqingFileDataUrl`. */
142
+ export interface TalqingChatFile {
68
143
  data_url: string;
69
144
  filename?: string;
70
145
  }
@@ -89,7 +164,7 @@ export declare class TalqingChat {
89
164
  /** Send a message. `events` yields the reply as it is generated; `result`
90
165
  * resolves with the whole turn. Either can be used without the other. */
91
166
  send(text: string, options?: {
92
- images?: TalqingChatImage[];
167
+ files?: TalqingChatFile[];
93
168
  }): {
94
169
  events: AsyncIterable<TalqingChatEvent>;
95
170
  result: Promise<TalqingChatTurn>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
package/dist/cjs/chat.js CHANGED
@@ -45,7 +45,7 @@ class TalqingChat {
45
45
  method: "POST",
46
46
  body: JSON.stringify({
47
47
  message: text,
48
- images: options.images ?? [],
48
+ files: options.files ?? [],
49
49
  client_message_id: crypto.randomUUID(),
50
50
  stream: true,
51
51
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Decoded size the server refuses above, for a file of any type. */
2
+ export declare const TALQING_FILE_MAX_BYTES: number;
3
+ /** Files per message; the server refuses more. */
4
+ export declare const TALQING_MAX_FILES_PER_MESSAGE = 4;
5
+ /** Refuse what the browser can see is wrong, instantly and with no round trip.
6
+ * Returns the sentence to show, or null when the file is fine — the same
7
+ * sentence the server would send. */
8
+ export declare function talqingFileRejection(file: File): string | null;
9
+ /** The `data:` URL a chat message carries for this file. Photos are
10
+ * downscaled first, as on a call; everything else is sent as it is. Throws
11
+ * the sentence to show if the file is refused. */
12
+ export declare function talqingFileDataUrl(file: File): Promise<string>;
13
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/files.ts"],"names":[],"mappings":"AAUA,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AACvD,kDAAkD;AAClD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAI/C;;sCAEsC;AACtC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAI9D;AAED;;mDAEmD;AACnD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAUpE"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TALQING_MAX_FILES_PER_MESSAGE = exports.TALQING_FILE_MAX_BYTES = void 0;
4
+ exports.talqingFileRejection = talqingFileRejection;
5
+ exports.talqingFileDataUrl = talqingFileDataUrl;
6
+ const images_js_1 = require("./images.js");
7
+ /* ── files ────────────────────────────────────────────────────────────────
8
+ *
9
+ * A person attaches files to a text chat message. Any type is accepted and
10
+ * stored; photos, PDFs and Word files are read by the agent, and anything else
11
+ * is kept for you and named to the agent as something it cannot open. The
12
+ * server decides the type from the bytes, so nothing here checks it.
13
+ */
14
+ /** Decoded size the server refuses above, for a file of any type. */
15
+ exports.TALQING_FILE_MAX_BYTES = 20 * 1024 * 1024;
16
+ /** Files per message; the server refuses more. */
17
+ exports.TALQING_MAX_FILES_PER_MESSAGE = 4;
18
+ /** Photos downscaled before sending, as on a call. */
19
+ const DOWNSCALED_TYPES = ["image/jpeg", "image/png", "image/webp"];
20
+ /** Refuse what the browser can see is wrong, instantly and with no round trip.
21
+ * Returns the sentence to show, or null when the file is fine — the same
22
+ * sentence the server would send. */
23
+ function talqingFileRejection(file) {
24
+ if (file.size === 0)
25
+ return "that file is empty";
26
+ if (file.size > exports.TALQING_FILE_MAX_BYTES)
27
+ return "files are 20 MB or smaller";
28
+ return null;
29
+ }
30
+ /** The `data:` URL a chat message carries for this file. Photos are
31
+ * downscaled first, as on a call; everything else is sent as it is. Throws
32
+ * the sentence to show if the file is refused. */
33
+ async function talqingFileDataUrl(file) {
34
+ const rejection = talqingFileRejection(file);
35
+ if (rejection)
36
+ throw new Error(rejection);
37
+ if (DOWNSCALED_TYPES.includes(file.type))
38
+ return await (0, images_js_1.talqingImageDataUrl)(file);
39
+ return await new Promise((resolve, reject) => {
40
+ const reader = new FileReader();
41
+ reader.onerror = () => reject(new Error("that file could not be read"));
42
+ reader.onload = () => resolve(String(reader.result));
43
+ reader.readAsDataURL(file);
44
+ });
45
+ }
46
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/files.ts"],"names":[],"mappings":";;;AAoBA,oDAIC;AAKD,gDAUC;AAvCD,2CAAkD;AAElD;;;;;;GAMG;AAEH,qEAAqE;AACxD,QAAA,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,kDAAkD;AACrC,QAAA,6BAA6B,GAAG,CAAC,CAAC;AAC/C,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAEnE;;sCAEsC;AACtC,SAAgB,oBAAoB,CAAC,IAAU;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACjD,IAAI,IAAI,CAAC,IAAI,GAAG,8BAAsB;QAAE,OAAO,4BAA4B,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;mDAEmD;AAC5C,KAAK,UAAU,kBAAkB,CAAC,IAAU;IACjD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,IAAA,+BAAmB,EAAC,IAAI,CAAC,CAAC;IACjF,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -3,10 +3,11 @@ export type { TalqingCallCredentials } from "./token.js";
3
3
  export { talqingAgentParticipant } from "./participant.js";
4
4
  export { onTalqingImageResult, sendTalqingImage, talqingDownscaleImage, talqingImageDataUrl, talqingImageRejection, TALQING_IMAGE_ACK_TIMEOUT_MS, TALQING_IMAGE_MAX_BYTES, TALQING_IMAGE_MAX_EDGE_PX, TALQING_IMAGE_TOPIC, } from "./images.js";
5
5
  export type { TalqingImageStatus, TalqingSentImage } from "./images.js";
6
+ export { talqingFileDataUrl, talqingFileRejection, TALQING_FILE_MAX_BYTES, TALQING_MAX_FILES_PER_MESSAGE, } from "./files.js";
6
7
  export { registerTalqingRpcHandlers, TalqingRpcError } from "./rpc.js";
7
8
  export type { TalqingFrontendRpcEnvelope, TalqingRpcHandler, TalqingRpcHandlers, TalqingRpcInvocation, } from "./rpc.js";
8
9
  export { TALQING_AUDIO_CAPTURE_DEFAULTS, TALQING_SCREEN_SHARE_CAPTURE, TALQING_SCREEN_SHARE_PUBLISH, } from "./media.js";
9
10
  export { TalqingChat, TalqingChatError } from "./chat.js";
10
- export type { TalqingChatAttachment, TalqingChatCredentials, TalqingChatEvent, TalqingChatImage, TalqingChatItem, TalqingChatTurn, } from "./chat.js";
11
+ export type { TalqingChatAttachment, TalqingChatAudio, TalqingChatContact, TalqingChatContactCard, TalqingChatCredentials, TalqingChatDocument, TalqingChatEvent, TalqingChatFile, TalqingChatFileAttachment, TalqingChatImage, TalqingChatItem, TalqingChatTurn, } from "./chat.js";
11
12
  export type { JsonObject, JsonPrimitive, JsonValue } from "./json.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
package/dist/cjs/index.js CHANGED
@@ -10,10 +10,10 @@
10
10
  * React bindings for all of it are `@talqing/react`.
11
11
  *
12
12
  * `TalqingChat` is the one thing here with no room behind it: a text chat, over
13
- * HTTP, on a chat token.
13
+ * HTTP, on a chat token, whose messages carry files (`talqingFileDataUrl`).
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.TalqingChatError = exports.TalqingChat = exports.TALQING_SCREEN_SHARE_PUBLISH = exports.TALQING_SCREEN_SHARE_CAPTURE = exports.TALQING_AUDIO_CAPTURE_DEFAULTS = exports.TalqingRpcError = exports.registerTalqingRpcHandlers = exports.TALQING_IMAGE_TOPIC = exports.TALQING_IMAGE_MAX_EDGE_PX = exports.TALQING_IMAGE_MAX_BYTES = exports.TALQING_IMAGE_ACK_TIMEOUT_MS = exports.talqingImageRejection = exports.talqingImageDataUrl = exports.talqingDownscaleImage = exports.sendTalqingImage = exports.onTalqingImageResult = exports.talqingAgentParticipant = exports.createTalqingTokenSource = void 0;
16
+ exports.TalqingChatError = exports.TalqingChat = exports.TALQING_SCREEN_SHARE_PUBLISH = exports.TALQING_SCREEN_SHARE_CAPTURE = exports.TALQING_AUDIO_CAPTURE_DEFAULTS = exports.TalqingRpcError = exports.registerTalqingRpcHandlers = exports.TALQING_MAX_FILES_PER_MESSAGE = exports.TALQING_FILE_MAX_BYTES = exports.talqingFileRejection = exports.talqingFileDataUrl = exports.TALQING_IMAGE_TOPIC = exports.TALQING_IMAGE_MAX_EDGE_PX = exports.TALQING_IMAGE_MAX_BYTES = exports.TALQING_IMAGE_ACK_TIMEOUT_MS = exports.talqingImageRejection = exports.talqingImageDataUrl = exports.talqingDownscaleImage = exports.sendTalqingImage = exports.onTalqingImageResult = exports.talqingAgentParticipant = exports.createTalqingTokenSource = void 0;
17
17
  var token_js_1 = require("./token.js");
18
18
  Object.defineProperty(exports, "createTalqingTokenSource", { enumerable: true, get: function () { return token_js_1.createTalqingTokenSource; } });
19
19
  var participant_js_1 = require("./participant.js");
@@ -28,6 +28,11 @@ Object.defineProperty(exports, "TALQING_IMAGE_ACK_TIMEOUT_MS", { enumerable: tru
28
28
  Object.defineProperty(exports, "TALQING_IMAGE_MAX_BYTES", { enumerable: true, get: function () { return images_js_1.TALQING_IMAGE_MAX_BYTES; } });
29
29
  Object.defineProperty(exports, "TALQING_IMAGE_MAX_EDGE_PX", { enumerable: true, get: function () { return images_js_1.TALQING_IMAGE_MAX_EDGE_PX; } });
30
30
  Object.defineProperty(exports, "TALQING_IMAGE_TOPIC", { enumerable: true, get: function () { return images_js_1.TALQING_IMAGE_TOPIC; } });
31
+ var files_js_1 = require("./files.js");
32
+ Object.defineProperty(exports, "talqingFileDataUrl", { enumerable: true, get: function () { return files_js_1.talqingFileDataUrl; } });
33
+ Object.defineProperty(exports, "talqingFileRejection", { enumerable: true, get: function () { return files_js_1.talqingFileRejection; } });
34
+ Object.defineProperty(exports, "TALQING_FILE_MAX_BYTES", { enumerable: true, get: function () { return files_js_1.TALQING_FILE_MAX_BYTES; } });
35
+ Object.defineProperty(exports, "TALQING_MAX_FILES_PER_MESSAGE", { enumerable: true, get: function () { return files_js_1.TALQING_MAX_FILES_PER_MESSAGE; } });
31
36
  var rpc_js_1 = require("./rpc.js");
32
37
  Object.defineProperty(exports, "registerTalqingRpcHandlers", { enumerable: true, get: function () { return rpc_js_1.registerTalqingRpcHandlers; } });
33
38
  Object.defineProperty(exports, "TalqingRpcError", { enumerable: true, get: function () { return rpc_js_1.TalqingRpcError; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,uCAAsD;AAA7C,oHAAA,wBAAwB,OAAA;AAGjC,mDAA2D;AAAlD,yHAAA,uBAAuB,OAAA;AAEhC,yCAUqB;AATnB,iHAAA,oBAAoB,OAAA;AACpB,6GAAA,gBAAgB,OAAA;AAChB,kHAAA,qBAAqB,OAAA;AACrB,gHAAA,mBAAmB,OAAA;AACnB,kHAAA,qBAAqB,OAAA;AACrB,yHAAA,4BAA4B,OAAA;AAC5B,oHAAA,uBAAuB,OAAA;AACvB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AAIrB,mCAAuE;AAA9D,oHAAA,0BAA0B,OAAA;AAAE,yGAAA,eAAe,OAAA;AAQpD,uCAIoB;AAHlB,0HAAA,8BAA8B,OAAA;AAC9B,wHAAA,4BAA4B,OAAA;AAC5B,wHAAA,4BAA4B,OAAA;AAG9B,qCAA0D;AAAjD,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAEH,uCAAsD;AAA7C,oHAAA,wBAAwB,OAAA;AAGjC,mDAA2D;AAAlD,yHAAA,uBAAuB,OAAA;AAEhC,yCAUqB;AATnB,iHAAA,oBAAoB,OAAA;AACpB,6GAAA,gBAAgB,OAAA;AAChB,kHAAA,qBAAqB,OAAA;AACrB,gHAAA,mBAAmB,OAAA;AACnB,kHAAA,qBAAqB,OAAA;AACrB,yHAAA,4BAA4B,OAAA;AAC5B,oHAAA,uBAAuB,OAAA;AACvB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AAIrB,uCAKoB;AAJlB,8GAAA,kBAAkB,OAAA;AAClB,gHAAA,oBAAoB,OAAA;AACpB,kHAAA,sBAAsB,OAAA;AACtB,yHAAA,6BAA6B,OAAA;AAG/B,mCAAuE;AAA9D,oHAAA,0BAA0B,OAAA;AAAE,yGAAA,eAAe,OAAA;AAQpD,uCAIoB;AAHlB,0HAAA,8BAA8B,OAAA;AAC9B,wHAAA,4BAA4B,OAAA;AAC5B,wHAAA,4BAA4B,OAAA;AAG9B,qCAA0D;AAAjD,sGAAA,WAAW,OAAA;AAAE,2GAAA,gBAAgB,OAAA"}
@@ -8,7 +8,8 @@ export interface TalqingChatCredentials {
8
8
  /** The API this chat lives on. */
9
9
  api_url: string;
10
10
  }
11
- export interface TalqingChatAttachment {
11
+ /** A photo the person sent. */
12
+ export interface TalqingChatImage {
12
13
  id: string;
13
14
  kind: "image";
14
15
  mime_type: string;
@@ -20,6 +21,76 @@ export interface TalqingChatAttachment {
20
21
  url: string;
21
22
  url_expires_at: string;
22
23
  }
24
+ /** A PDF or Word file the person sent, and whether the agent could read it. */
25
+ export interface TalqingChatDocument {
26
+ id: string;
27
+ kind: "document";
28
+ mime_type: string;
29
+ bytes: number;
30
+ filename: string | null;
31
+ /** `pending` until the agent's next turn reads it. */
32
+ status: "pending" | "read" | "unreadable";
33
+ /** A PDF's page count; null for Word files. */
34
+ pages: number | null;
35
+ unreadable_reason: string | null;
36
+ /** A download link, valid until `url_expires_at`. */
37
+ url: string;
38
+ url_expires_at: string;
39
+ }
40
+ /** A voice note or audio file the person sent, and what they said in it. */
41
+ export interface TalqingChatAudio {
42
+ id: string;
43
+ kind: "audio";
44
+ mime_type: string;
45
+ /** The type read from its bytes, e.g. `ogg` or `m4a`. */
46
+ extension: string;
47
+ /** Whether `url` plays in an `<audio>` element. */
48
+ playable: boolean;
49
+ bytes: number;
50
+ filename: string | null;
51
+ /** `pending` until an agent with a speech-to-text model takes a turn. */
52
+ status: "pending" | "transcribed" | "failed";
53
+ duration_seconds: number | null;
54
+ /** What was said; empty when there was no speech. */
55
+ transcript: string | null;
56
+ failed_reason: string | null;
57
+ url: string;
58
+ url_expires_at: string;
59
+ }
60
+ /** One card in a shared contact file. */
61
+ export interface TalqingChatContactCard {
62
+ name: string | null;
63
+ phones: string[];
64
+ emails: string[];
65
+ organization: string | null;
66
+ }
67
+ /** A contact card the person shared, as read from the vCard. */
68
+ export interface TalqingChatContact {
69
+ id: string;
70
+ kind: "contact";
71
+ mime_type: "text/vcard";
72
+ bytes: number;
73
+ filename: string | null;
74
+ contacts: TalqingChatContactCard[];
75
+ /** A download of the `.vcf`, valid until `url_expires_at`. */
76
+ url: string;
77
+ url_expires_at: string;
78
+ }
79
+ /** Any other file the person sent; the agent cannot open it. */
80
+ export interface TalqingChatFileAttachment {
81
+ id: string;
82
+ kind: "file";
83
+ mime_type: string;
84
+ /** The type read from its bytes, e.g. `xlsx`; `bin` if unknown. */
85
+ extension: string;
86
+ /** Set when `url` plays in a `<video>` element. */
87
+ playable: "video" | null;
88
+ bytes: number;
89
+ filename: string | null;
90
+ url: string;
91
+ url_expires_at: string;
92
+ }
93
+ export type TalqingChatAttachment = TalqingChatImage | TalqingChatDocument | TalqingChatAudio | TalqingChatContact | TalqingChatFileAttachment;
23
94
  /** One message in the chat. A browser only ever receives what the person
24
95
  * chatting can see — never the agent's tool calls. */
25
96
  export interface TalqingChatItem {
@@ -29,9 +100,13 @@ export interface TalqingChatItem {
29
100
  direction: "inbound" | "outbound" | "internal";
30
101
  type: string;
31
102
  role: "user" | "assistant" | "system" | "developer" | "tool" | null;
32
- /** Null on a message that is only images. */
103
+ /** Null on a message that is only files. */
33
104
  text: string | null;
34
105
  attachments: TalqingChatAttachment[];
106
+ /** Files the person sent that could not be stored, and why. */
107
+ attachments_not_kept: {
108
+ reason: string;
109
+ }[];
35
110
  created_at: string;
36
111
  }
37
112
  /** What one message led to. */
@@ -63,8 +138,8 @@ export type TalqingChatEvent = {
63
138
  } & TalqingChatItem) | ({
64
139
  event: "turn.result";
65
140
  } & TalqingChatTurn);
66
- /** An image to send with a message, as a `data:` URL. */
67
- export interface TalqingChatImage {
141
+ /** A file to send with a message, as a `data:` URL — see `talqingFileDataUrl`. */
142
+ export interface TalqingChatFile {
68
143
  data_url: string;
69
144
  filename?: string;
70
145
  }
@@ -89,7 +164,7 @@ export declare class TalqingChat {
89
164
  /** Send a message. `events` yields the reply as it is generated; `result`
90
165
  * resolves with the whole turn. Either can be used without the other. */
91
166
  send(text: string, options?: {
92
- images?: TalqingChatImage[];
167
+ files?: TalqingChatFile[];
93
168
  }): {
94
169
  events: AsyncIterable<TalqingChatEvent>;
95
170
  result: Promise<TalqingChatTurn>;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
package/dist/esm/chat.js CHANGED
@@ -41,7 +41,7 @@ export class TalqingChat {
41
41
  method: "POST",
42
42
  body: JSON.stringify({
43
43
  message: text,
44
- images: options.images ?? [],
44
+ files: options.files ?? [],
45
45
  client_message_id: crypto.randomUUID(),
46
46
  stream: true,
47
47
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/chat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /** Decoded size the server refuses above, for a file of any type. */
2
+ export declare const TALQING_FILE_MAX_BYTES: number;
3
+ /** Files per message; the server refuses more. */
4
+ export declare const TALQING_MAX_FILES_PER_MESSAGE = 4;
5
+ /** Refuse what the browser can see is wrong, instantly and with no round trip.
6
+ * Returns the sentence to show, or null when the file is fine — the same
7
+ * sentence the server would send. */
8
+ export declare function talqingFileRejection(file: File): string | null;
9
+ /** The `data:` URL a chat message carries for this file. Photos are
10
+ * downscaled first, as on a call; everything else is sent as it is. Throws
11
+ * the sentence to show if the file is refused. */
12
+ export declare function talqingFileDataUrl(file: File): Promise<string>;
13
+ //# sourceMappingURL=files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/files.ts"],"names":[],"mappings":"AAUA,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,QAAmB,CAAC;AACvD,kDAAkD;AAClD,eAAO,MAAM,6BAA6B,IAAI,CAAC;AAI/C;;sCAEsC;AACtC,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAI9D;AAED;;mDAEmD;AACnD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAUpE"}
@@ -0,0 +1,41 @@
1
+ import { talqingImageDataUrl } from "./images.js";
2
+ /* ── files ────────────────────────────────────────────────────────────────
3
+ *
4
+ * A person attaches files to a text chat message. Any type is accepted and
5
+ * stored; photos, PDFs and Word files are read by the agent, and anything else
6
+ * is kept for you and named to the agent as something it cannot open. The
7
+ * server decides the type from the bytes, so nothing here checks it.
8
+ */
9
+ /** Decoded size the server refuses above, for a file of any type. */
10
+ export const TALQING_FILE_MAX_BYTES = 20 * 1024 * 1024;
11
+ /** Files per message; the server refuses more. */
12
+ export const TALQING_MAX_FILES_PER_MESSAGE = 4;
13
+ /** Photos downscaled before sending, as on a call. */
14
+ const DOWNSCALED_TYPES = ["image/jpeg", "image/png", "image/webp"];
15
+ /** Refuse what the browser can see is wrong, instantly and with no round trip.
16
+ * Returns the sentence to show, or null when the file is fine — the same
17
+ * sentence the server would send. */
18
+ export function talqingFileRejection(file) {
19
+ if (file.size === 0)
20
+ return "that file is empty";
21
+ if (file.size > TALQING_FILE_MAX_BYTES)
22
+ return "files are 20 MB or smaller";
23
+ return null;
24
+ }
25
+ /** The `data:` URL a chat message carries for this file. Photos are
26
+ * downscaled first, as on a call; everything else is sent as it is. Throws
27
+ * the sentence to show if the file is refused. */
28
+ export async function talqingFileDataUrl(file) {
29
+ const rejection = talqingFileRejection(file);
30
+ if (rejection)
31
+ throw new Error(rejection);
32
+ if (DOWNSCALED_TYPES.includes(file.type))
33
+ return await talqingImageDataUrl(file);
34
+ return await new Promise((resolve, reject) => {
35
+ const reader = new FileReader();
36
+ reader.onerror = () => reject(new Error("that file could not be read"));
37
+ reader.onload = () => resolve(String(reader.result));
38
+ reader.readAsDataURL(file);
39
+ });
40
+ }
41
+ //# sourceMappingURL=files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;GAMG;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACvD,kDAAkD;AAClD,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAC/C,sDAAsD;AACtD,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAEnE;;sCAEsC;AACtC,MAAM,UAAU,oBAAoB,CAAC,IAAU;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,oBAAoB,CAAC;IACjD,IAAI,IAAI,CAAC,IAAI,GAAG,sBAAsB;QAAE,OAAO,4BAA4B,CAAC;IAC5E,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;mDAEmD;AACnD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAU;IACjD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACjF,OAAO,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -3,10 +3,11 @@ export type { TalqingCallCredentials } from "./token.js";
3
3
  export { talqingAgentParticipant } from "./participant.js";
4
4
  export { onTalqingImageResult, sendTalqingImage, talqingDownscaleImage, talqingImageDataUrl, talqingImageRejection, TALQING_IMAGE_ACK_TIMEOUT_MS, TALQING_IMAGE_MAX_BYTES, TALQING_IMAGE_MAX_EDGE_PX, TALQING_IMAGE_TOPIC, } from "./images.js";
5
5
  export type { TalqingImageStatus, TalqingSentImage } from "./images.js";
6
+ export { talqingFileDataUrl, talqingFileRejection, TALQING_FILE_MAX_BYTES, TALQING_MAX_FILES_PER_MESSAGE, } from "./files.js";
6
7
  export { registerTalqingRpcHandlers, TalqingRpcError } from "./rpc.js";
7
8
  export type { TalqingFrontendRpcEnvelope, TalqingRpcHandler, TalqingRpcHandlers, TalqingRpcInvocation, } from "./rpc.js";
8
9
  export { TALQING_AUDIO_CAPTURE_DEFAULTS, TALQING_SCREEN_SHARE_CAPTURE, TALQING_SCREEN_SHARE_PUBLISH, } from "./media.js";
9
10
  export { TalqingChat, TalqingChatError } from "./chat.js";
10
- export type { TalqingChatAttachment, TalqingChatCredentials, TalqingChatEvent, TalqingChatImage, TalqingChatItem, TalqingChatTurn, } from "./chat.js";
11
+ export type { TalqingChatAttachment, TalqingChatAudio, TalqingChatContact, TalqingChatContactCard, TalqingChatCredentials, TalqingChatDocument, TalqingChatEvent, TalqingChatFile, TalqingChatFileAttachment, TalqingChatImage, TalqingChatItem, TalqingChatTurn, } from "./chat.js";
11
12
  export type { JsonObject, JsonPrimitive, JsonValue } from "./json.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC1D,YAAY,EACV,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,EACf,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC"}
package/dist/esm/index.js CHANGED
@@ -9,11 +9,12 @@
9
9
  * React bindings for all of it are `@talqing/react`.
10
10
  *
11
11
  * `TalqingChat` is the one thing here with no room behind it: a text chat, over
12
- * HTTP, on a chat token.
12
+ * HTTP, on a chat token, whose messages carry files (`talqingFileDataUrl`).
13
13
  */
14
14
  export { createTalqingTokenSource } from "./token.js";
15
15
  export { talqingAgentParticipant } from "./participant.js";
16
16
  export { onTalqingImageResult, sendTalqingImage, talqingDownscaleImage, talqingImageDataUrl, talqingImageRejection, TALQING_IMAGE_ACK_TIMEOUT_MS, TALQING_IMAGE_MAX_BYTES, TALQING_IMAGE_MAX_EDGE_PX, TALQING_IMAGE_TOPIC, } from "./images.js";
17
+ export { talqingFileDataUrl, talqingFileRejection, TALQING_FILE_MAX_BYTES, TALQING_MAX_FILES_PER_MESSAGE, } from "./files.js";
17
18
  export { registerTalqingRpcHandlers, TalqingRpcError } from "./rpc.js";
18
19
  export { TALQING_AUDIO_CAPTURE_DEFAULTS, TALQING_SCREEN_SHARE_CAPTURE, TALQING_SCREEN_SHARE_PUBLISH, } from "./media.js";
19
20
  export { TalqingChat, TalqingChatError } from "./chat.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQvE,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,4BAA4B,EAC5B,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAQvE,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talqing/client",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "The Talqing call protocol over a LiveKit room — token, userdata, images, screen share and frontend RPC. Framework-free.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://talqing.com",
package/src/chat.ts CHANGED
@@ -17,7 +17,8 @@ export interface TalqingChatCredentials {
17
17
  api_url: string;
18
18
  }
19
19
 
20
- export interface TalqingChatAttachment {
20
+ /** A photo the person sent. */
21
+ export interface TalqingChatImage {
21
22
  id: string;
22
23
  kind: "image";
23
24
  mime_type: string;
@@ -30,6 +31,87 @@ export interface TalqingChatAttachment {
30
31
  url_expires_at: string;
31
32
  }
32
33
 
34
+ /** A PDF or Word file the person sent, and whether the agent could read it. */
35
+ export interface TalqingChatDocument {
36
+ id: string;
37
+ kind: "document";
38
+ mime_type: string;
39
+ bytes: number;
40
+ filename: string | null;
41
+ /** `pending` until the agent's next turn reads it. */
42
+ status: "pending" | "read" | "unreadable";
43
+ /** A PDF's page count; null for Word files. */
44
+ pages: number | null;
45
+ unreadable_reason: string | null;
46
+ /** A download link, valid until `url_expires_at`. */
47
+ url: string;
48
+ url_expires_at: string;
49
+ }
50
+
51
+ /** A voice note or audio file the person sent, and what they said in it. */
52
+ export interface TalqingChatAudio {
53
+ id: string;
54
+ kind: "audio";
55
+ mime_type: string;
56
+ /** The type read from its bytes, e.g. `ogg` or `m4a`. */
57
+ extension: string;
58
+ /** Whether `url` plays in an `<audio>` element. */
59
+ playable: boolean;
60
+ bytes: number;
61
+ filename: string | null;
62
+ /** `pending` until an agent with a speech-to-text model takes a turn. */
63
+ status: "pending" | "transcribed" | "failed";
64
+ duration_seconds: number | null;
65
+ /** What was said; empty when there was no speech. */
66
+ transcript: string | null;
67
+ failed_reason: string | null;
68
+ url: string;
69
+ url_expires_at: string;
70
+ }
71
+
72
+ /** One card in a shared contact file. */
73
+ export interface TalqingChatContactCard {
74
+ name: string | null;
75
+ phones: string[];
76
+ emails: string[];
77
+ organization: string | null;
78
+ }
79
+
80
+ /** A contact card the person shared, as read from the vCard. */
81
+ export interface TalqingChatContact {
82
+ id: string;
83
+ kind: "contact";
84
+ mime_type: "text/vcard";
85
+ bytes: number;
86
+ filename: string | null;
87
+ contacts: TalqingChatContactCard[];
88
+ /** A download of the `.vcf`, valid until `url_expires_at`. */
89
+ url: string;
90
+ url_expires_at: string;
91
+ }
92
+
93
+ /** Any other file the person sent; the agent cannot open it. */
94
+ export interface TalqingChatFileAttachment {
95
+ id: string;
96
+ kind: "file";
97
+ mime_type: string;
98
+ /** The type read from its bytes, e.g. `xlsx`; `bin` if unknown. */
99
+ extension: string;
100
+ /** Set when `url` plays in a `<video>` element. */
101
+ playable: "video" | null;
102
+ bytes: number;
103
+ filename: string | null;
104
+ url: string;
105
+ url_expires_at: string;
106
+ }
107
+
108
+ export type TalqingChatAttachment =
109
+ | TalqingChatImage
110
+ | TalqingChatDocument
111
+ | TalqingChatAudio
112
+ | TalqingChatContact
113
+ | TalqingChatFileAttachment;
114
+
33
115
  /** One message in the chat. A browser only ever receives what the person
34
116
  * chatting can see — never the agent's tool calls. */
35
117
  export interface TalqingChatItem {
@@ -39,9 +121,11 @@ export interface TalqingChatItem {
39
121
  direction: "inbound" | "outbound" | "internal";
40
122
  type: string;
41
123
  role: "user" | "assistant" | "system" | "developer" | "tool" | null;
42
- /** Null on a message that is only images. */
124
+ /** Null on a message that is only files. */
43
125
  text: string | null;
44
126
  attachments: TalqingChatAttachment[];
127
+ /** Files the person sent that could not be stored, and why. */
128
+ attachments_not_kept: { reason: string }[];
45
129
  created_at: string;
46
130
  }
47
131
 
@@ -66,8 +150,8 @@ export type TalqingChatEvent =
66
150
  | ({ event: "item.created" } & TalqingChatItem)
67
151
  | ({ event: "turn.result" } & TalqingChatTurn);
68
152
 
69
- /** An image to send with a message, as a `data:` URL. */
70
- export interface TalqingChatImage {
153
+ /** A file to send with a message, as a `data:` URL — see `talqingFileDataUrl`. */
154
+ export interface TalqingChatFile {
71
155
  data_url: string;
72
156
  filename?: string;
73
157
  }
@@ -105,7 +189,7 @@ export class TalqingChat {
105
189
  * resolves with the whole turn. Either can be used without the other. */
106
190
  send(
107
191
  text: string,
108
- options: { images?: TalqingChatImage[] } = {},
192
+ options: { files?: TalqingChatFile[] } = {},
109
193
  ): { events: AsyncIterable<TalqingChatEvent>; result: Promise<TalqingChatTurn> } {
110
194
  const queue: TalqingChatEvent[] = [];
111
195
  let finished = false;
@@ -121,7 +205,7 @@ export class TalqingChat {
121
205
  method: "POST",
122
206
  body: JSON.stringify({
123
207
  message: text,
124
- images: options.images ?? [],
208
+ files: options.files ?? [],
125
209
  client_message_id: crypto.randomUUID(),
126
210
  stream: true,
127
211
  }),
package/src/files.ts ADDED
@@ -0,0 +1,40 @@
1
+ import { talqingImageDataUrl } from "./images.js";
2
+
3
+ /* ── files ────────────────────────────────────────────────────────────────
4
+ *
5
+ * A person attaches files to a text chat message. Any type is accepted and
6
+ * stored; photos, PDFs and Word files are read by the agent, and anything else
7
+ * is kept for you and named to the agent as something it cannot open. The
8
+ * server decides the type from the bytes, so nothing here checks it.
9
+ */
10
+
11
+ /** Decoded size the server refuses above, for a file of any type. */
12
+ export const TALQING_FILE_MAX_BYTES = 20 * 1024 * 1024;
13
+ /** Files per message; the server refuses more. */
14
+ export const TALQING_MAX_FILES_PER_MESSAGE = 4;
15
+ /** Photos downscaled before sending, as on a call. */
16
+ const DOWNSCALED_TYPES = ["image/jpeg", "image/png", "image/webp"];
17
+
18
+ /** Refuse what the browser can see is wrong, instantly and with no round trip.
19
+ * Returns the sentence to show, or null when the file is fine — the same
20
+ * sentence the server would send. */
21
+ export function talqingFileRejection(file: File): string | null {
22
+ if (file.size === 0) return "that file is empty";
23
+ if (file.size > TALQING_FILE_MAX_BYTES) return "files are 20 MB or smaller";
24
+ return null;
25
+ }
26
+
27
+ /** The `data:` URL a chat message carries for this file. Photos are
28
+ * downscaled first, as on a call; everything else is sent as it is. Throws
29
+ * the sentence to show if the file is refused. */
30
+ export async function talqingFileDataUrl(file: File): Promise<string> {
31
+ const rejection = talqingFileRejection(file);
32
+ if (rejection) throw new Error(rejection);
33
+ if (DOWNSCALED_TYPES.includes(file.type)) return await talqingImageDataUrl(file);
34
+ return await new Promise<string>((resolve, reject) => {
35
+ const reader = new FileReader();
36
+ reader.onerror = () => reject(new Error("that file could not be read"));
37
+ reader.onload = () => resolve(String(reader.result));
38
+ reader.readAsDataURL(file);
39
+ });
40
+ }
package/src/index.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  * React bindings for all of it are `@talqing/react`.
10
10
  *
11
11
  * `TalqingChat` is the one thing here with no room behind it: a text chat, over
12
- * HTTP, on a chat token.
12
+ * HTTP, on a chat token, whose messages carry files (`talqingFileDataUrl`).
13
13
  */
14
14
 
15
15
  export { createTalqingTokenSource } from "./token.js";
@@ -30,6 +30,13 @@ export {
30
30
  } from "./images.js";
31
31
  export type { TalqingImageStatus, TalqingSentImage } from "./images.js";
32
32
 
33
+ export {
34
+ talqingFileDataUrl,
35
+ talqingFileRejection,
36
+ TALQING_FILE_MAX_BYTES,
37
+ TALQING_MAX_FILES_PER_MESSAGE,
38
+ } from "./files.js";
39
+
33
40
  export { registerTalqingRpcHandlers, TalqingRpcError } from "./rpc.js";
34
41
  export type {
35
42
  TalqingFrontendRpcEnvelope,
@@ -47,8 +54,14 @@ export {
47
54
  export { TalqingChat, TalqingChatError } from "./chat.js";
48
55
  export type {
49
56
  TalqingChatAttachment,
57
+ TalqingChatAudio,
58
+ TalqingChatContact,
59
+ TalqingChatContactCard,
50
60
  TalqingChatCredentials,
61
+ TalqingChatDocument,
51
62
  TalqingChatEvent,
63
+ TalqingChatFile,
64
+ TalqingChatFileAttachment,
52
65
  TalqingChatImage,
53
66
  TalqingChatItem,
54
67
  TalqingChatTurn,