@vybestack/llxprt-code-core 0.3.4 → 0.4.1-nightly.250922.4a350bed
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/README.md +3 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/src/auth/types.d.ts +2 -2
- package/dist/src/code_assist/codeAssist.d.ts +9 -2
- package/dist/src/code_assist/codeAssist.js +33 -0
- package/dist/src/code_assist/codeAssist.js.map +1 -1
- package/dist/src/code_assist/oauth2.d.ts +4 -0
- package/dist/src/code_assist/oauth2.js +85 -40
- package/dist/src/code_assist/oauth2.js.map +1 -1
- package/dist/src/config/config.d.ts +11 -1
- package/dist/src/config/config.js +62 -8
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/core/client.d.ts +2 -2
- package/dist/src/core/client.js +10 -12
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/contentGenerator.d.ts +2 -2
- package/dist/src/core/geminiChat.d.ts +14 -1
- package/dist/src/core/geminiChat.js +12 -1
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/loggingContentGenerator.js +11 -11
- package/dist/src/core/loggingContentGenerator.js.map +1 -1
- package/dist/src/core/subagent.d.ts +2 -0
- package/dist/src/core/subagent.js +13 -3
- package/dist/src/core/subagent.js.map +1 -1
- package/dist/src/core/turn.d.ts +26 -4
- package/dist/src/core/turn.js +64 -3
- package/dist/src/core/turn.js.map +1 -1
- package/dist/src/filters/EmojiFilter.js +1 -0
- package/dist/src/filters/EmojiFilter.js.map +1 -1
- package/dist/src/ide/ide-client.d.ts +6 -1
- package/dist/src/ide/ide-client.js +20 -2
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +44 -32
- package/dist/src/ide/ideContext.js +1 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/ide/process-utils.js +49 -33
- package/dist/src/ide/process-utils.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp/file-token-store.d.ts +20 -1
- package/dist/src/mcp/file-token-store.js +95 -14
- package/dist/src/mcp/file-token-store.js.map +1 -1
- package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
- package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
- package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
- package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
- package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
- package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
- package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
- package/dist/src/mcp/token-storage/types.d.ts +40 -0
- package/dist/src/mcp/token-storage/types.js +11 -0
- package/dist/src/mcp/token-storage/types.js.map +1 -0
- package/dist/src/providers/BaseProvider.d.ts +3 -3
- package/dist/src/providers/BaseProvider.js.map +1 -1
- package/dist/src/providers/anthropic/AnthropicProvider.js +1 -3
- package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.d.ts +14 -0
- package/dist/src/providers/openai/OpenAIProvider.js +83 -1
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +1 -0
- package/dist/src/providers/tokenizers/OpenAITokenizer.js +3 -1
- package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +1 -1
- package/dist/src/services/loopDetectionService.d.ts +23 -0
- package/dist/src/services/loopDetectionService.js +134 -1
- package/dist/src/services/loopDetectionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.js +8 -7
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/telemetry/sdk.js +2 -1
- package/dist/src/telemetry/sdk.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +12 -0
- package/dist/src/telemetry/types.js +19 -0
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/test-utils/config.d.ts +10 -0
- package/dist/src/test-utils/config.js +24 -0
- package/dist/src/test-utils/config.js.map +1 -0
- package/dist/src/test-utils/index.d.ts +6 -0
- package/dist/src/test-utils/index.js +7 -0
- package/dist/src/test-utils/index.js.map +1 -0
- package/dist/src/test-utils/mock-tool.d.ts +41 -0
- package/dist/src/test-utils/mock-tool.js +51 -0
- package/dist/src/test-utils/mock-tool.js.map +1 -0
- package/dist/src/tools/edit.d.ts +2 -2
- package/dist/src/tools/edit.js +20 -30
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/mcp-client-manager.d.ts +8 -6
- package/dist/src/tools/mcp-client-manager.js +30 -5
- package/dist/src/tools/mcp-client-manager.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +5 -5
- package/dist/src/tools/mcp-client.js +13 -22
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-tool.d.ts +3 -2
- package/dist/src/tools/mcp-tool.js +9 -9
- package/dist/src/tools/mcp-tool.js.map +1 -1
- package/dist/src/tools/memoryTool.js +5 -33
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/shell.js +6 -3
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/smart-edit.d.ts +73 -0
- package/dist/src/tools/smart-edit.js +606 -0
- package/dist/src/tools/smart-edit.js.map +1 -0
- package/dist/src/tools/tool-registry.d.ts +2 -1
- package/dist/src/tools/tool-registry.js +6 -6
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/web-fetch.js +3 -1
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/utils/fileUtils.d.ts +19 -3
- package/dist/src/utils/fileUtils.js +139 -28
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
- package/dist/src/utils/gitIgnoreParser.js +101 -10
- package/dist/src/utils/gitIgnoreParser.js.map +1 -1
- package/dist/src/utils/ide-trust.d.ts +10 -0
- package/dist/src/utils/ide-trust.js +14 -0
- package/dist/src/utils/ide-trust.js.map +1 -0
- package/dist/src/utils/llm-edit-fixer.d.ts +25 -0
- package/dist/src/utils/llm-edit-fixer.js +111 -0
- package/dist/src/utils/llm-edit-fixer.js.map +1 -0
- package/dist/src/utils/memoryDiscovery.d.ts +5 -4
- package/dist/src/utils/memoryDiscovery.js +10 -9
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/partUtils.d.ts +1 -2
- package/dist/src/utils/partUtils.js +0 -14
- package/dist/src/utils/partUtils.js.map +1 -1
- package/dist/src/utils/pathReader.d.ts +28 -0
- package/dist/src/utils/pathReader.js +47 -0
- package/dist/src/utils/pathReader.js.map +1 -0
- package/dist/src/utils/summarizer.js +2 -1
- package/dist/src/utils/summarizer.js.map +1 -1
- package/package.json +3 -3
@@ -25,21 +25,21 @@ export declare const FileSchema: z.ZodObject<{
|
|
25
25
|
}, "strip", z.ZodTypeAny, {
|
26
26
|
path: string;
|
27
27
|
timestamp: number;
|
28
|
-
isActive?: boolean | undefined;
|
29
|
-
selectedText?: string | undefined;
|
30
28
|
cursor?: {
|
31
29
|
line: number;
|
32
30
|
character: number;
|
33
31
|
} | undefined;
|
32
|
+
isActive?: boolean | undefined;
|
33
|
+
selectedText?: string | undefined;
|
34
34
|
}, {
|
35
35
|
path: string;
|
36
36
|
timestamp: number;
|
37
|
-
isActive?: boolean | undefined;
|
38
|
-
selectedText?: string | undefined;
|
39
37
|
cursor?: {
|
40
38
|
line: number;
|
41
39
|
character: number;
|
42
40
|
} | undefined;
|
41
|
+
isActive?: boolean | undefined;
|
42
|
+
selectedText?: string | undefined;
|
43
43
|
}>;
|
44
44
|
export type File = z.infer<typeof FileSchema>;
|
45
45
|
export declare const IdeContextSchema: z.ZodObject<{
|
@@ -62,70 +62,75 @@ export declare const IdeContextSchema: z.ZodObject<{
|
|
62
62
|
}, "strip", z.ZodTypeAny, {
|
63
63
|
path: string;
|
64
64
|
timestamp: number;
|
65
|
-
isActive?: boolean | undefined;
|
66
|
-
selectedText?: string | undefined;
|
67
65
|
cursor?: {
|
68
66
|
line: number;
|
69
67
|
character: number;
|
70
68
|
} | undefined;
|
69
|
+
isActive?: boolean | undefined;
|
70
|
+
selectedText?: string | undefined;
|
71
71
|
}, {
|
72
72
|
path: string;
|
73
73
|
timestamp: number;
|
74
|
-
isActive?: boolean | undefined;
|
75
|
-
selectedText?: string | undefined;
|
76
74
|
cursor?: {
|
77
75
|
line: number;
|
78
76
|
character: number;
|
79
77
|
} | undefined;
|
78
|
+
isActive?: boolean | undefined;
|
79
|
+
selectedText?: string | undefined;
|
80
80
|
}>, "many">>;
|
81
|
+
isTrusted: z.ZodOptional<z.ZodBoolean>;
|
81
82
|
}, "strip", z.ZodTypeAny, {
|
82
83
|
openFiles?: {
|
83
84
|
path: string;
|
84
85
|
timestamp: number;
|
85
|
-
isActive?: boolean | undefined;
|
86
|
-
selectedText?: string | undefined;
|
87
86
|
cursor?: {
|
88
87
|
line: number;
|
89
88
|
character: number;
|
90
89
|
} | undefined;
|
90
|
+
isActive?: boolean | undefined;
|
91
|
+
selectedText?: string | undefined;
|
91
92
|
}[] | undefined;
|
93
|
+
isTrusted?: boolean | undefined;
|
92
94
|
}, {
|
93
95
|
openFiles?: {
|
94
96
|
path: string;
|
95
97
|
timestamp: number;
|
96
|
-
isActive?: boolean | undefined;
|
97
|
-
selectedText?: string | undefined;
|
98
98
|
cursor?: {
|
99
99
|
line: number;
|
100
100
|
character: number;
|
101
101
|
} | undefined;
|
102
|
+
isActive?: boolean | undefined;
|
103
|
+
selectedText?: string | undefined;
|
102
104
|
}[] | undefined;
|
105
|
+
isTrusted?: boolean | undefined;
|
103
106
|
}>>;
|
104
107
|
}, "strip", z.ZodTypeAny, {
|
105
108
|
workspaceState?: {
|
106
109
|
openFiles?: {
|
107
110
|
path: string;
|
108
111
|
timestamp: number;
|
109
|
-
isActive?: boolean | undefined;
|
110
|
-
selectedText?: string | undefined;
|
111
112
|
cursor?: {
|
112
113
|
line: number;
|
113
114
|
character: number;
|
114
115
|
} | undefined;
|
116
|
+
isActive?: boolean | undefined;
|
117
|
+
selectedText?: string | undefined;
|
115
118
|
}[] | undefined;
|
119
|
+
isTrusted?: boolean | undefined;
|
116
120
|
} | undefined;
|
117
121
|
}, {
|
118
122
|
workspaceState?: {
|
119
123
|
openFiles?: {
|
120
124
|
path: string;
|
121
125
|
timestamp: number;
|
122
|
-
isActive?: boolean | undefined;
|
123
|
-
selectedText?: string | undefined;
|
124
126
|
cursor?: {
|
125
127
|
line: number;
|
126
128
|
character: number;
|
127
129
|
} | undefined;
|
130
|
+
isActive?: boolean | undefined;
|
131
|
+
selectedText?: string | undefined;
|
128
132
|
}[] | undefined;
|
133
|
+
isTrusted?: boolean | undefined;
|
129
134
|
} | undefined;
|
130
135
|
}>;
|
131
136
|
export type IdeContext = z.infer<typeof IdeContextSchema>;
|
@@ -155,70 +160,75 @@ export declare const IdeContextNotificationSchema: z.ZodObject<{
|
|
155
160
|
}, "strip", z.ZodTypeAny, {
|
156
161
|
path: string;
|
157
162
|
timestamp: number;
|
158
|
-
isActive?: boolean | undefined;
|
159
|
-
selectedText?: string | undefined;
|
160
163
|
cursor?: {
|
161
164
|
line: number;
|
162
165
|
character: number;
|
163
166
|
} | undefined;
|
167
|
+
isActive?: boolean | undefined;
|
168
|
+
selectedText?: string | undefined;
|
164
169
|
}, {
|
165
170
|
path: string;
|
166
171
|
timestamp: number;
|
167
|
-
isActive?: boolean | undefined;
|
168
|
-
selectedText?: string | undefined;
|
169
172
|
cursor?: {
|
170
173
|
line: number;
|
171
174
|
character: number;
|
172
175
|
} | undefined;
|
176
|
+
isActive?: boolean | undefined;
|
177
|
+
selectedText?: string | undefined;
|
173
178
|
}>, "many">>;
|
179
|
+
isTrusted: z.ZodOptional<z.ZodBoolean>;
|
174
180
|
}, "strip", z.ZodTypeAny, {
|
175
181
|
openFiles?: {
|
176
182
|
path: string;
|
177
183
|
timestamp: number;
|
178
|
-
isActive?: boolean | undefined;
|
179
|
-
selectedText?: string | undefined;
|
180
184
|
cursor?: {
|
181
185
|
line: number;
|
182
186
|
character: number;
|
183
187
|
} | undefined;
|
188
|
+
isActive?: boolean | undefined;
|
189
|
+
selectedText?: string | undefined;
|
184
190
|
}[] | undefined;
|
191
|
+
isTrusted?: boolean | undefined;
|
185
192
|
}, {
|
186
193
|
openFiles?: {
|
187
194
|
path: string;
|
188
195
|
timestamp: number;
|
189
|
-
isActive?: boolean | undefined;
|
190
|
-
selectedText?: string | undefined;
|
191
196
|
cursor?: {
|
192
197
|
line: number;
|
193
198
|
character: number;
|
194
199
|
} | undefined;
|
200
|
+
isActive?: boolean | undefined;
|
201
|
+
selectedText?: string | undefined;
|
195
202
|
}[] | undefined;
|
203
|
+
isTrusted?: boolean | undefined;
|
196
204
|
}>>;
|
197
205
|
}, "strip", z.ZodTypeAny, {
|
198
206
|
workspaceState?: {
|
199
207
|
openFiles?: {
|
200
208
|
path: string;
|
201
209
|
timestamp: number;
|
202
|
-
isActive?: boolean | undefined;
|
203
|
-
selectedText?: string | undefined;
|
204
210
|
cursor?: {
|
205
211
|
line: number;
|
206
212
|
character: number;
|
207
213
|
} | undefined;
|
214
|
+
isActive?: boolean | undefined;
|
215
|
+
selectedText?: string | undefined;
|
208
216
|
}[] | undefined;
|
217
|
+
isTrusted?: boolean | undefined;
|
209
218
|
} | undefined;
|
210
219
|
}, {
|
211
220
|
workspaceState?: {
|
212
221
|
openFiles?: {
|
213
222
|
path: string;
|
214
223
|
timestamp: number;
|
215
|
-
isActive?: boolean | undefined;
|
216
|
-
selectedText?: string | undefined;
|
217
224
|
cursor?: {
|
218
225
|
line: number;
|
219
226
|
character: number;
|
220
227
|
} | undefined;
|
228
|
+
isActive?: boolean | undefined;
|
229
|
+
selectedText?: string | undefined;
|
221
230
|
}[] | undefined;
|
231
|
+
isTrusted?: boolean | undefined;
|
222
232
|
} | undefined;
|
223
233
|
}>;
|
224
234
|
}, "strip", z.ZodTypeAny, {
|
@@ -227,13 +237,14 @@ export declare const IdeContextNotificationSchema: z.ZodObject<{
|
|
227
237
|
openFiles?: {
|
228
238
|
path: string;
|
229
239
|
timestamp: number;
|
230
|
-
isActive?: boolean | undefined;
|
231
|
-
selectedText?: string | undefined;
|
232
240
|
cursor?: {
|
233
241
|
line: number;
|
234
242
|
character: number;
|
235
243
|
} | undefined;
|
244
|
+
isActive?: boolean | undefined;
|
245
|
+
selectedText?: string | undefined;
|
236
246
|
}[] | undefined;
|
247
|
+
isTrusted?: boolean | undefined;
|
237
248
|
} | undefined;
|
238
249
|
};
|
239
250
|
jsonrpc: "2.0";
|
@@ -244,13 +255,14 @@ export declare const IdeContextNotificationSchema: z.ZodObject<{
|
|
244
255
|
openFiles?: {
|
245
256
|
path: string;
|
246
257
|
timestamp: number;
|
247
|
-
isActive?: boolean | undefined;
|
248
|
-
selectedText?: string | undefined;
|
249
258
|
cursor?: {
|
250
259
|
line: number;
|
251
260
|
character: number;
|
252
261
|
} | undefined;
|
262
|
+
isActive?: boolean | undefined;
|
263
|
+
selectedText?: string | undefined;
|
253
264
|
}[] | undefined;
|
265
|
+
isTrusted?: boolean | undefined;
|
254
266
|
} | undefined;
|
255
267
|
};
|
256
268
|
jsonrpc: "2.0";
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ideContext.js","sourceRoot":"","sources":["../../../src/ide/ideContext.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,MAAM,EAAE,CAAC;SACN,MAAM,CAAC;QACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;KACtB,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,cAAc,EAAE,CAAC;SACd,MAAM,CAAC;QACN,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;
|
1
|
+
{"version":3,"file":"ideContext.js","sourceRoot":"","sources":["../../../src/ide/ideContext.ts"],"names":[],"mappings":"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"}
|
@@ -19,42 +19,58 @@ async function getProcessInfo(pid) {
|
|
19
19
|
try {
|
20
20
|
const platform = os.platform();
|
21
21
|
if (platform === 'win32') {
|
22
|
-
const
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
22
|
+
const powershellSegments = [
|
23
|
+
'$p = Get-CimInstance Win32_Process',
|
24
|
+
`-Filter 'ProcessId=${pid}'`,
|
25
|
+
'-ErrorAction SilentlyContinue;',
|
26
|
+
'if ($p) {',
|
27
|
+
'@{Name=$p.Name;ParentProcessId=$p.ParentProcessId;CommandLine=$p.CommandLine}',
|
28
|
+
'| ConvertTo-Json',
|
29
|
+
'}',
|
30
|
+
];
|
31
|
+
const powershellCommand = `powershell "${powershellSegments.join(' ')}"`;
|
32
|
+
const { stdout } = await execAsync(powershellCommand);
|
33
|
+
const output = stdout.trim();
|
34
|
+
if (!output) {
|
35
|
+
return { parentPid: 0, name: '', command: '' };
|
36
|
+
}
|
37
|
+
try {
|
38
|
+
const parsed = JSON.parse(output);
|
39
|
+
const parentPid = typeof parsed.ParentProcessId === 'number'
|
40
|
+
? parsed.ParentProcessId
|
41
|
+
: 0;
|
42
|
+
return {
|
43
|
+
parentPid,
|
44
|
+
name: parsed.Name ?? '',
|
45
|
+
command: parsed.CommandLine ?? '',
|
46
|
+
};
|
41
47
|
}
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
};
|
48
|
+
catch (parseError) {
|
49
|
+
console.debug(`Failed to parse PowerShell output for pid ${pid}:`, parseError);
|
50
|
+
return { parentPid: 0, name: '', command: '' };
|
51
|
+
}
|
52
|
+
}
|
53
|
+
// Non-Windows platforms - use command= instead of comm=
|
54
|
+
const command = `ps -o ppid=,command= -p ${pid}`;
|
55
|
+
const { stdout } = await execAsync(command);
|
56
|
+
const trimmedStdout = stdout.trim();
|
57
|
+
const match = trimmedStdout.match(/^\s*(\d+)\s+(.+)$/);
|
58
|
+
if (!match) {
|
59
|
+
throw new Error(`Failed to parse ps output: ${trimmedStdout}`);
|
54
60
|
}
|
61
|
+
const parentPid = parseInt(match[1], 10);
|
62
|
+
const execPath = match[2].trim();
|
63
|
+
const { stdout: fullCmdStdout } = await execAsync(`ps -o command= -p ${pid}`);
|
64
|
+
const fullCommand = fullCmdStdout.trim();
|
65
|
+
const processName = path.basename(execPath);
|
66
|
+
return {
|
67
|
+
parentPid: Number.isNaN(parentPid) ? 1 : parentPid,
|
68
|
+
name: processName,
|
69
|
+
command: fullCommand,
|
70
|
+
};
|
55
71
|
}
|
56
|
-
catch (
|
57
|
-
console.debug(`Failed to get process info for pid ${pid}:`,
|
72
|
+
catch (error) {
|
73
|
+
console.debug(`Failed to get process info for pid ${pid}:`, error);
|
58
74
|
return { parentPid: 0, name: '', command: '' };
|
59
75
|
}
|
60
76
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/ide/process-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,KAAK,UAAU,cAAc,CAAC,GAAW;IAKvC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;QAC/B,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,
|
1
|
+
{"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/ide/process-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
@@ -44,6 +44,8 @@ export * from './utils/filesearch/fileSearch.js';
|
|
44
44
|
export * from './utils/secure-browser-launcher.js';
|
45
45
|
export * from './utils/errorParsing.js';
|
46
46
|
export * from './utils/ignorePatterns.js';
|
47
|
+
export * from './utils/partUtils.js';
|
48
|
+
export * from './utils/ide-trust.js';
|
47
49
|
export * from './auth/token-store.js';
|
48
50
|
export * from './auth/types.js';
|
49
51
|
export * from './auth/qwen-device-flow.js';
|
@@ -134,3 +136,4 @@ export type { DebugSettings, DebugOutputConfig } from './debug/index.js';
|
|
134
136
|
export type { LogEntry as DebugLogEntry } from './debug/index.js';
|
135
137
|
export { Storage } from './config/storage.js';
|
136
138
|
export * from './config/models.js';
|
139
|
+
export * from './test-utils/index.js';
|
package/dist/src/index.js
CHANGED
@@ -49,6 +49,8 @@ export * from './utils/filesearch/fileSearch.js';
|
|
49
49
|
export * from './utils/secure-browser-launcher.js';
|
50
50
|
export * from './utils/errorParsing.js';
|
51
51
|
export * from './utils/ignorePatterns.js';
|
52
|
+
export * from './utils/partUtils.js';
|
53
|
+
export * from './utils/ide-trust.js';
|
52
54
|
// Export auth system
|
53
55
|
export * from './auth/token-store.js';
|
54
56
|
export * from './auth/types.js';
|
@@ -153,4 +155,6 @@ export { ConfigurationManager, DebugLogger, FileOutput, } from './debug/index.js
|
|
153
155
|
export { Storage } from './config/storage.js';
|
154
156
|
// Export models
|
155
157
|
export * from './config/models.js';
|
158
|
+
// Export test utils
|
159
|
+
export * from './test-utils/index.js';
|
156
160
|
//# sourceMappingURL=index.js.map
|
package/dist/src/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,cAAc,oBAAoB,CAAC;AACnC,cAAc,4BAA4B,CAAC;AAE3C,kBAAkB;AAClB,cAAc,iCAAiC,CAAC;AAEhD,eAAe;AACf,cAAc,wBAAwB,CAAC;AAEvC,oBAAoB;AACpB,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sCAAsC,CAAC;AAErD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AAEvC,mBAAmB;AACnB,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,6CAA6C,CAAC;AAC5D,cAAc,kCAAkC,CAAC;AACjD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
@@ -10,11 +10,30 @@ import { BaseTokenStore, MCPOAuthToken, MCPOAuthCredentials } from './token-stor
|
|
10
10
|
*/
|
11
11
|
export declare class FileTokenStore extends BaseTokenStore {
|
12
12
|
private readonly tokenFilePath;
|
13
|
-
|
13
|
+
private readonly encryptionKey;
|
14
|
+
private readonly serviceName;
|
15
|
+
constructor(tokenFilePath?: string, options?: {
|
16
|
+
serviceName?: string;
|
17
|
+
encryptionKey?: Buffer;
|
18
|
+
});
|
14
19
|
/**
|
15
20
|
* Ensure the config directory exists.
|
16
21
|
*/
|
17
22
|
private ensureConfigDir;
|
23
|
+
/**
|
24
|
+
* Derive an encryption key for securing stored tokens.
|
25
|
+
*/
|
26
|
+
private deriveEncryptionKey;
|
27
|
+
/**
|
28
|
+
* Encrypt token payload with AES-256-GCM.
|
29
|
+
*/
|
30
|
+
private encrypt;
|
31
|
+
/**
|
32
|
+
* Decrypt stored payload. Falls back to plaintext for backward compatibility.
|
33
|
+
*/
|
34
|
+
private decrypt;
|
35
|
+
private readTokenPayload;
|
36
|
+
private writeTokenPayload;
|
18
37
|
/**
|
19
38
|
* Load all stored MCP OAuth tokens.
|
20
39
|
*
|
@@ -5,18 +5,44 @@
|
|
5
5
|
*/
|
6
6
|
import { promises as fs } from 'node:fs';
|
7
7
|
import * as path from 'node:path';
|
8
|
+
import * as os from 'node:os';
|
9
|
+
import * as crypto from 'node:crypto';
|
8
10
|
import { Storage } from '../config/storage.js';
|
9
11
|
import { getErrorMessage } from '../utils/errors.js';
|
10
12
|
import { BaseTokenStore, } from './token-store.js';
|
13
|
+
const safeOsHostname = () => {
|
14
|
+
try {
|
15
|
+
return os.hostname();
|
16
|
+
}
|
17
|
+
catch (error) {
|
18
|
+
console.warn('Failed to resolve hostname, falling back to default', error);
|
19
|
+
return 'unknown-host';
|
20
|
+
}
|
21
|
+
};
|
22
|
+
const safeOsUsername = () => {
|
23
|
+
try {
|
24
|
+
return os.userInfo().username;
|
25
|
+
}
|
26
|
+
catch (error) {
|
27
|
+
const fallback = process.env.USER || process.env.USERNAME || 'unknown-user';
|
28
|
+
console.warn('Failed to resolve username, using fallback value', error);
|
29
|
+
return fallback;
|
30
|
+
}
|
31
|
+
};
|
11
32
|
/**
|
12
33
|
* File-based implementation of the BaseTokenStore.
|
13
34
|
* Stores MCP OAuth tokens in a JSON file in the user's configuration directory.
|
14
35
|
*/
|
15
36
|
export class FileTokenStore extends BaseTokenStore {
|
16
37
|
tokenFilePath;
|
17
|
-
|
38
|
+
encryptionKey;
|
39
|
+
serviceName;
|
40
|
+
constructor(tokenFilePath, options = {}) {
|
18
41
|
super();
|
19
42
|
this.tokenFilePath = tokenFilePath || Storage.getMcpOAuthTokensPath();
|
43
|
+
this.serviceName = options.serviceName ?? 'llxprt-cli-mcp-oauth';
|
44
|
+
this.encryptionKey =
|
45
|
+
options.encryptionKey ?? this.deriveEncryptionKey(this.serviceName);
|
20
46
|
}
|
21
47
|
/**
|
22
48
|
* Ensure the config directory exists.
|
@@ -24,13 +50,70 @@ export class FileTokenStore extends BaseTokenStore {
|
|
24
50
|
async ensureConfigDir() {
|
25
51
|
const configDir = path.dirname(this.tokenFilePath);
|
26
52
|
try {
|
27
|
-
await fs.mkdir(configDir, { recursive: true });
|
53
|
+
await fs.mkdir(configDir, { recursive: true, mode: 0o700 });
|
28
54
|
}
|
29
55
|
catch (error) {
|
30
56
|
console.error(`Failed to create config directory ${configDir}: ${getErrorMessage(error)}`);
|
31
57
|
throw error;
|
32
58
|
}
|
33
59
|
}
|
60
|
+
/**
|
61
|
+
* Derive an encryption key for securing stored tokens.
|
62
|
+
*/
|
63
|
+
deriveEncryptionKey(serviceName) {
|
64
|
+
const hostname = safeOsHostname();
|
65
|
+
const username = safeOsUsername();
|
66
|
+
const salt = `${hostname}:${username}:${serviceName}`;
|
67
|
+
return crypto.scryptSync('llxprt-cli-oauth', salt, 32);
|
68
|
+
}
|
69
|
+
/**
|
70
|
+
* Encrypt token payload with AES-256-GCM.
|
71
|
+
*/
|
72
|
+
encrypt(payload) {
|
73
|
+
const iv = crypto.randomBytes(16);
|
74
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', this.encryptionKey, iv);
|
75
|
+
let encrypted = cipher.update(payload, 'utf8', 'hex');
|
76
|
+
encrypted += cipher.final('hex');
|
77
|
+
const authTag = cipher.getAuthTag();
|
78
|
+
return [iv.toString('hex'), authTag.toString('hex'), encrypted].join(':');
|
79
|
+
}
|
80
|
+
/**
|
81
|
+
* Decrypt stored payload. Falls back to plaintext for backward compatibility.
|
82
|
+
*/
|
83
|
+
decrypt(payload) {
|
84
|
+
const trimmed = payload.trim();
|
85
|
+
const encryptedPattern = /^[0-9a-f]+:[0-9a-f]+:[0-9a-f]+$/i;
|
86
|
+
if (!encryptedPattern.test(trimmed)) {
|
87
|
+
return payload;
|
88
|
+
}
|
89
|
+
const [ivHex, authTagHex, encryptedHex] = trimmed.split(':');
|
90
|
+
const iv = Buffer.from(ivHex, 'hex');
|
91
|
+
const authTag = Buffer.from(authTagHex, 'hex');
|
92
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', this.encryptionKey, iv);
|
93
|
+
decipher.setAuthTag(authTag);
|
94
|
+
let decrypted = decipher.update(encryptedHex, 'hex', 'utf8');
|
95
|
+
decrypted += decipher.final('utf8');
|
96
|
+
return decrypted;
|
97
|
+
}
|
98
|
+
async readTokenPayload() {
|
99
|
+
try {
|
100
|
+
return await fs.readFile(this.tokenFilePath, 'utf-8');
|
101
|
+
}
|
102
|
+
catch (error) {
|
103
|
+
const err = error;
|
104
|
+
if (err.code === 'ENOENT') {
|
105
|
+
return null;
|
106
|
+
}
|
107
|
+
console.error(`Failed to read MCP OAuth tokens from ${this.tokenFilePath}: ${getErrorMessage(error)}`);
|
108
|
+
throw error;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
async writeTokenPayload(tokens) {
|
112
|
+
await this.ensureConfigDir();
|
113
|
+
const payload = JSON.stringify(tokens, null, 2);
|
114
|
+
const encrypted = this.encrypt(payload);
|
115
|
+
await fs.writeFile(this.tokenFilePath, encrypted, { mode: 0o600 });
|
116
|
+
}
|
34
117
|
/**
|
35
118
|
* Load all stored MCP OAuth tokens.
|
36
119
|
*
|
@@ -39,8 +122,12 @@ export class FileTokenStore extends BaseTokenStore {
|
|
39
122
|
async loadTokens() {
|
40
123
|
const tokenMap = new Map();
|
41
124
|
try {
|
42
|
-
const
|
43
|
-
|
125
|
+
const payload = await this.readTokenPayload();
|
126
|
+
if (!payload) {
|
127
|
+
return tokenMap;
|
128
|
+
}
|
129
|
+
const decrypted = this.decrypt(payload);
|
130
|
+
const tokens = JSON.parse(decrypted);
|
44
131
|
// Validate the loaded data structure
|
45
132
|
if (!Array.isArray(tokens)) {
|
46
133
|
console.warn('Token file contains invalid data structure, ignoring');
|
@@ -56,10 +143,7 @@ export class FileTokenStore extends BaseTokenStore {
|
|
56
143
|
}
|
57
144
|
}
|
58
145
|
catch (error) {
|
59
|
-
|
60
|
-
if (error.code !== 'ENOENT') {
|
61
|
-
console.error(`Failed to load MCP OAuth tokens from ${this.tokenFilePath}: ${getErrorMessage(error)}`);
|
62
|
-
}
|
146
|
+
console.error(`Failed to load MCP OAuth tokens from ${this.tokenFilePath}: ${getErrorMessage(error)}`);
|
63
147
|
}
|
64
148
|
return tokenMap;
|
65
149
|
}
|
@@ -73,13 +157,11 @@ export class FileTokenStore extends BaseTokenStore {
|
|
73
157
|
* @param mcpServerUrl Optional MCP server URL
|
74
158
|
*/
|
75
159
|
async saveToken(serverName, token, clientId, tokenUrl, mcpServerUrl) {
|
76
|
-
await this.ensureConfigDir();
|
77
160
|
const tokens = await this.loadTokens();
|
78
161
|
const credential = this.createCredentials(serverName, token, clientId, tokenUrl, mcpServerUrl);
|
79
162
|
tokens.set(serverName, credential);
|
80
|
-
const tokenArray = Array.from(tokens.values());
|
81
163
|
try {
|
82
|
-
await
|
164
|
+
await this.writeTokenPayload(Array.from(tokens.values()));
|
83
165
|
// Token saved successfully
|
84
166
|
}
|
85
167
|
catch (error) {
|
@@ -109,15 +191,14 @@ export class FileTokenStore extends BaseTokenStore {
|
|
109
191
|
this.validateServerName(serverName);
|
110
192
|
const tokens = await this.loadTokens();
|
111
193
|
if (tokens.delete(serverName)) {
|
112
|
-
const tokenArray = Array.from(tokens.values());
|
113
194
|
try {
|
114
|
-
if (
|
195
|
+
if (tokens.size === 0) {
|
115
196
|
// Remove file if no tokens left
|
116
197
|
await fs.unlink(this.tokenFilePath);
|
117
198
|
// Token file removed successfully
|
118
199
|
}
|
119
200
|
else {
|
120
|
-
await
|
201
|
+
await this.writeTokenPayload(Array.from(tokens.values()));
|
121
202
|
// Token removed successfully
|
122
203
|
}
|
123
204
|
}
|