@vybestack/llxprt-code 0.1.18-nightly.250808.f9b79d74 → 0.1.18-nightly.250812.12fa8ad2

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 (218) hide show
  1. package/README.md +49 -2
  2. package/dist/package.json +5 -3
  3. package/dist/src/auth/anthropic-oauth-provider.d.ts +33 -0
  4. package/dist/src/auth/anthropic-oauth-provider.js +129 -0
  5. package/dist/src/auth/anthropic-oauth-provider.js.map +1 -0
  6. package/dist/src/auth/gemini-oauth-provider.d.ts +15 -0
  7. package/dist/src/auth/gemini-oauth-provider.js +33 -0
  8. package/dist/src/auth/gemini-oauth-provider.js.map +1 -0
  9. package/dist/src/auth/oauth-manager.d.ts +109 -0
  10. package/dist/src/auth/oauth-manager.js +334 -0
  11. package/dist/src/auth/oauth-manager.js.map +1 -0
  12. package/dist/src/auth/oauth-manager.spec.d.ts +6 -0
  13. package/dist/src/auth/oauth-manager.spec.js +523 -0
  14. package/dist/src/auth/oauth-manager.spec.js.map +1 -0
  15. package/dist/src/auth/qwen-oauth-provider.d.ts +14 -0
  16. package/dist/src/auth/qwen-oauth-provider.js +75 -0
  17. package/dist/src/auth/qwen-oauth-provider.js.map +1 -0
  18. package/dist/src/auth/types.d.ts +7 -0
  19. package/dist/src/auth/types.js +7 -0
  20. package/dist/src/auth/types.js.map +1 -0
  21. package/dist/src/config/auth.js +11 -0
  22. package/dist/src/config/auth.js.map +1 -1
  23. package/dist/src/config/config.js +93 -43
  24. package/dist/src/config/config.js.map +1 -1
  25. package/dist/src/config/keyBindings.d.ts +66 -0
  26. package/dist/src/config/keyBindings.js +136 -0
  27. package/dist/src/config/keyBindings.js.map +1 -0
  28. package/dist/src/config/settings.d.ts +3 -59
  29. package/dist/src/config/settings.js +17 -1
  30. package/dist/src/config/settings.js.map +1 -1
  31. package/dist/src/config/settingsSchema.d.ts +587 -0
  32. package/dist/src/config/settingsSchema.js +565 -0
  33. package/dist/src/config/settingsSchema.js.map +1 -0
  34. package/dist/src/gemini.js +12 -109
  35. package/dist/src/gemini.js.map +1 -1
  36. package/dist/src/generated/git-commit.d.ts +1 -1
  37. package/dist/src/generated/git-commit.js +1 -1
  38. package/dist/src/nonInteractiveCli.js +0 -1
  39. package/dist/src/nonInteractiveCli.js.map +1 -1
  40. package/dist/src/providers/logging/git-stats-service-impl.d.ts +19 -0
  41. package/dist/src/providers/logging/git-stats-service-impl.js +25 -0
  42. package/dist/src/providers/logging/git-stats-service-impl.js.map +1 -0
  43. package/dist/src/providers/logging/git-stats.d.ts +43 -0
  44. package/dist/src/providers/logging/git-stats.js +137 -0
  45. package/dist/src/providers/logging/git-stats.js.map +1 -0
  46. package/dist/src/providers/providerManagerInstance.d.ts +2 -0
  47. package/dist/src/providers/providerManagerInstance.js +49 -5
  48. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  49. package/dist/src/services/BuiltinCommandLoader.js +4 -0
  50. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  51. package/dist/src/services/todo-continuation/todoContinuationService.d.ts +172 -0
  52. package/dist/src/services/todo-continuation/todoContinuationService.js +387 -0
  53. package/dist/src/services/todo-continuation/todoContinuationService.js.map +1 -0
  54. package/dist/src/services/todo-continuation/todoContinuationService.spec.d.ts +6 -0
  55. package/dist/src/services/todo-continuation/todoContinuationService.spec.js +385 -0
  56. package/dist/src/services/todo-continuation/todoContinuationService.spec.js.map +1 -0
  57. package/dist/src/ui/App.js +156 -35
  58. package/dist/src/ui/App.js.map +1 -1
  59. package/dist/src/ui/colors.d.ts +5 -0
  60. package/dist/src/ui/colors.js +51 -0
  61. package/dist/src/ui/colors.js.map +1 -1
  62. package/dist/src/ui/commands/authCommand.d.ts +11 -1
  63. package/dist/src/ui/commands/authCommand.js +145 -48
  64. package/dist/src/ui/commands/authCommand.js.map +1 -1
  65. package/dist/src/ui/commands/chatCommand.js +16 -0
  66. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  67. package/dist/src/ui/commands/diagnosticsCommand.js +94 -10
  68. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -1
  69. package/dist/src/ui/commands/ideCommand.js +67 -31
  70. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  71. package/dist/src/ui/commands/keyCommand.js +32 -2
  72. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  73. package/dist/src/ui/commands/keyfileCommand.js +15 -12
  74. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  75. package/dist/src/ui/commands/loggingCommand.d.ts +15 -0
  76. package/dist/src/ui/commands/loggingCommand.js +421 -0
  77. package/dist/src/ui/commands/loggingCommand.js.map +1 -0
  78. package/dist/src/ui/commands/modelCommand.js +21 -3
  79. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  80. package/dist/src/ui/commands/privacyCommand.d.ts +3 -0
  81. package/dist/src/ui/commands/privacyCommand.js +6 -3
  82. package/dist/src/ui/commands/privacyCommand.js.map +1 -1
  83. package/dist/src/ui/commands/providerCommand.js +52 -14
  84. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  85. package/dist/src/ui/commands/setCommand.js +17 -1
  86. package/dist/src/ui/commands/setCommand.js.map +1 -1
  87. package/dist/src/ui/commands/settingsCommand.d.ts +7 -0
  88. package/dist/src/ui/commands/settingsCommand.js +16 -0
  89. package/dist/src/ui/commands/settingsCommand.js.map +1 -0
  90. package/dist/src/ui/commands/setupGithubCommand.js +21 -2
  91. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  92. package/dist/src/ui/commands/toolformatCommand.js +79 -23
  93. package/dist/src/ui/commands/toolformatCommand.js.map +1 -1
  94. package/dist/src/ui/commands/types.d.ts +14 -2
  95. package/dist/src/ui/commands/types.js.map +1 -1
  96. package/dist/src/ui/components/AuthDialog.js +15 -54
  97. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  98. package/dist/src/ui/components/AuthInProgress.js +3 -3
  99. package/dist/src/ui/components/AuthInProgress.js.map +1 -1
  100. package/dist/src/ui/components/ContextUsageDisplay.d.ts +10 -0
  101. package/dist/src/ui/components/ContextUsageDisplay.js +27 -0
  102. package/dist/src/ui/components/ContextUsageDisplay.js.map +1 -0
  103. package/dist/src/ui/components/FolderTrustDialog.d.ts +16 -0
  104. package/dist/src/ui/components/FolderTrustDialog.js +38 -0
  105. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -0
  106. package/dist/src/ui/components/Footer.js +132 -15
  107. package/dist/src/ui/components/Footer.js.map +1 -1
  108. package/dist/src/ui/components/InputPrompt.d.ts +1 -0
  109. package/dist/src/ui/components/InputPrompt.js +87 -31
  110. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  111. package/dist/src/ui/components/LoggingDialog.d.ts +37 -0
  112. package/dist/src/ui/components/LoggingDialog.js +155 -0
  113. package/dist/src/ui/components/LoggingDialog.js.map +1 -0
  114. package/dist/src/ui/components/MemoryUsageDisplay.js +6 -4
  115. package/dist/src/ui/components/MemoryUsageDisplay.js.map +1 -1
  116. package/dist/src/ui/components/OAuthCodeDialog.d.ts +13 -0
  117. package/dist/src/ui/components/OAuthCodeDialog.js +54 -0
  118. package/dist/src/ui/components/OAuthCodeDialog.js.map +1 -0
  119. package/dist/src/ui/components/ProviderDialog.js +100 -26
  120. package/dist/src/ui/components/ProviderDialog.js.map +1 -1
  121. package/dist/src/ui/components/ProviderModelDialog.js +99 -27
  122. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  123. package/dist/src/ui/components/SettingsDialog.d.ts +14 -0
  124. package/dist/src/ui/components/SettingsDialog.js +247 -0
  125. package/dist/src/ui/components/SettingsDialog.js.map +1 -0
  126. package/dist/src/ui/components/ThemeDialog.js +4 -15
  127. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  128. package/dist/src/ui/components/TodoPanel.js +93 -18
  129. package/dist/src/ui/components/TodoPanel.js.map +1 -1
  130. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +85 -7
  131. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  132. package/dist/src/ui/contexts/SettingsContext.d.ts +9 -0
  133. package/dist/src/ui/contexts/SettingsContext.js +15 -0
  134. package/dist/src/ui/contexts/SettingsContext.js.map +1 -0
  135. package/dist/src/ui/hooks/atCommandProcessor.js +21 -0
  136. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  137. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +6 -2
  138. package/dist/src/ui/hooks/slashCommandProcessor.js +142 -113
  139. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  140. package/dist/src/ui/hooks/useAtCompletion.js +1 -1
  141. package/dist/src/ui/hooks/useAuthCommand.js +48 -2
  142. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  143. package/dist/src/ui/hooks/useConsoleMessages.js +7 -0
  144. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  145. package/dist/src/ui/hooks/useFolderTrust.d.ts +11 -0
  146. package/dist/src/ui/hooks/useFolderTrust.js +22 -0
  147. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -0
  148. package/dist/src/ui/hooks/useGeminiStream.d.ts +1 -1
  149. package/dist/src/ui/hooks/useGeminiStream.js +35 -10
  150. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  151. package/dist/src/ui/hooks/useResponsive.d.ts +14 -0
  152. package/dist/src/ui/hooks/useResponsive.js +19 -0
  153. package/dist/src/ui/hooks/useResponsive.js.map +1 -0
  154. package/dist/src/ui/hooks/useSettingsCommand.d.ts +10 -0
  155. package/dist/src/ui/hooks/useSettingsCommand.js +21 -0
  156. package/dist/src/ui/hooks/useSettingsCommand.js.map +1 -0
  157. package/dist/src/ui/hooks/useTodoContinuation.d.ts +31 -0
  158. package/dist/src/ui/hooks/useTodoContinuation.js +148 -0
  159. package/dist/src/ui/hooks/useTodoContinuation.js.map +1 -0
  160. package/dist/src/ui/hooks/useTodoContinuation.spec.d.ts +6 -0
  161. package/dist/src/ui/hooks/useTodoContinuation.spec.js +378 -0
  162. package/dist/src/ui/hooks/useTodoContinuation.spec.js.map +1 -0
  163. package/dist/src/ui/keyMatchers.d.ts +26 -0
  164. package/dist/src/ui/keyMatchers.js +68 -0
  165. package/dist/src/ui/keyMatchers.js.map +1 -0
  166. package/dist/src/ui/privacy/PrivacyNotice.js +10 -4
  167. package/dist/src/ui/privacy/PrivacyNotice.js.map +1 -1
  168. package/dist/src/ui/reducers/appReducer.d.ts +3 -2
  169. package/dist/src/ui/reducers/appReducer.js +1 -0
  170. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  171. package/dist/src/ui/themes/semantic-resolver.d.ts +12 -0
  172. package/dist/src/ui/themes/semantic-resolver.js +32 -0
  173. package/dist/src/ui/themes/semantic-resolver.js.map +1 -0
  174. package/dist/src/ui/themes/semantic-tokens.d.ts +52 -0
  175. package/dist/src/ui/themes/semantic-tokens.js +7 -0
  176. package/dist/src/ui/themes/semantic-tokens.js.map +1 -0
  177. package/dist/src/ui/themes/theme-compat.d.ts +34 -0
  178. package/dist/src/ui/themes/theme-compat.js +65 -0
  179. package/dist/src/ui/themes/theme-compat.js.map +1 -0
  180. package/dist/src/ui/themes/theme-manager.d.ts +8 -0
  181. package/dist/src/ui/themes/theme-manager.js +18 -0
  182. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  183. package/dist/src/ui/utils/CodeColorizer.d.ts +2 -1
  184. package/dist/src/ui/utils/CodeColorizer.js +4 -3
  185. package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
  186. package/dist/src/ui/utils/MarkdownDisplay.js +4 -2
  187. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  188. package/dist/src/ui/utils/commandUtils.d.ts +1 -0
  189. package/dist/src/ui/utils/commandUtils.js +22 -1
  190. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  191. package/dist/src/ui/utils/responsive.d.ts +16 -0
  192. package/dist/src/ui/utils/responsive.js +111 -0
  193. package/dist/src/ui/utils/responsive.js.map +1 -0
  194. package/dist/src/utils/cleanup.d.ts +2 -2
  195. package/dist/src/utils/cleanup.js +2 -2
  196. package/dist/src/utils/cleanup.js.map +1 -1
  197. package/dist/src/utils/dialogScopeUtils.d.ts +31 -0
  198. package/dist/src/utils/dialogScopeUtils.js +48 -0
  199. package/dist/src/utils/dialogScopeUtils.js.map +1 -0
  200. package/dist/src/utils/gitUtils.d.ts +9 -0
  201. package/dist/src/utils/gitUtils.js +17 -0
  202. package/dist/src/utils/gitUtils.js.map +1 -1
  203. package/dist/src/utils/privacy/ConversationDataRedactor.d.ts +75 -0
  204. package/dist/src/utils/privacy/ConversationDataRedactor.js +412 -0
  205. package/dist/src/utils/privacy/ConversationDataRedactor.js.map +1 -0
  206. package/dist/src/utils/privacy/PrivacyManager.d.ts +58 -0
  207. package/dist/src/utils/privacy/PrivacyManager.js +133 -0
  208. package/dist/src/utils/privacy/PrivacyManager.js.map +1 -0
  209. package/dist/src/utils/sandbox.js +10 -0
  210. package/dist/src/utils/sandbox.js.map +1 -1
  211. package/dist/src/utils/settingsUtils.d.ts +126 -0
  212. package/dist/src/utils/settingsUtils.js +327 -0
  213. package/dist/src/utils/settingsUtils.js.map +1 -0
  214. package/dist/tsconfig.tsbuildinfo +1 -1
  215. package/package.json +5 -3
  216. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +0 -12
  217. package/dist/src/ui/components/IDEContextDetailDisplay.js +0 -17
  218. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +0 -1
@@ -10,10 +10,10 @@ const cleanupFunctions = [];
10
10
  export function registerCleanup(fn) {
11
11
  cleanupFunctions.push(fn);
12
12
  }
13
- export function runExitCleanup() {
13
+ export async function runExitCleanup() {
14
14
  for (const fn of cleanupFunctions) {
15
15
  try {
16
- fn();
16
+ await fn();
17
17
  }
18
18
  catch (_) {
19
19
  // Ignore errors during cleanup.
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,gBAAgB,GAAsB,EAAE,CAAC;AAE/C,MAAM,UAAU,eAAe,CAAC,EAAc;IAC5C,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,EAAE,EAAE,CAAC;QACP,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gCAAgC;QAClC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,MAAM,gBAAgB,GAAgD,EAAE,CAAC;AAEzE,MAAM,UAAU,eAAe,CAAC,EAAwC;IACtE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gCAAgC;QAClC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SettingScope, LoadedSettings } from '../config/settings.js';
7
+ /**
8
+ * Shared scope labels for dialog components that need to display setting scopes
9
+ */
10
+ export declare const SCOPE_LABELS: {
11
+ readonly User: "User Settings";
12
+ readonly Workspace: "Workspace Settings";
13
+ readonly System: "System Settings";
14
+ };
15
+ /**
16
+ * Helper function to get scope items for radio button selects
17
+ */
18
+ export declare function getScopeItems(): ({
19
+ label: "User Settings";
20
+ value: SettingScope;
21
+ } | {
22
+ label: "Workspace Settings";
23
+ value: SettingScope;
24
+ } | {
25
+ label: "System Settings";
26
+ value: SettingScope;
27
+ })[];
28
+ /**
29
+ * Generate scope message for a specific setting
30
+ */
31
+ export declare function getScopeMessageForSetting(settingKey: string, selectedScope: SettingScope, settings: LoadedSettings): string;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { SettingScope } from '../config/settings.js';
7
+ import { settingExistsInScope } from './settingsUtils.js';
8
+ /**
9
+ * Shared scope labels for dialog components that need to display setting scopes
10
+ */
11
+ export const SCOPE_LABELS = {
12
+ [SettingScope.User]: 'User Settings',
13
+ [SettingScope.Workspace]: 'Workspace Settings',
14
+ [SettingScope.System]: 'System Settings',
15
+ };
16
+ /**
17
+ * Helper function to get scope items for radio button selects
18
+ */
19
+ export function getScopeItems() {
20
+ return [
21
+ { label: SCOPE_LABELS[SettingScope.User], value: SettingScope.User },
22
+ {
23
+ label: SCOPE_LABELS[SettingScope.Workspace],
24
+ value: SettingScope.Workspace,
25
+ },
26
+ { label: SCOPE_LABELS[SettingScope.System], value: SettingScope.System },
27
+ ];
28
+ }
29
+ /**
30
+ * Generate scope message for a specific setting
31
+ */
32
+ export function getScopeMessageForSetting(settingKey, selectedScope, settings) {
33
+ const otherScopes = Object.values(SettingScope).filter((scope) => scope !== selectedScope);
34
+ const modifiedInOtherScopes = otherScopes.filter((scope) => {
35
+ const scopeSettings = settings.forScope(scope).settings;
36
+ return settingExistsInScope(settingKey, scopeSettings);
37
+ });
38
+ if (modifiedInOtherScopes.length === 0) {
39
+ return '';
40
+ }
41
+ const modifiedScopesStr = modifiedInOtherScopes.join(', ');
42
+ const currentScopeSettings = settings.forScope(selectedScope).settings;
43
+ const existsInCurrentScope = settingExistsInScope(settingKey, currentScopeSettings);
44
+ return existsInCurrentScope
45
+ ? `(Also modified in ${modifiedScopesStr})`
46
+ : `(Modified in ${modifiedScopesStr})`;
47
+ }
48
+ //# sourceMappingURL=dialogScopeUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialogScopeUtils.js","sourceRoot":"","sources":["../../../src/utils/dialogScopeUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,eAAe;IACpC,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,oBAAoB;IAC9C,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,iBAAiB;CAChC,CAAC;AAEX;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO;QACL,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,EAAE;QACpE;YACE,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC;YAC3C,KAAK,EAAE,YAAY,CAAC,SAAS;SAC9B;QACD,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE;KACzE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,aAA2B,EAC3B,QAAwB;IAExB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CACpD,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,aAAa,CACnC,CAAC;IAEF,MAAM,qBAAqB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QACzD,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC;QACxD,OAAO,oBAAoB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,iBAAiB,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,oBAAoB,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC;IACvE,MAAM,oBAAoB,GAAG,oBAAoB,CAC/C,UAAU,EACV,oBAAoB,CACrB,CAAC;IAEF,OAAO,oBAAoB;QACzB,CAAC,CAAC,qBAAqB,iBAAiB,GAAG;QAC3C,CAAC,CAAC,gBAAgB,iBAAiB,GAAG,CAAC;AAC3C,CAAC"}
@@ -19,3 +19,12 @@ export declare const getGitRepoRoot: () => string;
19
19
  * @returns string of the release tag (e.g. "v1.2.3").
20
20
  */
21
21
  export declare const getLatestGitHubRelease: (proxy?: string) => Promise<string>;
22
+ /**
23
+ * getGitHubRepoInfo returns the owner and repository for a GitHub repo.
24
+ * @returns the owner and repository of the github repo.
25
+ * @throws error if the exec command fails.
26
+ */
27
+ export declare function getGitHubRepoInfo(): {
28
+ owner: string;
29
+ repo: string;
30
+ };
@@ -71,4 +71,21 @@ export const getLatestGitHubRelease = async (proxy) => {
71
71
  throw new Error(`Unable to determine the latest run-llxprt-code release on GitHub.`);
72
72
  }
73
73
  };
74
+ /**
75
+ * getGitHubRepoInfo returns the owner and repository for a GitHub repo.
76
+ * @returns the owner and repository of the github repo.
77
+ * @throws error if the exec command fails.
78
+ */
79
+ export function getGitHubRepoInfo() {
80
+ const remoteUrl = execSync('git remote get-url origin', {
81
+ encoding: 'utf-8',
82
+ }).trim();
83
+ // Matches either https://github.com/owner/repo.git or git@github.com:owner/repo.git
84
+ const match = remoteUrl.match(/(?:https?:\/\/|git@)github\.com(?::|\/)([^/]+)\/([^/]+?)(?:\.git)?$/);
85
+ // If the regex fails match, throw an error.
86
+ if (!match || !match[1] || !match[2]) {
87
+ throw new Error(`Owner & repo could not be extracted from remote URL: ${remoteUrl}`);
88
+ }
89
+ return { owner: match[1], repo: match[2] };
90
+ }
74
91
  //# sourceMappingURL=gitUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gitUtils.js","sourceRoot":"","sources":["../../../src/utils/gitUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAEzD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAY,EAAE;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,CACd,QAAQ,CAAC,eAAe,EAAE;YACxB,QAAQ,EAAE,OAAO;SAClB,CAAC,IAAI,EAAE,CACT,CAAC,IAAI,EAAE,CAAC;QAET,MAAM,OAAO,GAAG,aAAa,CAAC;QAE9B,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,wDAAwD;QACxD,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAW,EAAE;IACzC,MAAM,WAAW,GAAG,CAClB,QAAQ,CAAC,+BAA+B,EAAE;QACxC,QAAQ,EAAE,OAAO;KAClB,CAAC,IAAI,EAAE,CACT,CAAC,IAAI,EAAE,CAAC;IAET,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,KAAc,EACG,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC;YACV,mBAAmB,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,QAAQ,GAAG,uEAAuE,CAAC;QAEzF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YACrC,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,MAAM,EAAE,6BAA6B;gBACrC,cAAc,EAAE,kBAAkB;gBAClC,sBAAsB,EAAE,YAAY;aACrC;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,0BAA0B,QAAQ,CAAC,MAAM,MAAM,QAAQ,CAAC,UAAU,EAAE,CACrE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC;QACpD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,KAAK,CACX,qDAAqD,EACrD,MAAM,CACP,CAAC;QACF,MAAM,IAAI,KAAK,CACb,mEAAmE,CACpE,CAAC;IACJ,CAAC;AACH,CAAC,CAAC"}
1
+ {"version":3,"file":"gitUtils.js","sourceRoot":"","sources":["../../../src/utils/gitUtils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { IMessage, ITool } from '@vybestack/llxprt-code-core';
7
+ export interface RedactionPattern {
8
+ name: string;
9
+ pattern: RegExp;
10
+ replacement: string;
11
+ enabled: boolean;
12
+ }
13
+ export interface RedactionConfig {
14
+ redactApiKeys: boolean;
15
+ redactCredentials: boolean;
16
+ redactFilePaths: boolean;
17
+ redactUrls: boolean;
18
+ redactEmails: boolean;
19
+ redactPersonalInfo: boolean;
20
+ customPatterns?: RedactionPattern[];
21
+ }
22
+ export declare class ConversationDataRedactor {
23
+ private redactionConfig;
24
+ private redactionPatterns;
25
+ constructor(config?: Partial<RedactionConfig>);
26
+ /**
27
+ * Redact sensitive data from a conversation message
28
+ */
29
+ redactMessage(message: IMessage, providerName: string): IMessage;
30
+ /**
31
+ * Redact sensitive data from tool definitions
32
+ */
33
+ redactToolCall(tool: ITool): ITool;
34
+ /**
35
+ * Redact sensitive data from response content
36
+ */
37
+ redactResponseContent(content: string, providerName: string): string;
38
+ /**
39
+ * Redact entire conversation consistently
40
+ */
41
+ redactConversation(messages: IMessage[], providerName: string): IMessage[];
42
+ /**
43
+ * Redact API keys from content based on provider
44
+ */
45
+ redactApiKeys(content: string, providerName: string): string;
46
+ /**
47
+ * Redact sensitive file paths
48
+ */
49
+ redactSensitivePaths(content: string): string;
50
+ /**
51
+ * Redact personal identifiable information
52
+ */
53
+ redactPersonalInfo(content: string): string;
54
+ private shouldRedact;
55
+ private redactContent;
56
+ private redactContentPart;
57
+ private redactToolParameters;
58
+ private redactFilePath;
59
+ private redactShellCommand;
60
+ private redactUrl;
61
+ private initializeRedactionPatterns;
62
+ private isPatternEnabled;
63
+ /**
64
+ * Update redaction configuration
65
+ */
66
+ updateConfig(config: Partial<RedactionConfig>): void;
67
+ /**
68
+ * Get current redaction statistics
69
+ */
70
+ getRedactionStats(content: string, providerName: string): RedactionStats;
71
+ }
72
+ export interface RedactionStats {
73
+ totalRedactions: number;
74
+ redactionsByType: Record<string, number>;
75
+ }
@@ -0,0 +1,412 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export class ConversationDataRedactor {
7
+ redactionConfig;
8
+ redactionPatterns;
9
+ constructor(config) {
10
+ this.redactionConfig = {
11
+ redactApiKeys: true,
12
+ redactCredentials: true,
13
+ redactFilePaths: false,
14
+ redactUrls: false,
15
+ redactEmails: false,
16
+ redactPersonalInfo: false,
17
+ ...config,
18
+ };
19
+ this.redactionPatterns = this.initializeRedactionPatterns();
20
+ }
21
+ /**
22
+ * Redact sensitive data from a conversation message
23
+ */
24
+ redactMessage(message, providerName) {
25
+ if (!this.shouldRedact()) {
26
+ return message;
27
+ }
28
+ const redactedMessage = { ...message };
29
+ // Content is always a string in IMessage
30
+ redactedMessage.content = this.redactContent(redactedMessage.content, providerName);
31
+ // Redact tool_calls if present
32
+ if (redactedMessage.tool_calls) {
33
+ redactedMessage.tool_calls = redactedMessage.tool_calls.map((call) => ({
34
+ ...call,
35
+ function: {
36
+ ...call.function,
37
+ arguments: this.redactContent(call.function.arguments, providerName),
38
+ },
39
+ }));
40
+ }
41
+ return redactedMessage;
42
+ }
43
+ /**
44
+ * Redact sensitive data from tool definitions
45
+ */
46
+ redactToolCall(tool) {
47
+ if (!this.shouldRedact()) {
48
+ return tool;
49
+ }
50
+ const redactedTool = { ...tool };
51
+ // Handle both ITool interface and test format
52
+ if (redactedTool.function &&
53
+ redactedTool.function.parameters &&
54
+ tool.function.name) {
55
+ redactedTool.function.parameters = this.redactToolParameters(redactedTool.function.parameters, tool.function.name);
56
+ }
57
+ else if (redactedTool.parameters &&
58
+ tool.name) {
59
+ // Handle test format that doesn't match ITool interface
60
+ redactedTool.parameters =
61
+ this.redactToolParameters(redactedTool.parameters, tool.name);
62
+ }
63
+ return redactedTool;
64
+ }
65
+ /**
66
+ * Redact sensitive data from response content
67
+ */
68
+ redactResponseContent(content, providerName) {
69
+ if (!this.shouldRedact()) {
70
+ return content;
71
+ }
72
+ return this.redactContent(content, providerName);
73
+ }
74
+ /**
75
+ * Redact entire conversation consistently
76
+ */
77
+ redactConversation(messages, providerName) {
78
+ return messages.map((message) => this.redactMessage(message, providerName));
79
+ }
80
+ /**
81
+ * Redact API keys from content based on provider
82
+ */
83
+ redactApiKeys(content, providerName) {
84
+ let redacted = content;
85
+ // Apply provider-specific and global API key patterns
86
+ const providerPatterns = this.redactionPatterns.get(providerName) || [];
87
+ const globalPatterns = this.redactionPatterns.get('global') || [];
88
+ [...providerPatterns, ...globalPatterns].forEach((pattern) => {
89
+ if (pattern.enabled && pattern.name.includes('api_key')) {
90
+ redacted = redacted.replace(pattern.pattern, pattern.replacement);
91
+ }
92
+ });
93
+ return redacted;
94
+ }
95
+ /**
96
+ * Redact sensitive file paths
97
+ */
98
+ redactSensitivePaths(content) {
99
+ if (!this.redactionConfig.redactFilePaths) {
100
+ return content;
101
+ }
102
+ let redacted = content;
103
+ // SSH keys and certificates
104
+ redacted = redacted.replace(/\/[^"\s]*\.ssh\/[^"\s]*/g, '[REDACTED-SSH-PATH]');
105
+ redacted = redacted.replace(/\/[^"\s]*\/id_rsa[^"\s]*/g, '[REDACTED-SSH-KEY-PATH]');
106
+ // Environment files
107
+ redacted = redacted.replace(/\/[^"\s]*\.env[^"\s]*/g, '[REDACTED-ENV-FILE]');
108
+ // Configuration directories
109
+ redacted = redacted.replace(/\/home\/[^/\s"]+/g, '[REDACTED-HOME-DIR]');
110
+ redacted = redacted.replace(/\/Users\/[^/\s"]+/g, '[REDACTED-USER-DIR]');
111
+ return redacted;
112
+ }
113
+ /**
114
+ * Redact personal identifiable information
115
+ */
116
+ redactPersonalInfo(content) {
117
+ if (!this.redactionConfig.redactPersonalInfo) {
118
+ return content;
119
+ }
120
+ let redacted = content;
121
+ // Email addresses
122
+ redacted = redacted.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, '[REDACTED-EMAIL]');
123
+ // Phone numbers (basic patterns)
124
+ redacted = redacted.replace(/\b\d{3}-\d{3}-\d{4}\b/g, '[REDACTED-PHONE]');
125
+ redacted = redacted.replace(/\b\(\d{3}\)\s?\d{3}-\d{4}\b/g, '[REDACTED-PHONE]');
126
+ // Credit card numbers (basic pattern)
127
+ redacted = redacted.replace(/\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g, '[REDACTED-CC-NUMBER]');
128
+ return redacted;
129
+ }
130
+ shouldRedact() {
131
+ // Check if any redaction is enabled
132
+ return Object.values(this.redactionConfig).some((value) => value === true);
133
+ }
134
+ redactContent(content, providerName) {
135
+ let redacted = content;
136
+ // Apply provider-specific patterns
137
+ const providerPatterns = this.redactionPatterns.get(providerName) || [];
138
+ for (const pattern of providerPatterns) {
139
+ if (pattern.enabled) {
140
+ redacted = redacted.replace(pattern.pattern, pattern.replacement);
141
+ }
142
+ }
143
+ // Apply global patterns
144
+ const globalPatterns = this.redactionPatterns.get('global') || [];
145
+ for (const pattern of globalPatterns) {
146
+ if (pattern.enabled) {
147
+ redacted = redacted.replace(pattern.pattern, pattern.replacement);
148
+ }
149
+ }
150
+ return redacted;
151
+ }
152
+ redactContentPart(part, providerName) {
153
+ const redactedPart = { ...part };
154
+ if (typeof part === 'object' && part !== null) {
155
+ const partObj = part;
156
+ if (partObj.text && typeof partObj.text === 'string') {
157
+ redactedPart.text = this.redactContent(partObj.text, providerName);
158
+ }
159
+ if (partObj.functionCall) {
160
+ const funcCall = partObj.functionCall;
161
+ redactedPart.functionCall = {
162
+ ...funcCall,
163
+ args: this.redactToolParameters(funcCall.args, funcCall.name),
164
+ };
165
+ }
166
+ }
167
+ return redactedPart;
168
+ }
169
+ redactToolParameters(params, toolName) {
170
+ if (!params || typeof params !== 'object') {
171
+ return params;
172
+ }
173
+ const redacted = { ...params };
174
+ // Apply tool-specific redaction rules
175
+ switch (toolName) {
176
+ case 'read_file':
177
+ case 'write_file':
178
+ case 'list_files':
179
+ if (redacted.file_path &&
180
+ typeof redacted.file_path === 'string' &&
181
+ this.redactionConfig.redactFilePaths) {
182
+ redacted.file_path = this.redactFilePath(redacted.file_path);
183
+ }
184
+ break;
185
+ case 'run_command':
186
+ case 'shell':
187
+ if (redacted.command && typeof redacted.command === 'string') {
188
+ redacted.command = this.redactShellCommand(redacted.command);
189
+ }
190
+ break;
191
+ case 'web_search':
192
+ case 'fetch_url':
193
+ if (redacted.url &&
194
+ typeof redacted.url === 'string' &&
195
+ this.redactionConfig.redactUrls) {
196
+ redacted.url = this.redactUrl(redacted.url);
197
+ }
198
+ break;
199
+ default:
200
+ // No specific redaction for this tool
201
+ break;
202
+ }
203
+ // Apply general parameter redaction
204
+ for (const [key, value] of Object.entries(redacted)) {
205
+ if (typeof value === 'string') {
206
+ redacted[key] = this.redactContent(value, 'global');
207
+ }
208
+ }
209
+ return redacted;
210
+ }
211
+ redactFilePath(path) {
212
+ // Redact sensitive file paths
213
+ const sensitivePatterns = [
214
+ {
215
+ pattern: /\/home\/[^/]+\/\.ssh\/[^/]+/g,
216
+ replacement: '[REDACTED-SSH-KEY-PATH]',
217
+ },
218
+ {
219
+ pattern: /\/home\/[^/]+\/\.aws\/[^/]+/g,
220
+ replacement: '[REDACTED-AWS-CONFIG-PATH]',
221
+ },
222
+ {
223
+ pattern: /\/home\/[^/]+\/\.docker\/[^/]+/g,
224
+ replacement: '[REDACTED-DOCKER-CONFIG-PATH]',
225
+ },
226
+ {
227
+ pattern: /\/Users\/[^/]+\/\.ssh\/[^/]+/g,
228
+ replacement: '[REDACTED-SSH-KEY-PATH]',
229
+ },
230
+ {
231
+ pattern: /\/Users\/[^/]+\/\.aws\/[^/]+/g,
232
+ replacement: '[REDACTED-AWS-CONFIG-PATH]',
233
+ },
234
+ { pattern: /.*\.env.*$/g, replacement: '[REDACTED-SENSITIVE-PATH]' },
235
+ { pattern: /.*secret.*$/gi, replacement: '[REDACTED-SENSITIVE-PATH]' },
236
+ { pattern: /.*key.*$/gi, replacement: '[REDACTED-SENSITIVE-PATH]' },
237
+ ];
238
+ let redacted = path;
239
+ for (const { pattern, replacement } of sensitivePatterns) {
240
+ redacted = redacted.replace(pattern, replacement);
241
+ }
242
+ return redacted;
243
+ }
244
+ redactShellCommand(command) {
245
+ // Redact potentially sensitive shell commands
246
+ let redacted = command;
247
+ // Redact export statements with sensitive values
248
+ redacted = redacted.replace(/export\s+[A-Z_]+\s*=\s*['"]\s*sk-[a-zA-Z0-9]+\s*['"]/g, 'export [REDACTED-API-KEY]');
249
+ redacted = redacted.replace(/export\s+[A-Z_]+\s*=\s*['"]\s*[a-zA-Z0-9+/]+=*\s*['"]/g, 'export [REDACTED-TOKEN]');
250
+ // Redact curl commands with authorization headers
251
+ redacted = redacted.replace(/curl\s+.*-H\s+['"]Authorization:\s*Bearer\s+[^'"]+['"]/g, 'curl [REDACTED-AUTH-HEADER]');
252
+ return redacted;
253
+ }
254
+ redactUrl(url) {
255
+ // Redact sensitive parts of URLs while preserving structure
256
+ try {
257
+ const urlObj = new URL(url);
258
+ // Redact query parameters that might contain sensitive data
259
+ const sensitiveParams = [
260
+ 'key',
261
+ 'token',
262
+ 'auth',
263
+ 'password',
264
+ 'secret',
265
+ 'api_key',
266
+ ];
267
+ for (const param of sensitiveParams) {
268
+ if (urlObj.searchParams.has(param)) {
269
+ urlObj.searchParams.set(param, '[REDACTED]');
270
+ }
271
+ }
272
+ return urlObj.toString();
273
+ }
274
+ catch {
275
+ // If URL parsing fails, apply pattern-based redaction
276
+ return url.replace(/[?&](key|token|auth|password|secret|api_key)=[^&]*/g, '$1=[REDACTED]');
277
+ }
278
+ }
279
+ initializeRedactionPatterns() {
280
+ const patterns = new Map();
281
+ // Global patterns
282
+ patterns.set('global', [
283
+ {
284
+ name: 'api_keys',
285
+ pattern: /sk-[a-zA-Z0-9]{32,}/g,
286
+ replacement: '[REDACTED-API-KEY]',
287
+ enabled: this.redactionConfig.redactApiKeys,
288
+ },
289
+ {
290
+ name: 'email_addresses',
291
+ pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g,
292
+ replacement: '[REDACTED-EMAIL]',
293
+ enabled: this.redactionConfig.redactEmails,
294
+ },
295
+ {
296
+ name: 'passwords',
297
+ pattern: /(?:password|pwd|pass)[=:\s]+[^\s\n\r]+/gi,
298
+ replacement: 'password=[REDACTED]',
299
+ enabled: this.redactionConfig.redactCredentials,
300
+ },
301
+ {
302
+ name: 'generic_api_keys',
303
+ pattern: /api[_-]?key["\s]*[:=]["\s]*[a-zA-Z0-9-_]{16,}/gi,
304
+ replacement: 'api_key: "[REDACTED-API-KEY]"',
305
+ enabled: this.redactionConfig.redactApiKeys,
306
+ },
307
+ {
308
+ name: 'bearer_tokens',
309
+ pattern: /bearer [a-zA-Z0-9-_.]{16,}/gi,
310
+ replacement: 'bearer [REDACTED-BEARER-TOKEN]',
311
+ enabled: this.redactionConfig.redactCredentials,
312
+ },
313
+ ]);
314
+ // OpenAI-specific patterns
315
+ patterns.set('openai', [
316
+ {
317
+ name: 'openai_api_keys',
318
+ pattern: /sk-[a-zA-Z0-9]{40,51}/g,
319
+ replacement: '[REDACTED-OPENAI-KEY]',
320
+ enabled: this.redactionConfig.redactApiKeys,
321
+ },
322
+ {
323
+ name: 'openai_project_keys',
324
+ pattern: /sk-proj-[a-zA-Z0-9]{48}/g,
325
+ replacement: '[REDACTED-OPENAI-PROJECT-KEY]',
326
+ enabled: this.redactionConfig.redactApiKeys,
327
+ },
328
+ {
329
+ name: 'openai_org_ids',
330
+ pattern: /org-[a-zA-Z0-9]{24}/g,
331
+ replacement: '[REDACTED-ORG-ID]',
332
+ enabled: this.redactionConfig.redactCredentials,
333
+ },
334
+ ]);
335
+ // Anthropic-specific patterns
336
+ patterns.set('anthropic', [
337
+ {
338
+ name: 'anthropic_api_keys',
339
+ pattern: /sk-ant-[a-zA-Z0-9\-_]{95}/g,
340
+ replacement: '[REDACTED-ANTHROPIC-KEY]',
341
+ enabled: this.redactionConfig.redactApiKeys,
342
+ },
343
+ ]);
344
+ // Gemini/Google-specific patterns
345
+ patterns.set('gemini', [
346
+ {
347
+ name: 'google_api_keys',
348
+ pattern: /AIza[0-9A-Za-z\-_]{35}/g,
349
+ replacement: '[REDACTED-GOOGLE-KEY]',
350
+ enabled: this.redactionConfig.redactApiKeys,
351
+ },
352
+ {
353
+ name: 'google_tokens',
354
+ pattern: /ya29\.[0-9A-Za-z\-_]+/g,
355
+ replacement: '[REDACTED-GOOGLE-TOKEN]',
356
+ enabled: this.redactionConfig.redactCredentials,
357
+ },
358
+ ]);
359
+ return patterns;
360
+ }
361
+ isPatternEnabled(patternName) {
362
+ switch (patternName) {
363
+ case 'api_keys':
364
+ case 'generic_api_keys':
365
+ case 'openai_api_keys':
366
+ case 'openai_project_keys':
367
+ case 'anthropic_api_keys':
368
+ case 'google_api_keys':
369
+ return this.redactionConfig.redactApiKeys;
370
+ case 'email_addresses':
371
+ return this.redactionConfig.redactEmails;
372
+ case 'passwords':
373
+ case 'bearer_tokens':
374
+ case 'openai_org_ids':
375
+ case 'google_tokens':
376
+ return this.redactionConfig.redactCredentials;
377
+ default:
378
+ return true;
379
+ }
380
+ }
381
+ /**
382
+ * Update redaction configuration
383
+ */
384
+ updateConfig(config) {
385
+ this.redactionConfig = { ...this.redactionConfig, ...config };
386
+ this.redactionPatterns = this.initializeRedactionPatterns();
387
+ }
388
+ /**
389
+ * Get current redaction statistics
390
+ */
391
+ getRedactionStats(content, providerName) {
392
+ const stats = {
393
+ totalRedactions: 0,
394
+ redactionsByType: {},
395
+ };
396
+ const patterns = [
397
+ ...(this.redactionPatterns.get('global') || []),
398
+ ...(this.redactionPatterns.get(providerName) || []),
399
+ ];
400
+ for (const pattern of patterns) {
401
+ if (pattern.enabled) {
402
+ const matches = content.match(pattern.pattern);
403
+ if (matches) {
404
+ stats.totalRedactions += matches.length;
405
+ stats.redactionsByType[pattern.name] = matches.length;
406
+ }
407
+ }
408
+ }
409
+ return stats;
410
+ }
411
+ }
412
+ //# sourceMappingURL=ConversationDataRedactor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationDataRedactor.js","sourceRoot":"","sources":["../../../../src/utils/privacy/ConversationDataRedactor.ts"],"names":[],"mappings":"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"}