@pactor-app/chat 1.1.0 → 1.3.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.
- package/README.md +3 -2
- package/dist/index.cjs +152 -96
- package/dist/index.d.cts +21 -3
- package/dist/index.d.ts +21 -3
- package/dist/index.js +135 -80
- package/package.json +6 -6
- package/styles.css +65 -39
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pactor-app/chat",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Pactor chat: AI message rendering protocol (message model, streaming reducer, safe registry, capability action) and chat runtime view (ChatView / MessageBubble / PartRenderer / Composer / chat layout)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"pactor",
|
|
@@ -49,11 +49,11 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@pactor-app/
|
|
53
|
-
"@pactor-app/
|
|
54
|
-
"@pactor-app/
|
|
55
|
-
"@pactor-app/
|
|
56
|
-
"@pactor-app/runtime": "1.
|
|
52
|
+
"@pactor-app/core": "1.3.0",
|
|
53
|
+
"@pactor-app/ui": "1.3.0",
|
|
54
|
+
"@pactor-app/permission": "1.3.0",
|
|
55
|
+
"@pactor-app/markdown": "1.3.0",
|
|
56
|
+
"@pactor-app/runtime": "1.3.0"
|
|
57
57
|
},
|
|
58
58
|
"peerDependencies": {
|
|
59
59
|
"react": ">=18"
|
package/styles.css
CHANGED
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* 技术选型参考 DeepTutor web:语义 CSS 变量 + 语义 class,无 antd。
|
|
5
5
|
*
|
|
6
|
-
* 换肤契约(与 pactor-ui
|
|
7
|
-
* 1.
|
|
6
|
+
* 换肤契约(与 @pactor-app/ui 一致):
|
|
7
|
+
* 1. `--pactor-chat-*` 颜色令牌的默认值经 `var(--语义令牌, <chat 默认>)`
|
|
8
|
+
* 桥接 pactor-ui 语义令牌(--background/--primary/…)——皮肤 CSS 覆盖
|
|
9
|
+
* 语义令牌时 chat 结构件自动跟随;也可直接覆盖 `--pactor-chat-*` 精调;
|
|
8
10
|
* 2. 内置暗色:`<html data-pactor-theme="dark">`(或挂在任意祖先容器上);
|
|
11
|
+
* 不设置时跟随系统 prefers-color-scheme(三态:light / dark / 跟随系统)。
|
|
12
|
+
* 颜色令牌无需暗色覆盖块(语义令牌自动翻转),仅投影/遮罩有暗色覆盖;
|
|
9
13
|
* 3. 直接覆盖 `.pactor-chat-*` class。
|
|
10
14
|
*
|
|
11
15
|
* 使用:import 'pactor-chat/styles.css';
|
|
@@ -21,21 +25,35 @@
|
|
|
21
25
|
.pactor-chat-workspace,
|
|
22
26
|
.pactor-chat-inspector,
|
|
23
27
|
.pactor-chat-notice {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
--pactor-chat-
|
|
27
|
-
--pactor-chat-
|
|
28
|
-
--pactor-chat-
|
|
29
|
-
--pactor-chat-
|
|
30
|
-
--pactor-chat-
|
|
31
|
-
--pactor-chat-
|
|
32
|
-
--pactor-chat-
|
|
33
|
-
--pactor-chat-
|
|
34
|
-
--pactor-chat-
|
|
35
|
-
--pactor-chat-
|
|
36
|
-
--pactor-chat-
|
|
37
|
-
|
|
38
|
-
|
|
28
|
+
/* 颜色令牌默认值桥接 pactor-ui 语义令牌(皮肤覆盖语义令牌时自动跟随),
|
|
29
|
+
逗号后为 pactor-ui 缺席时的 chat 品牌默认 */
|
|
30
|
+
--pactor-chat-bg: var(--background, #f7f6f4);
|
|
31
|
+
--pactor-chat-sidebar-bg: var(--sidebar, #efedea);
|
|
32
|
+
--pactor-chat-fg: var(--foreground, #1a1d26);
|
|
33
|
+
--pactor-chat-muted: var(--muted, #f4f4f6);
|
|
34
|
+
--pactor-chat-muted-fg: var(--muted-foreground, #6b7180);
|
|
35
|
+
--pactor-chat-card: var(--card, #ffffff);
|
|
36
|
+
--pactor-chat-border: var(--border, #e6e7eb);
|
|
37
|
+
--pactor-chat-primary: var(--primary, #3c47dd);
|
|
38
|
+
--pactor-chat-primary-fg: var(--primary-foreground, #ffffff);
|
|
39
|
+
--pactor-chat-danger: var(--destructive, #d4380d);
|
|
40
|
+
--pactor-chat-danger-bg: color-mix(
|
|
41
|
+
in oklab,
|
|
42
|
+
var(--destructive, #d4380d) 8%,
|
|
43
|
+
var(--background, #fff)
|
|
44
|
+
);
|
|
45
|
+
--pactor-chat-success: var(--success, #389e0d);
|
|
46
|
+
--pactor-chat-user-bubble-bg: color-mix(
|
|
47
|
+
in oklab,
|
|
48
|
+
var(--primary, #3c47dd) 7%,
|
|
49
|
+
var(--background, #fff)
|
|
50
|
+
);
|
|
51
|
+
--pactor-chat-user-bubble-border: color-mix(
|
|
52
|
+
in oklab,
|
|
53
|
+
var(--primary, #3c47dd) 35%,
|
|
54
|
+
transparent
|
|
55
|
+
);
|
|
56
|
+
--pactor-chat-code-bg: var(--muted, #f6f7f9);
|
|
39
57
|
/* 旧通用圆角令牌(保留兼容);新组件改用下方圆角阶梯 */
|
|
40
58
|
--pactor-chat-radius: 12px;
|
|
41
59
|
/* 圆角阶梯:sm 控件 / md 卡片 / lg 气泡 / xl composer */
|
|
@@ -68,13 +86,13 @@
|
|
|
68
86
|
height: 100%;
|
|
69
87
|
gap: 12px;
|
|
70
88
|
color: var(--pactor-chat-fg);
|
|
71
|
-
background: var(--pactor-chat-bg);
|
|
72
89
|
font-size: 14px;
|
|
73
90
|
line-height: 1.6;
|
|
74
91
|
}
|
|
75
92
|
|
|
76
93
|
/* 暗色皮肤:data-pactor-theme="dark"(html 或任意祖先容器)。
|
|
77
|
-
|
|
94
|
+
颜色令牌经 var() 桥接 pactor-ui 语义令牌,暗色自动翻转,无需覆盖;
|
|
95
|
+
这里只保留投影与遮罩的暗色值(组件规则不区分主题)。 */
|
|
78
96
|
[data-pactor-theme='dark'] .pactor-chat-view,
|
|
79
97
|
[data-pactor-theme='dark'] .pactor-chat-layout,
|
|
80
98
|
[data-pactor-theme='dark'] .pactor-chat-shell,
|
|
@@ -85,28 +103,27 @@
|
|
|
85
103
|
.pactor-chat-shell[data-pactor-theme='dark'],
|
|
86
104
|
.pactor-chat-workspace[data-pactor-theme='dark'],
|
|
87
105
|
.pactor-chat-notice[data-pactor-theme='dark'] {
|
|
88
|
-
--pactor-chat-bg: #14161c;
|
|
89
|
-
--pactor-chat-sidebar-bg: #1b1e26;
|
|
90
|
-
--pactor-chat-fg: #e4e6ee;
|
|
91
|
-
--pactor-chat-muted: #1e2129;
|
|
92
|
-
--pactor-chat-muted-fg: #8b90a0;
|
|
93
|
-
--pactor-chat-card: #1a1d24;
|
|
94
|
-
--pactor-chat-border: #2c3038;
|
|
95
|
-
--pactor-chat-primary: #5b66f0;
|
|
96
|
-
--pactor-chat-primary-fg: #ffffff;
|
|
97
|
-
--pactor-chat-danger: #e8690c;
|
|
98
|
-
--pactor-chat-danger-bg: #2b1d16;
|
|
99
|
-
--pactor-chat-success: #49aa19;
|
|
100
|
-
--pactor-chat-user-bubble-bg: #262a45;
|
|
101
|
-
--pactor-chat-user-bubble-border: rgb(91 102 240 / 45%);
|
|
102
|
-
--pactor-chat-code-bg: #1e2129;
|
|
103
106
|
--pactor-chat-shadow-sm: 0 1px 2px rgb(0 0 0 / 35%);
|
|
104
107
|
--pactor-chat-shadow-composer:
|
|
105
108
|
0 1px 2px rgb(0 0 0 / 4%),
|
|
106
109
|
0 12px 32px -10px rgb(0 0 0 / 55%);
|
|
107
110
|
--pactor-chat-shell-scrim: rgb(0 0 0 / 55%);
|
|
108
|
-
|
|
109
|
-
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* 系统偏好暗色兜底:未显式设置 data-pactor-theme 时跟随系统
|
|
114
|
+
(与上方 [data-pactor-theme='dark'] 块一致——仅投影与遮罩) */
|
|
115
|
+
@media (prefers-color-scheme: dark) {
|
|
116
|
+
:root:not([data-pactor-theme='light']):not([data-pactor-theme='dark']) .pactor-chat-view,
|
|
117
|
+
:root:not([data-pactor-theme='light']):not([data-pactor-theme='dark']) .pactor-chat-layout,
|
|
118
|
+
:root:not([data-pactor-theme='light']):not([data-pactor-theme='dark']) .pactor-chat-shell,
|
|
119
|
+
:root:not([data-pactor-theme='light']):not([data-pactor-theme='dark']) .pactor-chat-workspace,
|
|
120
|
+
:root:not([data-pactor-theme='light']):not([data-pactor-theme='dark']) .pactor-chat-notice {
|
|
121
|
+
--pactor-chat-shadow-sm: 0 1px 2px rgb(0 0 0 / 35%);
|
|
122
|
+
--pactor-chat-shadow-composer:
|
|
123
|
+
0 1px 2px rgb(0 0 0 / 4%),
|
|
124
|
+
0 12px 32px -10px rgb(0 0 0 / 55%);
|
|
125
|
+
--pactor-chat-shell-scrim: rgb(0 0 0 / 55%);
|
|
126
|
+
}
|
|
110
127
|
}
|
|
111
128
|
|
|
112
129
|
/* ------------------------------------------------------------
|
|
@@ -183,7 +200,6 @@
|
|
|
183
200
|
width: 100%;
|
|
184
201
|
max-width: var(--pactor-chat-content-width);
|
|
185
202
|
margin-inline: auto;
|
|
186
|
-
background: var(--pactor-chat-bg);
|
|
187
203
|
color: var(--pactor-chat-fg);
|
|
188
204
|
font-size: 14px;
|
|
189
205
|
line-height: 1.6;
|
|
@@ -314,6 +330,7 @@
|
|
|
314
330
|
width: 100%;
|
|
315
331
|
min-height: 0;
|
|
316
332
|
overflow: hidden;
|
|
333
|
+
background: var(--pactor-chat-bg);
|
|
317
334
|
}
|
|
318
335
|
|
|
319
336
|
/* 面板打开时 host 内的直子:AppShell 填满剩余空间;workspace 只缩不伸,
|
|
@@ -620,7 +637,8 @@
|
|
|
620
637
|
|
|
621
638
|
|
|
622
639
|
/* 消息滚动区:overflow-anchor none 配合 useChatAutoScroll(防浏览器
|
|
623
|
-
滚动锚定与贴底跟随互相拉扯);上下 mask 渐隐 + 6px
|
|
640
|
+
滚动锚定与贴底跟随互相拉扯);上下 mask 渐隐 + 6px 细滚动条;
|
|
641
|
+
顶部留 24px 内边距(与 mask 渐隐带同宽,首条消息不贴顶) */
|
|
624
642
|
.pactor-chat-messages {
|
|
625
643
|
position: relative;
|
|
626
644
|
flex: 1;
|
|
@@ -630,7 +648,7 @@
|
|
|
630
648
|
display: flex;
|
|
631
649
|
flex-direction: column;
|
|
632
650
|
gap: 16px;
|
|
633
|
-
padding:
|
|
651
|
+
padding: 24px 2px 4px;
|
|
634
652
|
scrollbar-width: thin;
|
|
635
653
|
scrollbar-color: var(--pactor-chat-border) transparent;
|
|
636
654
|
-webkit-mask-image: linear-gradient(
|
|
@@ -1085,6 +1103,14 @@ button.pactor-chat-trace__header:hover,
|
|
|
1085
1103
|
color: var(--pactor-chat-muted-fg);
|
|
1086
1104
|
}
|
|
1087
1105
|
|
|
1106
|
+
/* 流式期间的纯文本正文(结束后回切 markdown 渲染) */
|
|
1107
|
+
.pactor-chat-thinking__text {
|
|
1108
|
+
white-space: pre-wrap;
|
|
1109
|
+
word-break: break-word;
|
|
1110
|
+
font-size: 13px;
|
|
1111
|
+
line-height: 1.6;
|
|
1112
|
+
}
|
|
1113
|
+
|
|
1088
1114
|
.pactor-chat-thinking__body .pactor-markdown > :first-child {
|
|
1089
1115
|
margin-top: 0;
|
|
1090
1116
|
}
|