@seaverse/conversation-sdk 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +284 -0
  2. package/dist/aggregated/apps-with-conversations.d.ts +47 -0
  3. package/dist/aggregated/apps-with-conversations.d.ts.map +1 -0
  4. package/dist/aggregated/apps-with-conversations.js +90 -0
  5. package/dist/aggregated/apps-with-conversations.js.map +1 -0
  6. package/dist/aggregated/index.d.ts +3 -0
  7. package/dist/aggregated/index.d.ts.map +1 -0
  8. package/dist/aggregated/index.js +2 -0
  9. package/dist/aggregated/index.js.map +1 -0
  10. package/dist/client/ConversationClient.d.ts +24 -0
  11. package/dist/client/ConversationClient.d.ts.map +1 -0
  12. package/dist/client/ConversationClient.js +56 -0
  13. package/dist/client/ConversationClient.js.map +1 -0
  14. package/dist/client/ConversationsClient.d.ts +31 -0
  15. package/dist/client/ConversationsClient.d.ts.map +1 -0
  16. package/dist/client/ConversationsClient.js +50 -0
  17. package/dist/client/ConversationsClient.js.map +1 -0
  18. package/dist/client/EnvironmentConfig.d.ts +12 -0
  19. package/dist/client/EnvironmentConfig.d.ts.map +1 -0
  20. package/dist/client/EnvironmentConfig.js +21 -0
  21. package/dist/client/EnvironmentConfig.js.map +1 -0
  22. package/dist/client/MessagesClient.d.ts +31 -0
  23. package/dist/client/MessagesClient.d.ts.map +1 -0
  24. package/dist/client/MessagesClient.js +57 -0
  25. package/dist/client/MessagesClient.js.map +1 -0
  26. package/dist/client/index.d.ts +3 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +3 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/data/DbClient.d.ts +76 -0
  31. package/dist/data/DbClient.d.ts.map +1 -0
  32. package/dist/data/DbClient.js +107 -0
  33. package/dist/data/DbClient.js.map +1 -0
  34. package/dist/data/index.d.ts +2 -0
  35. package/dist/data/index.d.ts.map +1 -0
  36. package/dist/data/index.js +2 -0
  37. package/dist/data/index.js.map +1 -0
  38. package/dist/data/postgrest-headers.d.ts +10 -0
  39. package/dist/data/postgrest-headers.d.ts.map +1 -0
  40. package/dist/data/postgrest-headers.js +58 -0
  41. package/dist/data/postgrest-headers.js.map +1 -0
  42. package/dist/data/query.types.d.ts +62 -0
  43. package/dist/data/query.types.d.ts.map +1 -0
  44. package/dist/data/query.types.js +2 -0
  45. package/dist/data/query.types.js.map +1 -0
  46. package/dist/errors/AuthError.d.ts +8 -0
  47. package/dist/errors/AuthError.d.ts.map +1 -0
  48. package/dist/errors/AuthError.js +10 -0
  49. package/dist/errors/AuthError.js.map +1 -0
  50. package/dist/errors/BaseError.d.ts +17 -0
  51. package/dist/errors/BaseError.d.ts.map +1 -0
  52. package/dist/errors/BaseError.js +26 -0
  53. package/dist/errors/BaseError.js.map +1 -0
  54. package/dist/errors/NetworkError.d.ts +8 -0
  55. package/dist/errors/NetworkError.d.ts.map +1 -0
  56. package/dist/errors/NetworkError.js +10 -0
  57. package/dist/errors/NetworkError.js.map +1 -0
  58. package/dist/errors/ProtocolError.d.ts +8 -0
  59. package/dist/errors/ProtocolError.d.ts.map +1 -0
  60. package/dist/errors/ProtocolError.js +10 -0
  61. package/dist/errors/ProtocolError.js.map +1 -0
  62. package/dist/errors/TimeoutError.d.ts +8 -0
  63. package/dist/errors/TimeoutError.d.ts.map +1 -0
  64. package/dist/errors/TimeoutError.js +10 -0
  65. package/dist/errors/TimeoutError.js.map +1 -0
  66. package/dist/errors/index.d.ts +6 -0
  67. package/dist/errors/index.d.ts.map +1 -0
  68. package/dist/errors/index.js +6 -0
  69. package/dist/errors/index.js.map +1 -0
  70. package/dist/functional-api.d.ts +24 -0
  71. package/dist/functional-api.d.ts.map +1 -0
  72. package/dist/functional-api.js +59 -0
  73. package/dist/functional-api.js.map +1 -0
  74. package/dist/index.d.ts +5 -0
  75. package/dist/index.d.ts.map +1 -0
  76. package/dist/index.js +9 -0
  77. package/dist/index.js.map +1 -0
  78. package/dist/resources/AppsResource.d.ts +37 -0
  79. package/dist/resources/AppsResource.d.ts.map +1 -0
  80. package/dist/resources/AppsResource.js +51 -0
  81. package/dist/resources/AppsResource.js.map +1 -0
  82. package/dist/resources/ConversationsResource.d.ts +81 -0
  83. package/dist/resources/ConversationsResource.d.ts.map +1 -0
  84. package/dist/resources/ConversationsResource.js +103 -0
  85. package/dist/resources/ConversationsResource.js.map +1 -0
  86. package/dist/resources/MessagesResource.d.ts +56 -0
  87. package/dist/resources/MessagesResource.d.ts.map +1 -0
  88. package/dist/resources/MessagesResource.js +115 -0
  89. package/dist/resources/MessagesResource.js.map +1 -0
  90. package/dist/session/session-token.d.ts +38 -0
  91. package/dist/session/session-token.d.ts.map +1 -0
  92. package/dist/session/session-token.js +74 -0
  93. package/dist/session/session-token.js.map +1 -0
  94. package/dist/transforms/app.transform.d.ts +6 -0
  95. package/dist/transforms/app.transform.d.ts.map +1 -0
  96. package/dist/transforms/app.transform.js +39 -0
  97. package/dist/transforms/app.transform.js.map +1 -0
  98. package/dist/transforms/conversation.transform.d.ts +10 -0
  99. package/dist/transforms/conversation.transform.d.ts.map +1 -0
  100. package/dist/transforms/conversation.transform.js +45 -0
  101. package/dist/transforms/conversation.transform.js.map +1 -0
  102. package/dist/transforms/message.transform.d.ts +12 -0
  103. package/dist/transforms/message.transform.d.ts.map +1 -0
  104. package/dist/transforms/message.transform.js +119 -0
  105. package/dist/transforms/message.transform.js.map +1 -0
  106. package/dist/transport/HttpClient.d.ts +34 -0
  107. package/dist/transport/HttpClient.d.ts.map +1 -0
  108. package/dist/transport/HttpClient.js +158 -0
  109. package/dist/transport/HttpClient.js.map +1 -0
  110. package/dist/transport/config.types.d.ts +40 -0
  111. package/dist/transport/config.types.d.ts.map +1 -0
  112. package/dist/transport/config.types.js +2 -0
  113. package/dist/transport/config.types.js.map +1 -0
  114. package/dist/transport/index.d.ts +10 -0
  115. package/dist/transport/index.d.ts.map +1 -0
  116. package/dist/transport/index.js +11 -0
  117. package/dist/transport/index.js.map +1 -0
  118. package/dist/transport/timeout.d.ts +12 -0
  119. package/dist/transport/timeout.d.ts.map +1 -0
  120. package/dist/transport/timeout.js +29 -0
  121. package/dist/transport/timeout.js.map +1 -0
  122. package/dist/types/common.types.d.ts +24 -0
  123. package/dist/types/common.types.d.ts.map +1 -0
  124. package/dist/types/common.types.js +5 -0
  125. package/dist/types/common.types.js.map +1 -0
  126. package/dist/types/config.types.d.ts +28 -0
  127. package/dist/types/config.types.d.ts.map +1 -0
  128. package/dist/types/config.types.js +2 -0
  129. package/dist/types/config.types.js.map +1 -0
  130. package/dist/types/http.types.d.ts +47 -0
  131. package/dist/types/http.types.d.ts.map +1 -0
  132. package/dist/types/http.types.js +2 -0
  133. package/dist/types/http.types.js.map +1 -0
  134. package/dist/types/index.d.ts +7 -0
  135. package/dist/types/index.d.ts.map +1 -0
  136. package/dist/types/index.js +2 -0
  137. package/dist/types/index.js.map +1 -0
  138. package/dist/types/models.types.d.ts +118 -0
  139. package/dist/types/models.types.d.ts.map +1 -0
  140. package/dist/types/models.types.js +5 -0
  141. package/dist/types/models.types.js.map +1 -0
  142. package/dist/types/pagination.types.d.ts +69 -0
  143. package/dist/types/pagination.types.d.ts.map +1 -0
  144. package/dist/types/pagination.types.js +24 -0
  145. package/dist/types/pagination.types.js.map +1 -0
  146. package/dist/types/token.types.d.ts +6 -0
  147. package/dist/types/token.types.d.ts.map +1 -0
  148. package/dist/types/token.types.js +2 -0
  149. package/dist/types/token.types.js.map +1 -0
  150. package/package.json +38 -0
package/README.md ADDED
@@ -0,0 +1,284 @@
1
+ # @seaverse/conversation-sdk
2
+
3
+ SeaVerse Conversation SDK - 用于对话(Conversations)和消息(Messages)管理的函数式 SDK。
4
+
5
+ ## 安装
6
+
7
+ ```bash
8
+ npm install @seaverse/conversation-sdk
9
+ # 或
10
+ pnpm add @seaverse/conversation-sdk
11
+ ```
12
+
13
+ ## 快速开始
14
+
15
+ ### 初始化 SDK
16
+
17
+ ```typescript
18
+ import { initConversationSdk } from '@seaverse/conversation-sdk';
19
+
20
+ const sdk = initConversationSdk({
21
+ environment: 'prod', // 'dev' | 'prod'
22
+ token: 'your-access-token'
23
+ });
24
+ ```
25
+
26
+ ### 获取 Apps 及其会话列表
27
+
28
+ ```typescript
29
+ // 获取所有 apps,每个 app 返回消息数最多的一个会话
30
+ const result = await sdk.getAppsWithConversationsList({
31
+ page: 1,
32
+ pageSize: 20
33
+ });
34
+
35
+ console.log(result.apps); // AppWithConversations[]
36
+ console.log(result.hasMore); // boolean - 是否有下一页
37
+
38
+ // 获取指定 app
39
+ const appResult = await sdk.getAppsWithConversationsList({
40
+ appId: 'app-123',
41
+ page: 1,
42
+ pageSize: 20
43
+ });
44
+ ```
45
+
46
+ ### 获取消息列表
47
+
48
+ ```typescript
49
+ // 获取指定会话的消息列表(倒序,最新的在前)
50
+ const result = await sdk.getMessagesList('conversation-id', {
51
+ page: 1,
52
+ pageSize: 50
53
+ });
54
+
55
+ console.log(result.messages); // Message[]
56
+ console.log(result.hasMore); // boolean - 是否有下一页
57
+ ```
58
+
59
+ ## API 参考
60
+
61
+ ### initConversationSdk(config)
62
+
63
+ 初始化 Conversation SDK 并返回函数式 API。
64
+
65
+ **参数**:
66
+ ```typescript
67
+ {
68
+ environment: 'dev' | 'prod'; // 环境配置
69
+ token: string; // 访问令牌
70
+ getToken?: () => Promise<string>; // 动态获取令牌(可选)
71
+ fetch?: typeof fetch; // 自定义 fetch 实现(可选)
72
+ timeout?: number; // 请求超时时间,默认 30000ms(可选)
73
+ }
74
+ ```
75
+
76
+ **返回**: 包含以下方法的对象
77
+
78
+ ### getAppsWithConversationsList(options?)
79
+
80
+ 获取 Apps 列表,每个 app 只返回消息数最多的那一个会话。
81
+
82
+ **参数**:
83
+ ```typescript
84
+ {
85
+ appId?: string; // 可选,按应用 ID 过滤
86
+ page?: number; // 页码,默认 1
87
+ pageSize?: number; // 每页数量,默认 20
88
+ }
89
+ ```
90
+
91
+ **返回**:
92
+ ```typescript
93
+ Promise<{
94
+ apps: AppWithConversations[];
95
+ hasMore: boolean; // 是否有下一页
96
+ }>
97
+ ```
98
+
99
+ ### getMessagesList(conversationId, options?)
100
+
101
+ 获取指定会话的消息列表(按时间倒序,最新消息在前)。
102
+
103
+ **参数**:
104
+ - `conversationId`: `string` - 会话 ID(必需)
105
+ - `options?`: 可选查询选项
106
+ ```typescript
107
+ {
108
+ page?: number; // 页码,默认 1
109
+ pageSize?: number; // 每页数量,默认 100
110
+ }
111
+ ```
112
+
113
+ **返回**:
114
+ ```typescript
115
+ Promise<{
116
+ messages: Message[];
117
+ hasMore: boolean; // 是否有下一页
118
+ }>
119
+ ```
120
+
121
+ ## 类型定义
122
+
123
+ ### Message
124
+
125
+ ```typescript
126
+ interface Message {
127
+ id: string;
128
+ role?: 'user' | 'assistant' | 'system'; // tips 消息无 role
129
+ content?: string; // tips 消息不返回此字段
130
+ timestamp: number; // 秒级时间戳
131
+ type?: 'text' | 'conversation_tips' | string;
132
+ tips?: string[]; // conversation_tips 类型专有
133
+ toolCalls?: ToolCall[]; // 工具调用信息
134
+ }
135
+ ```
136
+
137
+ **Tips 消息格式**:
138
+ ```typescript
139
+ {
140
+ id: string;
141
+ conversation_id: string; // 仅 tips 消息有此字段
142
+ timestamp: number;
143
+ type: "conversation_tips";
144
+ tips: string[];
145
+ // 注意: tips 消息没有 content 和 role 字段
146
+ }
147
+ ```
148
+
149
+ ### ToolCall
150
+
151
+ ```typescript
152
+ interface ToolCall {
153
+ id: string;
154
+ toolName: string;
155
+ toolInput: Record<string, unknown>;
156
+ isCompleted: boolean;
157
+ }
158
+ ```
159
+
160
+ ### Conversation
161
+
162
+ ```typescript
163
+ interface Conversation {
164
+ id: string;
165
+ title: string;
166
+ appId: string | null;
167
+ userId: string;
168
+ createdAt: number; // 毫秒时间戳
169
+ updatedAt: number; // 毫秒时间戳
170
+ lastActiveAt: number; // 毫秒时间戳
171
+ messageCount?: number; // 消息计数
172
+ }
173
+ ```
174
+
175
+ ### AppWithConversations
176
+
177
+ ```typescript
178
+ interface AppWithConversations {
179
+ app: App;
180
+ conversations: Conversation[]; // 只有一个元素(消息数最多的会话)
181
+ }
182
+ ```
183
+
184
+ ### App
185
+
186
+ ```typescript
187
+ interface App {
188
+ id: string;
189
+ name: string;
190
+ displayName: string;
191
+ description: string;
192
+ thumbnailUrls: string[];
193
+ userName: string;
194
+ version: string;
195
+ tags: string[] | null;
196
+ status: 'draft' | 'published' | 'archived';
197
+ positiveCount: number;
198
+ forkCount: number;
199
+ commentCount: number;
200
+ createdAt: number; // 毫秒时间戳
201
+ updatedAt: number; // 毫秒时间戳
202
+ }
203
+ ```
204
+
205
+ ## 错误处理
206
+
207
+ SDK 提供了几种错误类型:
208
+
209
+ ```typescript
210
+ import {
211
+ BaseError,
212
+ NetworkError,
213
+ AuthError,
214
+ TimeoutError,
215
+ ProtocolError
216
+ } from '@seaverse/conversation-sdk';
217
+
218
+ try {
219
+ const result = await sdk.getAppsWithConversationsList();
220
+ } catch (error) {
221
+ if (error instanceof AuthError) {
222
+ console.error('认证失败:', error.message);
223
+ } else if (error instanceof NetworkError) {
224
+ console.error('网络错误:', error.message);
225
+ } else if (error instanceof TimeoutError) {
226
+ console.error('请求超时:', error.message);
227
+ } else {
228
+ console.error('未知错误:', error);
229
+ }
230
+ }
231
+ ```
232
+
233
+ ## 完整示例
234
+
235
+ ```typescript
236
+ import { initConversationSdk } from '@seaverse/conversation-sdk';
237
+
238
+ // 初始化 SDK
239
+ const sdk = initConversationSdk({
240
+ environment: 'prod',
241
+ token: 'your-access-token'
242
+ });
243
+
244
+ // 1. 获取所有 apps 及其热门会话
245
+ const appsResult = await sdk.getAppsWithConversationsList({
246
+ page: 1,
247
+ pageSize: 20
248
+ });
249
+
250
+ console.log('Apps:', appsResult.apps);
251
+ console.log('有下一页:', appsResult.hasMore);
252
+
253
+ // 2. 获取某个会话的消息
254
+ const conversationId = appsResult.apps[0]?.conversations[0]?.id;
255
+ if (conversationId) {
256
+ const messagesResult = await sdk.getMessagesList(conversationId, {
257
+ page: 1,
258
+ pageSize: 50
259
+ });
260
+
261
+ console.log('消息列表:', messagesResult.messages);
262
+ console.log('有更多消息:', messagesResult.hasMore);
263
+
264
+ // 处理不同类型的消息
265
+ messagesResult.messages.forEach(msg => {
266
+ if (msg.type === 'conversation_tips') {
267
+ console.log('Tips:', msg.tips);
268
+ } else {
269
+ console.log('消息:', msg.content);
270
+ }
271
+ });
272
+ }
273
+ ```
274
+
275
+ ## 环境配置
276
+
277
+ SDK 会根据 `environment` 参数自动选择对应的服务端点:
278
+
279
+ - `'dev'`: 开发环境
280
+ - `'prod'`: 生产环境
281
+
282
+ ## 许可证
283
+
284
+ MIT
@@ -0,0 +1,47 @@
1
+ import type { DbClient } from '../data/DbClient.js';
2
+ import type { ListAppsWithConversationsResult } from '../types/index.js';
3
+ /**
4
+ * Configuration for aggregated query
5
+ */
6
+ export interface ListAppsWithConversationsConfig {
7
+ /**
8
+ * Optional app ID to filter by
9
+ */
10
+ appId?: string;
11
+ /**
12
+ * Page number (1-based)
13
+ * @default 1
14
+ */
15
+ page?: number;
16
+ /**
17
+ * Page size
18
+ * @default 20
19
+ */
20
+ pageSize?: number;
21
+ /**
22
+ * Database client
23
+ */
24
+ db: DbClient;
25
+ }
26
+ /**
27
+ * List apps with their conversations (aggregated query)
28
+ * Each app returns only ONE conversation - the one with the most messages.
29
+ *
30
+ * Implementation: Real-time message counting
31
+ * - Queries all conversations
32
+ * - Counts messages for each conversation from messages table
33
+ * - Selects the conversation with highest message count per app
34
+ *
35
+ * This ensures accuracy even if message_count field is not maintained.
36
+ *
37
+ * Replaces `/api/apps/with-conversations` endpoint
38
+ *
39
+ * @example
40
+ * const result = await listAppsWithConversations({
41
+ * db: dbClient,
42
+ * getUrlSessionToken,
43
+ * accessToken: 'user-token',
44
+ * });
45
+ */
46
+ export declare function listAppsWithConversations(config: ListAppsWithConversationsConfig): Promise<ListAppsWithConversationsResult>;
47
+ //# sourceMappingURL=apps-with-conversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps-with-conversations.d.ts","sourceRoot":"","sources":["../../src/aggregated/apps-with-conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAGV,+BAA+B,EAChC,MAAM,mBAAmB,CAAC;AAM3B;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,EAAE,EAAE,QAAQ,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,+BAA+B,CAAC,CA2F1C"}
@@ -0,0 +1,90 @@
1
+ import { transformConversation } from '../transforms/conversation.transform.js';
2
+ import { transformApp } from '../transforms/app.transform.js';
3
+ import { pageToOffset } from '../types/pagination.types.js';
4
+ /**
5
+ * List apps with their conversations (aggregated query)
6
+ * Each app returns only ONE conversation - the one with the most messages.
7
+ *
8
+ * Implementation: Real-time message counting
9
+ * - Queries all conversations
10
+ * - Counts messages for each conversation from messages table
11
+ * - Selects the conversation with highest message count per app
12
+ *
13
+ * This ensures accuracy even if message_count field is not maintained.
14
+ *
15
+ * Replaces `/api/apps/with-conversations` endpoint
16
+ *
17
+ * @example
18
+ * const result = await listAppsWithConversations({
19
+ * db: dbClient,
20
+ * getUrlSessionToken,
21
+ * accessToken: 'user-token',
22
+ * });
23
+ */
24
+ export async function listAppsWithConversations(config) {
25
+ const { appId, page = 1, pageSize = 20, db, } = config;
26
+ // Calculate pagination params
27
+ const { limit, offset } = pageToOffset(page, pageSize);
28
+ // Parallel requests to avoid waterfall
29
+ const [dbApps, dbConversations] = await Promise.all([
30
+ // Get apps with pagination
31
+ db.get('apps', appId
32
+ ? { filter: { app_id: `eq.${appId}` }, limit, offset, count: 'exact' }
33
+ : { limit, offset, count: 'exact' }),
34
+ // Get conversations (all conversations to find max message_count per app)
35
+ db.get('conversations', appId ? { filter: { app_id: `eq.${appId}` } } : {}),
36
+ ]);
37
+ // Extract all conversation IDs for message counting
38
+ const conversationIds = dbConversations.data
39
+ .map((conv) => conv.conversation_id || conv.id)
40
+ .filter(Boolean);
41
+ // Fetch all messages for these conversations and count them
42
+ let realMessageCounts = new Map();
43
+ if (conversationIds.length > 0) {
44
+ // Query all messages for these conversations
45
+ const dbMessages = await db.get('messages', {
46
+ filter: { conversation_id: `in.(${conversationIds.join(',')})` },
47
+ select: 'conversation_id',
48
+ });
49
+ // Count messages per conversation
50
+ for (const msg of dbMessages.data) {
51
+ const count = realMessageCounts.get(msg.conversation_id) || 0;
52
+ realMessageCounts.set(msg.conversation_id, count + 1);
53
+ }
54
+ }
55
+ // Group conversations by appId and select the one with highest REAL message count
56
+ const topConversationByAppId = new Map();
57
+ for (const dbConv of dbConversations.data) {
58
+ const conv = transformConversation(dbConv);
59
+ const convId = dbConv.conversation_id || dbConv.id;
60
+ // Use real message count instead of db field
61
+ const realCount = realMessageCounts.get(convId) || 0;
62
+ // Only process conversations with appId (skip global conversations)
63
+ if (conv.appId) {
64
+ const existing = topConversationByAppId.get(conv.appId);
65
+ const existingCount = existing?.messageCount || 0;
66
+ // Only keep the conversation with highest REAL message count
67
+ if (!existing || realCount > existingCount) {
68
+ // Update messageCount with real count
69
+ conv.messageCount = realCount;
70
+ topConversationByAppId.set(conv.appId, conv);
71
+ }
72
+ }
73
+ }
74
+ // Build response (each app has at most 1 conversation - the one with highest message_count)
75
+ const appsWithConversations = dbApps.data.map((dbApp) => {
76
+ const topConv = topConversationByAppId.get((dbApp.app_id || dbApp.id));
77
+ return {
78
+ app: transformApp(dbApp),
79
+ conversations: topConv ? [topConv] : [],
80
+ };
81
+ });
82
+ // Calculate hasMore (是否还有下一页)
83
+ const total = dbApps.count || 0;
84
+ const hasMore = page * pageSize < total;
85
+ return {
86
+ apps: appsWithConversations,
87
+ hasMore,
88
+ };
89
+ }
90
+ //# sourceMappingURL=apps-with-conversations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps-with-conversations.js","sourceRoot":"","sources":["../../src/aggregated/apps-with-conversations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { listAppsWithConversations } from './apps-with-conversations.js';
2
+ export type { ListAppsWithConversationsConfig } from './apps-with-conversations.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aggregated/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { listAppsWithConversations } from './apps-with-conversations.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aggregated/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { ConversationClientConfig } from '../types/config.types.js';
2
+ import { ConversationsResource } from '../resources/ConversationsResource.js';
3
+ import { MessagesResource } from '../resources/MessagesResource.js';
4
+ import { AppsResource } from '../resources/AppsResource.js';
5
+ /**
6
+ * Conversation SDK 客户端
7
+ */
8
+ export declare class ConversationClient {
9
+ private readonly config;
10
+ private readonly db;
11
+ readonly conversations: ConversationsResource;
12
+ readonly messages: MessagesResource;
13
+ readonly apps: AppsResource;
14
+ constructor(config: ConversationClientConfig);
15
+ /**
16
+ * 获取 URL session token
17
+ */
18
+ getUrlSessionToken(): Promise<string | null>;
19
+ }
20
+ /**
21
+ * 创建 Conversation SDK 客户端(工厂函数)
22
+ */
23
+ export declare function createClient(config: ConversationClientConfig): ConversationClient;
24
+ //# sourceMappingURL=ConversationClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationClient.d.ts","sourceRoot":"","sources":["../../src/client/ConversationClient.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IACF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAG9B,SAAgB,aAAa,EAAE,qBAAqB,CAAC;IACrD,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,SAAgB,IAAI,EAAE,YAAY,CAAC;gBAEvB,MAAM,EAAE,wBAAwB;IA6B5C;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAUnD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,wBAAwB,GAAG,kBAAkB,CAEjF"}
@@ -0,0 +1,56 @@
1
+ import { createHttpClient } from '../transport/index.js';
2
+ import { DbClient } from '../data/DbClient.js';
3
+ import { getUrlSessionToken as getToken } from '../session/session-token.js';
4
+ import { getEnvironmentConfig } from './EnvironmentConfig.js';
5
+ import { ConversationsResource } from '../resources/ConversationsResource.js';
6
+ import { MessagesResource } from '../resources/MessagesResource.js';
7
+ import { AppsResource } from '../resources/AppsResource.js';
8
+ /**
9
+ * Conversation SDK 客户端
10
+ */
11
+ export class ConversationClient {
12
+ constructor(config) {
13
+ // 环境配置解析
14
+ const envConfig = getEnvironmentConfig(config.environment);
15
+ this.config = {
16
+ environment: config.environment,
17
+ token: config.token,
18
+ getToken: config.getToken || (() => config.token),
19
+ fetch: config.fetch || globalThis.fetch,
20
+ timeout: config.timeout || 30000,
21
+ urls: envConfig,
22
+ };
23
+ // 创建底层客户端
24
+ const http = createHttpClient({
25
+ baseUrl: this.config.urls.postgrest,
26
+ fetch: this.config.fetch,
27
+ getAuthToken: this.config.getToken,
28
+ timeoutMs: this.config.timeout,
29
+ });
30
+ this.db = new DbClient(http);
31
+ // 初始化资源
32
+ this.conversations = new ConversationsResource(this.db);
33
+ this.messages = new MessagesResource(this.db);
34
+ this.apps = new AppsResource(this.db);
35
+ }
36
+ /**
37
+ * 获取 URL session token
38
+ */
39
+ async getUrlSessionToken() {
40
+ const token = await this.config.getToken();
41
+ if (!token)
42
+ return null;
43
+ return getToken({
44
+ authBaseUrl: this.config.urls.auth,
45
+ accessToken: token,
46
+ fetch: this.config.fetch,
47
+ });
48
+ }
49
+ }
50
+ /**
51
+ * 创建 Conversation SDK 客户端(工厂函数)
52
+ */
53
+ export function createClient(config) {
54
+ return new ConversationClient(config);
55
+ }
56
+ //# sourceMappingURL=ConversationClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationClient.js","sourceRoot":"","sources":["../../src/client/ConversationClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,IAAI,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAE7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAE5D;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAW7B,YAAY,MAAgC;QAC1C,SAAS;QACT,MAAM,SAAS,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE3D,IAAI,CAAC,MAAM,GAAG;YACZ,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;YACjD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK;YACvC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,IAAI,EAAE,SAAS;SAChB,CAAC;QAEF,UAAU;QACV,MAAM,IAAI,GAAG,gBAAgB,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;YACnC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ;YAClC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;SAC/B,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE7B,QAAQ;QACR,IAAI,CAAC,aAAa,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,OAAO,QAAQ,CAAC;YACd,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;YAClC,WAAW,EAAE,KAAK;YAClB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;SACzB,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAgC;IAC3D,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { DbClient } from '../data/DbClient.js';
2
+ import type { QueryOptions, MutationOptions } from '../data/query.types.js';
3
+ import type { Conversation } from '../types/index.js';
4
+ /**
5
+ * Client for conversation operations
6
+ */
7
+ export declare class ConversationsClient {
8
+ private readonly db;
9
+ constructor(db: DbClient);
10
+ /**
11
+ * List conversations
12
+ */
13
+ list(options?: QueryOptions): Promise<Conversation[]>;
14
+ /**
15
+ * Get a single conversation by ID
16
+ */
17
+ get(id: string): Promise<Conversation | null>;
18
+ /**
19
+ * Create a new conversation
20
+ */
21
+ create(data: Partial<Conversation>, options?: MutationOptions): Promise<Conversation>;
22
+ /**
23
+ * Update a conversation
24
+ */
25
+ update(id: string, data: Partial<Conversation>, options?: MutationOptions): Promise<Conversation>;
26
+ /**
27
+ * Delete a conversation
28
+ */
29
+ delete(id: string): Promise<void>;
30
+ }
31
+ //# sourceMappingURL=ConversationsClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationsClient.d.ts","sourceRoot":"","sources":["../../src/client/ConversationsClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ;IAEzC;;OAEG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAK3D;;OAEG;IACG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAMnD;;OAEG;IACG,MAAM,CACV,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,CAAC;IAQxB;;OAEG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,EAC3B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,YAAY,CAAC;IAaxB;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Client for conversation operations
3
+ */
4
+ export class ConversationsClient {
5
+ constructor(db) {
6
+ this.db = db;
7
+ }
8
+ /**
9
+ * List conversations
10
+ */
11
+ async list(options) {
12
+ const result = await this.db.get('conversations', options);
13
+ return result.data;
14
+ }
15
+ /**
16
+ * Get a single conversation by ID
17
+ */
18
+ async get(id) {
19
+ return this.db.getOne('conversations', {
20
+ filter: { id: `eq.${id}` },
21
+ });
22
+ }
23
+ /**
24
+ * Create a new conversation
25
+ */
26
+ async create(data, options) {
27
+ const results = await this.db.post('conversations', data, {
28
+ returning: 'representation',
29
+ ...options,
30
+ });
31
+ return results[0];
32
+ }
33
+ /**
34
+ * Update a conversation
35
+ */
36
+ async update(id, data, options) {
37
+ const results = await this.db.patch('conversations', { id: `eq.${id}` }, data, {
38
+ returning: 'representation',
39
+ ...options,
40
+ });
41
+ return results[0];
42
+ }
43
+ /**
44
+ * Delete a conversation
45
+ */
46
+ async delete(id) {
47
+ await this.db.delete('conversations', { id: `eq.${id}` });
48
+ }
49
+ }
50
+ //# sourceMappingURL=ConversationsClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationsClient.js","sourceRoot":"","sources":["../../src/client/ConversationsClient.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC9B,YAA6B,EAAY;QAAZ,OAAE,GAAF,EAAE,CAAU;IAAG,CAAC;IAE7C;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAsB;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAe,eAAe,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,OAAO,IAAI,CAAC,EAAE,CAAC,MAAM,CAAe,eAAe,EAAE;YACnD,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;SAC3B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,IAA2B,EAC3B,OAAyB;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,CAAe,eAAe,EAAE,IAAI,EAAE;YACtE,SAAS,EAAE,gBAAgB;YAC3B,GAAG,OAAO;SACX,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACV,EAAU,EACV,IAA2B,EAC3B,OAAyB;QAEzB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CACjC,eAAe,EACf,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAClB,IAAI,EACJ;YACE,SAAS,EAAE,gBAAgB;YAC3B,GAAG,OAAO;SACX,CACF,CAAC;QACF,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,EAAU;QACrB,MAAM,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * 环境 URL 配置
3
+ */
4
+ export interface EnvironmentUrls {
5
+ postgrest: string;
6
+ auth: string;
7
+ }
8
+ /**
9
+ * 获取环境配置
10
+ */
11
+ export declare function getEnvironmentConfig(env: 'dev' | 'prod'): EnvironmentUrls;
12
+ //# sourceMappingURL=EnvironmentConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentConfig.d.ts","sourceRoot":"","sources":["../../src/client/EnvironmentConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAiBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,GAAG,eAAe,CAEzE"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 环境配置映射
3
+ */
4
+ const ENV_CONFIGS = {
5
+ dev: {
6
+ // 开发/测试环境:用于浏览器联调的 PostgREST / Auth
7
+ postgrest: 'https://postgrest.sg.seaverse.dev',
8
+ auth: 'https://auth.sg.seaverse.dev',
9
+ },
10
+ prod: {
11
+ postgrest: 'https://db.seaverse.ai',
12
+ auth: 'https://auth.sg.seaverse.dev',
13
+ },
14
+ };
15
+ /**
16
+ * 获取环境配置
17
+ */
18
+ export function getEnvironmentConfig(env) {
19
+ return ENV_CONFIGS[env];
20
+ }
21
+ //# sourceMappingURL=EnvironmentConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentConfig.js","sourceRoot":"","sources":["../../src/client/EnvironmentConfig.ts"],"names":[],"mappings":"AAQA;;GAEG;AACH,MAAM,WAAW,GAA4C;IAC3D,GAAG,EAAE;QACH,oCAAoC;QACpC,SAAS,EAAE,mCAAmC;QAC9C,IAAI,EAAE,8BAA8B;KACrC;IACD,IAAI,EAAE;QACJ,SAAS,EAAE,wBAAwB;QACnC,IAAI,EAAE,8BAA8B;KACrC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAmB;IACtD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC"}