@manonero/chat-client-sdk 0.0.1-beta.4 → 0.0.1-beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +141 -35
- package/dist/ChatClient.d.ts +3 -0
- package/dist/ChatClient.d.ts.map +1 -1
- package/dist/ChatClient.js +2 -0
- package/dist/ChatClient.js.map +1 -1
- package/dist/http/ConversationApi.d.ts +8 -5
- package/dist/http/ConversationApi.d.ts.map +1 -1
- package/dist/http/ConversationApi.js +11 -11
- package/dist/http/ConversationApi.js.map +1 -1
- package/dist/http/SearchApi.d.ts +39 -0
- package/dist/http/SearchApi.d.ts.map +1 -0
- package/dist/http/SearchApi.js +44 -0
- package/dist/http/SearchApi.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types/bot.d.ts +18 -0
- package/dist/types/bot.d.ts.map +1 -1
- package/dist/types/search.d.ts +47 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +3 -0
- package/dist/types/search.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,19 +13,20 @@
|
|
|
13
13
|
5. [Participant — ParticipantApi](#5-participant--participantapi)
|
|
14
14
|
6. [Conversation — ConversationApi](#6-conversation--conversationapi)
|
|
15
15
|
7. [Message — MessageApi](#7-message--messageapi)
|
|
16
|
-
8. [
|
|
17
|
-
9. [
|
|
18
|
-
10. [
|
|
19
|
-
11. [
|
|
20
|
-
12. [
|
|
21
|
-
13. [Real-time:
|
|
22
|
-
14. [
|
|
23
|
-
15. [
|
|
24
|
-
16. [
|
|
25
|
-
17. [
|
|
26
|
-
18. [
|
|
27
|
-
19. [
|
|
28
|
-
20. [
|
|
16
|
+
8. [Tìm kiếm — SearchApi](#8-tìm-kiếm--searchapi)
|
|
17
|
+
9. [File — FileApi](#9-file--fileapi)
|
|
18
|
+
10. [Bot — BotApi](#10-bot--botapi)
|
|
19
|
+
11. [Proxy — ProxyApi](#11-proxy--proxyapi)
|
|
20
|
+
12. [Health — HealthApi](#12-health--healthapi)
|
|
21
|
+
13. [Real-time: ChatHubClient](#13-real-time-chathubclient)
|
|
22
|
+
14. [Real-time: NotificationHubClient](#14-real-time-notificationhubclient)
|
|
23
|
+
15. [ReconnectionManager](#15-reconnectionmanager)
|
|
24
|
+
16. [Hệ thống Block (nội dung tin nhắn)](#16-hệ-thống-block-nội-dung-tin-nhắn)
|
|
25
|
+
17. [Toàn bộ kiểu dữ liệu (Types)](#17-toàn-bộ-kiểu-dữ-liệu-types)
|
|
26
|
+
18. [Xử lý lỗi — ChatApiError](#18-xử-lý-lỗi--chatapierror)
|
|
27
|
+
19. [TypedEventEmitter](#19-typedeventemitter)
|
|
28
|
+
20. [Lưu ý quan trọng](#20-lưu-ý-quan-trọng)
|
|
29
|
+
21. [Ví dụ đầy đủ](#21-ví-dụ-đầy-đủ)
|
|
29
30
|
|
|
30
31
|
---
|
|
31
32
|
|
|
@@ -37,6 +38,7 @@ ChatClient (facade chính)
|
|
|
37
38
|
├── participants → ParticipantApi (quản lý người dùng)
|
|
38
39
|
├── conversations → ConversationApi (quản lý cuộc hội thoại)
|
|
39
40
|
├── messages → MessageApi (tin nhắn)
|
|
41
|
+
├── search → SearchApi (tìm kiếm tổng hợp conversations + messages)
|
|
40
42
|
├── files → FileApi (upload/download file)
|
|
41
43
|
├── bots → BotApi (quản lý bot)
|
|
42
44
|
├── proxy → ProxyApi (proxy đến backend khác)
|
|
@@ -217,6 +219,7 @@ new ChatClient(options: ChatClientOptions)
|
|
|
217
219
|
| `participants` | `ParticipantApi` | Quản lý participant |
|
|
218
220
|
| `conversations` | `ConversationApi` | Quản lý cuộc hội thoại |
|
|
219
221
|
| `messages` | `MessageApi` | Thao tác với tin nhắn |
|
|
222
|
+
| `search` | `SearchApi` | Tìm kiếm tổng hợp conversations + messages |
|
|
220
223
|
| `files` | `FileApi` | Upload/download file |
|
|
221
224
|
| `bots` | `BotApi` | Quản lý bot |
|
|
222
225
|
| `proxy` | `ProxyApi` | Proxy đến backend khác |
|
|
@@ -435,20 +438,24 @@ const conv = await client.conversations.create({
|
|
|
435
438
|
});
|
|
436
439
|
```
|
|
437
440
|
|
|
438
|
-
|
|
441
|
+
> ⚠️ **Đã gỡ bỏ `conversations.search()`** — endpoint backend `GET /api/conversations/search` không còn được proxy qua gateway (trả `404`). Dùng endpoint tìm kiếm tổng hợp `client.search.search()` thay thế — xem [mục 8 — SearchApi](#8-tìm-kiếm--searchapi).
|
|
439
442
|
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
```ts
|
|
443
|
-
const results = await client.conversations.search('team', 10);
|
|
444
|
-
```
|
|
445
|
-
|
|
446
|
-
### `getById(id: string): Promise<ConversationDto>`
|
|
443
|
+
### `getById(id, options?): Promise<ConversationDto>`
|
|
447
444
|
|
|
448
445
|
```ts
|
|
446
|
+
// Mặc định: bao gồm danh sách thành viên
|
|
449
447
|
const conv = await client.conversations.getById('conv-id-here');
|
|
448
|
+
|
|
449
|
+
// Bỏ danh sách thành viên để giảm payload — khi đó `participants` trả về []
|
|
450
|
+
const light = await client.conversations.getById('conv-id-here', {
|
|
451
|
+
includeParticipants: false,
|
|
452
|
+
});
|
|
450
453
|
```
|
|
451
454
|
|
|
455
|
+
| Param | Kiểu | Mặc định | Mô tả |
|
|
456
|
+
|-------|------|----------|-------|
|
|
457
|
+
| `options.includeParticipants` | `boolean` | `true` | Đặt `false` để bỏ mảng `participants` khỏi response (spec §6.4). Khi `false`, `participants` là `[]`. |
|
|
458
|
+
|
|
452
459
|
### `update(id, request): Promise<ConversationDto>`
|
|
453
460
|
|
|
454
461
|
```ts
|
|
@@ -661,12 +668,14 @@ const newer = await client.messages.getHistory('conv-id', {
|
|
|
661
668
|
|
|
662
669
|
### `search(conversationId, query, limit?): Promise<MessageDto[]>`
|
|
663
670
|
|
|
664
|
-
Full-text search trong cuộc hội thoại.
|
|
671
|
+
Full-text search **trong phạm vi một cuộc hội thoại** (`GET /api/conversations/{conversationId}/messages/search`, spec §7.3).
|
|
665
672
|
|
|
666
673
|
```ts
|
|
667
674
|
const results = await client.messages.search('conv-id', 'từ khóa tìm kiếm', 20);
|
|
668
675
|
```
|
|
669
676
|
|
|
677
|
+
> ℹ️ Để tìm kiếm **xuyên suốt tất cả** cuộc hội thoại và tin nhắn, dùng `client.search.search()` — xem [mục 8 — SearchApi](#8-tìm-kiếm--searchapi).
|
|
678
|
+
|
|
670
679
|
### `getById(messageId): Promise<MessageDto>`
|
|
671
680
|
|
|
672
681
|
```ts
|
|
@@ -773,7 +782,67 @@ interface EditMessageRequest {
|
|
|
773
782
|
|
|
774
783
|
---
|
|
775
784
|
|
|
776
|
-
## 8.
|
|
785
|
+
## 8. Tìm kiếm — SearchApi
|
|
786
|
+
|
|
787
|
+
**Truy cập:** `client.search`
|
|
788
|
+
|
|
789
|
+
Endpoint tìm kiếm tổng hợp do gateway cung cấp (`GET /api/search`, spec §6.3) — tìm **conversations**, **messages**, hoặc **cả hai** trong một request. Yêu cầu JWT.
|
|
790
|
+
|
|
791
|
+
> Endpoint này **thay thế** cho `GET /api/conversations/search` và `GET /api/messages/search` (global) của backend — hai endpoint đó không còn được proxy qua gateway. Việc tìm kiếm tin nhắn trong phạm vi **một** cuộc hội thoại vẫn dùng `client.messages.search()` (spec §7.3).
|
|
792
|
+
|
|
793
|
+
### `search(params): Promise<SearchResult>`
|
|
794
|
+
|
|
795
|
+
| Param | Kiểu | Mặc định | Mô tả |
|
|
796
|
+
|-------|------|----------|-------|
|
|
797
|
+
| `q` | `string` | — (**bắt buộc**) | Từ khóa tìm kiếm. Thiếu/rỗng → `400 Bad Request`. |
|
|
798
|
+
| `type` | `'MESSAGE' \| 'CONVERSATION' \| 'BOTH'` | `'BOTH'` | Phạm vi tìm kiếm. Giá trị khác → `400 Bad Request`. |
|
|
799
|
+
| `limit` | `number` | `20` | Số kết quả mỗi loại. |
|
|
800
|
+
| `cursor` | `string` | — | Phân trang — **chỉ áp dụng cho messages** (opaque `nextCursor` từ response trước). |
|
|
801
|
+
|
|
802
|
+
**Hành vi theo `type`:**
|
|
803
|
+
|
|
804
|
+
- `CONVERSATION` — tìm conversations; mỗi item kèm `lastMessage` (full `MessageDto`). `messages` trả về `null`.
|
|
805
|
+
- `MESSAGE` — tìm messages, **gom nhóm theo conversation**; mỗi nhóm kèm thông tin `conversation`. Phân trang (`nextCursor`/`hasMore`) phản ánh messages. `conversations` trả về `null`.
|
|
806
|
+
- `BOTH` — thực hiện cả hai (mặc định).
|
|
807
|
+
|
|
808
|
+
> Response **luôn có cả hai key** `conversations` và `messages`; phần không được yêu cầu bởi `type` sẽ là `null`.
|
|
809
|
+
|
|
810
|
+
```ts
|
|
811
|
+
// Tìm cả hai loại (mặc định)
|
|
812
|
+
const result = await client.search.search({ q: 'hello' });
|
|
813
|
+
|
|
814
|
+
// Conversations: kiểm tra lastMessage.isDeleted trước khi hiển thị
|
|
815
|
+
for (const conv of result.conversations ?? []) {
|
|
816
|
+
const preview = conv.lastMessage?.isDeleted
|
|
817
|
+
? 'Tin nhắn đã xóa'
|
|
818
|
+
: conv.lastMessage?.plainTextIndex ?? '';
|
|
819
|
+
console.log(conv.name, preview);
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
// Messages: gom nhóm theo conversation
|
|
823
|
+
for (const group of result.messages?.groups ?? []) {
|
|
824
|
+
console.log('Trong:', group.conversation?.name ?? '(không rõ)');
|
|
825
|
+
for (const msg of group.messages) console.log(' -', msg.plainTextIndex);
|
|
826
|
+
}
|
|
827
|
+
```
|
|
828
|
+
|
|
829
|
+
```ts
|
|
830
|
+
// Chỉ tìm messages + phân trang
|
|
831
|
+
let page = await client.search.search({ q: 'hello', type: 'MESSAGE', limit: 20 });
|
|
832
|
+
while (page.messages?.hasMore) {
|
|
833
|
+
page = await client.search.search({
|
|
834
|
+
q: 'hello',
|
|
835
|
+
type: 'MESSAGE',
|
|
836
|
+
cursor: page.messages.nextCursor!, // opaque string — KHÔNG cast sang number
|
|
837
|
+
});
|
|
838
|
+
}
|
|
839
|
+
```
|
|
840
|
+
|
|
841
|
+
> ⚠️ Giống `client.conversations.list()`, backend **không** filter `isDeleted` cho `lastMessage` — client **phải** tự kiểm tra `lastMessage.isDeleted` trước khi hiển thị. Nếu batch fetch lỗi, `lastMessage` (của conversation) hoặc `conversation` (của nhóm message) có thể là `null` (degrade graceful).
|
|
842
|
+
|
|
843
|
+
---
|
|
844
|
+
|
|
845
|
+
## 9. File — FileApi
|
|
777
846
|
|
|
778
847
|
**Truy cập:** `client.files`
|
|
779
848
|
|
|
@@ -873,7 +942,7 @@ interface UploadResponse {
|
|
|
873
942
|
|
|
874
943
|
---
|
|
875
944
|
|
|
876
|
-
##
|
|
945
|
+
## 10. Bot — BotApi
|
|
877
946
|
|
|
878
947
|
**Truy cập:** `client.bots`
|
|
879
948
|
|
|
@@ -908,11 +977,14 @@ const bot = await client.bots.create({
|
|
|
908
977
|
description: 'Trợ lý AI',
|
|
909
978
|
kafkaTopic: 'my-bot-topic', // optional — null/omit = không nhận event qua Kafka
|
|
910
979
|
webhookUrl: 'https://bot.example.com/events', // optional — HTTP/2 NDJSON webhook
|
|
980
|
+
deliveryPreference: 'Both', // optional — 'Both' | 'WebhookOnly' | 'KafkaOnly' (server default 'Both')
|
|
911
981
|
listenAllGroupMessages: false,
|
|
912
982
|
});
|
|
913
983
|
```
|
|
914
984
|
|
|
915
985
|
> Bot có thể nhận outgoing event qua `kafkaTopic`, `webhookUrl`, cả hai, hoặc không cấu hình kênh nào. Cả hai field đều **optional** độc lập với nhau.
|
|
986
|
+
>
|
|
987
|
+
> `deliveryPreference` chỉ có hiệu lực khi bot có **cả** `kafkaTopic` lẫn `webhookUrl` được cấu hình. Bot chỉ có một kênh sẽ luôn dùng kênh đó bất kể preference.
|
|
916
988
|
|
|
917
989
|
### `update(id, request): Promise<BotDto>`
|
|
918
990
|
|
|
@@ -921,6 +993,7 @@ await client.bots.update('bot-id', {
|
|
|
921
993
|
fullName: 'Updated Bot Name',
|
|
922
994
|
kafkaTopic: 'new-topic', // set/đổi topic
|
|
923
995
|
webhookUrl: 'https://bot.example.com/events/v2', // set/đổi webhook
|
|
996
|
+
deliveryPreference: 'WebhookOnly', // optional — bỏ qua/null = không đổi
|
|
924
997
|
});
|
|
925
998
|
|
|
926
999
|
// Để clear về null, dùng cờ riêng (mutually exclusive với việc set giá trị mới):
|
|
@@ -948,6 +1021,9 @@ await client.bots.delete('bot-id');
|
|
|
948
1021
|
### Kiểu dữ liệu Bot
|
|
949
1022
|
|
|
950
1023
|
```ts
|
|
1024
|
+
// Kênh nhận outgoing event. Chỉ có hiệu lực khi bot có cả kafkaTopic lẫn webhookUrl.
|
|
1025
|
+
type BotDeliveryPreference = 'Both' | 'WebhookOnly' | 'KafkaOnly';
|
|
1026
|
+
|
|
951
1027
|
interface BotDto {
|
|
952
1028
|
id: string;
|
|
953
1029
|
participantId: string; // Dùng để lấy name/avatar từ ParticipantApi
|
|
@@ -955,6 +1031,7 @@ interface BotDto {
|
|
|
955
1031
|
metadata?: Record<string, unknown> | null;
|
|
956
1032
|
kafkaTopic?: string | null; // null khi bot không cấu hình Kafka
|
|
957
1033
|
webhookUrl?: string | null; // HTTP/2 NDJSON webhook (chỉ MessageCreatedEvent); null khi không cấu hình
|
|
1034
|
+
deliveryPreference: BotDeliveryPreference; // Chỉ áp dụng khi cả kafkaTopic và webhookUrl đều được cấu hình
|
|
958
1035
|
isActive: boolean;
|
|
959
1036
|
listenAllGroupMessages: boolean;
|
|
960
1037
|
createdBy: string; // ID của người tạo bot
|
|
@@ -976,6 +1053,7 @@ interface CreateBotRequest {
|
|
|
976
1053
|
metadata?: Record<string, unknown>;
|
|
977
1054
|
kafkaTopic?: string | null; // optional — max 200, [a-zA-Z0-9._-]
|
|
978
1055
|
webhookUrl?: string | null; // optional — absolute http/https URI, max 2000
|
|
1056
|
+
deliveryPreference?: BotDeliveryPreference; // optional — server default 'Both'
|
|
979
1057
|
listenAllGroupMessages?: boolean; // Mặc định false
|
|
980
1058
|
}
|
|
981
1059
|
|
|
@@ -990,12 +1068,13 @@ interface UpdateBotRequest {
|
|
|
990
1068
|
clearKafkaTopic?: boolean; // true → clear topic về null
|
|
991
1069
|
webhookUrl?: string | null; // set/đổi webhook (mutually exclusive với clearWebhookUrl)
|
|
992
1070
|
clearWebhookUrl?: boolean; // true → clear webhook về null
|
|
1071
|
+
deliveryPreference?: BotDeliveryPreference | null; // bỏ qua/null = không đổi
|
|
993
1072
|
}
|
|
994
1073
|
```
|
|
995
1074
|
|
|
996
1075
|
---
|
|
997
1076
|
|
|
998
|
-
##
|
|
1077
|
+
## 11. Proxy — ProxyApi
|
|
999
1078
|
|
|
1000
1079
|
**Truy cập:** `client.proxy`
|
|
1001
1080
|
|
|
@@ -1052,7 +1131,7 @@ const result = await client.proxy.request<unknown>('myservice', 'api/resource/12
|
|
|
1052
1131
|
|
|
1053
1132
|
---
|
|
1054
1133
|
|
|
1055
|
-
##
|
|
1134
|
+
## 12. Health — HealthApi
|
|
1056
1135
|
|
|
1057
1136
|
**Truy cập:** `client.health`
|
|
1058
1137
|
|
|
@@ -1072,7 +1151,7 @@ const ready = await client.health.ready(); // "Healthy"
|
|
|
1072
1151
|
|
|
1073
1152
|
---
|
|
1074
1153
|
|
|
1075
|
-
##
|
|
1154
|
+
## 13. Real-time: ChatHubClient
|
|
1076
1155
|
|
|
1077
1156
|
**Truy cập:** `client.realtime.chat`
|
|
1078
1157
|
|
|
@@ -1330,7 +1409,7 @@ client.realtime.chat.on('streamAborted', (dto) => {
|
|
|
1330
1409
|
|
|
1331
1410
|
---
|
|
1332
1411
|
|
|
1333
|
-
##
|
|
1412
|
+
## 14. Real-time: NotificationHubClient
|
|
1334
1413
|
|
|
1335
1414
|
**Truy cập:** `client.realtime.notifications`
|
|
1336
1415
|
|
|
@@ -1446,7 +1525,7 @@ interface ConversationUnpinnedDto {
|
|
|
1446
1525
|
|
|
1447
1526
|
---
|
|
1448
1527
|
|
|
1449
|
-
##
|
|
1528
|
+
## 15. ReconnectionManager
|
|
1450
1529
|
|
|
1451
1530
|
Class quản lý reconnect thủ công khi cả `withAutomaticReconnect` của SignalR đã thất bại và hub bị `disconnected`. Cung cấp exponential backoff và xử lý token hết hạn.
|
|
1452
1531
|
|
|
@@ -1480,7 +1559,7 @@ manager.stop();
|
|
|
1480
1559
|
|
|
1481
1560
|
---
|
|
1482
1561
|
|
|
1483
|
-
##
|
|
1562
|
+
## 16. Hệ thống Block (nội dung tin nhắn)
|
|
1484
1563
|
|
|
1485
1564
|
`Block` là **discriminated union** — mỗi block phân biệt bằng field `$type`.
|
|
1486
1565
|
|
|
@@ -1769,7 +1848,7 @@ interface Mention {
|
|
|
1769
1848
|
|
|
1770
1849
|
---
|
|
1771
1850
|
|
|
1772
|
-
##
|
|
1851
|
+
## 17. Toàn bộ kiểu dữ liệu (Types)
|
|
1773
1852
|
|
|
1774
1853
|
### CursorPaginatedResult (cursor-based)
|
|
1775
1854
|
|
|
@@ -1792,6 +1871,33 @@ interface PagedResult<T> {
|
|
|
1792
1871
|
}
|
|
1793
1872
|
```
|
|
1794
1873
|
|
|
1874
|
+
### SearchResult (GET /api/search — §8)
|
|
1875
|
+
|
|
1876
|
+
```ts
|
|
1877
|
+
type SearchType = 'MESSAGE' | 'CONVERSATION' | 'BOTH';
|
|
1878
|
+
|
|
1879
|
+
interface SearchResult {
|
|
1880
|
+
// null khi type=MESSAGE. Mỗi item có `lastMessage` đã hydrate —
|
|
1881
|
+
// kiểm tra lastMessage.isDeleted trước khi hiển thị.
|
|
1882
|
+
conversations: ConversationListItemDto[] | null;
|
|
1883
|
+
// null khi type=CONVERSATION.
|
|
1884
|
+
messages: SearchMessagesResult | null;
|
|
1885
|
+
}
|
|
1886
|
+
|
|
1887
|
+
interface SearchMessagesResult {
|
|
1888
|
+
groups: SearchMessageGroup[];
|
|
1889
|
+
nextCursor: string | null; // opaque — chỉ phân trang cho messages
|
|
1890
|
+
hasMore: boolean;
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1893
|
+
interface SearchMessageGroup {
|
|
1894
|
+
// null nếu batch fetch conversation lỗi (degrade graceful).
|
|
1895
|
+
// `participants` luôn là [] (fetch với includeParticipants=false).
|
|
1896
|
+
conversation: ConversationDto | null;
|
|
1897
|
+
messages: MessageDto[];
|
|
1898
|
+
}
|
|
1899
|
+
```
|
|
1900
|
+
|
|
1795
1901
|
### MediaReference
|
|
1796
1902
|
|
|
1797
1903
|
```ts
|
|
@@ -1995,7 +2101,7 @@ interface ReactionAck {
|
|
|
1995
2101
|
|
|
1996
2102
|
---
|
|
1997
2103
|
|
|
1998
|
-
##
|
|
2104
|
+
## 18. Xử lý lỗi — ChatApiError
|
|
1999
2105
|
|
|
2000
2106
|
Tất cả lỗi HTTP đều throw `ChatApiError` (kế thừa `Error`).
|
|
2001
2107
|
|
|
@@ -2147,7 +2253,7 @@ manager.start();
|
|
|
2147
2253
|
|
|
2148
2254
|
---
|
|
2149
2255
|
|
|
2150
|
-
##
|
|
2256
|
+
## 19. TypedEventEmitter
|
|
2151
2257
|
|
|
2152
2258
|
SDK dùng `TypedEventEmitter<TEventMap>` nội bộ cho cả hai hub. Giao diện public của nó được expose qua `.on()` và `.off()`.
|
|
2153
2259
|
|
|
@@ -2177,7 +2283,7 @@ unsubs.forEach(fn => fn());
|
|
|
2177
2283
|
|
|
2178
2284
|
---
|
|
2179
2285
|
|
|
2180
|
-
##
|
|
2286
|
+
## 20. Lưu ý quan trọng
|
|
2181
2287
|
|
|
2182
2288
|
### Cursor pagination — KHÔNG cast sang number
|
|
2183
2289
|
|
|
@@ -2254,7 +2360,7 @@ console.log(participant.fullName); // Tên hiển thị của bot
|
|
|
2254
2360
|
|
|
2255
2361
|
---
|
|
2256
2362
|
|
|
2257
|
-
##
|
|
2363
|
+
## 21. Ví dụ đầy đủ
|
|
2258
2364
|
|
|
2259
2365
|
### Ví dụ 1: Chat app cơ bản
|
|
2260
2366
|
|
package/dist/ChatClient.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { FileApi } from './http/FileApi.js';
|
|
|
7
7
|
import { BotApi } from './http/BotApi.js';
|
|
8
8
|
import { ProxyApi } from './http/ProxyApi.js';
|
|
9
9
|
import { HealthApi } from './http/HealthApi.js';
|
|
10
|
+
import { SearchApi } from './http/SearchApi.js';
|
|
10
11
|
import { ChatHubClient } from './realtime/ChatHubClient.js';
|
|
11
12
|
import { NotificationHubClient } from './realtime/NotificationHubClient.js';
|
|
12
13
|
import type { AuthUserInfo } from './types/auth.js';
|
|
@@ -112,6 +113,8 @@ export declare class ChatClient {
|
|
|
112
113
|
readonly proxy: ProxyApi;
|
|
113
114
|
/** Health check endpoints */
|
|
114
115
|
readonly health: HealthApi;
|
|
116
|
+
/** Unified search (conversations + messages) */
|
|
117
|
+
readonly search: SearchApi;
|
|
115
118
|
/** SignalR hub clients */
|
|
116
119
|
readonly realtime: ChatClientRealtime;
|
|
117
120
|
private _currentUser;
|
package/dist/ChatClient.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatClient.d.ts","sourceRoot":"","sources":["../src/ChatClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,EAAgB,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAoDhF,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AAMD,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;CAC/C;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,UAAU;IAKrB;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsB;IAM7D,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IAEtC,8BAA8B;IAC9B,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;IAExC,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE9B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAEzB,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAM3B,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAMtC,OAAO,CAAC,YAAY,CAA6B;IAEjD,+EAA+E;IAC/E,IAAI,WAAW,IAAI,YAAY,GAAG,IAAI,CAErC;gBAMW,OAAO,EAAE,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ChatClient.d.ts","sourceRoot":"","sources":["../src/ChatClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,KAAK,EAAgB,YAAY,EAAgB,MAAM,iBAAiB,CAAC;AAoDhF,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,wBAAwB,CAAC;CAC3C;AAMD,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,oEAAoE;IACpE,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;CAC/C;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,UAAU;IAKrB;;;;;;;;OAQG;IACH,OAAO,CAAC,MAAM,CAAgB;IAE9B;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsB;IAM7D,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAEvB,6BAA6B;IAC7B,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IAEtC,8BAA8B;IAC9B,QAAQ,CAAC,aAAa,EAAE,eAAe,CAAC;IAExC,yBAAyB;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;IAE9B,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAEzB,6BAA6B;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAE3B,gDAAgD;IAChD,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAM3B,0BAA0B;IAC1B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IAMtC,OAAO,CAAC,YAAY,CAA6B;IAEjD,+EAA+E;IAC/E,IAAI,WAAW,IAAI,YAAY,GAAG,IAAI,CAErC;gBAMW,OAAO,EAAE,iBAAiB;IAgEtC;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAOpC;;;;;;OAMG;IACH,UAAU,IAAI,IAAI;IAKlB;;;;;;;;;;OAUG;IACG,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBzC;;;;;;;OAOG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B;;;;;;;;OAQG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAWjC;;;OAGG;IACH,OAAO,CAAC,eAAe;CAIxB"}
|
package/dist/ChatClient.js
CHANGED
|
@@ -9,6 +9,7 @@ import { FileApi } from './http/FileApi.js';
|
|
|
9
9
|
import { BotApi } from './http/BotApi.js';
|
|
10
10
|
import { ProxyApi } from './http/ProxyApi.js';
|
|
11
11
|
import { HealthApi } from './http/HealthApi.js';
|
|
12
|
+
import { SearchApi } from './http/SearchApi.js';
|
|
12
13
|
import { ChatHubClient } from './realtime/ChatHubClient.js';
|
|
13
14
|
import { NotificationHubClient } from './realtime/NotificationHubClient.js';
|
|
14
15
|
// ---------------------------------------------------------------------------
|
|
@@ -123,6 +124,7 @@ export class ChatClient {
|
|
|
123
124
|
this.bots = new BotApi(http);
|
|
124
125
|
this.proxy = new ProxyApi(http);
|
|
125
126
|
this.health = new HealthApi(http);
|
|
127
|
+
this.search = new SearchApi(http);
|
|
126
128
|
// AuthApi is wrapped in InterceptingAuthApi to auto-set token + currentUser
|
|
127
129
|
this.auth = new InterceptingAuthApi(http, (res) => this._onLoginSuccess(res));
|
|
128
130
|
// Build SignalR hub URLs from baseUrl (strip trailing slash already done by HttpClient)
|
package/dist/ChatClient.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatClient.js","sourceRoot":"","sources":["../src/ChatClient.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,8EAA8E;AAC9E,uEAAuE;AACvE,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,mBAAoB,SAAQ,OAAO;IAGvC,YAAY,IAAgB,EAAE,SAAsC;QAClE,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAC9B,CAAC;IAEQ,KAAK,CAAC,QAAgB,EAAE,IAAkB;QACjD,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9C,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,eAAe,CAAC,OAAe;QACtC,OAAO,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACjD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,kBAAkB,CAAC,KAAa;QACvC,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;IAEQ,YAAY,CAAC,QAAgB,EAAE,QAAgB;QACtD,OAAO,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACzD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,GAAG,CAAC;QACb,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAuDD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,UAAU;
|
|
1
|
+
{"version":3,"file":"ChatClient.js","sourceRoot":"","sources":["../src/ChatClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,12 +32,15 @@ export declare class ConversationApi {
|
|
|
32
32
|
/** POST /api/conversations */
|
|
33
33
|
create(request: CreateConversationRequest): Promise<ConversationDto>;
|
|
34
34
|
/**
|
|
35
|
-
* GET /api/conversations/
|
|
36
|
-
*
|
|
35
|
+
* GET /api/conversations/{id}?includeParticipants={bool}
|
|
36
|
+
*
|
|
37
|
+
* @param includeParticipants - Default `true`. Pass `false` to omit the
|
|
38
|
+
* participants array from the response (reduces payload). When `false`,
|
|
39
|
+
* `participants` is returned as `[]` (spec §6.4).
|
|
37
40
|
*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
getById(id: string, options?: {
|
|
42
|
+
includeParticipants?: boolean;
|
|
43
|
+
}): Promise<ConversationDto>;
|
|
41
44
|
/** PATCH /api/conversations/{id} */
|
|
42
45
|
update(id: string, request: UpdateConversationRequest): Promise<ConversationDto>;
|
|
43
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationApi.d.ts","sourceRoot":"","sources":["../../src/http/ConversationApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAI5B;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IAU3D,8BAA8B;IAC9B,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIpE
|
|
1
|
+
{"version":3,"file":"ConversationApi.d.ts","sourceRoot":"","sources":["../../src/http/ConversationApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAI5B;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAC;IAU3D,8BAA8B;IAC9B,MAAM,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIpE;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAS1F,oCAAoC;IACpC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,eAAe,CAAC;IAIhF;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC;;;OAGG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrF;;;OAGG;IACH,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E;;;OAGG;IACH,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,EAAE,CAAC;IAM9E,uCAAuC;IACvC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9B,yCAAyC;IACzC,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIhC;;;;;;;;;;;OAWG;IACH,QAAQ,CACN,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,2BAA2B,CAAC;QACnC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GACA,OAAO,CAAC,qBAAqB,CAAC,wBAAwB,CAAC,CAAC;CAU5D"}
|
|
@@ -39,18 +39,18 @@ export class ConversationApi {
|
|
|
39
39
|
return this.http.post('/api/conversations', request);
|
|
40
40
|
}
|
|
41
41
|
/**
|
|
42
|
-
* GET /api/conversations/
|
|
43
|
-
*
|
|
42
|
+
* GET /api/conversations/{id}?includeParticipants={bool}
|
|
43
|
+
*
|
|
44
|
+
* @param includeParticipants - Default `true`. Pass `false` to omit the
|
|
45
|
+
* participants array from the response (reduces payload). When `false`,
|
|
46
|
+
* `participants` is returned as `[]` (spec §6.4).
|
|
44
47
|
*/
|
|
45
|
-
|
|
46
|
-
const qs = new URLSearchParams(
|
|
47
|
-
if (
|
|
48
|
-
qs.set('
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
/** GET /api/conversations/{id} */
|
|
52
|
-
getById(id) {
|
|
53
|
-
return this.http.get(`/api/conversations/${encodeURIComponent(id)}`);
|
|
48
|
+
getById(id, options) {
|
|
49
|
+
const qs = new URLSearchParams();
|
|
50
|
+
if (options?.includeParticipants === false)
|
|
51
|
+
qs.set('includeParticipants', 'false');
|
|
52
|
+
const q = qs.toString();
|
|
53
|
+
return this.http.get(`/api/conversations/${encodeURIComponent(id)}${q ? `?${q}` : ''}`);
|
|
54
54
|
}
|
|
55
55
|
/** PATCH /api/conversations/{id} */
|
|
56
56
|
update(id, request) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationApi.js","sourceRoot":"","sources":["../../src/http/ConversationApi.ts"],"names":[],"mappings":"AAAA,yDAAyD;AAEzD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAa7C;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAG1B,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,MAGJ;QACC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,EAAE,MAAM,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAClE,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,qBAAqB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACxC,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,CAAC,OAAkC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAkB,oBAAoB,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"ConversationApi.js","sourceRoot":"","sources":["../../src/http/ConversationApi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { HttpClient } from './HttpClient.js';
|
|
2
|
+
import type { SearchResult, SearchType } from '../types/search.js';
|
|
3
|
+
/**
|
|
4
|
+
* Search API client.
|
|
5
|
+
* Requires JWT Bearer token.
|
|
6
|
+
*
|
|
7
|
+
* Replaces the removed `GET /api/conversations/search` backend endpoint.
|
|
8
|
+
* `GET /api/messages/search` (global, non-conversation-scoped) is also removed.
|
|
9
|
+
* Per-conversation message search (`GET /api/conversations/{id}/messages/search`)
|
|
10
|
+
* is still available via MessageApi.search().
|
|
11
|
+
*/
|
|
12
|
+
export declare class SearchApi {
|
|
13
|
+
private readonly http;
|
|
14
|
+
constructor(http: HttpClient);
|
|
15
|
+
/**
|
|
16
|
+
* GET /api/search?q={q}&type={type}&limit={limit}&cursor={cursor}
|
|
17
|
+
*
|
|
18
|
+
* Unified search for conversations and/or messages in a single request.
|
|
19
|
+
*
|
|
20
|
+
* - `q` is required; omitting or sending an empty string returns 400.
|
|
21
|
+
* - `type` defaults to `BOTH` server-side.
|
|
22
|
+
* - `cursor` is opaque and applies **only to messages** — pass `nextCursor`
|
|
23
|
+
* from a prior `messages` result to paginate through more message hits.
|
|
24
|
+
* - Conversations are not paginated; `limit` caps how many are returned.
|
|
25
|
+
*
|
|
26
|
+
* Response always contains both `conversations` and `messages` keys;
|
|
27
|
+
* the key for the unused scope is `null` (e.g. `type=MESSAGE` → `conversations: null`).
|
|
28
|
+
*
|
|
29
|
+
* NOTE: `lastMessage.isDeleted` may be `true` — always check before displaying
|
|
30
|
+
* (backend does not filter deleted messages for the aggregated lastMessage, spec §6.3).
|
|
31
|
+
*/
|
|
32
|
+
search(params: {
|
|
33
|
+
q: string;
|
|
34
|
+
type?: SearchType;
|
|
35
|
+
limit?: number;
|
|
36
|
+
cursor?: string;
|
|
37
|
+
}): Promise<SearchResult>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=SearchApi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchApi.d.ts","sourceRoot":"","sources":["../../src/http/SearchApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEnE;;;;;;;;GAQG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;gBAEtB,IAAI,EAAE,UAAU;IAI5B;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,CAAC,EAAE,MAAM,CAAC;QACV,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,YAAY,CAAC;CAO1B"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// SearchApi.ts — Unified search endpoint (spec §6.3)
|
|
2
|
+
import { HttpClient } from './HttpClient.js';
|
|
3
|
+
/**
|
|
4
|
+
* Search API client.
|
|
5
|
+
* Requires JWT Bearer token.
|
|
6
|
+
*
|
|
7
|
+
* Replaces the removed `GET /api/conversations/search` backend endpoint.
|
|
8
|
+
* `GET /api/messages/search` (global, non-conversation-scoped) is also removed.
|
|
9
|
+
* Per-conversation message search (`GET /api/conversations/{id}/messages/search`)
|
|
10
|
+
* is still available via MessageApi.search().
|
|
11
|
+
*/
|
|
12
|
+
export class SearchApi {
|
|
13
|
+
constructor(http) {
|
|
14
|
+
this.http = http;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* GET /api/search?q={q}&type={type}&limit={limit}&cursor={cursor}
|
|
18
|
+
*
|
|
19
|
+
* Unified search for conversations and/or messages in a single request.
|
|
20
|
+
*
|
|
21
|
+
* - `q` is required; omitting or sending an empty string returns 400.
|
|
22
|
+
* - `type` defaults to `BOTH` server-side.
|
|
23
|
+
* - `cursor` is opaque and applies **only to messages** — pass `nextCursor`
|
|
24
|
+
* from a prior `messages` result to paginate through more message hits.
|
|
25
|
+
* - Conversations are not paginated; `limit` caps how many are returned.
|
|
26
|
+
*
|
|
27
|
+
* Response always contains both `conversations` and `messages` keys;
|
|
28
|
+
* the key for the unused scope is `null` (e.g. `type=MESSAGE` → `conversations: null`).
|
|
29
|
+
*
|
|
30
|
+
* NOTE: `lastMessage.isDeleted` may be `true` — always check before displaying
|
|
31
|
+
* (backend does not filter deleted messages for the aggregated lastMessage, spec §6.3).
|
|
32
|
+
*/
|
|
33
|
+
search(params) {
|
|
34
|
+
const qs = new URLSearchParams({ q: params.q });
|
|
35
|
+
if (params.type !== undefined)
|
|
36
|
+
qs.set('type', params.type);
|
|
37
|
+
if (params.limit !== undefined)
|
|
38
|
+
qs.set('limit', String(params.limit));
|
|
39
|
+
if (params.cursor !== undefined)
|
|
40
|
+
qs.set('cursor', params.cursor);
|
|
41
|
+
return this.http.get(`/api/search?${qs.toString()}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=SearchApi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchApi.js","sourceRoot":"","sources":["../../src/http/SearchApi.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7C;;;;;;;;GAQG;AACH,MAAM,OAAO,SAAS;IAGpB,YAAY,IAAgB;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,MAKN;QACC,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,eAAe,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,11 +2,12 @@ export type { CursorPaginatedResult, PagedResult, MediaReference, ProblemDetails
|
|
|
2
2
|
export type { GoogleLoginRequest, DsAccountLoginRequest, DevLoginRequest, LoginRequest, AuthResponse, AuthUserInfo } from './types/auth.js';
|
|
3
3
|
export type { ParticipantDto, CreateOrUpdateParticipantRequest } from './types/participant.js';
|
|
4
4
|
export type { ConversationParticipantDto, ConversationDto, ConversationListItemDto, ConversationMediaKindFilter, ConversationMediaKind, ConversationMediaBlockType, ConversationMediaItemDto, CreateConversationRequest, UpdateConversationRequest, AddParticipantRequest, } from './types/conversation.js';
|
|
5
|
+
export type { SearchType, SearchMessageGroup, SearchMessagesResult, SearchResult, } from './types/search.js';
|
|
5
6
|
export type { SenderType, SystemEventType, SystemEventInfo, ReactionGroup, ReactionSummary, MessageDto, SendMessageRequest, EditMessageRequest, } from './types/message.js';
|
|
6
7
|
export type { TextFormat, ButtonAction, ButtonStyle, ChoiceMode, QuickReplyAction, MentionType, TextBlock, ImageBlock, VideoBlock, AudioBlock, FileBlock, LinkPreviewBlock, EmbedBlock, LocationBlock, ContactBlock, ChoiceOption, ChoiceBlock, CardField, ActionButton, CardBlock, CarouselBlock, DividerBlock, CustomBlock, Block, QuickReply, Mention, } from './types/block.js';
|
|
7
8
|
export { isTextBlock, isImageBlock, isVideoBlock, isAudioBlock, isFileBlock, isLinkPreviewBlock, isEmbedBlock, isLocationBlock, isContactBlock, isChoiceBlock, isCardBlock, isCarouselBlock, isDividerBlock, isCustomBlock, withTypeFirst, normalizeBlocksForSend, } from './types/block.js';
|
|
8
9
|
export type { CreateUploadUrlRequest, CreateUploadUrlResponse, UploadResponse } from './types/file.js';
|
|
9
|
-
export type { BotDto, CreateBotRequest, UpdateBotRequest } from './types/bot.js';
|
|
10
|
+
export type { BotDto, CreateBotRequest, UpdateBotRequest, BotDeliveryPreference } from './types/bot.js';
|
|
10
11
|
export type { SystemEventDto, ReactionGroupDto, ChatMessageDto, MessageUpdatedDto, MessageDeletedDto, ReactionAddedDto, ReactionRemovedDto, TypingDto, MessageThumbnailDto, MessageThumbnailsReadyDto, StreamStartedDto, StreamStatusUpdatedDto, StreamChunkReceivedDto, StreamCompletedDto, StreamAbortedDto, } from './types/chat-events.js';
|
|
11
12
|
export type { NewMessageNotificationDto, MentionedNotificationDto, ConversationCreatedDto, ConversationUpdatedDto, ParticipantJoinedDto, ParticipantLeftDto, ConversationPinnedDto, ConversationUnpinnedDto, } from './types/notification-events.js';
|
|
12
13
|
export type { ChatSendMessageRequest, ChatEditMessageRequest, ChatDeleteMessageRequest, ChatRecoverMessageRequest, ChatAddReactionRequest, ChatRemoveReactionRequest, SendMessageAck, EditMessageAck, DeleteMessageAck, RecoverMessageAck, ReactionAck, HubErrorDto, } from './types/signalr.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG5I,YAAY,EAAE,cAAc,EAAE,gCAAgC,EAAE,MAAM,wBAAwB,CAAC;AAG/F,YAAY,EACV,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAG5B,YAAY,EACV,UAAU,EACV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,EACV,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,SAAS,EACT,YAAY,EACZ,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAW,EACX,KAAK,EACL,UAAU,EACV,OAAO,GACR,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGvG,YAAY,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oDAAoD;AAkFpD,4CAA4C;AAC5C,OAAO,EACL,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,aAAa,EACb,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAuD1B,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,4BAA4B;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGjE,4BAA4B;AAC5B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAG5D,oCAAoC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAM5E,kCAAkC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE,yCAAyC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/types/bot.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { MediaReference } from './common.js';
|
|
2
|
+
/**
|
|
3
|
+
* Outgoing event delivery channel preference. Only applied when the bot has
|
|
4
|
+
* BOTH `kafkaTopic` and `webhookUrl` configured — a bot with only one channel
|
|
5
|
+
* always uses that channel regardless of preference.
|
|
6
|
+
*/
|
|
7
|
+
export type BotDeliveryPreference = 'Both' | 'WebhookOnly' | 'KafkaOnly';
|
|
2
8
|
/**
|
|
3
9
|
* Bot DTO returned from server.
|
|
4
10
|
*
|
|
@@ -21,6 +27,8 @@ export interface BotDto {
|
|
|
21
27
|
kafkaTopic?: string | null;
|
|
22
28
|
/** HTTP/2 NDJSON webhook URL for outgoing events (MessageCreatedEvent only). `null` when not configured. */
|
|
23
29
|
webhookUrl?: string | null;
|
|
30
|
+
/** Delivery channel preference. Only effective when both `kafkaTopic` and `webhookUrl` are set. */
|
|
31
|
+
deliveryPreference: BotDeliveryPreference;
|
|
24
32
|
isActive: boolean;
|
|
25
33
|
listenAllGroupMessages: boolean;
|
|
26
34
|
createdBy: string;
|
|
@@ -49,6 +57,11 @@ export interface CreateBotRequest {
|
|
|
49
57
|
* http/https URI, max 2000 chars.
|
|
50
58
|
*/
|
|
51
59
|
webhookUrl?: string | null;
|
|
60
|
+
/**
|
|
61
|
+
* Delivery channel preference. Defaults to `Both` server-side when omitted.
|
|
62
|
+
* Only effective when the bot has BOTH `kafkaTopic` and `webhookUrl` configured.
|
|
63
|
+
*/
|
|
64
|
+
deliveryPreference?: BotDeliveryPreference;
|
|
52
65
|
listenAllGroupMessages?: boolean;
|
|
53
66
|
}
|
|
54
67
|
export interface UpdateBotRequest {
|
|
@@ -82,5 +95,10 @@ export interface UpdateBotRequest {
|
|
|
82
95
|
* MUTUALLY EXCLUSIVE with non-null `webhookUrl` — sending both → 400 Validation.
|
|
83
96
|
*/
|
|
84
97
|
clearWebhookUrl?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Update delivery preference. Omit or set to `null` to leave unchanged.
|
|
100
|
+
* Only effective when the bot has BOTH `kafkaTopic` and `webhookUrl` configured.
|
|
101
|
+
*/
|
|
102
|
+
deliveryPreference?: BotDeliveryPreference | null;
|
|
85
103
|
}
|
|
86
104
|
//# sourceMappingURL=bot.d.ts.map
|
package/dist/types/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/types/bot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4GAA4G;IAC5G,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../src/types/bot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,GAAG,aAAa,GAAG,WAAW,CAAC;AAEzE;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC1C,gFAAgF;IAChF,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4GAA4G;IAC5G,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mGAAmG;IACnG,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,EAAE,OAAO,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,sCAAsC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;IAC3C,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACnD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ConversationListItemDto } from './conversation.js';
|
|
2
|
+
import type { ConversationDto } from './conversation.js';
|
|
3
|
+
import type { MessageDto } from './message.js';
|
|
4
|
+
/** Search scope for GET /api/search. */
|
|
5
|
+
export type SearchType = 'MESSAGE' | 'CONVERSATION' | 'BOTH';
|
|
6
|
+
/** A group of messages that matched the search query, associated with their conversation. */
|
|
7
|
+
export interface SearchMessageGroup {
|
|
8
|
+
/**
|
|
9
|
+
* The conversation these messages belong to.
|
|
10
|
+
* `null` if the batch fetch for conversation info failed (graceful degrade).
|
|
11
|
+
* `participants` is always `[]` (fetched with `includeParticipants=false`).
|
|
12
|
+
*/
|
|
13
|
+
conversation: ConversationDto | null;
|
|
14
|
+
messages: MessageDto[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Paginated message search results, grouped by conversation.
|
|
18
|
+
* Cursor pagination applies only to messages; conversation ordering follows
|
|
19
|
+
* the first appearance of each conversation in the result set.
|
|
20
|
+
*/
|
|
21
|
+
export interface SearchMessagesResult {
|
|
22
|
+
groups: SearchMessageGroup[];
|
|
23
|
+
nextCursor: string | null;
|
|
24
|
+
hasMore: boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Unified search response from GET /api/search.
|
|
28
|
+
*
|
|
29
|
+
* Both keys are always present; the key for the unselected `type` is `null`:
|
|
30
|
+
* - `type=CONVERSATION` → `messages` is `null`
|
|
31
|
+
* - `type=MESSAGE` → `conversations` is `null`
|
|
32
|
+
* - `type=BOTH` → both populated
|
|
33
|
+
*/
|
|
34
|
+
export interface SearchResult {
|
|
35
|
+
/**
|
|
36
|
+
* Matching conversations with `lastMessage` hydrated (same as conversation
|
|
37
|
+
* list items from GET /api/conversations). `null` when `type=MESSAGE`.
|
|
38
|
+
* Client MUST check `lastMessage.isDeleted` before displaying (spec §6.3).
|
|
39
|
+
*/
|
|
40
|
+
conversations: ConversationListItemDto[] | null;
|
|
41
|
+
/**
|
|
42
|
+
* Matching messages grouped by conversation. `null` when `type=CONVERSATION`.
|
|
43
|
+
* Supports cursor pagination for messages.
|
|
44
|
+
*/
|
|
45
|
+
messages: SearchMessagesResult | null;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,wCAAwC;AACxC,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,cAAc,GAAG,MAAM,CAAC;AAE7D,6FAA6F;AAC7F,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,YAAY,EAAE,eAAe,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,aAAa,EAAE,uBAAuB,EAAE,GAAG,IAAI,CAAC;IAChD;;;OAGG;IACH,QAAQ,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/types/search.ts"],"names":[],"mappings":"AAAA,gFAAgF"}
|