codecane 1.0.155 → 1.0.170
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/browser-runner.d.ts +3 -1
- package/dist/browser-runner.js +211 -136
- package/dist/browser-runner.js.map +1 -1
- package/dist/chat-storage.d.ts +1 -1
- package/dist/chat-storage.js +35 -31
- package/dist/chat-storage.js.map +1 -1
- package/dist/checkpoints.d.ts +62 -0
- package/dist/checkpoints.js +134 -0
- package/dist/checkpoints.js.map +1 -0
- package/dist/cli.d.ts +20 -13
- package/dist/cli.js +461 -353
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +178 -25
- package/dist/client.js +236 -198
- package/dist/client.js.map +1 -1
- package/dist/code-map/tsconfig.tsbuildinfo +1 -1
- package/dist/common/actions.d.ts +2115 -444
- package/dist/common/actions.js +31 -78
- package/dist/common/actions.js.map +1 -1
- package/dist/common/browser-actions.d.ts +253 -173
- package/dist/common/browser-actions.js +25 -12
- package/dist/common/browser-actions.js.map +1 -1
- package/dist/common/constants/tools.d.ts +3 -0
- package/dist/common/constants/tools.js +24 -0
- package/dist/common/constants/tools.js.map +1 -0
- package/dist/common/constants.d.ts +14 -8
- package/dist/common/constants.js +7 -6
- package/dist/common/constants.js.map +1 -1
- package/dist/common/message-image-handling.d.ts +41 -0
- package/dist/common/message-image-handling.js +57 -0
- package/dist/common/message-image-handling.js.map +1 -0
- package/dist/common/project-file-tree.js +7 -7
- package/dist/common/project-file-tree.js.map +1 -1
- package/dist/common/types/agent-state.d.ts +466 -0
- package/dist/common/types/agent-state.js +30 -0
- package/dist/common/types/agent-state.js.map +1 -0
- package/dist/common/types/message.d.ts +311 -0
- package/dist/common/types/message.js +54 -0
- package/dist/common/types/message.js.map +1 -0
- package/dist/common/types/tools.d.ts +5 -0
- package/dist/common/types/tools.js +3 -0
- package/dist/common/types/tools.js.map +1 -0
- package/dist/common/types/usage.d.ts +2 -2
- package/dist/common/util/__tests__/messages.test.js +70 -0
- package/dist/common/util/__tests__/messages.test.js.map +1 -0
- package/dist/common/util/changes.js +3 -3
- package/dist/common/util/changes.js.map +1 -1
- package/dist/common/util/credentials.d.ts +4 -4
- package/dist/common/util/file.d.ts +9 -2
- package/dist/common/util/file.js +31 -27
- package/dist/common/util/file.js.map +1 -1
- package/dist/common/util/git.js +1 -1
- package/dist/common/util/git.js.map +1 -1
- package/dist/common/util/lru-cache.d.ts +9 -0
- package/dist/common/util/lru-cache.js +42 -0
- package/dist/common/util/lru-cache.js.map +1 -0
- package/dist/common/util/messages.d.ts +6 -0
- package/dist/common/util/messages.js +22 -0
- package/dist/common/util/messages.js.map +1 -0
- package/dist/common/util/min-heap.d.ts +15 -0
- package/dist/common/util/min-heap.js +73 -0
- package/dist/common/util/min-heap.js.map +1 -0
- package/dist/common/util/process-stream.d.ts +8 -0
- package/dist/common/util/process-stream.js +102 -0
- package/dist/common/util/process-stream.js.map +1 -0
- package/dist/common/util/promise.d.ts +8 -0
- package/dist/common/util/promise.js +25 -2
- package/dist/common/util/promise.js.map +1 -1
- package/dist/common/util/string.d.ts +31 -0
- package/dist/common/util/string.js +71 -1
- package/dist/common/util/string.js.map +1 -1
- package/dist/common/websockets/websocket-schema.d.ts +4065 -1019
- package/dist/config.d.ts +1 -0
- package/dist/config.js +3 -2
- package/dist/config.js.map +1 -1
- package/dist/credentials.d.ts +1 -0
- package/dist/credentials.js +7 -3
- package/dist/credentials.js.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/menu.js +16 -12
- package/dist/menu.js.map +1 -1
- package/dist/project-files.d.ts +43 -3
- package/dist/project-files.js +97 -18
- package/dist/project-files.js.map +1 -1
- package/dist/tool-handlers.d.ts +22 -7
- package/dist/tool-handlers.js +111 -44
- package/dist/tool-handlers.js.map +1 -1
- package/dist/utils/process-xml-chunks.d.ts +31 -0
- package/dist/utils/process-xml-chunks.js +235 -0
- package/dist/utils/process-xml-chunks.js.map +1 -0
- package/dist/utils/spinner.d.ts +11 -0
- package/dist/utils/spinner.js +87 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/utils/terminal.d.ts +3 -3
- package/dist/utils/terminal.js +23 -24
- package/dist/utils/terminal.js.map +1 -1
- package/dist/web-scraper.d.ts +1 -1
- package/dist/web-scraper.js +11 -7
- package/dist/web-scraper.js.map +1 -1
- package/dist/worker-script-project-context.js +1 -1
- package/dist/worker-script-project-context.js.map +1 -1
- package/package.json +3 -4
- package/dist/__tests__/browser-runner.test.js +0 -15
- package/dist/__tests__/browser-runner.test.js.map +0 -1
- /package/dist/{__tests__/browser-runner.test.d.ts → common/util/__tests__/messages.test.d.ts} +0 -0
package/dist/chat-storage.js
CHANGED
|
@@ -27,6 +27,8 @@ exports.ChatStorage = void 0;
|
|
|
27
27
|
const path = __importStar(require("path"));
|
|
28
28
|
const fs = __importStar(require("fs"));
|
|
29
29
|
const project_files_1 = require("./project-files");
|
|
30
|
+
const string_1 = require("./common/util/string");
|
|
31
|
+
const ts_pattern_1 = require("ts-pattern");
|
|
30
32
|
class ChatStorage {
|
|
31
33
|
currentChat;
|
|
32
34
|
currentVersionIndex;
|
|
@@ -45,46 +47,48 @@ class ChatStorage {
|
|
|
45
47
|
if (index === lastIndex) {
|
|
46
48
|
return msg; // Preserve the most recent message in its entirety
|
|
47
49
|
}
|
|
48
|
-
// Helper function to clean up content
|
|
50
|
+
// Helper function to clean up message content
|
|
49
51
|
const cleanContent = (content) => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
result = result.replace(/"logs"\s*:\s*\[[^\]]*\]/g, '"logs":[LOGS_REMOVED]');
|
|
56
|
-
}
|
|
57
|
-
return result;
|
|
52
|
+
// Keep only tool logs
|
|
53
|
+
content = (0, string_1.transformJsonInString)(content, 'logs', (logs) => logs.filter((log) => log.source === 'tool'), '(LOGS_REMOVED)');
|
|
54
|
+
// Remove metrics
|
|
55
|
+
content = (0, string_1.transformJsonInString)(content, 'metrics', () => '(METRICS_REMOVED)', '(METRICS_REMOVED)');
|
|
56
|
+
return content;
|
|
58
57
|
};
|
|
59
58
|
// Clean up message content
|
|
60
59
|
if (!msg.content)
|
|
61
60
|
return msg;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
61
|
+
return (0, ts_pattern_1.match)(msg)
|
|
62
|
+
.with({ content: ts_pattern_1.P.array() }, (message) => ({
|
|
63
|
+
...message,
|
|
64
|
+
content: message.content.reduce((acc, contentObj) => [
|
|
65
|
+
...acc,
|
|
66
|
+
...(0, ts_pattern_1.match)(contentObj)
|
|
67
|
+
.with({ type: 'tool_result', content: ts_pattern_1.P.string }, (obj) => [
|
|
68
|
+
{
|
|
69
|
+
...obj,
|
|
70
|
+
content: cleanContent(obj.content),
|
|
71
|
+
},
|
|
72
|
+
])
|
|
73
|
+
.with({ type: 'text', text: ts_pattern_1.P.string }, (obj) => [
|
|
74
|
+
{
|
|
75
|
+
...obj,
|
|
76
|
+
text: cleanContent(obj.text),
|
|
77
|
+
},
|
|
78
|
+
])
|
|
79
|
+
.otherwise((obj) => [obj]),
|
|
80
|
+
], []),
|
|
81
|
+
}))
|
|
82
|
+
.with({ content: ts_pattern_1.P.string }, (message) => ({
|
|
83
|
+
...message,
|
|
84
|
+
content: cleanContent(message.content),
|
|
85
|
+
}))
|
|
86
|
+
.otherwise((message) => message);
|
|
83
87
|
});
|
|
84
88
|
// Add the new message
|
|
85
89
|
chat.messages.push(message);
|
|
86
90
|
chat.updatedAt = new Date().toISOString();
|
|
87
|
-
// Save messages to
|
|
91
|
+
// Save messages to chat directory
|
|
88
92
|
this.saveMessagesToFile(chat);
|
|
89
93
|
}
|
|
90
94
|
saveMessagesToFile(chat) {
|
package/dist/chat-storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-storage.js","sourceRoot":"","sources":["../src/chat-storage.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,uCAAwB;AAExB,mDAIwB;
|
|
1
|
+
{"version":3,"file":"chat-storage.js","sourceRoot":"","sources":["../src/chat-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { AgentState } from './common/types/agent-state';
|
|
2
|
+
/**
|
|
3
|
+
* Interface representing a checkpoint of agent state
|
|
4
|
+
*/
|
|
5
|
+
export interface Checkpoint {
|
|
6
|
+
agentStateString: string;
|
|
7
|
+
historyLength: number;
|
|
8
|
+
id: number;
|
|
9
|
+
parentId: number;
|
|
10
|
+
timestamp: number;
|
|
11
|
+
userInput: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Simple in-memory checkpoint manager for agent states
|
|
15
|
+
*/
|
|
16
|
+
export declare class CheckpointManager {
|
|
17
|
+
private checkpoints;
|
|
18
|
+
private maxCheckpoints;
|
|
19
|
+
private nextId;
|
|
20
|
+
private oldestId;
|
|
21
|
+
constructor(maxCheckpoints?: number);
|
|
22
|
+
/**
|
|
23
|
+
* Add a new checkpoint
|
|
24
|
+
* @param agentState - The agent state to checkpoint
|
|
25
|
+
* @param userInput - The user input associated with this checkpoint
|
|
26
|
+
* @returns The ID of the created checkpoint
|
|
27
|
+
*/
|
|
28
|
+
addCheckpoint(agentState: AgentState, userInput: string, restoreRef?: Checkpoint | null): number;
|
|
29
|
+
/**
|
|
30
|
+
* Get a checkpoint by ID
|
|
31
|
+
* @param id The checkpoint ID
|
|
32
|
+
* @returns The checkpoint or null if not found
|
|
33
|
+
*/
|
|
34
|
+
getCheckpoint(id: number): Checkpoint | null;
|
|
35
|
+
/**
|
|
36
|
+
* Get all checkpoints
|
|
37
|
+
* @returns Array of all checkpoints
|
|
38
|
+
*/
|
|
39
|
+
getAllCheckpoints(): Checkpoint[];
|
|
40
|
+
/**
|
|
41
|
+
* Get the most recent checkpoint
|
|
42
|
+
* @returns The most recent checkpoint or null if none exist
|
|
43
|
+
*/
|
|
44
|
+
getLatestCheckpoint(): Checkpoint | null;
|
|
45
|
+
/**
|
|
46
|
+
* Clear all checkpoints
|
|
47
|
+
*/
|
|
48
|
+
clearCheckpoints(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get a formatted string representation of all checkpoints
|
|
51
|
+
* @param detailed Whether to include detailed information about each checkpoint
|
|
52
|
+
* @returns A formatted string representation of all checkpoints
|
|
53
|
+
*/
|
|
54
|
+
getCheckpointsAsString(detailed?: boolean): string;
|
|
55
|
+
/**
|
|
56
|
+
* Get detailed information about a specific checkpoint
|
|
57
|
+
* @param id The checkpoint ID
|
|
58
|
+
* @returns A formatted string with detailed information about the checkpoint, or an error message if not found
|
|
59
|
+
*/
|
|
60
|
+
getCheckpointDetails(id: number): string;
|
|
61
|
+
}
|
|
62
|
+
export declare const checkpointManager: CheckpointManager;
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.checkpointManager = exports.CheckpointManager = void 0;
|
|
4
|
+
const picocolors_1 = require("picocolors");
|
|
5
|
+
/**
|
|
6
|
+
* Simple in-memory checkpoint manager for agent states
|
|
7
|
+
*/
|
|
8
|
+
class CheckpointManager {
|
|
9
|
+
checkpoints = new Map();
|
|
10
|
+
maxCheckpoints;
|
|
11
|
+
nextId = 1;
|
|
12
|
+
oldestId = 1;
|
|
13
|
+
constructor(maxCheckpoints = 100) {
|
|
14
|
+
this.maxCheckpoints = maxCheckpoints;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Add a new checkpoint
|
|
18
|
+
* @param agentState - The agent state to checkpoint
|
|
19
|
+
* @param userInput - The user input associated with this checkpoint
|
|
20
|
+
* @returns The ID of the created checkpoint
|
|
21
|
+
*/
|
|
22
|
+
addCheckpoint(agentState, userInput, restoreRef = null) {
|
|
23
|
+
// Use incremental ID starting at 1
|
|
24
|
+
const id = this.nextId++;
|
|
25
|
+
const parentId = restoreRef === null ? id - 1 : restoreRef.parentId;
|
|
26
|
+
const checkpoint = {
|
|
27
|
+
agentStateString: JSON.stringify(agentState), // Deep clone to prevent reference issues
|
|
28
|
+
historyLength: agentState.messageHistory.length,
|
|
29
|
+
id,
|
|
30
|
+
parentId,
|
|
31
|
+
timestamp: Date.now(),
|
|
32
|
+
userInput,
|
|
33
|
+
};
|
|
34
|
+
// Add to map
|
|
35
|
+
this.checkpoints.set(id, checkpoint);
|
|
36
|
+
// If we exceed the maximum number of checkpoints, remove the oldest one
|
|
37
|
+
if (this.checkpoints.size > this.maxCheckpoints) {
|
|
38
|
+
this.checkpoints.delete(this.oldestId);
|
|
39
|
+
this.oldestId++;
|
|
40
|
+
}
|
|
41
|
+
return id;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get a checkpoint by ID
|
|
45
|
+
* @param id The checkpoint ID
|
|
46
|
+
* @returns The checkpoint or null if not found
|
|
47
|
+
*/
|
|
48
|
+
getCheckpoint(id) {
|
|
49
|
+
const checkpoint = this.checkpoints.get(id);
|
|
50
|
+
return checkpoint || null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all checkpoints
|
|
54
|
+
* @returns Array of all checkpoints
|
|
55
|
+
*/
|
|
56
|
+
getAllCheckpoints() {
|
|
57
|
+
return Array.from(this.checkpoints.values());
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the most recent checkpoint
|
|
61
|
+
* @returns The most recent checkpoint or null if none exist
|
|
62
|
+
*/
|
|
63
|
+
getLatestCheckpoint() {
|
|
64
|
+
return this.checkpoints.get(this.nextId - 1) || null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Clear all checkpoints
|
|
68
|
+
*/
|
|
69
|
+
clearCheckpoints() {
|
|
70
|
+
this.checkpoints.clear();
|
|
71
|
+
this.nextId = 1; // Reset the ID counter when clearing
|
|
72
|
+
this.oldestId = 1;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get a formatted string representation of all checkpoints
|
|
76
|
+
* @param detailed Whether to include detailed information about each checkpoint
|
|
77
|
+
* @returns A formatted string representation of all checkpoints
|
|
78
|
+
*/
|
|
79
|
+
getCheckpointsAsString(detailed = false) {
|
|
80
|
+
const checkpoints = this.getAllCheckpoints().sort((a, b) => a.id - b.id);
|
|
81
|
+
if (checkpoints.length === 0) {
|
|
82
|
+
return (0, picocolors_1.yellow)('No checkpoints available.');
|
|
83
|
+
}
|
|
84
|
+
const lines = [(0, picocolors_1.bold)((0, picocolors_1.underline)('Agent State Checkpoints:')), ''];
|
|
85
|
+
checkpoints.forEach((checkpoint) => {
|
|
86
|
+
const date = new Date(checkpoint.timestamp);
|
|
87
|
+
const formattedDate = date.toLocaleString();
|
|
88
|
+
const userInputOneLine = checkpoint.userInput.replaceAll('\n', ' ');
|
|
89
|
+
const userInput = userInputOneLine.length > 50
|
|
90
|
+
? userInputOneLine.substring(0, 47) + '...'
|
|
91
|
+
: userInputOneLine;
|
|
92
|
+
lines.push(`${(0, picocolors_1.cyan)((0, picocolors_1.bold)(`#${checkpoint.id}`))} ${(0, picocolors_1.gray)(`[${formattedDate}]`)}:`);
|
|
93
|
+
lines.push(` ${(0, picocolors_1.blue)('Input')}: ${userInput}`);
|
|
94
|
+
if (detailed) {
|
|
95
|
+
// Add more details about the agent state if needed
|
|
96
|
+
const messageCount = checkpoint.historyLength;
|
|
97
|
+
lines.push(` ${(0, picocolors_1.blue)('Messages')}: ${messageCount}`);
|
|
98
|
+
// You can add more detailed information here as needed
|
|
99
|
+
// For example, file context information, etc.
|
|
100
|
+
}
|
|
101
|
+
lines.push(''); // Empty line between checkpoints
|
|
102
|
+
});
|
|
103
|
+
return lines.join('\n');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get detailed information about a specific checkpoint
|
|
107
|
+
* @param id The checkpoint ID
|
|
108
|
+
* @returns A formatted string with detailed information about the checkpoint, or an error message if not found
|
|
109
|
+
*/
|
|
110
|
+
getCheckpointDetails(id) {
|
|
111
|
+
const checkpoint = this.getCheckpoint(id);
|
|
112
|
+
if (!checkpoint) {
|
|
113
|
+
return (0, picocolors_1.cyan)(`\nCheckpoint #${id} not found.`);
|
|
114
|
+
}
|
|
115
|
+
const lines = [
|
|
116
|
+
(0, picocolors_1.cyan)(`Detailed information for checkpoint #${id}:`),
|
|
117
|
+
];
|
|
118
|
+
const date = new Date(checkpoint.timestamp);
|
|
119
|
+
const formattedDate = date.toLocaleString();
|
|
120
|
+
lines.push(`${(0, picocolors_1.blue)('Created at')}: ${formattedDate}`);
|
|
121
|
+
if (checkpoint.userInput) {
|
|
122
|
+
lines.push(`${(0, picocolors_1.blue)('User input')}: ${checkpoint.userInput}`);
|
|
123
|
+
}
|
|
124
|
+
// Display more detailed information about the agent state
|
|
125
|
+
const messageCount = checkpoint.historyLength;
|
|
126
|
+
lines.push(`${(0, picocolors_1.blue)('Message history')}: ${messageCount} messages`);
|
|
127
|
+
// You could add more detailed information here as needed
|
|
128
|
+
return lines.join('\n');
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
exports.CheckpointManager = CheckpointManager;
|
|
132
|
+
// Export a singleton instance for use throughout the application
|
|
133
|
+
exports.checkpointManager = new CheckpointManager();
|
|
134
|
+
//# sourceMappingURL=checkpoints.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpoints.js","sourceRoot":"","sources":["../src/checkpoints.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -9,7 +9,6 @@ export declare class CLI {
|
|
|
9
9
|
private rl;
|
|
10
10
|
private isReceivingResponse;
|
|
11
11
|
private stopResponse;
|
|
12
|
-
private loadingInterval;
|
|
13
12
|
private lastChanges;
|
|
14
13
|
private lastSigintTime;
|
|
15
14
|
private lastInputTime;
|
|
@@ -17,25 +16,33 @@ export declare class CLI {
|
|
|
17
16
|
private pastedContent;
|
|
18
17
|
private isPasting;
|
|
19
18
|
constructor(readyPromise: Promise<[void, ProjectFileContext]>, { git, costMode }: CliOptions);
|
|
19
|
+
private setupSignalHandlers;
|
|
20
|
+
private initReadlineInterface;
|
|
21
|
+
private completer;
|
|
22
|
+
private setPrompt;
|
|
23
|
+
printInitialPrompt(initialInput?: string): Promise<void>;
|
|
24
|
+
printDiff(): Promise<void>;
|
|
25
|
+
private handleLine;
|
|
26
|
+
private handleUserInput;
|
|
27
|
+
private processCommand;
|
|
28
|
+
private forwardUserInput;
|
|
20
29
|
private returnControlToUser;
|
|
21
30
|
private onWebSocketError;
|
|
22
31
|
private onWebSocketReconnect;
|
|
23
|
-
private detectPasting;
|
|
24
|
-
private handleInput;
|
|
25
|
-
private setPrompt;
|
|
26
|
-
printInitialPrompt(initialInput?: string): Promise<void>;
|
|
27
32
|
private handleUndo;
|
|
28
33
|
private handleRedo;
|
|
29
34
|
private navigateFileVersion;
|
|
35
|
+
private applyAndDisplayCurrentFileVersion;
|
|
36
|
+
private handleKeyPress;
|
|
37
|
+
private handleSigint;
|
|
38
|
+
private handleEscKey;
|
|
30
39
|
private handleStopResponse;
|
|
31
|
-
private
|
|
40
|
+
private showEasterEgg;
|
|
32
41
|
private handleExit;
|
|
33
|
-
private
|
|
34
|
-
private applyAndDisplayCurrentFileVersion;
|
|
35
|
-
private startLoadingAnimation;
|
|
36
|
-
private stopLoadingAnimation;
|
|
37
|
-
private autoCommitChanges;
|
|
42
|
+
private detectPasting;
|
|
38
43
|
private handleDiff;
|
|
39
|
-
private
|
|
40
|
-
private
|
|
44
|
+
private handleCheckpoints;
|
|
45
|
+
private handleCheckpointDetail;
|
|
46
|
+
private handleRestoreCheckpoint;
|
|
47
|
+
private handleClearCheckpoints;
|
|
41
48
|
}
|