@vybestack/llxprt-code-mcp 0.10.0 → 0.11.0-nightly.260727.c4abf5792

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 (187) hide show
  1. package/dist/auth/src/proxy/framing.d.ts +2 -0
  2. package/dist/auth/src/proxy/framing.js +6 -0
  3. package/dist/auth/src/proxy/framing.js.map +1 -1
  4. package/dist/auth/src/proxy/proxy-socket-client.d.ts +8 -1
  5. package/dist/auth/src/proxy/proxy-socket-client.js +87 -13
  6. package/dist/auth/src/proxy/proxy-socket-client.js.map +1 -1
  7. package/dist/auth/src/proxy/proxy-token-store.d.ts +1 -1
  8. package/dist/auth/src/proxy/proxy-token-store.js +2 -2
  9. package/dist/auth/src/proxy/proxy-token-store.js.map +1 -1
  10. package/dist/core/src/config/config.d.ts +20 -0
  11. package/dist/core/src/config/config.js +143 -23
  12. package/dist/core/src/config/config.js.map +1 -1
  13. package/dist/core/src/config/configBaseCore.d.ts +6 -2
  14. package/dist/core/src/config/configBaseCore.js +8 -0
  15. package/dist/core/src/config/configBaseCore.js.map +1 -1
  16. package/dist/core/src/config/configConstructor.d.ts +2 -0
  17. package/dist/core/src/config/configConstructor.js +9 -1
  18. package/dist/core/src/config/configConstructor.js.map +1 -1
  19. package/dist/core/src/config/configTypes.d.ts +7 -2
  20. package/dist/core/src/config/configTypes.js +2 -0
  21. package/dist/core/src/config/configTypes.js.map +1 -1
  22. package/dist/core/src/config/liveTrustTransitionLifecycle.d.ts +35 -0
  23. package/dist/core/src/config/liveTrustTransitionLifecycle.js +180 -0
  24. package/dist/core/src/config/liveTrustTransitionLifecycle.js.map +1 -0
  25. package/dist/core/src/core/model-limits.json +96 -0
  26. package/dist/core/src/core/model-limits.schema.d.ts +123 -0
  27. package/dist/core/src/core/model-limits.schema.js +75 -0
  28. package/dist/core/src/core/model-limits.schema.js.map +1 -0
  29. package/dist/core/src/core/tokenLimits.d.ts +6 -8
  30. package/dist/core/src/core/tokenLimits.js +56 -132
  31. package/dist/core/src/core/tokenLimits.js.map +1 -1
  32. package/dist/core/src/hooks/hookRegistry.d.ts +1 -1
  33. package/dist/core/src/hooks/hookRegistry.js +3 -1
  34. package/dist/core/src/hooks/hookRegistry.js.map +1 -1
  35. package/dist/core/src/hooks/hookSystem.d.ts +10 -1
  36. package/dist/core/src/hooks/hookSystem.js +69 -12
  37. package/dist/core/src/hooks/hookSystem.js.map +1 -1
  38. package/dist/core/src/index.d.ts +1 -0
  39. package/dist/core/src/index.js +1 -0
  40. package/dist/core/src/index.js.map +1 -1
  41. package/dist/core/src/llm-types/geminiContent.d.ts +3 -0
  42. package/dist/core/src/policy/config.d.ts +4 -2
  43. package/dist/core/src/policy/config.js +22 -18
  44. package/dist/core/src/policy/config.js.map +1 -1
  45. package/dist/core/src/recording/ReplayEngine.js +39 -2
  46. package/dist/core/src/recording/ReplayEngine.js.map +1 -1
  47. package/dist/core/src/recording/SessionDiscovery.d.ts +8 -0
  48. package/dist/core/src/recording/SessionDiscovery.js +88 -3
  49. package/dist/core/src/recording/SessionDiscovery.js.map +1 -1
  50. package/dist/core/src/recording/SessionLockManager.d.ts +3 -0
  51. package/dist/core/src/recording/SessionLockManager.js +9 -3
  52. package/dist/core/src/recording/SessionLockManager.js.map +1 -1
  53. package/dist/core/src/recording/SessionRecordingService.d.ts +14 -1
  54. package/dist/core/src/recording/SessionRecordingService.js +27 -3
  55. package/dist/core/src/recording/SessionRecordingService.js.map +1 -1
  56. package/dist/core/src/recording/index.d.ts +4 -3
  57. package/dist/core/src/recording/index.js +4 -3
  58. package/dist/core/src/recording/index.js.map +1 -1
  59. package/dist/core/src/recording/resumeNotFoundMessages.d.ts +56 -0
  60. package/dist/core/src/recording/resumeNotFoundMessages.js +64 -0
  61. package/dist/core/src/recording/resumeNotFoundMessages.js.map +1 -0
  62. package/dist/core/src/recording/resumeSession.js +3 -2
  63. package/dist/core/src/recording/resumeSession.js.map +1 -1
  64. package/dist/core/src/recording/sessionManagement.d.ts +3 -0
  65. package/dist/core/src/recording/sessionManagement.js +38 -19
  66. package/dist/core/src/recording/sessionManagement.js.map +1 -1
  67. package/dist/core/src/recording/types.d.ts +42 -3
  68. package/dist/core/src/recording/types.js +1 -1
  69. package/dist/core/src/recording/types.js.map +1 -1
  70. package/dist/core/src/runtime/AgentRuntimeLoader.js +2 -1
  71. package/dist/core/src/runtime/AgentRuntimeLoader.js.map +1 -1
  72. package/dist/core/src/services/history/ContentConverters.d.ts +4 -0
  73. package/dist/core/src/services/history/ContentConverters.js +77 -59
  74. package/dist/core/src/services/history/ContentConverters.js.map +1 -1
  75. package/dist/core/src/services/history/HistoryService.d.ts +13 -1
  76. package/dist/core/src/services/history/HistoryService.js +71 -0
  77. package/dist/core/src/services/history/HistoryService.js.map +1 -1
  78. package/dist/core/src/services/history/IContent.d.ts +10 -0
  79. package/dist/core/src/services/history/IContent.js.map +1 -1
  80. package/dist/core/src/skills/skillManager.d.ts +11 -1
  81. package/dist/core/src/skills/skillManager.js +21 -1
  82. package/dist/core/src/skills/skillManager.js.map +1 -1
  83. package/dist/core/src/utils/browser-profile-discovery.d.ts +40 -0
  84. package/dist/core/src/utils/browser-profile-discovery.js +251 -0
  85. package/dist/core/src/utils/browser-profile-discovery.js.map +1 -0
  86. package/dist/core/src/utils/env.d.ts +12 -0
  87. package/dist/core/src/utils/env.js +15 -0
  88. package/dist/core/src/utils/env.js.map +1 -0
  89. package/dist/core/src/utils/events.d.ts +10 -1
  90. package/dist/core/src/utils/events.js +22 -0
  91. package/dist/core/src/utils/events.js.map +1 -1
  92. package/dist/core/src/utils/fileUtils.js +8 -1
  93. package/dist/core/src/utils/fileUtils.js.map +1 -1
  94. package/dist/core/src/utils/retry.js +3 -4
  95. package/dist/core/src/utils/retry.js.map +1 -1
  96. package/dist/core/src/utils/secure-browser-launcher.d.ts +35 -1
  97. package/dist/core/src/utils/secure-browser-launcher.js +341 -1
  98. package/dist/core/src/utils/secure-browser-launcher.js.map +1 -1
  99. package/dist/core/src/utils/thoughtUtils.d.ts +2 -0
  100. package/dist/core/src/utils/thoughtUtils.js.map +1 -1
  101. package/dist/mcp/src/client/close-client-with-timeout.d.ts +7 -0
  102. package/dist/mcp/src/client/close-client-with-timeout.js +23 -0
  103. package/dist/mcp/src/client/close-client-with-timeout.js.map +1 -0
  104. package/dist/mcp/src/client/mcp-callable-tool.d.ts +2 -1
  105. package/dist/mcp/src/client/mcp-callable-tool.js +10 -1
  106. package/dist/mcp/src/client/mcp-callable-tool.js.map +1 -1
  107. package/dist/mcp/src/client/mcp-client-manager-helpers.d.ts +27 -0
  108. package/dist/mcp/src/client/mcp-client-manager-helpers.js +87 -0
  109. package/dist/mcp/src/client/mcp-client-manager-helpers.js.map +1 -0
  110. package/dist/mcp/src/client/mcp-client-manager.d.ts +34 -37
  111. package/dist/mcp/src/client/mcp-client-manager.js +401 -135
  112. package/dist/mcp/src/client/mcp-client-manager.js.map +1 -1
  113. package/dist/mcp/src/client/mcp-client.d.ts +20 -2
  114. package/dist/mcp/src/client/mcp-client.js +391 -86
  115. package/dist/mcp/src/client/mcp-client.js.map +1 -1
  116. package/dist/mcp/src/client/mcp-connection.d.ts +1 -1
  117. package/dist/mcp/src/client/mcp-connection.js +140 -45
  118. package/dist/mcp/src/client/mcp-connection.js.map +1 -1
  119. package/dist/mcp/src/client/mcp-discovery.d.ts +17 -4
  120. package/dist/mcp/src/client/mcp-discovery.js +201 -37
  121. package/dist/mcp/src/client/mcp-discovery.js.map +1 -1
  122. package/dist/mcp/src/client/mcp-errors.d.ts +6 -0
  123. package/dist/mcp/src/client/mcp-errors.js +7 -0
  124. package/dist/mcp/src/client/mcp-errors.js.map +1 -0
  125. package/dist/mcp/src/client/mcp-instructions.d.ts +7 -0
  126. package/dist/mcp/src/client/mcp-instructions.js +16 -0
  127. package/dist/mcp/src/client/mcp-instructions.js.map +1 -0
  128. package/dist/mcp/src/client/mcp-oauth-helpers.d.ts +20 -0
  129. package/dist/mcp/src/client/mcp-oauth-helpers.js +159 -0
  130. package/dist/mcp/src/client/mcp-oauth-helpers.js.map +1 -1
  131. package/dist/mcp/src/client/mcp-status.d.ts +1 -1
  132. package/dist/mcp/src/client/mcp-status.js +10 -2
  133. package/dist/mcp/src/client/mcp-status.js.map +1 -1
  134. package/dist/mcp/src/client/retryable-client-disconnections.d.ts +14 -0
  135. package/dist/mcp/src/client/retryable-client-disconnections.js +36 -0
  136. package/dist/mcp/src/client/retryable-client-disconnections.js.map +1 -0
  137. package/dist/mcp/src/client/trust-revocation-errors.d.ts +7 -0
  138. package/dist/mcp/src/client/trust-revocation-errors.js +24 -0
  139. package/dist/mcp/src/client/trust-revocation-errors.js.map +1 -0
  140. package/dist/mcp/src/fake/fakeMcpDiscovery.d.ts +109 -29
  141. package/dist/mcp/src/fake/fakeMcpDiscovery.js +111 -22
  142. package/dist/mcp/src/fake/fakeMcpDiscovery.js.map +1 -1
  143. package/dist/settings/src/index.d.ts +1 -1
  144. package/dist/settings/src/index.js +1 -1
  145. package/dist/settings/src/index.js.map +1 -1
  146. package/dist/settings/src/profiles/types.d.ts +1 -0
  147. package/dist/settings/src/profiles/types.js.map +1 -1
  148. package/dist/settings/src/settings/registry/registry-entries-1.js +7 -0
  149. package/dist/settings/src/settings/registry/registry-entries-1.js.map +1 -1
  150. package/dist/settings/src/settings/registry/registry-entries-2.js +12 -0
  151. package/dist/settings/src/settings/registry/registry-entries-2.js.map +1 -1
  152. package/dist/settings/src/settings/registry/registry-entries-3.js +8 -0
  153. package/dist/settings/src/settings/registry/registry-entries-3.js.map +1 -1
  154. package/dist/tools/src/index.d.ts +2 -0
  155. package/dist/tools/src/index.js +2 -0
  156. package/dist/tools/src/index.js.map +1 -1
  157. package/dist/tools/src/tools/ast-edit/__tests__/test-helpers.d.ts +48 -0
  158. package/dist/tools/src/tools/ast-edit/__tests__/test-helpers.js +110 -0
  159. package/dist/tools/src/tools/ast-edit/__tests__/test-helpers.js.map +1 -0
  160. package/dist/tools/src/tools/ast-edit/ast-edit-invocation.d.ts +1 -0
  161. package/dist/tools/src/tools/ast-edit/ast-edit-invocation.js +38 -11
  162. package/dist/tools/src/tools/ast-edit/ast-edit-invocation.js.map +1 -1
  163. package/dist/tools/src/tools/ast-edit/edit-calculator.d.ts +6 -3
  164. package/dist/tools/src/tools/ast-edit/edit-calculator.js +24 -6
  165. package/dist/tools/src/tools/ast-edit/edit-calculator.js.map +1 -1
  166. package/dist/tools/src/tools/ast-edit/validation-categorizer.d.ts +58 -0
  167. package/dist/tools/src/tools/ast-edit/validation-categorizer.js +207 -0
  168. package/dist/tools/src/tools/ast-edit/validation-categorizer.js.map +1 -0
  169. package/dist/tools/src/tools/tool-registry.js +6 -43
  170. package/dist/tools/src/tools/tool-registry.js.map +1 -1
  171. package/dist/tools/src/utils/fileUtils.js +8 -1
  172. package/dist/tools/src/utils/fileUtils.js.map +1 -1
  173. package/package.json +7 -6
  174. package/src/client/close-client-with-timeout.ts +36 -0
  175. package/src/client/mcp-callable-tool.ts +8 -0
  176. package/src/client/mcp-client-manager-helpers.ts +150 -0
  177. package/src/client/mcp-client-manager.ts +539 -197
  178. package/src/client/mcp-client.ts +535 -101
  179. package/src/client/mcp-connection.ts +193 -71
  180. package/src/client/mcp-discovery.ts +380 -38
  181. package/src/client/mcp-errors.ts +8 -0
  182. package/src/client/mcp-instructions.ts +22 -0
  183. package/src/client/mcp-oauth-helpers.ts +186 -0
  184. package/src/client/mcp-status.ts +9 -1
  185. package/src/client/retryable-client-disconnections.ts +44 -0
  186. package/src/client/trust-revocation-errors.ts +32 -0
  187. package/src/fake/fakeMcpDiscovery.ts +136 -41
@@ -22,11 +22,13 @@ export interface FrameDecoderOptions {
22
22
  * callback returns. Use this to close the connection or log the error.
23
23
  */
24
24
  onPartialFrameTimeout?: () => void;
25
+ maxFramesPerFeed?: number;
25
26
  }
26
27
  export declare class FrameDecoder {
27
28
  private buffer;
28
29
  private partialFrameTimer;
29
30
  private readonly onPartialFrameTimeout?;
31
+ private readonly maxFramesPerFeed?;
30
32
  constructor(options?: FrameDecoderOptions);
31
33
  feed(chunk: Buffer): Array<Record<string, unknown>>;
32
34
  reset(): void;
@@ -34,8 +34,10 @@ export class FrameDecoder {
34
34
  buffer = Buffer.alloc(0);
35
35
  partialFrameTimer = null;
36
36
  onPartialFrameTimeout;
37
+ maxFramesPerFeed;
37
38
  constructor(options = {}) {
38
39
  this.onPartialFrameTimeout = options.onPartialFrameTimeout;
40
+ this.maxFramesPerFeed = options.maxFramesPerFeed;
39
41
  }
40
42
  feed(chunk) {
41
43
  this.buffer = Buffer.concat([this.buffer, chunk]);
@@ -60,6 +62,10 @@ export class FrameDecoder {
60
62
  throw new FrameError(`Invalid JSON in frame: ${e.message}`);
61
63
  }
62
64
  frames.push(parsed);
65
+ if (this.maxFramesPerFeed !== undefined &&
66
+ frames.length > this.maxFramesPerFeed) {
67
+ throw new FrameError('Too many frames in one chunk');
68
+ }
63
69
  }
64
70
  return frames;
65
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"framing.js","sourceRoot":"","sources":["../../../../../auth/src/proxy/framing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"framing.js","sourceRoot":"","sources":["../../../../../auth/src/proxy/framing.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export type ProxyResponse = {
15
15
  };
16
16
  export declare class ProxySocketClient {
17
17
  private readonly socketPath;
18
+ private readonly capabilityToken;
18
19
  private socket;
19
20
  private decoder;
20
21
  private pendingRequests;
@@ -22,7 +23,7 @@ export declare class ProxySocketClient {
22
23
  private idleTimer;
23
24
  private connectingPromise;
24
25
  private handshakeResolver;
25
- constructor(socketPath: string);
26
+ constructor(socketPath: string, capabilityToken?: string);
26
27
  ensureConnected(): Promise<void>;
27
28
  private isConnected;
28
29
  request(op: string, payload: Record<string, unknown>): Promise<ProxyResponse>;
@@ -33,6 +34,12 @@ export declare class ProxySocketClient {
33
34
  private connect;
34
35
  private handshake;
35
36
  private onData;
37
+ /**
38
+ * Processes a single decoded frame. Returns true if the socket was
39
+ * destroyed and the caller should stop iterating.
40
+ */
41
+ private processFrame;
42
+ private resolveHandshake;
36
43
  private resolvePendingRequest;
37
44
  private onError;
38
45
  private onClose;
@@ -16,8 +16,28 @@ import { encodeFrame, FrameDecoder } from './framing.js';
16
16
  export const REQUEST_TIMEOUT_MS = 30000;
17
17
  export const IDLE_TIMEOUT_MS = 300000;
18
18
  export const PROTOCOL_VERSION = 1;
19
+ /** Validates that a decoded frame has the shape of a ProxyResponse, guarding
20
+ * against adversarial or malformed server responses with unexpected types
21
+ * for `ok`, `code`, or `error`. */
22
+ function isProxyResponseFrame(frame) {
23
+ if (typeof frame.ok !== 'boolean')
24
+ return false;
25
+ if (frame.code !== undefined && typeof frame.code !== 'string')
26
+ return false;
27
+ if (frame.error !== undefined && typeof frame.error !== 'string')
28
+ return false;
29
+ if (frame.retryAfter !== undefined && typeof frame.retryAfter !== 'number')
30
+ return false;
31
+ if (frame.data !== undefined &&
32
+ (typeof frame.data !== 'object' ||
33
+ frame.data === null ||
34
+ Array.isArray(frame.data)))
35
+ return false;
36
+ return true;
37
+ }
19
38
  export class ProxySocketClient {
20
39
  socketPath;
40
+ capabilityToken;
21
41
  socket = null;
22
42
  decoder = new FrameDecoder({
23
43
  onPartialFrameTimeout: () => this.handlePartialFrameTimeout(),
@@ -27,8 +47,9 @@ export class ProxySocketClient {
27
47
  idleTimer = null;
28
48
  connectingPromise = null;
29
49
  handshakeResolver = null;
30
- constructor(socketPath) {
50
+ constructor(socketPath, capabilityToken) {
31
51
  this.socketPath = socketPath;
52
+ this.capabilityToken = capabilityToken;
32
53
  }
33
54
  async ensureConnected() {
34
55
  if (this.socket !== null && this.handshakeComplete) {
@@ -99,8 +120,19 @@ export class ProxySocketClient {
99
120
  this.decoder.reset();
100
121
  }
101
122
  async connectAndHandshake() {
102
- await this.connect();
103
- await this.handshake();
123
+ try {
124
+ await this.connect();
125
+ await this.handshake();
126
+ }
127
+ catch (err) {
128
+ try {
129
+ this.destroy(err instanceof Error ? err.message : 'Handshake failed');
130
+ }
131
+ catch {
132
+ // Swallow cleanup errors so the original failure is not masked
133
+ }
134
+ throw err;
135
+ }
104
136
  }
105
137
  async connect() {
106
138
  this.socket = net.createConnection(this.socketPath);
@@ -118,10 +150,14 @@ export class ProxySocketClient {
118
150
  this.socket.unref();
119
151
  }
120
152
  async handshake() {
153
+ const payload = { minVersion: 1, maxVersion: 1 };
154
+ if (this.capabilityToken) {
155
+ payload.capabilityToken = this.capabilityToken;
156
+ }
121
157
  const request = {
122
158
  v: PROTOCOL_VERSION,
123
159
  op: 'handshake',
124
- payload: { minVersion: 1, maxVersion: 1 },
160
+ payload,
125
161
  };
126
162
  this.socket.write(encodeFrame(request));
127
163
  const response = await new Promise((resolve, reject) => {
@@ -142,7 +178,15 @@ export class ProxySocketClient {
142
178
  };
143
179
  });
144
180
  if (response.ok !== true) {
145
- throw new Error('Version mismatch: ' + (response.error ?? 'unknown error'));
181
+ if (response.code === 'UNAUTHORIZED') {
182
+ throw new Error('Credential proxy authentication failed: ' +
183
+ (response.error ?? 'invalid or missing capability token'));
184
+ }
185
+ const codeInfo = response.code ? ` [${response.code}]` : '';
186
+ throw new Error('Handshake failed' +
187
+ codeInfo +
188
+ ': ' +
189
+ (response.error ?? 'unknown error'));
146
190
  }
147
191
  this.handshakeComplete = true;
148
192
  this.resetIdleTimer();
@@ -151,19 +195,42 @@ export class ProxySocketClient {
151
195
  try {
152
196
  const frames = this.decoder.feed(chunk);
153
197
  for (const frame of frames) {
154
- if (this.handshakeResolver) {
155
- const resolver = this.handshakeResolver;
156
- this.handshakeResolver = null;
157
- resolver.resolve(frame);
158
- continue;
159
- }
160
- this.resolvePendingRequest(frame);
198
+ if (this.processFrame(frame))
199
+ return;
161
200
  }
162
201
  }
163
202
  catch {
164
203
  this.destroy('Frame decode error');
165
204
  }
166
205
  }
206
+ /**
207
+ * Processes a single decoded frame. Returns true if the socket was
208
+ * destroyed and the caller should stop iterating.
209
+ */
210
+ processFrame(frame) {
211
+ if (this.handshakeResolver) {
212
+ this.resolveHandshake(frame);
213
+ return this.socket === null;
214
+ }
215
+ this.resolvePendingRequest(frame);
216
+ return this.socket === null;
217
+ }
218
+ resolveHandshake(frame) {
219
+ const resolver = this.handshakeResolver;
220
+ if (resolver === null) {
221
+ return;
222
+ }
223
+ this.handshakeResolver = null;
224
+ if (isProxyResponseFrame(frame)) {
225
+ resolver.resolve(frame);
226
+ }
227
+ else {
228
+ // Reject first, then clean up. destroy() will not double-reject
229
+ // because handshakeResolver was already nulled above.
230
+ resolver.reject(new Error('Malformed handshake response from proxy'));
231
+ this.destroy('Malformed handshake response from proxy');
232
+ }
233
+ }
167
234
  resolvePendingRequest(frame) {
168
235
  const id = frame.id;
169
236
  if (!id) {
@@ -173,7 +240,14 @@ export class ProxySocketClient {
173
240
  if (pending) {
174
241
  clearTimeout(pending.timer);
175
242
  this.pendingRequests.delete(id);
176
- pending.resolve(frame);
243
+ if (isProxyResponseFrame(frame)) {
244
+ pending.resolve(frame);
245
+ }
246
+ else {
247
+ pending.reject(new Error(`Malformed response for request ${id}`));
248
+ this.destroy('Malformed response from proxy — connection reset');
249
+ return;
250
+ }
177
251
  }
178
252
  }
179
253
  onError(_err) {
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-socket-client.js","sourceRoot":"","sources":["../../../../../auth/src/proxy/proxy-socket-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy-socket-client.js","sourceRoot":"","sources":["../../../../../auth/src/proxy/proxy-socket-client.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ import { type TokenStore } from '../token-store.js';
16
16
  import { ProxySocketClient } from './proxy-socket-client.js';
17
17
  export declare class ProxyTokenStore implements TokenStore {
18
18
  private readonly client;
19
- constructor(socketPath: string);
19
+ constructor(socketPath: string, capabilityToken?: string);
20
20
  getToken(provider: string, bucket?: string): Promise<OAuthToken | null>;
21
21
  saveToken(provider: string, token: OAuthToken, bucket?: string): Promise<void>;
22
22
  removeToken(provider: string, bucket?: string): Promise<void>;
@@ -6,8 +6,8 @@
6
6
  import { ProxySocketClient } from './proxy-socket-client.js';
7
7
  export class ProxyTokenStore {
8
8
  client;
9
- constructor(socketPath) {
10
- this.client = new ProxySocketClient(socketPath);
9
+ constructor(socketPath, capabilityToken) {
10
+ this.client = new ProxySocketClient(socketPath, capabilityToken);
11
11
  }
12
12
  async getToken(provider, bucket) {
13
13
  const response = await this.client.request('get_token', {
@@ -1 +1 @@
1
- {"version":3,"file":"proxy-token-store.js","sourceRoot":"","sources":["../../../../../auth/src/proxy/proxy-token-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy-token-store.js","sourceRoot":"","sources":["../../../../../auth/src/proxy/proxy-token-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,OAAO,eAAe;IACT,MAAM,CAAoB;IAE3C,YAAY,UAAkB,EAAE,eAAwB;QACtD,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,MAAe;QAEf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YACtD,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;QACnE,OAAO,QAAQ,CAAC,IAA6B,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAAgB,EAChB,KAAiB,EACjB,MAAe;QAEf,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,EAAE;YACvD,QAAQ;YACR,MAAM;YACN,KAAK;SACN,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,MAAe;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE;YACzD,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;QACnE,OAAQ,QAAQ,CAAC,IAAgC,CAAC,SAAqB,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;QACnE,OAAQ,QAAQ,CAAC,IAAgC,CAAC,OAAmB,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,MAAc;QAEd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE;YAC7D,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC;QACnE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA+B,CAAC;QACtD,OAAO;YACL,MAAM;YACN,YAAY,EACV,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/D,UAAU,EAAE,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrE,QAAQ,EAAE,IAAI,CAAC,QAA8B;SAC9C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,SAAiB,EACjB,QAA+C;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,SAAiB,EAAE,OAAgB;QAC1D,8CAA8C;IAChD,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,SAAiB,EACjB,QAA+C;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,OAAgB;QACvD,2CAA2C;IAC7C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
@@ -19,6 +19,7 @@ import type { ShellExecutionConfig } from '../services/shellExecutionService.js'
19
19
  import type { ToolSchedulerContract } from '../core/toolSchedulerContract.js';
20
20
  export declare class Config extends ConfigBase {
21
21
  private static readonly logger;
22
+ private readonly liveTrustTransitionLifecycle;
22
23
  constructor(params: ConfigParameters);
23
24
  private mcpDiscoveryPromise;
24
25
  private initializationPromise;
@@ -80,6 +81,13 @@ export declare class Config extends ConfigBase {
80
81
  * 'false' for untrusted.
81
82
  */
82
83
  isTrustedFolder(): boolean;
84
+ getIdeTrust(): boolean | undefined;
85
+ /**
86
+ * Updates the local trust fallback. IDE trust remains authoritative, so this
87
+ * only triggers a transition when the effective trust value changes.
88
+ */
89
+ setTrustedFolderLive(trusted: boolean): Promise<void>;
90
+ private reconcileEffectiveTrust;
83
91
  setPtyTerminalSize(width: number | undefined, height: number | undefined): void;
84
92
  getShellExecutionConfig(): ShellExecutionConfig;
85
93
  getJitContextEnabled(): boolean;
@@ -136,6 +144,18 @@ export declare class Config extends ConfigBase {
136
144
  * @requirement:HOOK-010 - Zero CPU/memory overhead when hooks are disabled
137
145
  */
138
146
  getHookSystem(): HookSystem | undefined;
147
+ private ideTrust;
148
+ private cachedEffectiveTrust;
149
+ /**
150
+ * Resolves once any pending trust-transition side-effects have settled.
151
+ */
152
+ whenTrustTransitionSettled(): Promise<void>;
153
+ private ideTrustChangeListener;
154
+ /**
155
+ * Subscribes to live IDE trust changes so that MCP servers, hooks, and
156
+ * approval mode are updated immediately without requiring a restart.
157
+ */
158
+ private registerIdeTrustListener;
139
159
  dispose(): Promise<void>;
140
160
  }
141
161
  export { type SchedulerCallbacks, type SchedulerOptions };
@@ -23,6 +23,7 @@ import { applyConfigParams, } from './configConstructor.js';
23
23
  import { ConfigBase } from './configBase.js';
24
24
  import { buildNewContentGeneratorConfig, createDetachedAgentClient, disposePreviousAgentClient, extractExistingState, requireAgentClientFactory, transferHistoryToNewClient, } from './agentClientLifecycle.js';
25
25
  import { getOrCreateAsyncTaskManager, getOrCreateAsyncTaskReminderService, setupAsyncTaskAutoTrigger, } from './asyncTaskServices.js';
26
+ import { LiveTrustTransitionLifecycle } from './liveTrustTransitionLifecycle.js';
26
27
  import { parseSettingsSubagentDefinitions } from './subagentSettingsParser.js';
27
28
  import { ApprovalMode, } from './configTypes.js';
28
29
  // Re-export all types for backward compatibility
@@ -32,12 +33,40 @@ export { DEFAULT_FILE_FILTERING_OPTIONS, DEFAULT_MEMORY_FILE_FILTERING_OPTIONS,
32
33
  import { coreEvents, CoreEvent } from '../utils/events.js';
33
34
  import { McpClientManager } from '@vybestack/llxprt-code-mcp';
34
35
  import { getCoreVersion } from '../utils/version.js';
36
+ import { buildMcpTrustedRules, MCP_TRUSTED_POLICY_SOURCE, } from '../policy/config.js';
35
37
  export class Config extends ConfigBase {
36
38
  static logger = new DebugLogger('llxprt:config');
39
+ liveTrustTransitionLifecycle;
37
40
  constructor(params) {
38
41
  super();
39
42
  applyConfigParams(this, params);
40
43
  this.syncModeDerivedPolicyRules(this.approvalMode);
44
+ this.cachedEffectiveTrust = this.isTrustedFolder();
45
+ this.liveTrustTransitionLifecycle = new LiveTrustTransitionLifecycle({
46
+ downgradeApprovalMode: () => {
47
+ if (this.approvalMode !== ApprovalMode.DEFAULT) {
48
+ this.approvalMode = ApprovalMode.DEFAULT;
49
+ }
50
+ },
51
+ removeTrustedPolicyRules: () => this.policyEngine.removeRulesBySource(MCP_TRUSTED_POLICY_SOURCE),
52
+ updateTrustPolicy: (trusted) => {
53
+ if (trusted) {
54
+ for (const rule of buildMcpTrustedRules({
55
+ mcpServers: this.getMcpServers(),
56
+ })) {
57
+ this.policyEngine.addRule(rule);
58
+ }
59
+ }
60
+ else {
61
+ this.mcpClientManager?.quarantineForTrustRevocation();
62
+ }
63
+ },
64
+ transitionMcp: (trusted) => trusted
65
+ ? this.mcpClientManager?.onFolderTrustGained()
66
+ : this.mcpClientManager?.onFolderTrustRevoked(),
67
+ initializeHooks: (signal) => this.getHookSystem()?.initialize(signal),
68
+ emitTrustChanged: (trusted) => coreEvents.emitFolderTrustChanged(trusted),
69
+ });
41
70
  }
42
71
  // Issue #2325: Background MCP discovery promise started in initialize() so
43
72
  // startup is not blocked. Awaited in dispose() to avoid tearing down servers
@@ -72,7 +101,7 @@ export class Config extends ConfigBase {
72
101
  if (!initializationMessageBus) {
73
102
  throw new Error('Config.initialize requires an explicit session/runtime MessageBus dependency.');
74
103
  }
75
- this.initialized = true;
104
+ this.cachedEffectiveTrust = this.isTrustedFolder();
76
105
  this.ideClient = await IdeClient.getInstance();
77
106
  // Initialize centralized FileDiscoveryService
78
107
  this.getFileService();
@@ -83,6 +112,8 @@ export class Config extends ConfigBase {
83
112
  this.resourceRegistry = new ResourceRegistry();
84
113
  this.toolRegistry = await this.createToolRegistry(initializationMessageBus);
85
114
  this.mcpClientManager = new McpClientManager(await getCoreVersion(), this.toolRegistry, this, this.eventEmitter);
115
+ this.registerIdeTrustListener();
116
+ this.initialized = true;
86
117
  // Issue #2325: Fire MCP discovery in the background — don't block startup.
87
118
  // Tools are gated before model turns via McpClientManager.whenDiscoverySettled().
88
119
  this.mcpDiscoveryPromise =
@@ -368,21 +399,30 @@ export class Config extends ConfigBase {
368
399
  * 'false' for untrusted.
369
400
  */
370
401
  isTrustedFolder() {
371
- // isWorkspaceTrusted in cli/src/config/trustedFolder.js returns undefined
372
- // when the file based trust value is unavailable, since it is mainly used
373
- // in the initialization for trust dialogs, etc. Here we return true since
374
- // config.isTrustedFolder() is used for the main business logic of blocking
375
- // tool calls etc in the rest of the application.
376
- //
377
- // Default value is true since we load with trusted settings to avoid
378
- // restarts in the more common path. If the user chooses to mark the folder
379
- // as untrusted, the CLI will restart and we will have the trust value
380
- // reloaded.
381
- const context = ideContext.getIdeContext();
382
- if (context?.workspaceState?.isTrusted !== undefined) {
383
- return context.workspaceState.isTrusted;
384
- }
385
- return this.trustedFolder ?? true;
402
+ return this.getIdeTrust() ?? this.trustedFolder ?? true;
403
+ }
404
+ getIdeTrust() {
405
+ return (this.ideTrust ?? ideContext.getIdeContext()?.workspaceState?.isTrusted);
406
+ }
407
+ /**
408
+ * Updates the local trust fallback. IDE trust remains authoritative, so this
409
+ * only triggers a transition when the effective trust value changes.
410
+ */
411
+ setTrustedFolderLive(trusted) {
412
+ const previousEffectiveTrust = this.isTrustedFolder();
413
+ this.trustedFolder = trusted;
414
+ if (!this.initialized) {
415
+ return Promise.resolve();
416
+ }
417
+ return this.reconcileEffectiveTrust(previousEffectiveTrust);
418
+ }
419
+ reconcileEffectiveTrust(previousEffectiveTrust) {
420
+ const effectiveTrust = this.isTrustedFolder();
421
+ this.cachedEffectiveTrust = effectiveTrust;
422
+ if (previousEffectiveTrust !== effectiveTrust) {
423
+ return this.liveTrustTransitionLifecycle.apply(effectiveTrust);
424
+ }
425
+ return Promise.resolve();
386
426
  }
387
427
  setPtyTerminalSize(width, height) {
388
428
  if (typeof width === 'number' && Number.isFinite(width) && width > 0) {
@@ -560,10 +600,83 @@ export class Config extends ConfigBase {
560
600
  this.hookSystem ??= new HookSystem(this);
561
601
  return this.hookSystem;
562
602
  }
603
+ ideTrust;
604
+ cachedEffectiveTrust;
605
+ /**
606
+ * Resolves once any pending trust-transition side-effects have settled.
607
+ */
608
+ async whenTrustTransitionSettled() {
609
+ await this.liveTrustTransitionLifecycle.whenSettled();
610
+ }
611
+ ideTrustChangeListener;
612
+ /**
613
+ * Subscribes to live IDE trust changes so that MCP servers, hooks, and
614
+ * approval mode are updated immediately without requiring a restart.
615
+ */
616
+ registerIdeTrustListener() {
617
+ const client = this.ideClient;
618
+ const previousEffectiveTrust = this.cachedEffectiveTrust;
619
+ this.ideTrust = ideContext.getIdeContext()?.workspaceState?.isTrusted;
620
+ if (client && typeof client.addTrustChangeListener === 'function') {
621
+ this.ideTrustChangeListener = (isTrusted) => {
622
+ const priorEffectiveTrust = this.cachedEffectiveTrust;
623
+ this.ideTrust = isTrusted;
624
+ void this.reconcileEffectiveTrust(priorEffectiveTrust).catch((error) => {
625
+ Config.logger.error(`IDE trust reconciliation failed: ${getErrorMessage(error)}`);
626
+ });
627
+ };
628
+ client.addTrustChangeListener(this.ideTrustChangeListener);
629
+ }
630
+ void this.reconcileEffectiveTrust(previousEffectiveTrust).catch((error) => {
631
+ Config.logger.error(`IDE trust reconciliation failed: ${getErrorMessage(error)}`);
632
+ });
633
+ }
563
634
  async dispose() {
635
+ const failures = [];
636
+ try {
637
+ this.liveTrustTransitionLifecycle.beginDisposal();
638
+ }
639
+ catch (error) {
640
+ failures.push(error);
641
+ }
642
+ if (this.ideTrustChangeListener &&
643
+ this.ideClient &&
644
+ typeof this.ideClient.removeTrustChangeListener === 'function') {
645
+ try {
646
+ this.ideClient.removeTrustChangeListener(this.ideTrustChangeListener);
647
+ }
648
+ catch (error) {
649
+ failures.push(error);
650
+ }
651
+ this.ideTrustChangeListener = undefined;
652
+ }
653
+ // Initiate MCP shutdown before awaiting trust-transition settlement so
654
+ // in-flight MCP work is cancelled and cannot block disposal.
655
+ const stopPromise = this.mcpClientManager?.stop();
656
+ try {
657
+ await this.whenTrustTransitionSettled();
658
+ }
659
+ catch (error) {
660
+ failures.push(error);
661
+ }
564
662
  const client = this.agentClient;
565
663
  if (client !== undefined) {
566
- client.dispose();
664
+ try {
665
+ client.dispose();
666
+ }
667
+ catch (error) {
668
+ failures.push(error);
669
+ }
670
+ }
671
+ if (this.hookSystem !== undefined) {
672
+ const hookSystem = this.hookSystem;
673
+ this.hookSystem = undefined;
674
+ try {
675
+ hookSystem.dispose();
676
+ }
677
+ catch (error) {
678
+ failures.push(error);
679
+ }
567
680
  }
568
681
  if (this.mcpDiscoveryPromise !== undefined) {
569
682
  try {
@@ -573,12 +686,19 @@ export class Config extends ConfigBase {
573
686
  Config.logger.warn(`MCP discovery rejected during dispose: ${getErrorMessage(error)}`);
574
687
  }
575
688
  }
576
- // Issue #2325: Extension server discoveries fired by startExtension are
577
- // tracked by whenDiscoverySettled(). Await it to avoid tearing down
578
- // clients mid-connection.
579
- if (this.mcpClientManager !== undefined) {
580
- await this.mcpClientManager.whenDiscoverySettled();
581
- await this.mcpClientManager.stop();
689
+ if (stopPromise !== undefined) {
690
+ try {
691
+ await stopPromise;
692
+ }
693
+ catch (error) {
694
+ failures.push(error);
695
+ }
696
+ }
697
+ if (failures.length === 1) {
698
+ throw failures[0];
699
+ }
700
+ if (failures.length > 1) {
701
+ throw new AggregateError(failures, 'Config disposal failed');
582
702
  }
583
703
  }
584
704
  }