@vybestack/llxprt-code-core 0.3.4-nightly.250919.5e3f575d → 0.3.4-nightly.250921.fdbf3cd7

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.
Files changed (132) hide show
  1. package/README.md +1 -0
  2. package/dist/index.d.ts +4 -0
  3. package/dist/index.js +4 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/auth/types.d.ts +2 -2
  6. package/dist/src/code_assist/codeAssist.d.ts +9 -2
  7. package/dist/src/code_assist/codeAssist.js +33 -0
  8. package/dist/src/code_assist/codeAssist.js.map +1 -1
  9. package/dist/src/code_assist/oauth2.d.ts +4 -0
  10. package/dist/src/code_assist/oauth2.js +85 -40
  11. package/dist/src/code_assist/oauth2.js.map +1 -1
  12. package/dist/src/config/config.d.ts +11 -1
  13. package/dist/src/config/config.js +41 -8
  14. package/dist/src/config/config.js.map +1 -1
  15. package/dist/src/core/client.d.ts +2 -2
  16. package/dist/src/core/client.js +7 -6
  17. package/dist/src/core/client.js.map +1 -1
  18. package/dist/src/core/contentGenerator.d.ts +2 -2
  19. package/dist/src/core/geminiChat.d.ts +14 -1
  20. package/dist/src/core/geminiChat.js +12 -1
  21. package/dist/src/core/geminiChat.js.map +1 -1
  22. package/dist/src/core/loggingContentGenerator.js +11 -11
  23. package/dist/src/core/loggingContentGenerator.js.map +1 -1
  24. package/dist/src/core/subagent.d.ts +2 -0
  25. package/dist/src/core/subagent.js +13 -3
  26. package/dist/src/core/subagent.js.map +1 -1
  27. package/dist/src/core/turn.d.ts +26 -4
  28. package/dist/src/core/turn.js +64 -3
  29. package/dist/src/core/turn.js.map +1 -1
  30. package/dist/src/filters/EmojiFilter.js +1 -0
  31. package/dist/src/filters/EmojiFilter.js.map +1 -1
  32. package/dist/src/ide/ide-client.d.ts +6 -1
  33. package/dist/src/ide/ide-client.js +20 -2
  34. package/dist/src/ide/ide-client.js.map +1 -1
  35. package/dist/src/ide/ideContext.d.ts +44 -32
  36. package/dist/src/ide/ideContext.js +1 -0
  37. package/dist/src/ide/ideContext.js.map +1 -1
  38. package/dist/src/ide/process-utils.js +49 -33
  39. package/dist/src/ide/process-utils.js.map +1 -1
  40. package/dist/src/index.d.ts +3 -0
  41. package/dist/src/index.js +4 -0
  42. package/dist/src/index.js.map +1 -1
  43. package/dist/src/mcp/file-token-store.d.ts +20 -1
  44. package/dist/src/mcp/file-token-store.js +95 -14
  45. package/dist/src/mcp/file-token-store.js.map +1 -1
  46. package/dist/src/mcp/token-storage/base-token-storage.d.ts +19 -0
  47. package/dist/src/mcp/token-storage/base-token-storage.js +36 -0
  48. package/dist/src/mcp/token-storage/base-token-storage.js.map +1 -0
  49. package/dist/src/mcp/token-storage/file-token-storage.d.ts +24 -0
  50. package/dist/src/mcp/token-storage/file-token-storage.js +144 -0
  51. package/dist/src/mcp/token-storage/file-token-storage.js.map +1 -0
  52. package/dist/src/mcp/token-storage/hybrid-token-storage.d.ts +23 -0
  53. package/dist/src/mcp/token-storage/hybrid-token-storage.js +78 -0
  54. package/dist/src/mcp/token-storage/hybrid-token-storage.js.map +1 -0
  55. package/dist/src/mcp/token-storage/keychain-token-storage.d.ts +31 -0
  56. package/dist/src/mcp/token-storage/keychain-token-storage.js +190 -0
  57. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -0
  58. package/dist/src/mcp/token-storage/types.d.ts +40 -0
  59. package/dist/src/mcp/token-storage/types.js +11 -0
  60. package/dist/src/mcp/token-storage/types.js.map +1 -0
  61. package/dist/src/providers/anthropic/AnthropicProvider.js +1 -3
  62. package/dist/src/providers/anthropic/AnthropicProvider.js.map +1 -1
  63. package/dist/src/providers/tokenizers/OpenAITokenizer.d.ts +1 -0
  64. package/dist/src/providers/tokenizers/OpenAITokenizer.js +3 -1
  65. package/dist/src/providers/tokenizers/OpenAITokenizer.js.map +1 -1
  66. package/dist/src/services/loopDetectionService.d.ts +23 -0
  67. package/dist/src/services/loopDetectionService.js +134 -1
  68. package/dist/src/services/loopDetectionService.js.map +1 -1
  69. package/dist/src/services/shellExecutionService.js +8 -7
  70. package/dist/src/services/shellExecutionService.js.map +1 -1
  71. package/dist/src/telemetry/sdk.js +2 -1
  72. package/dist/src/telemetry/sdk.js.map +1 -1
  73. package/dist/src/telemetry/types.d.ts +12 -0
  74. package/dist/src/telemetry/types.js +19 -0
  75. package/dist/src/telemetry/types.js.map +1 -1
  76. package/dist/src/test-utils/config.d.ts +10 -0
  77. package/dist/src/test-utils/config.js +24 -0
  78. package/dist/src/test-utils/config.js.map +1 -0
  79. package/dist/src/test-utils/index.d.ts +6 -0
  80. package/dist/src/test-utils/index.js +7 -0
  81. package/dist/src/test-utils/index.js.map +1 -0
  82. package/dist/src/test-utils/mock-tool.d.ts +41 -0
  83. package/dist/src/test-utils/mock-tool.js +51 -0
  84. package/dist/src/test-utils/mock-tool.js.map +1 -0
  85. package/dist/src/tools/edit.d.ts +2 -2
  86. package/dist/src/tools/edit.js +20 -30
  87. package/dist/src/tools/edit.js.map +1 -1
  88. package/dist/src/tools/mcp-client-manager.d.ts +8 -6
  89. package/dist/src/tools/mcp-client-manager.js +30 -5
  90. package/dist/src/tools/mcp-client-manager.js.map +1 -1
  91. package/dist/src/tools/mcp-client.d.ts +5 -5
  92. package/dist/src/tools/mcp-client.js +13 -22
  93. package/dist/src/tools/mcp-client.js.map +1 -1
  94. package/dist/src/tools/mcp-tool.d.ts +3 -2
  95. package/dist/src/tools/mcp-tool.js +9 -9
  96. package/dist/src/tools/mcp-tool.js.map +1 -1
  97. package/dist/src/tools/memoryTool.js +5 -33
  98. package/dist/src/tools/memoryTool.js.map +1 -1
  99. package/dist/src/tools/shell.js +6 -3
  100. package/dist/src/tools/shell.js.map +1 -1
  101. package/dist/src/tools/smart-edit.d.ts +73 -0
  102. package/dist/src/tools/smart-edit.js +606 -0
  103. package/dist/src/tools/smart-edit.js.map +1 -0
  104. package/dist/src/tools/tool-registry.d.ts +2 -1
  105. package/dist/src/tools/tool-registry.js +6 -6
  106. package/dist/src/tools/tool-registry.js.map +1 -1
  107. package/dist/src/tools/web-fetch.js +3 -1
  108. package/dist/src/tools/web-fetch.js.map +1 -1
  109. package/dist/src/utils/fileUtils.d.ts +19 -3
  110. package/dist/src/utils/fileUtils.js +139 -28
  111. package/dist/src/utils/fileUtils.js.map +1 -1
  112. package/dist/src/utils/gitIgnoreParser.d.ts +1 -0
  113. package/dist/src/utils/gitIgnoreParser.js +101 -10
  114. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  115. package/dist/src/utils/ide-trust.d.ts +10 -0
  116. package/dist/src/utils/ide-trust.js +14 -0
  117. package/dist/src/utils/ide-trust.js.map +1 -0
  118. package/dist/src/utils/llm-edit-fixer.d.ts +25 -0
  119. package/dist/src/utils/llm-edit-fixer.js +111 -0
  120. package/dist/src/utils/llm-edit-fixer.js.map +1 -0
  121. package/dist/src/utils/memoryDiscovery.d.ts +5 -4
  122. package/dist/src/utils/memoryDiscovery.js +10 -9
  123. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  124. package/dist/src/utils/partUtils.d.ts +1 -2
  125. package/dist/src/utils/partUtils.js +0 -14
  126. package/dist/src/utils/partUtils.js.map +1 -1
  127. package/dist/src/utils/pathReader.d.ts +28 -0
  128. package/dist/src/utils/pathReader.js +47 -0
  129. package/dist/src/utils/pathReader.js.map +1 -0
  130. package/dist/src/utils/summarizer.js +2 -1
  131. package/dist/src/utils/summarizer.js.map +1 -1
  132. 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";
@@ -23,6 +23,7 @@ export const IdeContextSchema = z.object({
23
23
  workspaceState: z
24
24
  .object({
25
25
  openFiles: z.array(FileSchema).optional(),
26
+ isTrusted: z.boolean().optional(),
26
27
  })
27
28
  .optional(),
28
29
  });
@@ -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;KAC1C,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAGH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC;IACtC,MAAM,EAAE,gBAAgB;CACzB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACxD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IACtD,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACnC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC/B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC;SACP,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;KACxB,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;CACV,CAAC;KACD,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC9B,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,gBAAgB,CAAC,IAAI,CAAC;IAC/B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,8BAA8B;SACxC,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,KAAK,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,CAAC;AAcL;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,IAAI,eAAe,GAA2B,SAAS,CAAC;IACxD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEpD;;OAEG;IACH,SAAS,iBAAiB;QACxB,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACrC,UAAU,CAAC,eAAe,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,SAAS,aAAa,CAAC,aAAyB;QAC9C,eAAe,GAAG,aAAa,CAAC;QAChC,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS,eAAe;QACtB,eAAe,GAAG,SAAS,CAAC;QAC5B,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,SAAS,aAAa;QACpB,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,qBAAqB,CAAC,UAAgC;QAC7D,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5B,OAAO,GAAG,EAAE;YACV,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,aAAa;QACb,aAAa;QACb,qBAAqB;QACrB,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAC"}
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 command = `wmic process where "ProcessId=${pid}" get Name,ParentProcessId,CommandLine /value`;
23
- const { stdout } = await execAsync(command);
24
- const nameMatch = stdout.match(/Name=([^\n]*)/);
25
- const processName = nameMatch ? nameMatch[1].trim() : '';
26
- const ppidMatch = stdout.match(/ParentProcessId=(\d+)/);
27
- const parentPid = ppidMatch ? parseInt(ppidMatch[1], 10) : 0;
28
- const commandLineMatch = stdout.match(/CommandLine=([^\n]*)/);
29
- const commandLine = commandLineMatch ? commandLineMatch[1].trim() : '';
30
- return { parentPid, name: processName, command: commandLine };
31
- }
32
- else {
33
- // Use comm= to get executable name without arguments
34
- const command = `ps -o ppid=,comm= -p ${pid}`;
35
- const { stdout } = await execAsync(command);
36
- const trimmedStdout = stdout.trim();
37
- // Parse the output - ppid is first, then executable path
38
- const match = trimmedStdout.match(/^\s*(\d+)\s+(.+)$/);
39
- if (!match) {
40
- throw new Error(`Failed to parse ps output: ${trimmedStdout}`);
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
- const parentPid = parseInt(match[1], 10);
43
- const execPath = match[2].trim();
44
- // Get the full command line separately
45
- const { stdout: fullCmdStdout } = await execAsync(`ps -o command= -p ${pid}`);
46
- const fullCommand = fullCmdStdout.trim();
47
- // Extract just the executable name from path (e.g., /bin/zsh -> zsh)
48
- const processName = path.basename(execPath);
49
- return {
50
- parentPid: isNaN(parentPid) ? 1 : parentPid,
51
- name: processName,
52
- command: fullCommand,
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 (_e) {
57
- console.debug(`Failed to get process info for pid ${pid}:`, _e);
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":"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"}
1
+ {"version":3,"file":"process-utils.js","sourceRoot":"","sources":["../../../src/ide/process-utils.ts"],"names":[],"mappings":"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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
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
- constructor(tokenFilePath?: string);
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
- constructor(tokenFilePath) {
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 data = await fs.readFile(this.tokenFilePath, 'utf-8');
43
- const tokens = JSON.parse(data);
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
- // File doesn't exist or is invalid, return empty map
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 fs.writeFile(this.tokenFilePath, JSON.stringify(tokenArray, null, 2), { mode: 0o600 });
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 (tokenArray.length === 0) {
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 fs.writeFile(this.tokenFilePath, JSON.stringify(tokenArray, null, 2), { mode: 0o600 });
201
+ await this.writeTokenPayload(Array.from(tokens.values()));
121
202
  // Token removed successfully
122
203
  }
123
204
  }