@vybestack/llxprt-code 0.8.0-nightly.260113.48db4b09b → 0.8.0-nightly.260113.cd34be5f1
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/package.json +3 -3
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/ui/AppContainer.js +6 -0
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.test.js +74 -31
- package/dist/src/ui/components/messages/GeminiMessage.test.js.map +1 -1
- package/dist/src/ui/components/messages/ToolMessage.test.js +13 -37
- package/dist/src/ui/components/messages/ToolMessage.test.js.map +1 -1
- package/dist/src/ui/hooks/useSessionRestore.test.js +103 -0
- package/dist/src/ui/hooks/useSessionRestore.test.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js +0 -30
- package/dist/src/ui/components/messages/ToolMessageRawMarkdown.test.js.map +0 -1
- /package/dist/src/ui/{components/messages/ToolMessageRawMarkdown.test.d.ts → hooks/useSessionRestore.test.d.ts} +0 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Vybestack LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest';
|
|
7
|
+
describe('Session Restore Chat Initialization', () => {
|
|
8
|
+
let mockGeminiClient;
|
|
9
|
+
let mockConfig;
|
|
10
|
+
let mockHistoryService;
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
vi.clearAllMocks();
|
|
13
|
+
mockHistoryService = {
|
|
14
|
+
clear: vi.fn(),
|
|
15
|
+
validateAndFix: vi.fn(),
|
|
16
|
+
addAll: vi.fn(),
|
|
17
|
+
};
|
|
18
|
+
mockGeminiClient = {
|
|
19
|
+
resetChat: vi.fn().mockResolvedValue(undefined),
|
|
20
|
+
getHistoryService: () => mockHistoryService,
|
|
21
|
+
};
|
|
22
|
+
mockConfig = {
|
|
23
|
+
getGeminiClient: () => mockGeminiClient,
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
describe('chat initialization when restoring session', () => {
|
|
27
|
+
it('calls resetChat to ensure historyService is available', async () => {
|
|
28
|
+
expect(mockGeminiClient.resetChat).not.toHaveBeenCalled();
|
|
29
|
+
const geminiClient = mockConfig.getGeminiClient();
|
|
30
|
+
if (geminiClient) {
|
|
31
|
+
await geminiClient.resetChat();
|
|
32
|
+
}
|
|
33
|
+
expect(mockGeminiClient.resetChat).toHaveBeenCalled();
|
|
34
|
+
expect(geminiClient?.getHistoryService()).toBeDefined();
|
|
35
|
+
});
|
|
36
|
+
it('handles resetChat errors gracefully without throwing', async () => {
|
|
37
|
+
mockGeminiClient.resetChat.mockRejectedValue(new Error('Failed to initialize chat'));
|
|
38
|
+
const geminiClient = mockConfig.getGeminiClient();
|
|
39
|
+
await expect(async () => {
|
|
40
|
+
if (geminiClient) {
|
|
41
|
+
await geminiClient.resetChat().catch(() => { });
|
|
42
|
+
}
|
|
43
|
+
}).not.toThrow();
|
|
44
|
+
expect(mockGeminiClient.resetChat).toHaveBeenCalled();
|
|
45
|
+
});
|
|
46
|
+
it('does not throw when geminiClient is undefined', () => {
|
|
47
|
+
mockConfig = {
|
|
48
|
+
getGeminiClient: () => undefined,
|
|
49
|
+
};
|
|
50
|
+
const geminiClient = mockConfig.getGeminiClient();
|
|
51
|
+
expect(() => {
|
|
52
|
+
if (geminiClient) {
|
|
53
|
+
geminiClient.resetChat();
|
|
54
|
+
}
|
|
55
|
+
}).not.toThrow();
|
|
56
|
+
});
|
|
57
|
+
it('restores core history after chat initialization makes historyService available', async () => {
|
|
58
|
+
const restoredSessionHistory = [
|
|
59
|
+
{
|
|
60
|
+
speaker: 'human',
|
|
61
|
+
blocks: [{ type: 'text', text: 'Hello' }],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
speaker: 'ai',
|
|
65
|
+
blocks: [{ type: 'text', text: 'Hi there!' }],
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
const geminiClient = mockConfig.getGeminiClient();
|
|
69
|
+
if (geminiClient) {
|
|
70
|
+
await geminiClient.resetChat();
|
|
71
|
+
const historyService = geminiClient.getHistoryService();
|
|
72
|
+
if (historyService) {
|
|
73
|
+
historyService.addAll(restoredSessionHistory);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
expect(mockHistoryService.addAll).toHaveBeenCalledWith(restoredSessionHistory);
|
|
77
|
+
});
|
|
78
|
+
it('continues session restore even if resetChat fails', async () => {
|
|
79
|
+
mockGeminiClient.resetChat.mockRejectedValue(new Error('Chat init failed'));
|
|
80
|
+
const restoredSessionHistory = [
|
|
81
|
+
{
|
|
82
|
+
speaker: 'human',
|
|
83
|
+
blocks: [{ type: 'text', text: 'Hello' }],
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
speaker: 'ai',
|
|
87
|
+
blocks: [{ type: 'text', text: 'Hi!' }],
|
|
88
|
+
},
|
|
89
|
+
];
|
|
90
|
+
const geminiClient = mockConfig.getGeminiClient();
|
|
91
|
+
if (geminiClient) {
|
|
92
|
+
await geminiClient.resetChat().catch(() => { });
|
|
93
|
+
const historyService = geminiClient.getHistoryService();
|
|
94
|
+
if (historyService) {
|
|
95
|
+
historyService.addAll(restoredSessionHistory);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
expect(mockGeminiClient.resetChat).toHaveBeenCalled();
|
|
99
|
+
expect(mockHistoryService.addAll).toHaveBeenCalledWith(restoredSessionHistory);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
//# sourceMappingURL=useSessionRestore.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSessionRestore.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useSessionRestore.test.ts"],"names":[],"mappings":"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"}
|