@seer-ai/seer-vue 0.1.0-beta.10 → 0.1.0-beta.12
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 +26 -0
- package/dist/client.d.ts +47 -0
- package/dist/components/SeerChat.vue.d.ts +4 -0
- package/dist/components/SeerOrderCard.vue.d.ts +13 -0
- package/dist/content.d.ts +6 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +420 -230
- package/dist/plugin.d.ts +2 -0
- package/dist/useSeerChat.d.ts +90 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,6 +41,10 @@ import { SeerChat } from '@seer-ai/seer-vue'
|
|
|
41
41
|
60 秒;SenseVoice 转写结果只回填输入框,不会自动发送。标准 browser chat endpoint 会自动
|
|
42
42
|
推导 transcription endpoint,也可显式配置;传 `voiceEnabled: false` 可关闭话筒。
|
|
43
43
|
|
|
44
|
+
输入框旁的回形针按钮用来上传附件(下单模板 xlsx/xls/csv、图片、PDF),上传地址同样按 endpoint 推导成
|
|
45
|
+
`/v1/browser/files`,也可用 `uploadEndpoint` 显式配置;传 `uploadEnabled: false` 隐藏按钮。自定义 UI 用
|
|
46
|
+
`useSeerChat()` 的 `attach(file)` / `removeAttachment(fileId)` / `attachments`,`send(text)` 会带上待发送的附件。
|
|
47
|
+
|
|
44
48
|
## Logged-in customer (`orgOwner`)
|
|
45
49
|
|
|
46
50
|
传入已登录用户的多发货 `orgOwner`,询价时 seer 直接用它当客户编码,不再追问。登录态会变时传函数;
|
|
@@ -56,6 +60,28 @@ app.use(SeerChatPlugin, {
|
|
|
56
60
|
|
|
57
61
|
插件在建会话时发 `X-Seer-Org-Owner`。seer 不校验这个值,只用于补报价客户编码,不参与订单归属。
|
|
58
62
|
|
|
63
|
+
## Order estimate card
|
|
64
|
+
|
|
65
|
+
客户发下单模板、估价成功后,回复附带 `order_card`,`<SeerChat>` 在消息下方画「物流费用智能核算」卡片(渠道、
|
|
66
|
+
官网指导价 / 补贴价、计费重、各项费用、已补贴、预估总金额、「提交订单」按钮),正文里同一份费用的文字版自动去掉。
|
|
67
|
+
自定义 UI:助手消息上有 `message.orderCard`,可用导出的 `<SeerOrderCard :card="card" @submit="send" />`,
|
|
68
|
+
正文用 `withoutCardText(content, card)` 去掉重复的文字版。`toContentLines()` 会把行首「标签:」切成 `label` 段。
|
|
69
|
+
|
|
70
|
+
## Ordering with the customer's login token (`sellerToken`)
|
|
71
|
+
|
|
72
|
+
和 `orgOwner` 同一处取已登录用户的多发货登录 token 传进来,客户在聊天里回「确认下单」后,seer 用它调多发货
|
|
73
|
+
`/seller/order/create` 直接下单并回订单号;不传就转客服下单。插件把它放在每条聊天请求的请求头
|
|
74
|
+
`X-DFH-Seller-Token`(不进会话 token,不发给上传接口)。登录态会变时传函数,每次发消息都现取。
|
|
75
|
+
|
|
76
|
+
```ts
|
|
77
|
+
app.use(SeerChatPlugin, {
|
|
78
|
+
sessionEndpoint: 'https://seer.example.com/v1/browser/session',
|
|
79
|
+
endpoint: 'https://seer.example.com/v1/browser/chat/completions',
|
|
80
|
+
orgOwner: () => currentUser.value?.orgOwner,
|
|
81
|
+
sellerToken: () => currentUser.value?.token,
|
|
82
|
+
})
|
|
83
|
+
```
|
|
84
|
+
|
|
59
85
|
## Use custom UI
|
|
60
86
|
|
|
61
87
|
自定义 UI 时**不要**直接把 `message.content` 当纯文本渲染——回复里的下载/截图链接是裸
|
package/dist/client.d.ts
CHANGED
|
@@ -3,15 +3,50 @@ export interface SeerChatMessage {
|
|
|
3
3
|
role: SeerChatRole;
|
|
4
4
|
content: string;
|
|
5
5
|
name?: string;
|
|
6
|
+
/** 助手消息附带的下单估价卡片;只用于显示,不随历史发回服务端。 */
|
|
7
|
+
orderCard?: SeerOrderCard;
|
|
8
|
+
}
|
|
9
|
+
export interface SeerOrderCardItem {
|
|
10
|
+
label: string;
|
|
11
|
+
value: string;
|
|
12
|
+
/** 有补贴价时官网指导价划线 */
|
|
13
|
+
struck?: boolean;
|
|
14
|
+
detail?: string;
|
|
15
|
+
}
|
|
16
|
+
/** 「物流费用智能核算」卡片:行已经按多发货卖家端「下单详情」规则排好,照着画就行。 */
|
|
17
|
+
export interface SeerOrderCard {
|
|
18
|
+
type: 'order_estimate';
|
|
19
|
+
title: string;
|
|
20
|
+
channel_name: string;
|
|
21
|
+
rows: SeerOrderCardItem[];
|
|
22
|
+
subsidy: SeerOrderCardItem | null;
|
|
23
|
+
coupon: SeerOrderCardItem | null;
|
|
24
|
+
total: SeerOrderCardItem;
|
|
25
|
+
note: string;
|
|
26
|
+
/** 正文里同一份费用的文字版;画了卡片时从正文里去掉它(`withoutCardText`),免得显示两遍 */
|
|
27
|
+
panel_text: string;
|
|
28
|
+
/** 能下单时有:按钮文案和点了要发的消息(「确认下单」);不能下单时为 null,看 blocked_reason。 */
|
|
29
|
+
action: {
|
|
30
|
+
label: string;
|
|
31
|
+
message: string;
|
|
32
|
+
} | null;
|
|
33
|
+
blocked_reason: string;
|
|
6
34
|
}
|
|
7
35
|
export type SeerOrgOwner = string | (() => string | undefined);
|
|
8
36
|
export interface SeerClientOptions {
|
|
9
37
|
endpoint: string;
|
|
10
38
|
sessionEndpoint?: string;
|
|
11
39
|
transcriptionEndpoint?: string;
|
|
40
|
+
/** 附件上传地址;不传时按 endpoint 推成同域的 /v1/browser/files,传空字符串关闭上传。 */
|
|
41
|
+
uploadEndpoint?: string;
|
|
12
42
|
challengeTokenProvider?: () => Promise<string>;
|
|
13
43
|
/** 已登录用户的多发货 orgOwner;报价时自动当作客户编码。登录态会变时传函数。 */
|
|
14
44
|
orgOwner?: SeerOrgOwner;
|
|
45
|
+
/**
|
|
46
|
+
* 已登录用户的多发货登录 token(和 orgOwner 同一处取)。随每条聊天消息放在请求头
|
|
47
|
+
* X-DFH-Seller-Token,客户确认后 AI 用它估价和下单;不传时确认下单转客服。登录态会变时传函数。
|
|
48
|
+
*/
|
|
49
|
+
sellerToken?: SeerOrgOwner;
|
|
15
50
|
model?: string;
|
|
16
51
|
fetcher?: typeof fetch;
|
|
17
52
|
now?: () => number;
|
|
@@ -22,6 +57,15 @@ export interface SeerChatRequest {
|
|
|
22
57
|
stream?: boolean;
|
|
23
58
|
conversationId?: string;
|
|
24
59
|
metadata?: Record<string, unknown>;
|
|
60
|
+
/** 先 upload() 拿到的 fileId,随这条消息一起提交。 */
|
|
61
|
+
attachments?: string[];
|
|
62
|
+
}
|
|
63
|
+
export interface SeerUploadedFile {
|
|
64
|
+
fileId: string;
|
|
65
|
+
filename: string;
|
|
66
|
+
kind: 'spreadsheet' | 'image' | 'document' | string;
|
|
67
|
+
contentType: string;
|
|
68
|
+
size: number;
|
|
25
69
|
}
|
|
26
70
|
export interface SeerChatCallbacks {
|
|
27
71
|
signal?: AbortSignal;
|
|
@@ -39,11 +83,14 @@ export interface SeerChatResult {
|
|
|
39
83
|
citations: string[];
|
|
40
84
|
handoffRequested: boolean;
|
|
41
85
|
finishReason?: string;
|
|
86
|
+
orderCard?: SeerOrderCard;
|
|
42
87
|
}
|
|
43
88
|
export interface SeerClient {
|
|
44
89
|
transcriptionEnabled: boolean;
|
|
90
|
+
uploadEnabled: boolean;
|
|
45
91
|
chat(request: SeerChatRequest, callbacks?: SeerChatCallbacks): Promise<SeerChatResult>;
|
|
46
92
|
transcribe(audio: Blob, filename: string, callbacks?: SeerTranscriptionCallbacks): Promise<SeerTranscriptionResult>;
|
|
93
|
+
upload(file: Blob, filename: string, callbacks?: SeerTranscriptionCallbacks): Promise<SeerUploadedFile>;
|
|
47
94
|
}
|
|
48
95
|
export declare function createSeerClient(options: SeerClientOptions): SeerClient;
|
|
49
96
|
export declare function resolveOrgOwner(orgOwner: SeerOrgOwner | undefined): string | undefined;
|
|
@@ -3,7 +3,10 @@ type __VLS_Props = {
|
|
|
3
3
|
endpoint?: string;
|
|
4
4
|
sessionEndpoint?: string;
|
|
5
5
|
transcriptionEndpoint?: string;
|
|
6
|
+
uploadEndpoint?: string;
|
|
7
|
+
uploadEnabled?: boolean;
|
|
6
8
|
orgOwner?: string;
|
|
9
|
+
sellerToken?: string;
|
|
7
10
|
model?: string;
|
|
8
11
|
stream?: boolean;
|
|
9
12
|
fetcher?: SeerClientOptions["fetcher"];
|
|
@@ -17,6 +20,7 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {
|
|
|
17
20
|
title: string;
|
|
18
21
|
placeholder: string;
|
|
19
22
|
voiceEnabled: boolean;
|
|
23
|
+
uploadEnabled: boolean;
|
|
20
24
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
21
25
|
declare const _default: typeof __VLS_export;
|
|
22
26
|
export default _default;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SeerOrderCard } from "../client";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
card: SeerOrderCard;
|
|
4
|
+
/** 不是最新一张卡、或正在回复时,按钮不可点 */
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
};
|
|
7
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
+
submit: (message: string) => any;
|
|
9
|
+
}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
10
|
+
onSubmit?: ((message: string) => any) | undefined;
|
|
11
|
+
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
12
|
+
declare const _default: typeof __VLS_export;
|
|
13
|
+
export default _default;
|
package/dist/content.d.ts
CHANGED
|
@@ -15,6 +15,9 @@ export type ContentSegment = {
|
|
|
15
15
|
} | {
|
|
16
16
|
kind: 'strong';
|
|
17
17
|
value: string;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'label';
|
|
20
|
+
value: string;
|
|
18
21
|
};
|
|
19
22
|
export interface ContentOptions {
|
|
20
23
|
complete?: boolean;
|
|
@@ -22,3 +25,6 @@ export interface ContentOptions {
|
|
|
22
25
|
export declare function linkAnchorLabel(prefix: string): string | null;
|
|
23
26
|
export declare function toContentSegments(content: string, options?: ContentOptions): ContentSegment[];
|
|
24
27
|
export declare function toContentLines(content: string, options?: ContentOptions): ContentSegment[][];
|
|
28
|
+
export declare function withoutCardText(content: string, card?: {
|
|
29
|
+
panel_text?: string;
|
|
30
|
+
} | null): string;
|
package/dist/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.seer-chat[data-v-
|
|
1
|
+
.seer-order-card[data-v-17d9e82e]{background:linear-gradient(#eef1fb,#fff 56px);border:1px solid #7f8faa38;border-radius:16px;margin-top:8px;padding:14px 14px 12px}.seer-order-card__title[data-v-17d9e82e]{color:#1d2129;margin:0 0 10px;font-size:18px;font-weight:800}.seer-order-card__panel[data-v-17d9e82e]{background:#fff;border-radius:12px;gap:10px;padding:12px;display:grid}.seer-order-card__channel[data-v-17d9e82e]{color:#1d2129;margin:0;font-size:14px;font-weight:600}.seer-order-card__rows[data-v-17d9e82e]{border:1px solid #e5e6eb;border-radius:10px;margin:0;overflow:hidden}.seer-order-card__row[data-v-17d9e82e]{grid-template-columns:1fr auto;gap:12px;padding:9px 12px;display:grid}.seer-order-card__row+.seer-order-card__row[data-v-17d9e82e]{border-top:1px solid #e5e6eb}.seer-order-card__label[data-v-17d9e82e]{color:#4e5969;font-weight:700}.seer-order-card__value[data-v-17d9e82e]{color:#1d2129;text-align:right;margin:0;font-weight:400}.seer-order-card__value--struck[data-v-17d9e82e]{text-decoration:line-through}.seer-order-card__subsidy[data-v-17d9e82e]{color:#c4161c;border:1px solid #c4161c;border-radius:10px;gap:2px;padding:8px 12px;font-size:13px;display:grid}.seer-order-card__total[data-v-17d9e82e]{justify-content:space-between;align-items:baseline;display:flex}.seer-order-card__total-value[data-v-17d9e82e]{color:#1d2129;font-size:20px;font-weight:800}.seer-order-card__submit[data-v-17d9e82e]{color:#1d2129;cursor:pointer;background:#fc0;border:0;border-radius:10px;padding:11px 0;font-size:16px;font-weight:700}.seer-order-card__submit[data-v-17d9e82e]:disabled{cursor:not-allowed;opacity:.5}.seer-order-card__blocked[data-v-17d9e82e]{color:#c4161c;margin:0;font-size:13px}.seer-chat[data-v-d821ceaf]{color:#18212f;background:radial-gradient(circle at 18% 0,#476aff24,#0000 32%),linear-gradient(#fff 0%,#f7f9fd 100%);border:1px solid #7f8faa47;border-radius:28px;gap:18px;max-width:720px;min-height:640px;padding:0;display:grid;overflow:hidden;box-shadow:0 24px 70px #151f3429}.seer-chat__header[data-v-d821ceaf]{color:#fff;background:linear-gradient(135deg,#141f34f5,#243f76f0),#172033;justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 22px 18px;display:flex}.seer-chat__header h2[data-v-d821ceaf]{letter-spacing:-.03em;margin:0;font-size:22px}.seer-chat__header p[data-v-d821ceaf],.seer-chat__empty[data-v-d821ceaf],.seer-chat__status[data-v-d821ceaf]{color:#5f6f89;margin:4px 0 0;font-size:14px}.seer-chat__header p[data-v-d821ceaf]{color:#ffffffb8;max-width:34ch}.seer-chat__messages[data-v-d821ceaf]{align-content:start;gap:12px;min-height:330px;max-height:470px;padding:18px 18px 4px;display:grid;overflow-y:auto}.seer-chat__empty[data-v-d821ceaf]{color:#66748a;text-align:center;background:#ffffff9e;border:1px dashed #7f8faa61;border-radius:22px;place-items:center;min-height:260px;padding:0 28px;display:grid}.seer-chat__message[data-v-d821ceaf]{background:#ffffffe0;border:1px solid #7f8faa29;border-radius:18px 18px 18px 6px;gap:6px;max-width:min(86%,520px);padding:13px 15px;display:grid;box-shadow:0 12px 28px #151f3414}.seer-chat__message--user[data-v-d821ceaf]{color:#fff;background:linear-gradient(135deg,#285cff,#1d45c9);border-color:#0000;border-radius:18px 18px 6px;justify-self:end;box-shadow:0 14px 30px #1f5eff3d}.seer-chat__role[data-v-d821ceaf]{opacity:.75;font-size:12px;font-weight:700}.seer-chat__body[data-v-d821ceaf]{flex-direction:column;display:flex}.seer-chat__line[data-v-d821ceaf]{white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.seer-chat__line[data-v-d821ceaf]:not(:last-child){margin-bottom:5px}.seer-chat__line[data-v-d821ceaf]:empty{height:7px}.seer-chat__strong[data-v-d821ceaf]{font-weight:700}.seer-chat__message--assistant .seer-chat__line[data-v-d821ceaf]:has(.seer-chat__label-text){color:#1d2129}.seer-chat__label-text[data-v-d821ceaf]{color:#4e5969;font-weight:700}.seer-chat__message--user .seer-chat__label-text[data-v-d821ceaf]{color:inherit}.seer-chat__price[data-v-d821ceaf]{color:#e0331d;font-weight:600}.seer-chat__message--user .seer-chat__price[data-v-d821ceaf]{color:#ffe2dc}.seer-chat__link[data-v-d821ceaf]{color:#1f5eff;text-underline-offset:2px;overflow-wrap:anywhere;font-weight:600;text-decoration:underline}.seer-chat__link[data-v-d821ceaf]:hover{color:#173fb3}.seer-chat__message--user .seer-chat__link[data-v-d821ceaf]{color:#fff}.seer-chat__image-button[data-v-d821ceaf]{cursor:zoom-in;background:0 0;border:0;padding:0;display:block}.seer-chat__image-button[data-v-d821ceaf]:not(:disabled):hover{transform:none}.seer-chat__image[data-v-d821ceaf]{border:1px solid #7f8faa38;border-radius:12px;max-width:100%;margin:6px 0;transition:filter .16s;display:block}.seer-chat__image-button:hover .seer-chat__image[data-v-d821ceaf]{filter:brightness(.96)}.seer-chat__lightbox[data-v-d821ceaf]{z-index:1000;cursor:zoom-out;background:#0a0f1ad1;place-items:center;padding:32px;animation:.14s seer-chat__fade-in-d821ceaf;display:grid;position:fixed;inset:0}.seer-chat__lightbox-image[data-v-d821ceaf]{object-fit:contain;border-radius:12px;max-width:min(92vw,1200px);max-height:90vh;box-shadow:0 30px 80px #00000080}.seer-chat__lightbox-close[data-v-d821ceaf]{color:#fff;background:#ffffff24;border-radius:50%;place-items:center;width:40px;height:40px;font-size:26px;line-height:1;display:grid;position:fixed;top:18px;right:22px}.seer-chat__lightbox-close[data-v-d821ceaf]:not(:disabled):hover{background:#ffffff3d}@keyframes seer-chat__fade-in-d821ceaf{0%{opacity:0}to{opacity:1}}.seer-chat__error[data-v-d821ceaf],.seer-chat__handoff[data-v-d821ceaf]{border-radius:14px;margin:0 18px;padding:10px 12px}.seer-chat__error[data-v-d821ceaf]{color:#8a1f11;background:#fff0ed}.seer-chat__handoff[data-v-d821ceaf]{color:#704600;background:#fff7db}.seer-chat__form[data-v-d821ceaf]{background:#fff;border:1px solid #7f8faa42;border-radius:22px;gap:11px;margin:0 18px 18px;padding:14px;display:grid;box-shadow:0 18px 38px #151f3417}.seer-chat__label[data-v-d821ceaf]{font-size:13px;font-weight:700}.seer-chat textarea[data-v-d821ceaf]{box-sizing:border-box;width:100%;min-height:92px;color:inherit;resize:vertical;background:#f8fafd;border:1px solid #0000;border-radius:16px;outline:none;padding:14px;line-height:1.55;transition:background .16s,border-color .16s,box-shadow .16s}.seer-chat button[data-v-d821ceaf]{color:inherit;cursor:pointer;border:0;font-weight:700;transition:transform .16s,box-shadow .16s,opacity .16s}.seer-chat button[data-v-d821ceaf]:not(:disabled):hover{transform:translateY(-1px)}.seer-chat button[data-v-d821ceaf]:disabled{cursor:not-allowed;opacity:.5}.seer-chat button[data-v-d821ceaf]:focus-visible,.seer-chat textarea[data-v-d821ceaf]:focus-visible{border-color:#1f5eff6b;box-shadow:0 0 0 4px #1f5eff21}.seer-chat__clear-button[data-v-d821ceaf]{color:#ffffffc7;background:0 0;border-radius:12px;flex:none;padding:8px 11px;font-size:12px;border:1px solid #ffffff2e!important}.seer-chat__clear-button[data-v-d821ceaf]:not(:disabled):hover{color:#fff;box-shadow:none;background:#ffffff1a}.seer-chat__stop-button[data-v-d821ceaf]{color:#6c3b12;background:#fff1df;border-radius:12px;padding:8px 11px;font-size:12px}.seer-chat__mic-button[data-v-d821ceaf],.seer-chat__attach-button[data-v-d821ceaf]{color:#285cff;background:#edf2ff;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;padding:0;display:grid}.seer-chat__mic-button[data-v-d821ceaf]:not(:disabled):hover,.seer-chat__attach-button[data-v-d821ceaf]:not(:disabled):hover{background:#dfe8ff}.seer-chat__file-input[data-v-d821ceaf]{display:none}.seer-chat__attachments[data-v-d821ceaf]{flex-wrap:wrap;gap:6px;margin:0 0 8px;padding:0;list-style:none;display:flex}.seer-chat__attachment[data-v-d821ceaf]{color:#1f2a44;background:#edf2ff;border-radius:999px;align-items:center;gap:4px;max-width:100%;padding:4px 6px 4px 10px;font-size:13px;display:inline-flex}.seer-chat__attachment-name[data-v-d821ceaf]{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.seer-chat__attachment-remove[data-v-d821ceaf]{color:#4b5878;background:0 0;border-radius:50%;width:20px;height:20px;padding:0;line-height:1}.seer-chat__attachment-remove[data-v-d821ceaf]:hover{background:#dfe8ff}.seer-chat__mic-button--recording[data-v-d821ceaf]{color:#fff;background:#d9342b;animation:1.4s ease-in-out infinite seer-chat__recording-pulse-d821ceaf;box-shadow:0 0 0 5px #d9342b24}.seer-chat__mic-button--recording[data-v-d821ceaf]:not(:disabled):hover{background:#bd271f}.seer-chat__stop-icon[data-v-d821ceaf]{background:currentColor;border-radius:3px;width:12px;height:12px}@keyframes seer-chat__recording-pulse-d821ceaf{50%{box-shadow:0 0 0 9px #d9342b14}}.seer-chat__send-button[data-v-d821ceaf]{color:#fff;background:linear-gradient(135deg,#1f5eff,#173fb3);border-radius:14px;justify-content:center;align-items:center;gap:8px;min-width:86px;padding:10px 14px;display:inline-flex;box-shadow:0 12px 24px #1f5eff38}.seer-chat__send-button[data-v-d821ceaf]:not(:disabled):hover{box-shadow:0 14px 28px #1f5eff47}.seer-chat__hint[data-v-d821ceaf]{color:#7a879a;margin-right:auto;font-size:12px}.seer-chat__composer-footer[data-v-d821ceaf]{justify-content:flex-end;align-items:center;gap:8px;display:flex}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export { createSeerClient } from './client';
|
|
2
|
-
export { linkAnchorLabel, toContentLines, toContentSegments, type ContentOptions, type ContentSegment, } from './content';
|
|
2
|
+
export { linkAnchorLabel, toContentLines, toContentSegments, withoutCardText, type ContentOptions, type ContentSegment, } from './content';
|
|
3
3
|
export { SeerChatPlugin } from './plugin';
|
|
4
4
|
export { useSeerChat } from './useSeerChat';
|
|
5
5
|
export { default as SeerChat } from './components/SeerChat.vue';
|
|
6
|
-
export
|
|
6
|
+
export { default as SeerOrderCard } from './components/SeerOrderCard.vue';
|
|
7
|
+
export type { SeerChatCallbacks, SeerChatMessage, SeerChatRequest, SeerChatResult, SeerChatRole, SeerClient, SeerClientOptions, SeerOrderCard as SeerOrderCardData, SeerOrderCardItem, SeerTranscriptionCallbacks, SeerTranscriptionResult, SeerUploadedFile, } from './client';
|
|
7
8
|
export type { SeerChatPluginOptions } from './plugin';
|
|
8
9
|
export type { UseSeerChatOptions } from './useSeerChat';
|