@qodo/sdk 0.1.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/LICENSE +118 -0
- package/README.md +121 -0
- package/dist/api/agent.d.ts +69 -0
- package/dist/api/agent.d.ts.map +1 -0
- package/dist/api/agent.js +1034 -0
- package/dist/api/agent.js.map +1 -0
- package/dist/api/analytics.d.ts +43 -0
- package/dist/api/analytics.d.ts.map +1 -0
- package/dist/api/analytics.js +163 -0
- package/dist/api/analytics.js.map +1 -0
- package/dist/api/http.d.ts +5 -0
- package/dist/api/http.d.ts.map +1 -0
- package/dist/api/http.js +59 -0
- package/dist/api/http.js.map +1 -0
- package/dist/api/index.d.ts +12 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +17 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/taskTracking.d.ts +54 -0
- package/dist/api/taskTracking.d.ts.map +1 -0
- package/dist/api/taskTracking.js +208 -0
- package/dist/api/taskTracking.js.map +1 -0
- package/dist/api/types.d.ts +92 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +2 -0
- package/dist/api/types.js.map +1 -0
- package/dist/api/utils.d.ts +8 -0
- package/dist/api/utils.d.ts.map +1 -0
- package/dist/api/utils.js +54 -0
- package/dist/api/utils.js.map +1 -0
- package/dist/api/websocket.d.ts +74 -0
- package/dist/api/websocket.d.ts.map +1 -0
- package/dist/api/websocket.js +685 -0
- package/dist/api/websocket.js.map +1 -0
- package/dist/auth/index.d.ts +25 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +85 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/clients/index.d.ts +8 -0
- package/dist/clients/index.d.ts.map +1 -0
- package/dist/clients/index.js +7 -0
- package/dist/clients/index.js.map +1 -0
- package/dist/clients/info/InfoClient.d.ts +37 -0
- package/dist/clients/info/InfoClient.d.ts.map +1 -0
- package/dist/clients/info/InfoClient.js +69 -0
- package/dist/clients/info/InfoClient.js.map +1 -0
- package/dist/clients/info/index.d.ts +4 -0
- package/dist/clients/info/index.d.ts.map +1 -0
- package/dist/clients/info/index.js +2 -0
- package/dist/clients/info/index.js.map +1 -0
- package/dist/clients/info/types.d.ts +21 -0
- package/dist/clients/info/types.d.ts.map +1 -0
- package/dist/clients/info/types.js +2 -0
- package/dist/clients/info/types.js.map +1 -0
- package/dist/clients/sessions/SessionsClient.d.ts +34 -0
- package/dist/clients/sessions/SessionsClient.d.ts.map +1 -0
- package/dist/clients/sessions/SessionsClient.js +71 -0
- package/dist/clients/sessions/SessionsClient.js.map +1 -0
- package/dist/clients/sessions/index.d.ts +4 -0
- package/dist/clients/sessions/index.d.ts.map +1 -0
- package/dist/clients/sessions/index.js +2 -0
- package/dist/clients/sessions/index.js.map +1 -0
- package/dist/clients/sessions/types.d.ts +20 -0
- package/dist/clients/sessions/types.d.ts.map +1 -0
- package/dist/clients/sessions/types.js +2 -0
- package/dist/clients/sessions/types.js.map +1 -0
- package/dist/config/ConfigManager.d.ts +43 -0
- package/dist/config/ConfigManager.d.ts.map +1 -0
- package/dist/config/ConfigManager.js +472 -0
- package/dist/config/ConfigManager.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/urlConfig.d.ts +15 -0
- package/dist/config/urlConfig.d.ts.map +1 -0
- package/dist/config/urlConfig.js +75 -0
- package/dist/config/urlConfig.js.map +1 -0
- package/dist/constants/errors.d.ts +2 -0
- package/dist/constants/errors.d.ts.map +1 -0
- package/dist/constants/errors.js +2 -0
- package/dist/constants/errors.js.map +1 -0
- package/dist/constants/index.d.ts +7 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +11 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/constants/tools.d.ts +4 -0
- package/dist/constants/tools.d.ts.map +1 -0
- package/dist/constants/tools.js +4 -0
- package/dist/constants/tools.js.map +1 -0
- package/dist/constants/versions.d.ts +2 -0
- package/dist/constants/versions.d.ts.map +1 -0
- package/dist/constants/versions.js +2 -0
- package/dist/constants/versions.js.map +1 -0
- package/dist/context/buildUserContext.d.ts +18 -0
- package/dist/context/buildUserContext.d.ts.map +1 -0
- package/dist/context/buildUserContext.js +34 -0
- package/dist/context/buildUserContext.js.map +1 -0
- package/dist/context/index.d.ts +9 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +9 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/messageManager.d.ts +42 -0
- package/dist/context/messageManager.d.ts.map +1 -0
- package/dist/context/messageManager.js +322 -0
- package/dist/context/messageManager.js.map +1 -0
- package/dist/context/taskFocus.d.ts +2 -0
- package/dist/context/taskFocus.d.ts.map +1 -0
- package/dist/context/taskFocus.js +26 -0
- package/dist/context/taskFocus.js.map +1 -0
- package/dist/context/userInput.d.ts +3 -0
- package/dist/context/userInput.d.ts.map +1 -0
- package/dist/context/userInput.js +20 -0
- package/dist/context/userInput.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/MCPManager.d.ts +125 -0
- package/dist/mcp/MCPManager.d.ts.map +1 -0
- package/dist/mcp/MCPManager.js +616 -0
- package/dist/mcp/MCPManager.js.map +1 -0
- package/dist/mcp/approvedTools.d.ts +4 -0
- package/dist/mcp/approvedTools.d.ts.map +1 -0
- package/dist/mcp/approvedTools.js +19 -0
- package/dist/mcp/approvedTools.js.map +1 -0
- package/dist/mcp/baseServer.d.ts +75 -0
- package/dist/mcp/baseServer.d.ts.map +1 -0
- package/dist/mcp/baseServer.js +107 -0
- package/dist/mcp/baseServer.js.map +1 -0
- package/dist/mcp/builtinServers.d.ts +15 -0
- package/dist/mcp/builtinServers.d.ts.map +1 -0
- package/dist/mcp/builtinServers.js +155 -0
- package/dist/mcp/builtinServers.js.map +1 -0
- package/dist/mcp/dynamicBEServer.d.ts +20 -0
- package/dist/mcp/dynamicBEServer.d.ts.map +1 -0
- package/dist/mcp/dynamicBEServer.js +52 -0
- package/dist/mcp/dynamicBEServer.js.map +1 -0
- package/dist/mcp/index.d.ts +19 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +24 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/mcpInitialization.d.ts +2 -0
- package/dist/mcp/mcpInitialization.d.ts.map +1 -0
- package/dist/mcp/mcpInitialization.js +56 -0
- package/dist/mcp/mcpInitialization.js.map +1 -0
- package/dist/mcp/servers/filesystem.d.ts +75 -0
- package/dist/mcp/servers/filesystem.d.ts.map +1 -0
- package/dist/mcp/servers/filesystem.js +992 -0
- package/dist/mcp/servers/filesystem.js.map +1 -0
- package/dist/mcp/servers/gerrit.d.ts +19 -0
- package/dist/mcp/servers/gerrit.d.ts.map +1 -0
- package/dist/mcp/servers/gerrit.js +515 -0
- package/dist/mcp/servers/gerrit.js.map +1 -0
- package/dist/mcp/servers/git.d.ts +18 -0
- package/dist/mcp/servers/git.d.ts.map +1 -0
- package/dist/mcp/servers/git.js +441 -0
- package/dist/mcp/servers/git.js.map +1 -0
- package/dist/mcp/servers/ripgrep.d.ts +34 -0
- package/dist/mcp/servers/ripgrep.d.ts.map +1 -0
- package/dist/mcp/servers/ripgrep.js +517 -0
- package/dist/mcp/servers/ripgrep.js.map +1 -0
- package/dist/mcp/servers/shell.d.ts +20 -0
- package/dist/mcp/servers/shell.d.ts.map +1 -0
- package/dist/mcp/servers/shell.js +603 -0
- package/dist/mcp/servers/shell.js.map +1 -0
- package/dist/mcp/serversRegistry.d.ts +55 -0
- package/dist/mcp/serversRegistry.d.ts.map +1 -0
- package/dist/mcp/serversRegistry.js +410 -0
- package/dist/mcp/serversRegistry.js.map +1 -0
- package/dist/mcp/toolProcessor.d.ts +42 -0
- package/dist/mcp/toolProcessor.d.ts.map +1 -0
- package/dist/mcp/toolProcessor.js +200 -0
- package/dist/mcp/toolProcessor.js.map +1 -0
- package/dist/mcp/types.d.ts +29 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +2 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/parser/index.d.ts +72 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +967 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/types.d.ts +153 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +6 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/parser/utils.d.ts +18 -0
- package/dist/parser/utils.d.ts.map +1 -0
- package/dist/parser/utils.js +64 -0
- package/dist/parser/utils.js.map +1 -0
- package/dist/sdk/QodoSDK.d.ts +152 -0
- package/dist/sdk/QodoSDK.d.ts.map +1 -0
- package/dist/sdk/QodoSDK.js +786 -0
- package/dist/sdk/QodoSDK.js.map +1 -0
- package/dist/sdk/bootstrap.d.ts +16 -0
- package/dist/sdk/bootstrap.d.ts.map +1 -0
- package/dist/sdk/bootstrap.js +21 -0
- package/dist/sdk/bootstrap.js.map +1 -0
- package/dist/sdk/builders.d.ts +54 -0
- package/dist/sdk/builders.d.ts.map +1 -0
- package/dist/sdk/builders.js +117 -0
- package/dist/sdk/builders.js.map +1 -0
- package/dist/sdk/defaults.d.ts +11 -0
- package/dist/sdk/defaults.d.ts.map +1 -0
- package/dist/sdk/defaults.js +39 -0
- package/dist/sdk/defaults.js.map +1 -0
- package/dist/sdk/discovery.d.ts +2 -0
- package/dist/sdk/discovery.d.ts.map +1 -0
- package/dist/sdk/discovery.js +25 -0
- package/dist/sdk/discovery.js.map +1 -0
- package/dist/sdk/events.d.ts +168 -0
- package/dist/sdk/events.d.ts.map +1 -0
- package/dist/sdk/events.js +52 -0
- package/dist/sdk/events.js.map +1 -0
- package/dist/sdk/index.d.ts +17 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +17 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/runner/AgentRunner.d.ts +22 -0
- package/dist/sdk/runner/AgentRunner.d.ts.map +1 -0
- package/dist/sdk/runner/AgentRunner.js +222 -0
- package/dist/sdk/runner/AgentRunner.js.map +1 -0
- package/dist/sdk/runner/finalize.d.ts +9 -0
- package/dist/sdk/runner/finalize.d.ts.map +1 -0
- package/dist/sdk/runner/finalize.js +115 -0
- package/dist/sdk/runner/finalize.js.map +1 -0
- package/dist/sdk/runner/formats.d.ts +7 -0
- package/dist/sdk/runner/formats.d.ts.map +1 -0
- package/dist/sdk/runner/formats.js +91 -0
- package/dist/sdk/runner/formats.js.map +1 -0
- package/dist/sdk/runner/index.d.ts +9 -0
- package/dist/sdk/runner/index.d.ts.map +1 -0
- package/dist/sdk/runner/index.js +9 -0
- package/dist/sdk/runner/index.js.map +1 -0
- package/dist/sdk/runner/progress.d.ts +3 -0
- package/dist/sdk/runner/progress.d.ts.map +1 -0
- package/dist/sdk/runner/progress.js +16 -0
- package/dist/sdk/runner/progress.js.map +1 -0
- package/dist/sdk/schemas.d.ts +50 -0
- package/dist/sdk/schemas.d.ts.map +1 -0
- package/dist/sdk/schemas.js +145 -0
- package/dist/sdk/schemas.js.map +1 -0
- package/dist/session/SessionContext.d.ts +86 -0
- package/dist/session/SessionContext.d.ts.map +1 -0
- package/dist/session/SessionContext.js +395 -0
- package/dist/session/SessionContext.js.map +1 -0
- package/dist/session/environment.d.ts +42 -0
- package/dist/session/environment.d.ts.map +1 -0
- package/dist/session/environment.js +27 -0
- package/dist/session/environment.js.map +1 -0
- package/dist/session/history.d.ts +3 -0
- package/dist/session/history.d.ts.map +1 -0
- package/dist/session/history.js +67 -0
- package/dist/session/history.js.map +1 -0
- package/dist/session/index.d.ts +10 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +9 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/serverData.d.ts +38 -0
- package/dist/session/serverData.d.ts.map +1 -0
- package/dist/session/serverData.js +241 -0
- package/dist/session/serverData.js.map +1 -0
- package/dist/tracking/Tracker.d.ts +55 -0
- package/dist/tracking/Tracker.d.ts.map +1 -0
- package/dist/tracking/Tracker.js +217 -0
- package/dist/tracking/Tracker.js.map +1 -0
- package/dist/tracking/index.d.ts +8 -0
- package/dist/tracking/index.d.ts.map +1 -0
- package/dist/tracking/index.js +8 -0
- package/dist/tracking/index.js.map +1 -0
- package/dist/tracking/schemas.d.ts +292 -0
- package/dist/tracking/schemas.d.ts.map +1 -0
- package/dist/tracking/schemas.js +91 -0
- package/dist/tracking/schemas.js.map +1 -0
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/extractSetFlags.d.ts +6 -0
- package/dist/utils/extractSetFlags.d.ts.map +1 -0
- package/dist/utils/extractSetFlags.js +16 -0
- package/dist/utils/extractSetFlags.js.map +1 -0
- package/dist/utils/formatTimeAgo.d.ts +2 -0
- package/dist/utils/formatTimeAgo.d.ts.map +1 -0
- package/dist/utils/formatTimeAgo.js +20 -0
- package/dist/utils/formatTimeAgo.js.map +1 -0
- package/dist/utils/index.d.ts +12 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/machineId.d.ts +14 -0
- package/dist/utils/machineId.d.ts.map +1 -0
- package/dist/utils/machineId.js +66 -0
- package/dist/utils/machineId.js.map +1 -0
- package/dist/utils/pathUtils.d.ts +22 -0
- package/dist/utils/pathUtils.d.ts.map +1 -0
- package/dist/utils/pathUtils.js +54 -0
- package/dist/utils/pathUtils.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +23 -0
- package/dist/version.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { v4 as uuid } from "uuid";
|
|
2
|
+
import { trackAgentStart, trackAgentFinish } from "./analytics.js";
|
|
3
|
+
/**
|
|
4
|
+
* TaskTracker handles all tracking-related functionality for agent tasks.
|
|
5
|
+
* This includes tracking task starts, finishes, tool executions, and code changes.
|
|
6
|
+
*/
|
|
7
|
+
export class TaskTracker {
|
|
8
|
+
// Task tracking context
|
|
9
|
+
trackingContext;
|
|
10
|
+
sessionContext;
|
|
11
|
+
mcpManager;
|
|
12
|
+
constructor(sessionContext, mcpManager) {
|
|
13
|
+
this.sessionContext = sessionContext;
|
|
14
|
+
this.mcpManager = mcpManager;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize task tracking for a new task
|
|
18
|
+
*/
|
|
19
|
+
initializeTaskTracking(agentSession) {
|
|
20
|
+
const requestId = agentSession.requestId || uuid();
|
|
21
|
+
const sessionId = agentSession.sessionId;
|
|
22
|
+
const customModel = agentSession?.data?.custom_model || this.sessionContext?.getModel();
|
|
23
|
+
const executionMode = this.getExecutionMode(agentSession);
|
|
24
|
+
const interfaceType = this.getInterfaceType();
|
|
25
|
+
// Initialize tracking context
|
|
26
|
+
this.trackingContext = {
|
|
27
|
+
start: {
|
|
28
|
+
requestId,
|
|
29
|
+
sessionId,
|
|
30
|
+
customModel,
|
|
31
|
+
executionMode,
|
|
32
|
+
interfaceType
|
|
33
|
+
},
|
|
34
|
+
current: {
|
|
35
|
+
executedTools: [],
|
|
36
|
+
codeBlocks: [],
|
|
37
|
+
isFinished: false
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
// Fire analytics with error handling
|
|
41
|
+
trackAgentStart(requestId, sessionId, executionMode, interfaceType, customModel).catch(error => {
|
|
42
|
+
console.debug('Analytics tracking failed:', error);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Track the finish of a task
|
|
47
|
+
*/
|
|
48
|
+
async trackTaskFinish(isError = false) {
|
|
49
|
+
if (!this.trackingContext || this.trackingContext.current.isFinished) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (!this.validateTrackingState()) {
|
|
53
|
+
console.warn('Task tracking not properly initialized, skipping finish tracking');
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.trackingContext.current.isFinished = true;
|
|
57
|
+
// Get available tools count
|
|
58
|
+
const availableToolsCount = this.mcpManager && this.sessionContext ?
|
|
59
|
+
Array.from(this.mcpManager.getEnabledTools(this.sessionContext.getAvailableTools(), this.sessionContext.getIgnoreTools()).values())
|
|
60
|
+
.reduce((sum, tools) => sum + tools.length, 0) : 0;
|
|
61
|
+
// Track with error handling
|
|
62
|
+
trackAgentFinish(this.trackingContext.start.requestId, this.trackingContext.start.sessionId, this.trackingContext.current.executedTools, availableToolsCount, this.trackingContext.start.executionMode, this.trackingContext.start.interfaceType, this.trackingContext.start.customModel, isError, this.trackingContext.current.codeBlocks).catch(error => {
|
|
63
|
+
console.debug('Analytics tracking failed:', error);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Track a tool execution
|
|
68
|
+
*/
|
|
69
|
+
trackToolExecution(serverName, toolName) {
|
|
70
|
+
if (this.trackingContext) {
|
|
71
|
+
this.trackingContext.current.executedTools.push({
|
|
72
|
+
origin: this.getToolOrigin(serverName),
|
|
73
|
+
server_name: serverName,
|
|
74
|
+
tool_name: toolName
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Track filesystem changes for code block analytics
|
|
80
|
+
*/
|
|
81
|
+
trackFileSystemChanges(toolName, toolArgs, result) {
|
|
82
|
+
if (!this.trackingContext) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
if (toolName === "write_file") {
|
|
87
|
+
// For write_file, count the lines in the content
|
|
88
|
+
const content = toolArgs.content || "";
|
|
89
|
+
const lines = content.split('\n').length;
|
|
90
|
+
const codeBlock = {
|
|
91
|
+
code_block: lines,
|
|
92
|
+
application: "new_file",
|
|
93
|
+
display_type: "auto_applied"
|
|
94
|
+
};
|
|
95
|
+
this.trackingContext.current.codeBlocks.push(codeBlock);
|
|
96
|
+
}
|
|
97
|
+
else if (toolName === "edit_file") {
|
|
98
|
+
// For edit_file, count the total of added + removed lines
|
|
99
|
+
let totalChangedLines = 0;
|
|
100
|
+
if (toolArgs.edits && Array.isArray(toolArgs.edits)) {
|
|
101
|
+
// New format with edits array
|
|
102
|
+
for (const edit of toolArgs.edits) {
|
|
103
|
+
const oldLines = (edit.oldText || "").split('\n').length;
|
|
104
|
+
const newLines = (edit.newText || "").split('\n').length;
|
|
105
|
+
// Count both removed and added lines
|
|
106
|
+
totalChangedLines += oldLines + newLines;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else if (toolArgs.operations && Array.isArray(toolArgs.operations)) {
|
|
110
|
+
// Legacy format with operations array
|
|
111
|
+
for (const op of toolArgs.operations) {
|
|
112
|
+
const oldLines = (op.oldText || "").split('\n').length;
|
|
113
|
+
const newLines = (op.newText || "").split('\n').length;
|
|
114
|
+
// Count both removed and added lines
|
|
115
|
+
totalChangedLines += oldLines + newLines;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (toolArgs.oldText !== undefined && toolArgs.newText !== undefined) {
|
|
119
|
+
// Single operation (backward compatibility)
|
|
120
|
+
const oldLines = (toolArgs.oldText || "").split('\n').length;
|
|
121
|
+
const newLines = (toolArgs.newText || "").split('\n').length;
|
|
122
|
+
// Count both removed and added lines
|
|
123
|
+
totalChangedLines = oldLines + newLines;
|
|
124
|
+
}
|
|
125
|
+
if (totalChangedLines > 0) {
|
|
126
|
+
const codeBlock = {
|
|
127
|
+
code_block: totalChangedLines,
|
|
128
|
+
application: "modify_existing",
|
|
129
|
+
display_type: "auto_applied"
|
|
130
|
+
};
|
|
131
|
+
this.trackingContext.current.codeBlocks.push(codeBlock);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.debug("Error tracking filesystem changes:", error);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Determine the origin of a tool based on its server name
|
|
141
|
+
*/
|
|
142
|
+
getToolOrigin(serverName) {
|
|
143
|
+
// Check if it's a builtin server (case-insensitive)
|
|
144
|
+
const builtinServers = ["file system", "filesystem", "git", "ripgrep"];
|
|
145
|
+
if (builtinServers.includes(serverName.toLowerCase())) {
|
|
146
|
+
return "built_in";
|
|
147
|
+
}
|
|
148
|
+
// Check if it's a backend/remote server (starts with "qodo")
|
|
149
|
+
if (serverName.toLowerCase().startsWith("qodo")) {
|
|
150
|
+
return "remote";
|
|
151
|
+
}
|
|
152
|
+
// Otherwise it's a custom server
|
|
153
|
+
return "custom";
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get the interface type. In SDK context, this is always "sdk".
|
|
157
|
+
*/
|
|
158
|
+
getInterfaceType() {
|
|
159
|
+
return "sdk";
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Determine execution mode from agent session
|
|
163
|
+
*/
|
|
164
|
+
getExecutionMode(agentSession) {
|
|
165
|
+
if (agentSession.data.ci_mode === true) {
|
|
166
|
+
return "cmdline";
|
|
167
|
+
}
|
|
168
|
+
else if ((agentSession.command || this.sessionContext?.getCommand())?.name) {
|
|
169
|
+
return "agent_file";
|
|
170
|
+
}
|
|
171
|
+
else if (agentSession.data.ci_mode === false) {
|
|
172
|
+
// Explicitly set to false means interactive mode (chat)
|
|
173
|
+
return "chat";
|
|
174
|
+
}
|
|
175
|
+
else if (agentSession.data.user_request) {
|
|
176
|
+
// User request without ci_mode specified means command line
|
|
177
|
+
return "cmdline";
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
return "chat";
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Validate that all required tracking fields are present
|
|
185
|
+
*/
|
|
186
|
+
validateTrackingState() {
|
|
187
|
+
return !!(this.trackingContext?.start.requestId &&
|
|
188
|
+
this.trackingContext?.start.sessionId &&
|
|
189
|
+
this.trackingContext?.start.executionMode &&
|
|
190
|
+
this.trackingContext?.start.interfaceType);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Check if there's an active tracking context
|
|
194
|
+
*/
|
|
195
|
+
hasActiveTracking() {
|
|
196
|
+
return !!this.trackingContext && !this.trackingContext.current.isFinished;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Check if we should track a user request
|
|
200
|
+
*/
|
|
201
|
+
shouldTrackUserRequest(data) {
|
|
202
|
+
// Only track if this is a user-initiated request with actual content (not tool responses or empty requests)
|
|
203
|
+
const hasUserContent = data.user_request && typeof data.user_request === 'string' && data.user_request.trim().length > 0;
|
|
204
|
+
const isUserRequest = hasUserContent && !data.tool && !data.tool_id && !data.answer;
|
|
205
|
+
return isUserRequest && (!this.trackingContext || this.trackingContext.current.isFinished);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
//# sourceMappingURL=taskTracking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"taskTracking.js","sourceRoot":"","sources":["../../src/api/taskTracking.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,EAAE,IAAI,IAAI,EAAC,MAAM,MAAM,CAAC;AAChC,OAAO,EAAC,eAAe,EAAE,gBAAgB,EAAwB,MAAM,gBAAgB,CAAC;AAKxF;;;GAGG;AACH,MAAM,OAAO,WAAW;IACtB,wBAAwB;IAChB,eAAe,CAiBrB;IAEe,cAAc,CAAkB;IAChC,UAAU,CAAc;IAEzC,YAAY,cAA+B,EAAE,UAAuB;QAClE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,YAA0B;QACtD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACzC,MAAM,WAAW,GAAG,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;QACxF,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE9C,8BAA8B;QAC9B,IAAI,CAAC,eAAe,GAAG;YACrB,KAAK,EAAE;gBACL,SAAS;gBACT,SAAS;gBACT,WAAW;gBACX,aAAa;gBACb,aAAa;aACd;YACD,OAAO,EAAE;gBACP,aAAa,EAAE,EAAE;gBACjB,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,KAAK;aAClB;SACF,CAAC;QAEF,qCAAqC;QACrC,eAAe,CACb,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,WAAW,CACZ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,UAAmB,KAAK;QACnD,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACjF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;QAE/C,4BAA4B;QAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CACxC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EACvC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CACrC,CAAC,MAAM,EAAE,CAAC;iBACR,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,4BAA4B;QAC5B,gBAAgB,CACd,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EACpC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,EACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,EAC1C,mBAAmB,EACnB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,EACxC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,aAAa,EACxC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,EACtC,OAAO,EACP,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CACxC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,UAAkB,EAAE,QAAgB;QAC5D,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;gBACtC,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,QAAQ;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,QAAgB,EAAE,QAAa,EAAE,MAAkB;QAC/E,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;gBAC9B,iDAAiD;gBACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;gBACvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBAEzC,MAAM,SAAS,GAAc;oBAC3B,UAAU,EAAE,KAAK;oBACjB,WAAW,EAAE,UAAU;oBACvB,YAAY,EAAE,cAAc;iBAC7B,CAAC;gBACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1D,CAAC;iBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;gBACpC,0DAA0D;gBAC1D,IAAI,iBAAiB,GAAG,CAAC,CAAC;gBAE1B,IAAI,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;oBACpD,8BAA8B;oBAC9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;wBAClC,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;wBACzD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;wBACzD,qCAAqC;wBACrC,iBAAiB,IAAI,QAAQ,GAAG,QAAQ,CAAC;oBAC3C,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;oBACrE,sCAAsC;oBACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;wBACrC,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;wBACvD,MAAM,QAAQ,GAAG,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;wBACvD,qCAAqC;wBACrC,iBAAiB,IAAI,QAAQ,GAAG,QAAQ,CAAC;oBAC3C,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC5E,4CAA4C;oBAC5C,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBAC7D,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBAC7D,qCAAqC;oBACrC,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;gBAC1C,CAAC;gBAED,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;oBAC1B,MAAM,SAAS,GAAc;wBAC3B,UAAU,EAAE,iBAAiB;wBAC7B,WAAW,EAAE,iBAAiB;wBAC9B,YAAY,EAAE,cAAc;qBAC7B,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,UAAkB;QACtC,oDAAoD;QACpD,MAAM,cAAc,GAAG,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACvE,IAAI,cAAc,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACtD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,6DAA6D;QAC7D,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,YAA0B;QACjD,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;YAC7E,OAAO,YAAY,CAAC;QACtB,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YAC/C,wDAAwD;YACxD,OAAO,MAAM,CAAC;QAChB,CAAC;aAAM,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YAC1C,4DAA4D;YAC5D,OAAO,SAAS,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,qBAAqB;QAC3B,OAAO,CAAC,CAAC,CACP,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS;YACrC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,SAAS;YACrC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa;YACzC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAC1C,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,iBAAiB;QACtB,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,IAAS;QACrC,4GAA4G;QAC5G,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;QACzH,MAAM,aAAa,GAAG,cAAc,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEpF,OAAO,aAAa,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7F,CAAC;CACF"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { CommandConfig, OutputSchema } from "../parser/types.js";
|
|
2
|
+
export interface AgentResponse {
|
|
3
|
+
content?: string;
|
|
4
|
+
error?: string;
|
|
5
|
+
forceStop?: boolean;
|
|
6
|
+
toolData?: ToolData;
|
|
7
|
+
}
|
|
8
|
+
export interface TaskBaseData {
|
|
9
|
+
projects_root_path: string[];
|
|
10
|
+
project_structure?: string;
|
|
11
|
+
instructions?: string;
|
|
12
|
+
cwd?: string;
|
|
13
|
+
previous_sessions_summarization?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface BaseData {
|
|
16
|
+
session_id: string;
|
|
17
|
+
user_data: UserDataRequest;
|
|
18
|
+
agent_type: "cli";
|
|
19
|
+
tools: Record<string, Record<string, any>[]>;
|
|
20
|
+
custom_model?: string;
|
|
21
|
+
permissions?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface TaskRequestData {
|
|
24
|
+
user_request?: string;
|
|
25
|
+
user_context?: Record<string, any>;
|
|
26
|
+
output_schema?: OutputSchema;
|
|
27
|
+
custom_model?: string;
|
|
28
|
+
answer?: Record<string, any>;
|
|
29
|
+
tool?: string;
|
|
30
|
+
tool_id?: string;
|
|
31
|
+
ci_mode?: boolean;
|
|
32
|
+
max_iterations?: number;
|
|
33
|
+
execution_strategy?: "plan" | "act";
|
|
34
|
+
qodomd?: string;
|
|
35
|
+
images?: string[];
|
|
36
|
+
git_sha1?: string;
|
|
37
|
+
}
|
|
38
|
+
export type AgentRequest = BaseData & TaskBaseData & TaskRequestData;
|
|
39
|
+
export interface AgentSession {
|
|
40
|
+
sessionId: string;
|
|
41
|
+
requestId: string;
|
|
42
|
+
abortController?: AbortController;
|
|
43
|
+
data: TaskRequestData;
|
|
44
|
+
command?: CommandConfig;
|
|
45
|
+
userEngagementCallback?: (response: AgentResponse) => void;
|
|
46
|
+
waitingForResponse?: boolean;
|
|
47
|
+
lastPacketTimestamp?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface PendingToolData {
|
|
50
|
+
agentSession: AgentSession;
|
|
51
|
+
toolData: ToolData;
|
|
52
|
+
}
|
|
53
|
+
export interface ToolResult {
|
|
54
|
+
isError: boolean;
|
|
55
|
+
content: {
|
|
56
|
+
type: string;
|
|
57
|
+
text: string;
|
|
58
|
+
}[];
|
|
59
|
+
}
|
|
60
|
+
export interface ToolData {
|
|
61
|
+
server_name: string;
|
|
62
|
+
tool: string;
|
|
63
|
+
tool_args: Record<string, unknown>;
|
|
64
|
+
tool_reasoning?: string;
|
|
65
|
+
identifier?: string;
|
|
66
|
+
pending_approval?: boolean;
|
|
67
|
+
tool_result?: ToolResult;
|
|
68
|
+
tool_args_for_ui: any;
|
|
69
|
+
session_id?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface PendingToolData {
|
|
72
|
+
agentSession: AgentSession;
|
|
73
|
+
toolData: ToolData;
|
|
74
|
+
}
|
|
75
|
+
export interface UserDataRequest {
|
|
76
|
+
extension_version: string;
|
|
77
|
+
os_platform: NodeJS.Platform;
|
|
78
|
+
os_version: string;
|
|
79
|
+
editor_type: "cli";
|
|
80
|
+
}
|
|
81
|
+
export interface AuthConfig {
|
|
82
|
+
token: string;
|
|
83
|
+
source: 'env' | 'file';
|
|
84
|
+
}
|
|
85
|
+
export interface APIRequest {
|
|
86
|
+
method: "GET" | "POST" | "DELETE";
|
|
87
|
+
url: string;
|
|
88
|
+
data?: unknown;
|
|
89
|
+
requestId?: string;
|
|
90
|
+
timeout?: number;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { UserDataRequest } from "./types.js";
|
|
2
|
+
export declare function getUserData(): UserDataRequest;
|
|
3
|
+
/**
|
|
4
|
+
* Gets the current git SHA1 commit hash from the current working directory.
|
|
5
|
+
* Returns undefined if not in a git repository or if git command fails.
|
|
6
|
+
*/
|
|
7
|
+
export declare function getCurrentGitSha1(): string | undefined;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/api/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAiC3C,wBAAgB,WAAW,IAAI,eAAe,CAO7C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAatD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { fileURLToPath } from 'url';
|
|
3
|
+
import { dirname, resolve } from 'path';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
// Handle version dynamically
|
|
6
|
+
let cachedVersion = null;
|
|
7
|
+
function getVersion() {
|
|
8
|
+
if (cachedVersion !== null)
|
|
9
|
+
return cachedVersion;
|
|
10
|
+
if (typeof __APP_VERSION__ !== 'undefined') {
|
|
11
|
+
cachedVersion = __APP_VERSION__;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
try {
|
|
15
|
+
// In development, read from package.json
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = dirname(__filename);
|
|
18
|
+
const packageJsonPath = resolve(__dirname, '../../package.json');
|
|
19
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
20
|
+
cachedVersion = packageJson.version;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
cachedVersion = 'unknown';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return cachedVersion;
|
|
27
|
+
}
|
|
28
|
+
export function getUserData() {
|
|
29
|
+
return {
|
|
30
|
+
extension_version: getVersion(),
|
|
31
|
+
os_platform: process.platform,
|
|
32
|
+
os_version: process.version,
|
|
33
|
+
editor_type: "cli",
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets the current git SHA1 commit hash from the current working directory.
|
|
38
|
+
* Returns undefined if not in a git repository or if git command fails.
|
|
39
|
+
*/
|
|
40
|
+
export function getCurrentGitSha1() {
|
|
41
|
+
try {
|
|
42
|
+
const output = execSync('git rev-parse HEAD', {
|
|
43
|
+
cwd: process.cwd(),
|
|
44
|
+
encoding: 'utf8',
|
|
45
|
+
stdio: ['pipe', 'pipe', 'ignore'] // Ignore stderr to avoid noise
|
|
46
|
+
});
|
|
47
|
+
return output.trim();
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
// Not in a git repository or git command failed
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/api/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,6BAA6B;AAC7B,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,SAAS,UAAU;IACjB,IAAI,aAAa,KAAK,IAAI;QAAE,OAAO,aAAa,CAAC;IAEjD,IAAI,OAAO,eAAe,KAAK,WAAW,EAAE,CAAC;QAC3C,aAAa,GAAG,eAAe,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,yCAAyC;YACzC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACjE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;YACtE,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,GAAG,SAAS,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,aAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO;QACL,iBAAiB,EAAE,UAAU,EAAE;QAC/B,WAAW,EAAE,OAAO,CAAC,QAAQ;QAC7B,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,WAAW,EAAE,KAAK;KACnB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,EAAE;YAC5C,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,+BAA+B;SAClE,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gDAAgD;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
export declare enum ConnectionState {
|
|
3
|
+
DISCONNECTED = "DISCONNECTED",
|
|
4
|
+
CONNECTING = "CONNECTING",
|
|
5
|
+
CONNECTED = "CONNECTED",
|
|
6
|
+
RECONNECTING = "RECONNECTING",
|
|
7
|
+
DISCONNECTING = "DISCONNECTING",
|
|
8
|
+
FAILED = "FAILED"
|
|
9
|
+
}
|
|
10
|
+
export declare enum ReadyState {
|
|
11
|
+
IDLE = "IDLE",
|
|
12
|
+
WAITING_INITIAL_READY = "WAITING_INITIAL_READY",
|
|
13
|
+
READY = "READY",
|
|
14
|
+
MESSAGE_SENT = "MESSAGE_SENT",
|
|
15
|
+
WAITING_READY = "WAITING_READY",
|
|
16
|
+
CHECKPOINT_RECOVERY = "CHECKPOINT_RECOVERY"
|
|
17
|
+
}
|
|
18
|
+
export declare class WebSocketClient extends EventEmitter {
|
|
19
|
+
private ws?;
|
|
20
|
+
private shouldDebugLog;
|
|
21
|
+
private debug;
|
|
22
|
+
private state;
|
|
23
|
+
private sessionId?;
|
|
24
|
+
private requestId?;
|
|
25
|
+
private connectionId?;
|
|
26
|
+
private idleTimer?;
|
|
27
|
+
private autoDisconnected;
|
|
28
|
+
private heartbeatInterval?;
|
|
29
|
+
private lastPongReceived;
|
|
30
|
+
private lastPingSent;
|
|
31
|
+
private reconnectAttempts;
|
|
32
|
+
private reconnectTimer?;
|
|
33
|
+
private isReconnecting;
|
|
34
|
+
private messageQueue;
|
|
35
|
+
private isProcessingQueue;
|
|
36
|
+
private readyState;
|
|
37
|
+
private latestCheckpointId?;
|
|
38
|
+
private lastSentMessage?;
|
|
39
|
+
private readyTimer?;
|
|
40
|
+
private pendingOutbox;
|
|
41
|
+
private receivedResponsesSinceMessage;
|
|
42
|
+
hasReceivedResponsesSinceLastMessage(): boolean;
|
|
43
|
+
private connectionTimeoutTimer?;
|
|
44
|
+
constructor();
|
|
45
|
+
private setState;
|
|
46
|
+
private setReadyState;
|
|
47
|
+
private handleReadyMessage;
|
|
48
|
+
connect(sessionId?: string, requestId?: string): Promise<void>;
|
|
49
|
+
sendMessage(type: 'UserQuery' | 'IDERetrievalAnswer', data: any): Promise<void>;
|
|
50
|
+
private sendImmediately;
|
|
51
|
+
private processOutbox;
|
|
52
|
+
startReadyTimer(): void;
|
|
53
|
+
private clearReadyTimer;
|
|
54
|
+
private initiateCheckpointRecovery;
|
|
55
|
+
disconnect(): void;
|
|
56
|
+
getState(): ConnectionState;
|
|
57
|
+
keepAlive(): void;
|
|
58
|
+
private establishConnection;
|
|
59
|
+
private waitForConnection;
|
|
60
|
+
private buildWebSocketUrl;
|
|
61
|
+
private formatMessage;
|
|
62
|
+
private handleClose;
|
|
63
|
+
private attemptReconnection;
|
|
64
|
+
private calculateBackoffDelay;
|
|
65
|
+
private startIdleTimer;
|
|
66
|
+
private clearIdleTimer;
|
|
67
|
+
private resetIdleTimer;
|
|
68
|
+
private startHeartbeat;
|
|
69
|
+
private stopHeartbeat;
|
|
70
|
+
private processQueuedMessages;
|
|
71
|
+
private clearTimers;
|
|
72
|
+
cleanup(): void;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/api/websocket.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAmBtC,oBAAY,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,MAAM,WAAW;CAClB;AAED,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,qBAAqB,0BAA0B;IAC/C,KAAK,UAAU;IACf,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,mBAAmB,wBAAwB;CAC5C;AAUD,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,EAAE,CAAC,CAAY;IAEvB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,KAAK,CAAiD;IAC9D,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAC,CAAS;IAG9B,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,gBAAgB,CAAkB;IAG1C,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,gBAAgB,CAAsB;IAC9C,OAAO,CAAC,YAAY,CAAa;IAGjC,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,cAAc,CAAkB;IAGxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,iBAAiB,CAAkB;IAG3C,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,kBAAkB,CAAC,CAAS;IACpC,OAAO,CAAC,eAAe,CAAC,CAA6E;IACrG,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,aAAa,CAAyF;IAC9G,OAAO,CAAC,6BAA6B,CAAkB;IAEhD,oCAAoC,IAAI,OAAO;IAKtD,OAAO,CAAC,sBAAsB,CAAC,CAAiB;;IAMhD,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,aAAa;YAgBP,kBAAkB;IA+EnB,OAAO,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB9D,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,oBAAoB,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;YA4C9E,eAAe;YAUf,aAAa;IA8BpB,eAAe,IAAI,IAAI;IAiB9B,OAAO,CAAC,eAAe;YAOT,0BAA0B;IAuDjC,UAAU,IAAI,IAAI;IAiClB,QAAQ,IAAI,eAAe;IAI3B,SAAS,IAAI,IAAI;YAQV,mBAAmB;YAsJnB,iBAAiB;IAe/B,OAAO,CAAC,iBAAiB;IA6BzB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,WAAW;YA8BL,mBAAmB;IA2BjC,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,cAAc;IAiCtB,OAAO,CAAC,aAAa;YAOP,qBAAqB;IA+BnC,OAAO,CAAC,WAAW;IAgBZ,OAAO,IAAI,IAAI;CAqBvB"}
|