@elizaos/client 1.6.3-alpha.9 → 1.6.3
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/dist/assets/{_basePickBy-D1VwWj4y.js → _basePickBy-CF7u0JoM.js} +2 -2
- package/dist/assets/{_basePickBy-D1VwWj4y.js.map → _basePickBy-CF7u0JoM.js.map} +1 -1
- package/dist/assets/{_baseUniq-BqneJ7vC.js → _baseUniq-C01nKZPU.js} +2 -2
- package/dist/assets/{_baseUniq-BqneJ7vC.js.map → _baseUniq-C01nKZPU.js.map} +1 -1
- package/dist/assets/{arc-B41HBJYw.js → arc-CvfPh49h.js} +2 -2
- package/dist/assets/{arc-B41HBJYw.js.map → arc-CvfPh49h.js.map} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-DTblZJPk.js → architectureDiagram-VXUJARFQ-Cx-DJdd9.js} +2 -2
- package/dist/assets/{architectureDiagram-VXUJARFQ-DTblZJPk.js.map → architectureDiagram-VXUJARFQ-Cx-DJdd9.js.map} +1 -1
- package/dist/assets/{blockDiagram-VD42YOAC-BMM1ENpW.js → blockDiagram-VD42YOAC-CjZi8L8b.js} +2 -2
- package/dist/assets/{blockDiagram-VD42YOAC-BMM1ENpW.js.map → blockDiagram-VD42YOAC-CjZi8L8b.js.map} +1 -1
- package/dist/assets/{c4Diagram-YG6GDRKO-0_tm3K4y.js → c4Diagram-YG6GDRKO-C7VSQCDP.js} +2 -2
- package/dist/assets/{c4Diagram-YG6GDRKO-0_tm3K4y.js.map → c4Diagram-YG6GDRKO-C7VSQCDP.js.map} +1 -1
- package/dist/assets/{channel-CzviH7wi.js → channel-jS3fITDG.js} +2 -2
- package/dist/assets/{channel-CzviH7wi.js.map → channel-jS3fITDG.js.map} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-BdiEiQKw.js → chunk-4BX2VUAB-BzqE3lym.js} +2 -2
- package/dist/assets/{chunk-4BX2VUAB-BdiEiQKw.js.map → chunk-4BX2VUAB-BzqE3lym.js.map} +1 -1
- package/dist/assets/{chunk-55IACEB6-o-GxTW9D.js → chunk-55IACEB6-DxGUJrft.js} +2 -2
- package/dist/assets/{chunk-55IACEB6-o-GxTW9D.js.map → chunk-55IACEB6-DxGUJrft.js.map} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-qIW-HouX.js → chunk-B4BG7PRW-8qRdtArO.js} +2 -2
- package/dist/assets/{chunk-B4BG7PRW-qIW-HouX.js.map → chunk-B4BG7PRW-8qRdtArO.js.map} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-CUalBYtH.js → chunk-DI55MBZ5-Ux1QOzUy.js} +2 -2
- package/dist/assets/{chunk-DI55MBZ5-CUalBYtH.js.map → chunk-DI55MBZ5-Ux1QOzUy.js.map} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-DvTLIOqx.js → chunk-FMBD7UC4-CuR8eQbP.js} +2 -2
- package/dist/assets/{chunk-FMBD7UC4-DvTLIOqx.js.map → chunk-FMBD7UC4-CuR8eQbP.js.map} +1 -1
- package/dist/assets/{chunk-QN33PNHL-IzRCZEG_.js → chunk-QN33PNHL-B8CCHcFQ.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-IzRCZEG_.js.map → chunk-QN33PNHL-B8CCHcFQ.js.map} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-Ce2AFs__.js → chunk-QZHKN3VN-59ReDUUS.js} +2 -2
- package/dist/assets/{chunk-QZHKN3VN-Ce2AFs__.js.map → chunk-QZHKN3VN-59ReDUUS.js.map} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-BJW4UVSc.js → chunk-TZMSLE5B-yB8S-MoI.js} +2 -2
- package/dist/assets/{chunk-TZMSLE5B-BJW4UVSc.js.map → chunk-TZMSLE5B-yB8S-MoI.js.map} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-CX-ma-72.js +2 -0
- package/dist/assets/{classDiagram-2ON5EDUG-B0ASNnbX.js.map → classDiagram-2ON5EDUG-CX-ma-72.js.map} +1 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-CX-ma-72.js +2 -0
- package/dist/assets/{classDiagram-v2-WZHVMYZB-B0ASNnbX.js.map → classDiagram-v2-WZHVMYZB-CX-ma-72.js.map} +1 -1
- package/dist/assets/{clone-DuI60JlF.js → clone-B1cS_P1m.js} +2 -2
- package/dist/assets/{clone-DuI60JlF.js.map → clone-B1cS_P1m.js.map} +1 -1
- package/dist/assets/{cose-bilkent-S5V4N54A-BFURzd3k.js → cose-bilkent-S5V4N54A-WaA6My8T.js} +2 -2
- package/dist/assets/{cose-bilkent-S5V4N54A-BFURzd3k.js.map → cose-bilkent-S5V4N54A-WaA6My8T.js.map} +1 -1
- package/dist/assets/{dagre-6UL2VRFP-2NloE4Yi.js → dagre-6UL2VRFP-WTXafpU6.js} +2 -2
- package/dist/assets/{dagre-6UL2VRFP-2NloE4Yi.js.map → dagre-6UL2VRFP-WTXafpU6.js.map} +1 -1
- package/dist/assets/{diagram-PSM6KHXK-7x7Qnd4X.js → diagram-PSM6KHXK-CoH6fjzQ.js} +2 -2
- package/dist/assets/{diagram-PSM6KHXK-7x7Qnd4X.js.map → diagram-PSM6KHXK-CoH6fjzQ.js.map} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-B0NXXuOV.js → diagram-QEK2KX5R-Oljv-_39.js} +2 -2
- package/dist/assets/{diagram-QEK2KX5R-B0NXXuOV.js.map → diagram-QEK2KX5R-Oljv-_39.js.map} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-a74j2Pdd.js → diagram-S2PKOQOG-Gg4hR71b.js} +2 -2
- package/dist/assets/{diagram-S2PKOQOG-a74j2Pdd.js.map → diagram-S2PKOQOG-Gg4hR71b.js.map} +1 -1
- package/dist/assets/{erDiagram-Q2GNP2WA-k-KyHPId.js → erDiagram-Q2GNP2WA-DB7tjULu.js} +2 -2
- package/dist/assets/{erDiagram-Q2GNP2WA-k-KyHPId.js.map → erDiagram-Q2GNP2WA-DB7tjULu.js.map} +1 -1
- package/dist/assets/{flowDiagram-NV44I4VS-Dl-K34yG.js → flowDiagram-NV44I4VS-DzT5xRq3.js} +2 -2
- package/dist/assets/{flowDiagram-NV44I4VS-Dl-K34yG.js.map → flowDiagram-NV44I4VS-DzT5xRq3.js.map} +1 -1
- package/dist/assets/{ganttDiagram-LVOFAZNH-B6eaVPpp.js → ganttDiagram-LVOFAZNH-D2NBbgM6.js} +2 -2
- package/dist/assets/{ganttDiagram-LVOFAZNH-B6eaVPpp.js.map → ganttDiagram-LVOFAZNH-D2NBbgM6.js.map} +1 -1
- package/dist/assets/{gitGraphDiagram-NY62KEGX-BdOMe-oh.js → gitGraphDiagram-NY62KEGX-BzXJHLw9.js} +2 -2
- package/dist/assets/{gitGraphDiagram-NY62KEGX-BdOMe-oh.js.map → gitGraphDiagram-NY62KEGX-BzXJHLw9.js.map} +1 -1
- package/dist/assets/{graph-BCeOLFp6.js → graph-DNJkdAax.js} +2 -2
- package/dist/assets/{graph-BCeOLFp6.js.map → graph-DNJkdAax.js.map} +1 -1
- package/dist/assets/{infoDiagram-F6ZHWCRC-DLB1jYji.js → infoDiagram-F6ZHWCRC-Bt1j9OBZ.js} +2 -2
- package/dist/assets/{infoDiagram-F6ZHWCRC-DLB1jYji.js.map → infoDiagram-F6ZHWCRC-Bt1j9OBZ.js.map} +1 -1
- package/dist/assets/{journeyDiagram-XKPGCS4Q-CEkRszjc.js → journeyDiagram-XKPGCS4Q-CpBwKMO2.js} +2 -2
- package/dist/assets/{journeyDiagram-XKPGCS4Q-CEkRszjc.js.map → journeyDiagram-XKPGCS4Q-CpBwKMO2.js.map} +1 -1
- package/dist/assets/{kanban-definition-3W4ZIXB7-DvGzdmFz.js → kanban-definition-3W4ZIXB7-BM-_9-8C.js} +2 -2
- package/dist/assets/{kanban-definition-3W4ZIXB7-DvGzdmFz.js.map → kanban-definition-3W4ZIXB7-BM-_9-8C.js.map} +1 -1
- package/dist/assets/{layout-DqFGgFXM.js → layout-C9Bg2dBa.js} +2 -2
- package/dist/assets/{layout-DqFGgFXM.js.map → layout-C9Bg2dBa.js.map} +1 -1
- package/dist/assets/{linear-oKTGuyqU.js → linear-BTJsW5AR.js} +2 -2
- package/dist/assets/{linear-oKTGuyqU.js.map → linear-BTJsW5AR.js.map} +1 -1
- package/dist/assets/{main-B_rmFN-P.css → main-BGaTIf-Q.css} +1 -1
- package/dist/assets/{main-Chbvf6JP.js → main-BaebWasr.js} +4 -4
- package/dist/assets/{main-Chbvf6JP.js.map → main-BaebWasr.js.map} +1 -1
- package/dist/assets/{main-C81Et7oP.js → main-CWkZDH4r.js} +3 -3
- package/dist/assets/{main-C81Et7oP.js.map → main-CWkZDH4r.js.map} +1 -1
- package/dist/assets/{mermaid.core-rWg6JcoC.js → mermaid.core-BymI4HJS.js} +6 -6
- package/dist/assets/{mermaid.core-rWg6JcoC.js.map → mermaid.core-BymI4HJS.js.map} +1 -1
- package/dist/assets/{mindmap-definition-VGOIOE7T-CHrK3W4B.js → mindmap-definition-VGOIOE7T-CLTEnp2P.js} +2 -2
- package/dist/assets/{mindmap-definition-VGOIOE7T-CHrK3W4B.js.map → mindmap-definition-VGOIOE7T-CLTEnp2P.js.map} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-BL-nn_b4.js → pieDiagram-ADFJNKIX-Bw0donk2.js} +2 -2
- package/dist/assets/{pieDiagram-ADFJNKIX-BL-nn_b4.js.map → pieDiagram-ADFJNKIX-Bw0donk2.js.map} +1 -1
- package/dist/assets/{quadrantDiagram-AYHSOK5B-Cxy4jxbg.js → quadrantDiagram-AYHSOK5B-Cm8mUfGa.js} +2 -2
- package/dist/assets/{quadrantDiagram-AYHSOK5B-Cxy4jxbg.js.map → quadrantDiagram-AYHSOK5B-Cm8mUfGa.js.map} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-Cza4HxEz.js → requirementDiagram-UZGBJVZJ-C_f1ywi-.js} +2 -2
- package/dist/assets/{requirementDiagram-UZGBJVZJ-Cza4HxEz.js.map → requirementDiagram-UZGBJVZJ-C_f1ywi-.js.map} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-qwIj1xsG.js → sankeyDiagram-TZEHDZUN-DTNFZCdJ.js} +2 -2
- package/dist/assets/{sankeyDiagram-TZEHDZUN-qwIj1xsG.js.map → sankeyDiagram-TZEHDZUN-DTNFZCdJ.js.map} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-C9_twmEc.js → sequenceDiagram-WL72ISMW-TGqxh1eL.js} +2 -2
- package/dist/assets/{sequenceDiagram-WL72ISMW-C9_twmEc.js.map → sequenceDiagram-WL72ISMW-TGqxh1eL.js.map} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-B33VNknZ.js → stateDiagram-FKZM4ZOC-BI4QdIXS.js} +2 -2
- package/dist/assets/{stateDiagram-FKZM4ZOC-B33VNknZ.js.map → stateDiagram-FKZM4ZOC-BI4QdIXS.js.map} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-DSN57ySy.js +2 -0
- package/dist/assets/{stateDiagram-v2-4FDKWEC3-DOXH6dJF.js.map → stateDiagram-v2-4FDKWEC3-DSN57ySy.js.map} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-BU2GcjD5.js → timeline-definition-IT6M3QCI-PXMMkiNk.js} +2 -2
- package/dist/assets/{timeline-definition-IT6M3QCI-BU2GcjD5.js.map → timeline-definition-IT6M3QCI-PXMMkiNk.js.map} +1 -1
- package/dist/assets/{treemap-KMMF4GRG-C2Sf7oH-.js → treemap-KMMF4GRG-DZ3dLkt9.js} +2 -2
- package/dist/assets/{treemap-KMMF4GRG-C2Sf7oH-.js.map → treemap-KMMF4GRG-DZ3dLkt9.js.map} +1 -1
- package/dist/assets/{xychartDiagram-PRI3JC2R-CJQGMN6m.js → xychartDiagram-PRI3JC2R-DQlXFKme.js} +2 -2
- package/dist/assets/{xychartDiagram-PRI3JC2R-CJQGMN6m.js.map → xychartDiagram-PRI3JC2R-DQlXFKme.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +4 -4
- package/src/components/ai-elements/__tests__/response.test.tsx +157 -158
- package/src/components/ai-elements/response.tsx +7 -10
- package/src/components/chat.tsx +7 -7
- package/src/index.css +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-B0ASNnbX.js +0 -2
- package/dist/assets/classDiagram-v2-WZHVMYZB-B0ASNnbX.js +0 -2
- package/dist/assets/stateDiagram-v2-4FDKWEC3-DOXH6dJF.js +0 -2
package/dist/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
|
7
7
|
<title>ElizaOS - Client</title>
|
|
8
|
-
<script type="module" crossorigin src="/assets/main-
|
|
8
|
+
<script type="module" crossorigin src="/assets/main-CWkZDH4r.js"></script>
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/client",
|
|
3
|
-
"version": "1.6.3
|
|
3
|
+
"version": "1.6.3",
|
|
4
4
|
"description": "Web client interface for ElizaOS agents",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -61,8 +61,8 @@
|
|
|
61
61
|
"access": "public"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
|
-
"@elizaos/api-client": "1.6.3
|
|
65
|
-
"@elizaos/core": "1.6.3
|
|
64
|
+
"@elizaos/api-client": "1.6.3",
|
|
65
|
+
"@elizaos/core": "1.6.3",
|
|
66
66
|
"@evilmartians/agent-prism-data": "^0.0.4",
|
|
67
67
|
"@evilmartians/agent-prism-types": "^0.0.4",
|
|
68
68
|
"@hookform/resolvers": "^5.1.1",
|
|
@@ -159,5 +159,5 @@
|
|
|
159
159
|
"vite-tsconfig-paths": "^5.1.4",
|
|
160
160
|
"wait-on": "^9.0.1"
|
|
161
161
|
},
|
|
162
|
-
"gitHead": "
|
|
162
|
+
"gitHead": "22e866ff0036bd93af64880cb46ca89cb474d2b2"
|
|
163
163
|
}
|
|
@@ -7,95 +7,95 @@ import { describe, it, expect } from 'bun:test';
|
|
|
7
7
|
import { Response } from '../response';
|
|
8
8
|
|
|
9
9
|
describe('Response Component', () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
10
|
+
it('should be defined and exportable', () => {
|
|
11
|
+
expect(Response).toBeDefined();
|
|
12
|
+
// React.memo wraps the component, so it returns an object
|
|
13
|
+
expect(typeof Response).toBe('object');
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it('should have correct display name', () => {
|
|
17
|
+
expect(Response.displayName).toBe('Response');
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('should accept required props structure', () => {
|
|
21
|
+
// This test verifies the component can be instantiated with correct props
|
|
22
|
+
// Since we're in a non-browser test environment, we just verify the component structure
|
|
23
|
+
|
|
24
|
+
const props = {
|
|
25
|
+
children: 'Test markdown content',
|
|
26
|
+
className: 'test-class',
|
|
27
|
+
isAnimating: false,
|
|
28
|
+
shikiTheme: ['github-dark', 'github-dark'] as const,
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// Verify props structure is valid by checking component accepts them
|
|
32
|
+
// In a full React testing environment, we would render this
|
|
33
|
+
expect(props.children).toBe('Test markdown content');
|
|
34
|
+
expect(props.isAnimating).toBe(false);
|
|
35
|
+
expect(props.shikiTheme).toEqual(['github-dark', 'github-dark']);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('should be a memoized React component', () => {
|
|
39
|
+
// Response component should be memoized with React.memo
|
|
40
|
+
// React.memo returns an object, not a function
|
|
41
|
+
expect(Response).toBeDefined();
|
|
42
|
+
expect(typeof Response).toBe('object');
|
|
43
|
+
expect(Response.displayName).toBe('Response');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should handle markdown content prop correctly', () => {
|
|
47
|
+
const markdownContent = '# Hello World\n\nThis is a test.';
|
|
48
|
+
const props = {
|
|
49
|
+
children: markdownContent,
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
expect(props.children).toBe(markdownContent);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it('should handle animation state prop correctly', () => {
|
|
56
|
+
const animatingProps = {
|
|
57
|
+
children: 'Content',
|
|
58
|
+
isAnimating: true,
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const staticProps = {
|
|
62
|
+
children: 'Content',
|
|
63
|
+
isAnimating: false,
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
expect(animatingProps.isAnimating).toBe(true);
|
|
67
|
+
expect(staticProps.isAnimating).toBe(false);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
it('should handle theme configuration correctly', () => {
|
|
71
|
+
const customTheme = ['monokai', 'github-light'] as const;
|
|
72
|
+
const props = {
|
|
73
|
+
children: 'Content',
|
|
74
|
+
shikiTheme: customTheme,
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
expect(props.shikiTheme).toEqual(['monokai', 'github-light']);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should use default theme when not specified', () => {
|
|
81
|
+
// Default theme should be github-dark for both light and dark modes
|
|
82
|
+
const defaultTheme = ['github-dark', 'github-dark'] as const;
|
|
83
|
+
|
|
84
|
+
expect(defaultTheme).toEqual(['github-dark', 'github-dark']);
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it('should handle className prop for styling', () => {
|
|
88
|
+
const customClass = 'custom-markdown-style max-w-none';
|
|
89
|
+
const props = {
|
|
90
|
+
children: 'Content',
|
|
91
|
+
className: customClass,
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
expect(props.className).toBe(customClass);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it('should support code blocks in markdown', () => {
|
|
98
|
+
const markdownWithCode = `
|
|
99
99
|
# Code Example
|
|
100
100
|
|
|
101
101
|
\`\`\`typescript
|
|
@@ -104,27 +104,27 @@ console.log(hello);
|
|
|
104
104
|
\`\`\`
|
|
105
105
|
`;
|
|
106
106
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
107
|
+
const props = {
|
|
108
|
+
children: markdownWithCode,
|
|
109
|
+
};
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
expect(props.children).toContain('```typescript');
|
|
112
|
+
expect(props.children).toContain('const hello');
|
|
113
|
+
});
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
115
|
+
it('should support inline code in markdown', () => {
|
|
116
|
+
const markdownWithInlineCode = 'Use `const` instead of `var` in JavaScript.';
|
|
117
117
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
118
|
+
const props = {
|
|
119
|
+
children: markdownWithInlineCode,
|
|
120
|
+
};
|
|
121
121
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
expect(props.children).toContain('`const`');
|
|
123
|
+
expect(props.children).toContain('`var`');
|
|
124
|
+
});
|
|
125
125
|
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
it('should support various markdown elements', () => {
|
|
127
|
+
const complexMarkdown = `
|
|
128
128
|
# Heading 1
|
|
129
129
|
## Heading 2
|
|
130
130
|
|
|
@@ -138,57 +138,56 @@ console.log(hello);
|
|
|
138
138
|
> Blockquote
|
|
139
139
|
`;
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
141
|
+
const props = {
|
|
142
|
+
children: complexMarkdown,
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
expect(props.children).toContain('# Heading 1');
|
|
146
|
+
expect(props.children).toContain('**Bold text**');
|
|
147
|
+
expect(props.children).toContain('[Link]');
|
|
148
|
+
expect(props.children).toContain('> Blockquote');
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
it('should handle empty content gracefully', () => {
|
|
152
|
+
const props = {
|
|
153
|
+
children: '',
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
expect(props.children).toBe('');
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
it('should handle whitespace-only content', () => {
|
|
160
|
+
const props = {
|
|
161
|
+
children: ' \n\n ',
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
expect(typeof props.children).toBe('string');
|
|
165
|
+
expect(props.children.trim()).toBe('');
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
it('should memo comparison logic work correctly', () => {
|
|
169
|
+
// The component uses memo with a custom comparison
|
|
170
|
+
// It should only re-render when children prop changes
|
|
171
|
+
|
|
172
|
+
const props1 = { children: 'Same content', isAnimating: false };
|
|
173
|
+
const props2 = { children: 'Same content', isAnimating: true };
|
|
174
|
+
const props3 = { children: 'Different content', isAnimating: false };
|
|
175
|
+
|
|
176
|
+
// Same children should be considered equal for memo
|
|
177
|
+
expect(props1.children === props2.children).toBe(true);
|
|
178
|
+
|
|
179
|
+
// Different children should not be equal
|
|
180
|
+
expect(props1.children === props3.children).toBe(false);
|
|
181
|
+
});
|
|
182
|
+
|
|
183
|
+
it('should apply default max-width styling', () => {
|
|
184
|
+
// Component should include "max-w-none" in its default className
|
|
185
|
+
// This is verified by checking the component implementation
|
|
186
|
+
const expectedClasses = 'size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0';
|
|
187
|
+
|
|
188
|
+
// This is the expected default className structure
|
|
189
|
+
expect(expectedClasses).toContain('size-full');
|
|
190
|
+
expect(expectedClasses).toContain('[&>*:first-child]:mt-0');
|
|
191
|
+
expect(expectedClasses).toContain('[&>*:last-child]:mb-0');
|
|
192
|
+
});
|
|
193
193
|
});
|
|
194
|
-
|
|
@@ -1,18 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
'use client';
|
|
2
2
|
|
|
3
|
-
import { cn } from
|
|
4
|
-
import { type ComponentProps, memo } from
|
|
5
|
-
import { Streamdown } from
|
|
3
|
+
import { cn } from '@/lib/utils';
|
|
4
|
+
import { type ComponentProps, memo } from 'react';
|
|
5
|
+
import { Streamdown } from 'streamdown';
|
|
6
6
|
|
|
7
7
|
type ResponseProps = ComponentProps<typeof Streamdown>;
|
|
8
8
|
|
|
9
9
|
export const Response = memo(
|
|
10
|
-
({ className, shikiTheme = [
|
|
10
|
+
({ className, shikiTheme = ['github-dark', 'github-dark'], ...props }: ResponseProps) => (
|
|
11
11
|
<Streamdown
|
|
12
|
-
className={cn(
|
|
13
|
-
"size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0",
|
|
14
|
-
className
|
|
15
|
-
)}
|
|
12
|
+
className={cn('size-full [&>*:first-child]:mt-0 [&>*:last-child]:mb-0', className)}
|
|
16
13
|
shikiTheme={shikiTheme}
|
|
17
14
|
{...props}
|
|
18
15
|
/>
|
|
@@ -28,4 +25,4 @@ export const Response = memo(
|
|
|
28
25
|
}
|
|
29
26
|
);
|
|
30
27
|
|
|
31
|
-
Response.displayName =
|
|
28
|
+
Response.displayName = 'Response';
|
package/src/components/chat.tsx
CHANGED
|
@@ -366,10 +366,10 @@ export default function Chat({
|
|
|
366
366
|
// Convert AgentWithStatus to Agent, ensuring required fields have defaults
|
|
367
367
|
const targetAgentData: Agent | undefined = agentDataResponse?.data
|
|
368
368
|
? ({
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
369
|
+
...agentDataResponse.data,
|
|
370
|
+
createdAt: agentDataResponse.data.createdAt || Date.now(),
|
|
371
|
+
updatedAt: agentDataResponse.data.updatedAt || Date.now(),
|
|
372
|
+
} as Agent)
|
|
373
373
|
: undefined;
|
|
374
374
|
|
|
375
375
|
const { handleDelete: handleDeleteAgent, isDeleting: isDeletingAgent } = useDeleteAgent(
|
|
@@ -1354,11 +1354,11 @@ export default function Chat({
|
|
|
1354
1354
|
<span className="text-xs text-muted-foreground">
|
|
1355
1355
|
{moment(
|
|
1356
1356
|
(typeof channel.metadata?.createdAt === 'string' ||
|
|
1357
|
-
|
|
1357
|
+
typeof channel.metadata?.createdAt === 'number'
|
|
1358
1358
|
? channel.metadata.createdAt
|
|
1359
1359
|
: null) ||
|
|
1360
|
-
|
|
1361
|
-
|
|
1360
|
+
channel.updatedAt ||
|
|
1361
|
+
channel.createdAt
|
|
1362
1362
|
).fromNow()}
|
|
1363
1363
|
</span>
|
|
1364
1364
|
</div>
|
package/src/index.css
CHANGED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-qIW-HouX.js";import{_ as i}from"./mermaid.core-rWg6JcoC.js";import"./chunk-FMBD7UC4-DvTLIOqx.js";import"./chunk-55IACEB6-o-GxTW9D.js";import"./chunk-QN33PNHL-IzRCZEG_.js";import"./main-C81Et7oP.js";import"./main-Chbvf6JP.js";import"./react-vendor-BGrcQn-n.js";import"./ui-vendor-B7JxFfFk.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
2
|
-
//# sourceMappingURL=classDiagram-2ON5EDUG-B0ASNnbX.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-qIW-HouX.js";import{_ as i}from"./mermaid.core-rWg6JcoC.js";import"./chunk-FMBD7UC4-DvTLIOqx.js";import"./chunk-55IACEB6-o-GxTW9D.js";import"./chunk-QN33PNHL-IzRCZEG_.js";import"./main-C81Et7oP.js";import"./main-Chbvf6JP.js";import"./react-vendor-BGrcQn-n.js";import"./ui-vendor-B7JxFfFk.js";var b={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
2
|
-
//# sourceMappingURL=classDiagram-v2-WZHVMYZB-B0ASNnbX.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{s as r,b as e,a,S as s}from"./chunk-DI55MBZ5-CUalBYtH.js";import{_ as i}from"./mermaid.core-rWg6JcoC.js";import"./chunk-55IACEB6-o-GxTW9D.js";import"./chunk-QN33PNHL-IzRCZEG_.js";import"./main-C81Et7oP.js";import"./main-Chbvf6JP.js";import"./react-vendor-BGrcQn-n.js";import"./ui-vendor-B7JxFfFk.js";var b={parser:a,get db(){return new s(2)},renderer:e,styles:r,init:i(t=>{t.state||(t.state={}),t.state.arrowMarkerAbsolute=t.arrowMarkerAbsolute},"init")};export{b as diagram};
|
|
2
|
-
//# sourceMappingURL=stateDiagram-v2-4FDKWEC3-DOXH6dJF.js.map
|