oncall-cli 2.0.1
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/LICENSE +21 -0
- package/README.md +172 -0
- package/bin/oncall.js +303 -0
- package/dist/api.d.ts +1 -0
- package/dist/api.js +23 -0
- package/dist/api.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +91 -0
- package/dist/cli.js.map +1 -0
- package/dist/code_hierarchy.d.ts +4 -0
- package/dist/code_hierarchy.js +92 -0
- package/dist/code_hierarchy.js.map +1 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -0
- package/dist/helpers/cli-helpers.d.ts +22 -0
- package/dist/helpers/cli-helpers.js +261 -0
- package/dist/helpers/cli-helpers.js.map +1 -0
- package/dist/helpers/config-helpers.js +161 -0
- package/dist/helpers/ripgrep-tool.d.ts +15 -0
- package/dist/helpers/ripgrep-tool.js +110 -0
- package/dist/helpers/ripgrep-tool.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +545 -0
- package/dist/index.js.map +1 -0
- package/dist/logsManager.d.ts +31 -0
- package/dist/logsManager.js +90 -0
- package/dist/logsManager.js.map +1 -0
- package/dist/tools/ripgrep.d.ts +15 -0
- package/dist/tools/ripgrep.js +110 -0
- package/dist/tools/ripgrep.js.map +1 -0
- package/dist/ui-graph.d.ts +1 -0
- package/dist/ui-graph.js +125 -0
- package/dist/ui-graph.js.map +1 -0
- package/dist/useWebSocket.d.ts +21 -0
- package/dist/useWebSocket.js +411 -0
- package/dist/useWebSocket.js.map +1 -0
- package/dist/utils/version-check.d.ts +2 -0
- package/dist/utils/version-check.js +124 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +22 -0
- package/dist/utils.js.map +1 -0
- package/dist/websocket-server.d.ts +24 -0
- package/dist/websocket-server.js +221 -0
- package/dist/websocket-server.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { getContextLines } from "./utils.js";
|
|
3
|
+
import { toolFunctionCall } from "./api.js";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import os from "os";
|
|
6
|
+
import path from "path";
|
|
7
|
+
import { mapChatMessagesToStoredMessages, mapStoredMessagesToChatMessages, } from "@langchain/core/messages";
|
|
8
|
+
import { ripgrepSearch } from "./helpers/ripgrep-tool.js";
|
|
9
|
+
import { loadProjectMetadata, logd } from "./helpers/cli-helpers.js";
|
|
10
|
+
// Load OnCall config from ~/.oncall/config
|
|
11
|
+
const HOME_DIR = os.homedir();
|
|
12
|
+
const ONCALL_DIR = path.join(HOME_DIR, ".oncall");
|
|
13
|
+
const CONFIG_PATH = path.join(ONCALL_DIR, "config");
|
|
14
|
+
let API_KEY = "";
|
|
15
|
+
try {
|
|
16
|
+
const configText = fs.readFileSync(CONFIG_PATH, "utf8");
|
|
17
|
+
const match = configText.match(/^API_KEY\s*=\s*(.*)$/m);
|
|
18
|
+
if (match && match[1]) {
|
|
19
|
+
API_KEY = match[1].trim();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
console.log("No API_KEY found in ~/.oncall/config");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
console.log("Failed to read OnCall config:", err);
|
|
27
|
+
}
|
|
28
|
+
export function useWebSocket(url, rawLogData) {
|
|
29
|
+
//refs
|
|
30
|
+
const socketRef = useRef(null);
|
|
31
|
+
const [socketId, setSocketId] = useState(null);
|
|
32
|
+
const [chatResponseMessages, setChatResponseMessages] = useState([]);
|
|
33
|
+
const [trimmedChats, setTrimmedChats] = useState([]);
|
|
34
|
+
const [visibleChats, setVisibleChats] = useState([]);
|
|
35
|
+
const [isConnected, setIsConnected] = useState(false);
|
|
36
|
+
const [connectionError, setConnectionError] = useState(null);
|
|
37
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
38
|
+
const [showControlR, setShowControlR] = useState(false);
|
|
39
|
+
const authKey = API_KEY;
|
|
40
|
+
const initialProjectMetadata = loadProjectMetadata();
|
|
41
|
+
const getProjectMetadata = () => loadProjectMetadata() || initialProjectMetadata;
|
|
42
|
+
const getServiceId = () => getProjectMetadata()?.window_id;
|
|
43
|
+
const hasLogsAccess = () => {
|
|
44
|
+
const value = getProjectMetadata()?.logs_available;
|
|
45
|
+
return value === undefined ? true : value;
|
|
46
|
+
};
|
|
47
|
+
const hasCodeAccess = () => {
|
|
48
|
+
const value = getProjectMetadata()?.code_available;
|
|
49
|
+
return value === undefined ? true : value;
|
|
50
|
+
};
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (API_KEY === "") {
|
|
53
|
+
setConnectionError("No API_KEY found in ~/.oncall/config");
|
|
54
|
+
console.log("No API_KEY found in ~/.oncall/config");
|
|
55
|
+
process.exit();
|
|
56
|
+
}
|
|
57
|
+
}, [API_KEY]);
|
|
58
|
+
//web socket connection
|
|
59
|
+
const connectWebSocket = useCallback(() => {
|
|
60
|
+
// const d = fs.readFileSync('logs')
|
|
61
|
+
// fs.writeFileSync('logs', `${d} inside connectWS \n message: ${url} ${authKey} ${serviceId}`)
|
|
62
|
+
// if (!url || !authKey || serviceId.trim() === "") {
|
|
63
|
+
// return;
|
|
64
|
+
// }
|
|
65
|
+
if (socketRef.current) {
|
|
66
|
+
socketRef.current.close();
|
|
67
|
+
}
|
|
68
|
+
const socket = new WebSocket(url);
|
|
69
|
+
socketRef.current = socket;
|
|
70
|
+
setConnectionError(null);
|
|
71
|
+
setIsConnected(false);
|
|
72
|
+
socket.onopen = () => {
|
|
73
|
+
try {
|
|
74
|
+
const md = getProjectMetadata();
|
|
75
|
+
if (!md?.window_id) {
|
|
76
|
+
setConnectionError("Missing serviceId (window_id) in oncall.yaml");
|
|
77
|
+
console.log("Missing serviceId (window_id) in oncall.yaml");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
socket.send(JSON.stringify({
|
|
81
|
+
type: "recurring_connection",
|
|
82
|
+
authKey,
|
|
83
|
+
serviceId: md.window_id,
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
setConnectionError("error");
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
socket.onmessage = async (event) => {
|
|
91
|
+
// setShowControlR(false);
|
|
92
|
+
try {
|
|
93
|
+
const raw = event.data;
|
|
94
|
+
let text = "";
|
|
95
|
+
if (typeof raw === "string") {
|
|
96
|
+
text = raw;
|
|
97
|
+
}
|
|
98
|
+
else if (raw instanceof ArrayBuffer) {
|
|
99
|
+
text = Buffer.from(raw).toString("utf8");
|
|
100
|
+
}
|
|
101
|
+
else if (ArrayBuffer.isView(raw)) {
|
|
102
|
+
// @ts-ignore - handle typed arrays
|
|
103
|
+
text = Buffer.from(raw.buffer).toString("utf8");
|
|
104
|
+
}
|
|
105
|
+
else if (raw && typeof raw.toString === "function") {
|
|
106
|
+
text = String(raw);
|
|
107
|
+
}
|
|
108
|
+
text = text?.trim?.() ?? "";
|
|
109
|
+
if (!text)
|
|
110
|
+
return; // ignore empty frames
|
|
111
|
+
if (!(text.startsWith("{") || text.startsWith("["))) {
|
|
112
|
+
return; // ignore non-JSON frames
|
|
113
|
+
}
|
|
114
|
+
const data = JSON.parse(text);
|
|
115
|
+
// if (data.type === "user_assigned" && data.socketId) {
|
|
116
|
+
if (data.type === "user_assigned") {
|
|
117
|
+
setIsConnected(true);
|
|
118
|
+
setSocketId(data.socketId);
|
|
119
|
+
}
|
|
120
|
+
if (![
|
|
121
|
+
"ack",
|
|
122
|
+
"ask_user",
|
|
123
|
+
"response",
|
|
124
|
+
"error",
|
|
125
|
+
"tool_function_call",
|
|
126
|
+
"ask_user",
|
|
127
|
+
"progress",
|
|
128
|
+
].includes(data.type)) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (data.type === "tool_function_call") {
|
|
132
|
+
if (data.function_name === "read_file") {
|
|
133
|
+
if (!hasCodeAccess()) {
|
|
134
|
+
await denyToolAccess("read_file", data);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const argsData = {
|
|
138
|
+
filePath: data.args.filePath,
|
|
139
|
+
lineNumber: data.args.lineNumber,
|
|
140
|
+
before: data.args.before,
|
|
141
|
+
after: data.args.after,
|
|
142
|
+
};
|
|
143
|
+
const result = getContextLines(argsData.filePath, argsData.lineNumber, argsData.before, argsData.after);
|
|
144
|
+
await postToolCallResult(data, result, setChatResponseMessages);
|
|
145
|
+
// await redisClient.set(data.tool_call_id, result, { EX: 120 });
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
if (data.function_name === "grep_search") {
|
|
149
|
+
if (!hasCodeAccess()) {
|
|
150
|
+
await denyToolAccess("grep_search", data);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
await grepSearch(data.args.searchTerm, data);
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (data.function_name === "read_logs") {
|
|
157
|
+
if (!hasLogsAccess()) {
|
|
158
|
+
await denyToolAccess("read_logs", data);
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
await readLogs(data.args.pageNumber, data);
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (data.function_name === "tail_logs") {
|
|
165
|
+
if (!hasLogsAccess()) {
|
|
166
|
+
await denyToolAccess("tail_logs", data);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
await tailLogs(data.args.n, data);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
if (data.function_name === "grep_logs") {
|
|
173
|
+
if (!hasLogsAccess()) {
|
|
174
|
+
await denyToolAccess("grep_logs", data);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
await grepLogs(data.args.pattern, data.args.before, data.args.after, data);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
if (data.function_name === "get_recent_errors") {
|
|
181
|
+
if (!hasLogsAccess()) {
|
|
182
|
+
await denyToolAccess("get_recent_errors", data);
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
await getRecentErrors(data.args.n, data);
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
// trimmed - imp msgs
|
|
190
|
+
// visible - shown
|
|
191
|
+
// chatresponses - all
|
|
192
|
+
// add non-progress responses to trimmedChats
|
|
193
|
+
// @todo this is where the messages get trimmed
|
|
194
|
+
// if (data.type !== "progress") {
|
|
195
|
+
// setTrimmedChats((prevTrimmed) => {
|
|
196
|
+
// const updated = [...prevTrimmed, data];
|
|
197
|
+
// // update visible chats with all trimmed messages
|
|
198
|
+
// setVisibleChats(updated);
|
|
199
|
+
// return updated;
|
|
200
|
+
// });
|
|
201
|
+
// }
|
|
202
|
+
if (data.type === "response") {
|
|
203
|
+
try {
|
|
204
|
+
let messages = data.data.messages ? data.data.messages : [];
|
|
205
|
+
messages = mapStoredMessagesToChatMessages(messages);
|
|
206
|
+
// @todo log response maybe
|
|
207
|
+
// @todo save the state of the graph as well
|
|
208
|
+
setChatResponseMessages((prev) => [...prev, ...messages]);
|
|
209
|
+
if (data.data.sender === "answerNode") {
|
|
210
|
+
setIsLoading(false);
|
|
211
|
+
setTrimmedChats(oldMessages => {
|
|
212
|
+
const updated = [...oldMessages, ...messages];
|
|
213
|
+
setVisibleChats(updated);
|
|
214
|
+
return updated;
|
|
215
|
+
// logd(`____ Logging response from answernode: ${JSON.stringify(data.data)}`)
|
|
216
|
+
// logd(`____ Logging trimmed messages: ${JSON.stringify(messages)}`)
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
if (data.data.sender === "userNode") {
|
|
220
|
+
setIsLoading(false);
|
|
221
|
+
}
|
|
222
|
+
if (data.data.sender === "toolNode") {
|
|
223
|
+
if (messages.length > 0 &&
|
|
224
|
+
messages[messages.length - 1].content
|
|
225
|
+
.toLowerCase()
|
|
226
|
+
.indexOf("reflection") >= 0) {
|
|
227
|
+
setVisibleChats((prev) => [...prev, ...messages]);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
if (data.data.sender !== "toolNode") {
|
|
231
|
+
setVisibleChats((prev) => [...prev, ...messages]);
|
|
232
|
+
}
|
|
233
|
+
logd(`LOGGING RESPONSE SENDER: ${data.data.sender}`);
|
|
234
|
+
}
|
|
235
|
+
catch (err) {
|
|
236
|
+
// @todo log error maybe
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
if (
|
|
240
|
+
// data.type === "response" ||
|
|
241
|
+
data.type === "error" ||
|
|
242
|
+
data.type === "ask_user") {
|
|
243
|
+
setIsLoading(false);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
console.warn("WebSocket message handling warning:", error);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
};
|
|
251
|
+
socket.onerror = (error) => {
|
|
252
|
+
console.error(`Web Socket connection error, please retry`, error);
|
|
253
|
+
setConnectionError("Web Socket connection error, please retry");
|
|
254
|
+
setIsConnected(false);
|
|
255
|
+
setIsLoading(false);
|
|
256
|
+
process.exit();
|
|
257
|
+
};
|
|
258
|
+
// if (!isControlRPressed) {
|
|
259
|
+
// socket.onclose = () => {
|
|
260
|
+
// console.warn("AI chat closed");
|
|
261
|
+
// setConnectionError("AI chat closed");
|
|
262
|
+
// setIsConnected(false);
|
|
263
|
+
// setIsLoading(false);
|
|
264
|
+
// process.exit();
|
|
265
|
+
// };
|
|
266
|
+
// }
|
|
267
|
+
}, [url, authKey]);
|
|
268
|
+
const sendQuery = useCallback((messages, architecture, logs, planningDoc) => {
|
|
269
|
+
const socket = socketRef.current;
|
|
270
|
+
if (socket && socket.readyState === WebSocket.OPEN) {
|
|
271
|
+
setIsLoading(true);
|
|
272
|
+
// const payload = state
|
|
273
|
+
// ? { type: "query", socketId, logs, query, state }
|
|
274
|
+
// : { type: "query", socketId, logs, query };
|
|
275
|
+
const md = getProjectMetadata();
|
|
276
|
+
const payload = {
|
|
277
|
+
type: "query",
|
|
278
|
+
authKey,
|
|
279
|
+
// @todo-critical @todo-hardcode serviceId
|
|
280
|
+
serviceId: md?.window_id,
|
|
281
|
+
userQuery: {
|
|
282
|
+
messages: mapChatMessagesToStoredMessages(messages),
|
|
283
|
+
// architecture: "id: 1764156085616 service_name: oncall backend service_description: this is api backend to the oncall project. written in typescript available_data: - codebase - logs",
|
|
284
|
+
architecture: architecture,
|
|
285
|
+
logs,
|
|
286
|
+
planningDoc: "",
|
|
287
|
+
},
|
|
288
|
+
planningDoc,
|
|
289
|
+
};
|
|
290
|
+
socket.send(JSON.stringify(payload));
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
setConnectionError("WebSocket not connected");
|
|
294
|
+
throw new Error("Cannot send the message: Web socket not connected");
|
|
295
|
+
}
|
|
296
|
+
}, [socketId]);
|
|
297
|
+
// Clean up on unmount
|
|
298
|
+
useEffect(() => {
|
|
299
|
+
return () => {
|
|
300
|
+
if (socketRef.current) {
|
|
301
|
+
socketRef.current.close();
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
}, []);
|
|
305
|
+
async function grepSearch(searchTerm, data) {
|
|
306
|
+
const results = await ripgrepSearch(searchTerm);
|
|
307
|
+
await postToolCallResult(data, results, setChatResponseMessages);
|
|
308
|
+
}
|
|
309
|
+
async function readLogs(pageNumber, data) {
|
|
310
|
+
logd(`Triggered readLogs: ${pageNumber}`);
|
|
311
|
+
pageNumber = parseInt(pageNumber.toString());
|
|
312
|
+
const lines = rawLogData
|
|
313
|
+
.getLogs()
|
|
314
|
+
.split("\n")
|
|
315
|
+
.slice(-50 * pageNumber)
|
|
316
|
+
.join("\n");
|
|
317
|
+
logd(`Triggered readLogs - Posting result: ${lines.length}`);
|
|
318
|
+
await postToolCallResult(data, lines, setChatResponseMessages);
|
|
319
|
+
logd(`Triggered readLogs - done Posting result`);
|
|
320
|
+
}
|
|
321
|
+
async function tailLogs(n, data) {
|
|
322
|
+
try {
|
|
323
|
+
logd(`Triggered tailLogs: ${n}`);
|
|
324
|
+
n = parseInt(n.toString());
|
|
325
|
+
if (Number.isNaN(n) || n <= 0) {
|
|
326
|
+
await postToolCallResult(data, "Invalid value for n. Please provide a positive number of log lines to fetch.", setChatResponseMessages);
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
|
+
const tail = rawLogData.getTailLogs(n);
|
|
330
|
+
logd(`Triggered tailLogs - Posting result: ${tail.length}`);
|
|
331
|
+
await postToolCallResult(data, tail, setChatResponseMessages);
|
|
332
|
+
logd(`Triggered tailLogs - done Posting result`);
|
|
333
|
+
}
|
|
334
|
+
catch (error) {
|
|
335
|
+
logd(`Triggered tailLogs - error: ${JSON.stringify(error)}`);
|
|
336
|
+
await postToolCallResult(data, "Failed to fetch tail logs from CLI.", setChatResponseMessages);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
async function grepLogs(pattern, before, after, data) {
|
|
340
|
+
try {
|
|
341
|
+
logd(`Triggered grepLogs: pattern=${pattern}, before=${before}, after=${after}`);
|
|
342
|
+
if (!pattern || !pattern.trim()) {
|
|
343
|
+
await postToolCallResult(data, "Invalid pattern for grep_logs. Please provide a non-empty pattern.", setChatResponseMessages);
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
346
|
+
const beforeCount = before !== undefined ? parseInt(before.toString()) : 5;
|
|
347
|
+
const afterCount = after !== undefined ? parseInt(after.toString()) : 5;
|
|
348
|
+
const result = rawLogData.getGrepLogs(pattern, beforeCount, afterCount);
|
|
349
|
+
await postToolCallResult(data, result, setChatResponseMessages);
|
|
350
|
+
logd(`Triggered grepLogs - done Posting result of length ${result.length}`);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
logd(`Triggered grepLogs - error: ${JSON.stringify(error)}`);
|
|
354
|
+
await postToolCallResult(data, "Failed to search logs with grep_logs.", setChatResponseMessages);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
async function getRecentErrors(n, data) {
|
|
358
|
+
try {
|
|
359
|
+
logd(`Triggered getRecentErrors: n=${n}`);
|
|
360
|
+
n = parseInt(n.toString());
|
|
361
|
+
if (Number.isNaN(n) || n <= 0) {
|
|
362
|
+
await postToolCallResult(data, "Invalid value for n. Number Provided :" + n.toString(), setChatResponseMessages);
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
const result = rawLogData.getRecentErrors(n);
|
|
366
|
+
await postToolCallResult(data, result, setChatResponseMessages);
|
|
367
|
+
logd(`Triggered getRecentErrors - done Posting result of length ${result.length}`);
|
|
368
|
+
}
|
|
369
|
+
catch (error) {
|
|
370
|
+
logd(`Triggered getRecentErrors - error: ${JSON.stringify(error)}`);
|
|
371
|
+
await postToolCallResult(data, "Failed to fetch recent error logs.", setChatResponseMessages);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
async function postToolCallResult(data, result, setChatResponseMessages) {
|
|
375
|
+
try {
|
|
376
|
+
await toolFunctionCall(data?.tool_call_id, result, data?.args, "tool_function_call");
|
|
377
|
+
}
|
|
378
|
+
catch (error) {
|
|
379
|
+
logd(`Triggered readLogs - failer podting: ${JSON.stringify(error)}`);
|
|
380
|
+
// setChatResponseMessages((prev) => [
|
|
381
|
+
// ...prev,
|
|
382
|
+
// error?.response?.message || "Error, please try again",
|
|
383
|
+
// ]);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
async function denyToolAccess(functionName, data) {
|
|
387
|
+
const serviceId = getServiceId();
|
|
388
|
+
const message = `No Access to execute ${functionName}. with the serviceId of ${serviceId ?? "unknown"}.`;
|
|
389
|
+
await postToolCallResult(data, message, setChatResponseMessages);
|
|
390
|
+
}
|
|
391
|
+
return {
|
|
392
|
+
connectWebSocket,
|
|
393
|
+
socketId,
|
|
394
|
+
sendQuery,
|
|
395
|
+
chatResponseMessages: visibleChats,
|
|
396
|
+
setChatResponseMessages: setVisibleChats,
|
|
397
|
+
setTrimmedChats,
|
|
398
|
+
isConnected,
|
|
399
|
+
connectionError,
|
|
400
|
+
isLoading,
|
|
401
|
+
API_KEY,
|
|
402
|
+
setSocketId,
|
|
403
|
+
setIsConnected,
|
|
404
|
+
socket: socketRef.current,
|
|
405
|
+
setIsLoading,
|
|
406
|
+
setShowControlR,
|
|
407
|
+
showControlR,
|
|
408
|
+
setCompleteChatHistory: setChatResponseMessages,
|
|
409
|
+
};
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=useWebSocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWebSocket.js","sourceRoot":"","sources":["../useWebSocket.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import fs from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import os from "os";
|
|
4
|
+
import { fileURLToPath } from "url";
|
|
5
|
+
import axios from "axios";
|
|
6
|
+
const ONCALL_DIR = path.join(os.homedir(), ".oncall");
|
|
7
|
+
const VERSION_CACHE_FILE = path.join(ONCALL_DIR, "version-cache.json");
|
|
8
|
+
const API_BASE_URL = "http://api.oncall.build/v2/api";
|
|
9
|
+
const CACHE_DURATION_MS = 24 * 60 * 60 * 1000;
|
|
10
|
+
function compareVersions(v1, v2) {
|
|
11
|
+
const parts1 = v1.split(".").map(Number);
|
|
12
|
+
const parts2 = v2.split(".").map(Number);
|
|
13
|
+
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
|
|
14
|
+
const part1 = parts1[i] || 0;
|
|
15
|
+
const part2 = parts2[i] || 0;
|
|
16
|
+
if (part1 < part2)
|
|
17
|
+
return -1;
|
|
18
|
+
if (part1 > part2)
|
|
19
|
+
return 1;
|
|
20
|
+
}
|
|
21
|
+
return 0;
|
|
22
|
+
}
|
|
23
|
+
function isVersionDeprecated(currentVersion, minimumVersion) {
|
|
24
|
+
return compareVersions(currentVersion, minimumVersion) < 0;
|
|
25
|
+
}
|
|
26
|
+
function readVersionCache() {
|
|
27
|
+
if (fs.existsSync(VERSION_CACHE_FILE)) {
|
|
28
|
+
const content = fs.readFileSync(VERSION_CACHE_FILE, "utf8");
|
|
29
|
+
return JSON.parse(content);
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
function ensureOnCallDir() {
|
|
34
|
+
if (!fs.existsSync(ONCALL_DIR)) {
|
|
35
|
+
fs.mkdirSync(ONCALL_DIR, { recursive: true });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function writeVersionCache(cache) {
|
|
39
|
+
ensureOnCallDir();
|
|
40
|
+
fs.writeFileSync(VERSION_CACHE_FILE, JSON.stringify(cache, null, 2));
|
|
41
|
+
}
|
|
42
|
+
function shouldCheckVersion() {
|
|
43
|
+
const cache = readVersionCache();
|
|
44
|
+
if (!cache || !cache.lastCheck) {
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
const now = Date.now();
|
|
48
|
+
const timeSinceLastCheck = now - cache.lastCheck;
|
|
49
|
+
return timeSinceLastCheck >= CACHE_DURATION_MS;
|
|
50
|
+
}
|
|
51
|
+
async function fetchMinimumVersion() {
|
|
52
|
+
try {
|
|
53
|
+
const response = await axios.get(`${API_BASE_URL}/health/minimum-cli-version`);
|
|
54
|
+
if (response.data?.success && response.data?.minimumCliVersion) {
|
|
55
|
+
return response.data.minimumCliVersion;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
console.warn("Failed to check CLI version:", error instanceof Error ? error.message : "Unknown error");
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
function getCurrentVersion() {
|
|
64
|
+
try {
|
|
65
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
66
|
+
const __dirname = path.dirname(__filename);
|
|
67
|
+
const possiblePaths = [
|
|
68
|
+
path.resolve(__dirname, "../package.json"),
|
|
69
|
+
path.resolve(__dirname, "../../package.json"),
|
|
70
|
+
];
|
|
71
|
+
for (const pkgPath of possiblePaths) {
|
|
72
|
+
if (fs.existsSync(pkgPath)) {
|
|
73
|
+
const pkgJson = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
74
|
+
return pkgJson.version || "0.0.0";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return "0.0.0";
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
return "0.0.0";
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
function formatDeprecationError(currentVersion, minimumVersion) {
|
|
84
|
+
return `
|
|
85
|
+
⚠️ CLI VERSION DEPRECATED
|
|
86
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
87
|
+
|
|
88
|
+
Your current version: ${currentVersion}
|
|
89
|
+
Minimum required version: ${minimumVersion}
|
|
90
|
+
|
|
91
|
+
Please update to the latest version to continue using OnCall CLI.
|
|
92
|
+
|
|
93
|
+
To update, run:
|
|
94
|
+
npm install -g oncall-cli@latest
|
|
95
|
+
|
|
96
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
97
|
+
`;
|
|
98
|
+
}
|
|
99
|
+
export async function checkVersionCompatibility(forceCheck = false) {
|
|
100
|
+
const currentVersion = getCurrentVersion();
|
|
101
|
+
const cache = readVersionCache();
|
|
102
|
+
if (!forceCheck && cache?.lastCheck && !shouldCheckVersion()) {
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
const minimumVersion = await fetchMinimumVersion();
|
|
106
|
+
if (!minimumVersion) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
writeVersionCache({
|
|
110
|
+
lastCheck: Date.now(),
|
|
111
|
+
});
|
|
112
|
+
if (isVersionDeprecated(currentVersion, minimumVersion)) {
|
|
113
|
+
console.error(formatDeprecationError(currentVersion, minimumVersion));
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return true;
|
|
117
|
+
}
|
|
118
|
+
export async function checkVersionAndExit() {
|
|
119
|
+
const isCompatible = await checkVersionCompatibility(true);
|
|
120
|
+
if (!isCompatible) {
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=version-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-check.js","sourceRoot":"","sources":["../../utils/version-check.js"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getContextLines(fileName: string, lineNumber: number, before?: number, after?: number): string;
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
//parameter to redis
|
|
3
|
+
export function getContextLines(fileName, lineNumber, before = 30, after = 30) {
|
|
4
|
+
const lines = fs.readFileSync(fileName, "utf-8").split("\n");
|
|
5
|
+
const start = Math.max(0, lineNumber - before - 1);
|
|
6
|
+
const end = Math.min(lines.length, lineNumber + after);
|
|
7
|
+
return lines.slice(start, end).join("\n");
|
|
8
|
+
}
|
|
9
|
+
//redis connection
|
|
10
|
+
// const redisClient = createClient({
|
|
11
|
+
// url: `rediss://${config.redis_username}:${config.redis_password}@${config.redis_host}:${config.redis_port}`,
|
|
12
|
+
// socket: { tls: true },
|
|
13
|
+
// });
|
|
14
|
+
// redisClient.on("error", (err) => {
|
|
15
|
+
// console.error("Redis Client Error", err);
|
|
16
|
+
// });
|
|
17
|
+
// redisClient.on("connect", () => {
|
|
18
|
+
// console.log("Redis Client Connected");
|
|
19
|
+
// });
|
|
20
|
+
// redisClient.connect();
|
|
21
|
+
// export default redisClient;
|
|
22
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAGzB,oBAAoB;AACpB,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,UAAkB,EAClB,SAAiB,EAAE,EACnB,QAAgB,EAAE;IAElB,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;IACvD,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5C,CAAC;AAED,kBAAkB;AAClB,qCAAqC;AACrC,iHAAiH;AACjH,2BAA2B;AAC3B,MAAM;AAEN,qCAAqC;AACrC,8CAA8C;AAC9C,MAAM;AAEN,oCAAoC;AACpC,2CAA2C;AAC3C,MAAM;AAEN,yBAAyB;AAEzB,8BAA8B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AddressInfo } from "net";
|
|
2
|
+
type Logger = Pick<Console, "log" | "info" | "warn" | "error">;
|
|
3
|
+
export interface OnCallWebSocketServerOptions {
|
|
4
|
+
port?: number;
|
|
5
|
+
host?: string;
|
|
6
|
+
logger?: Logger;
|
|
7
|
+
}
|
|
8
|
+
export declare class OnCallWebSocketServer {
|
|
9
|
+
private wss;
|
|
10
|
+
private readonly allProjects;
|
|
11
|
+
private readonly options;
|
|
12
|
+
constructor(options?: OnCallWebSocketServerOptions);
|
|
13
|
+
get address(): AddressInfo | null;
|
|
14
|
+
start(): Promise<void>;
|
|
15
|
+
stop(): Promise<void>;
|
|
16
|
+
private handleServerClose;
|
|
17
|
+
private handleConnection;
|
|
18
|
+
private handleMessage;
|
|
19
|
+
private send;
|
|
20
|
+
private normalizeProjectPayload;
|
|
21
|
+
private upsertProjectRegistration;
|
|
22
|
+
}
|
|
23
|
+
export declare function startOnCallWebSocketServer(options?: OnCallWebSocketServerOptions): Promise<OnCallWebSocketServer>;
|
|
24
|
+
export {};
|