@opentabs-dev/mcp-server 0.0.34 → 0.0.36

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 (142) hide show
  1. package/dist/adapter-files.d.ts +4 -2
  2. package/dist/adapter-files.d.ts.map +1 -1
  3. package/dist/adapter-files.js +39 -24
  4. package/dist/adapter-files.js.map +1 -1
  5. package/dist/audit-disk.d.ts +2 -2
  6. package/dist/audit-disk.d.ts.map +1 -1
  7. package/dist/audit-disk.js +19 -8
  8. package/dist/audit-disk.js.map +1 -1
  9. package/dist/browser-tool-names.d.ts.map +1 -1
  10. package/dist/browser-tool-names.js +2 -0
  11. package/dist/browser-tool-names.js.map +1 -1
  12. package/dist/browser-tools/analyze-site/detect-apis.d.ts +16 -4
  13. package/dist/browser-tools/analyze-site/detect-apis.d.ts.map +1 -1
  14. package/dist/browser-tools/analyze-site/detect-apis.js +65 -8
  15. package/dist/browser-tools/analyze-site/detect-apis.js.map +1 -1
  16. package/dist/browser-tools/analyze-site/detect-auth.d.ts.map +1 -1
  17. package/dist/browser-tools/analyze-site/detect-auth.js +10 -5
  18. package/dist/browser-tools/analyze-site/detect-auth.js.map +1 -1
  19. package/dist/browser-tools/analyze-site/detect-framework.d.ts +10 -1
  20. package/dist/browser-tools/analyze-site/detect-framework.d.ts.map +1 -1
  21. package/dist/browser-tools/analyze-site/detect-framework.js +19 -1
  22. package/dist/browser-tools/analyze-site/detect-framework.js.map +1 -1
  23. package/dist/browser-tools/analyze-site/index.d.ts +37 -8
  24. package/dist/browser-tools/analyze-site/index.d.ts.map +1 -1
  25. package/dist/browser-tools/analyze-site/index.js +79 -43
  26. package/dist/browser-tools/analyze-site/index.js.map +1 -1
  27. package/dist/browser-tools/analyze-site.d.ts.map +1 -1
  28. package/dist/browser-tools/analyze-site.js +9 -8
  29. package/dist/browser-tools/analyze-site.js.map +1 -1
  30. package/dist/browser-tools/disable-network-capture.d.ts.map +1 -1
  31. package/dist/browser-tools/disable-network-capture.js +8 -1
  32. package/dist/browser-tools/disable-network-capture.js.map +1 -1
  33. package/dist/browser-tools/enable-network-capture.d.ts +1 -0
  34. package/dist/browser-tools/enable-network-capture.d.ts.map +1 -1
  35. package/dist/browser-tools/enable-network-capture.js +20 -8
  36. package/dist/browser-tools/enable-network-capture.js.map +1 -1
  37. package/dist/browser-tools/execute-script.d.ts +3 -3
  38. package/dist/browser-tools/execute-script.d.ts.map +1 -1
  39. package/dist/browser-tools/execute-script.js +9 -4
  40. package/dist/browser-tools/execute-script.js.map +1 -1
  41. package/dist/browser-tools/export-har.d.ts +15 -0
  42. package/dist/browser-tools/export-har.d.ts.map +1 -0
  43. package/dist/browser-tools/export-har.js +196 -0
  44. package/dist/browser-tools/export-har.js.map +1 -0
  45. package/dist/browser-tools/extension-get-logs.d.ts +2 -2
  46. package/dist/browser-tools/get-console-logs.d.ts +2 -2
  47. package/dist/browser-tools/get-websocket-frames.d.ts +10 -0
  48. package/dist/browser-tools/get-websocket-frames.d.ts.map +1 -0
  49. package/dist/browser-tools/get-websocket-frames.js +27 -0
  50. package/dist/browser-tools/get-websocket-frames.js.map +1 -0
  51. package/dist/browser-tools/index.d.ts.map +1 -1
  52. package/dist/browser-tools/index.js +4 -0
  53. package/dist/browser-tools/index.js.map +1 -1
  54. package/dist/browser-tools/reload-extension.d.ts.map +1 -1
  55. package/dist/browser-tools/reload-extension.js +1 -3
  56. package/dist/browser-tools/reload-extension.js.map +1 -1
  57. package/dist/config.d.ts +1 -1
  58. package/dist/config.d.ts.map +1 -1
  59. package/dist/config.js +13 -18
  60. package/dist/config.js.map +1 -1
  61. package/dist/dev-proxy.d.ts +12 -0
  62. package/dist/dev-proxy.d.ts.map +1 -0
  63. package/dist/dev-proxy.js +229 -0
  64. package/dist/dev-proxy.js.map +1 -0
  65. package/dist/discovery.d.ts.map +1 -1
  66. package/dist/discovery.js +6 -1
  67. package/dist/discovery.js.map +1 -1
  68. package/dist/extension-handlers.d.ts +1 -1
  69. package/dist/extension-handlers.d.ts.map +1 -1
  70. package/dist/extension-handlers.js +3 -4
  71. package/dist/extension-handlers.js.map +1 -1
  72. package/dist/extension-protocol.d.ts +4 -2
  73. package/dist/extension-protocol.d.ts.map +1 -1
  74. package/dist/extension-protocol.js +16 -15
  75. package/dist/extension-protocol.js.map +1 -1
  76. package/dist/file-watcher.d.ts +1 -1
  77. package/dist/file-watcher.d.ts.map +1 -1
  78. package/dist/file-watcher.js +48 -16
  79. package/dist/file-watcher.js.map +1 -1
  80. package/dist/http-routes.d.ts +3 -2
  81. package/dist/http-routes.d.ts.map +1 -1
  82. package/dist/http-routes.js +34 -13
  83. package/dist/http-routes.js.map +1 -1
  84. package/dist/index.d.ts +12 -22
  85. package/dist/index.d.ts.map +1 -1
  86. package/dist/index.js +20 -54
  87. package/dist/index.js.map +1 -1
  88. package/dist/loader.d.ts.map +1 -1
  89. package/dist/loader.js +12 -10
  90. package/dist/loader.js.map +1 -1
  91. package/dist/log-buffer.d.ts +3 -1
  92. package/dist/log-buffer.d.ts.map +1 -1
  93. package/dist/log-buffer.js +12 -3
  94. package/dist/log-buffer.js.map +1 -1
  95. package/dist/logger.js +1 -1
  96. package/dist/logger.js.map +1 -1
  97. package/dist/mcp-setup.d.ts +1 -1
  98. package/dist/mcp-setup.js +2 -2
  99. package/dist/mcp-tool-dispatch.d.ts +14 -1
  100. package/dist/mcp-tool-dispatch.d.ts.map +1 -1
  101. package/dist/mcp-tool-dispatch.js +4 -2
  102. package/dist/mcp-tool-dispatch.js.map +1 -1
  103. package/dist/permissions.d.ts.map +1 -1
  104. package/dist/permissions.js +5 -3
  105. package/dist/permissions.js.map +1 -1
  106. package/dist/plugin-management.d.ts +1 -1
  107. package/dist/plugin-management.d.ts.map +1 -1
  108. package/dist/plugin-management.js +46 -29
  109. package/dist/plugin-management.js.map +1 -1
  110. package/dist/registry.js +5 -5
  111. package/dist/registry.js.map +1 -1
  112. package/dist/reload.d.ts +7 -8
  113. package/dist/reload.d.ts.map +1 -1
  114. package/dist/reload.js +83 -40
  115. package/dist/reload.js.map +1 -1
  116. package/dist/resolver.d.ts +3 -3
  117. package/dist/resolver.d.ts.map +1 -1
  118. package/dist/resolver.js +11 -26
  119. package/dist/resolver.js.map +1 -1
  120. package/dist/sanitize-error.d.ts.map +1 -1
  121. package/dist/sanitize-error.js +12 -6
  122. package/dist/sanitize-error.js.map +1 -1
  123. package/dist/sdk-version.d.ts.map +1 -1
  124. package/dist/sdk-version.js +2 -2
  125. package/dist/sdk-version.js.map +1 -1
  126. package/dist/server-node.d.ts +9 -13
  127. package/dist/server-node.d.ts.map +1 -1
  128. package/dist/server-node.js +55 -18
  129. package/dist/server-node.js.map +1 -1
  130. package/dist/shutdown.d.ts +7 -6
  131. package/dist/shutdown.d.ts.map +1 -1
  132. package/dist/shutdown.js +14 -10
  133. package/dist/shutdown.js.map +1 -1
  134. package/dist/state.d.ts +12 -3
  135. package/dist/state.d.ts.map +1 -1
  136. package/dist/state.js +22 -7
  137. package/dist/state.js.map +1 -1
  138. package/dist/version-check.d.ts +6 -4
  139. package/dist/version-check.d.ts.map +1 -1
  140. package/dist/version-check.js +42 -13
  141. package/dist/version-check.js.map +1 -1
  142. package/package.json +6 -7
@@ -6,7 +6,7 @@ import type { ServerState } from './state.js';
6
6
  /**
7
7
  * Ensure the adapters directory exists, creating it if necessary.
8
8
  * Caches the result on ServerState so mkdir is called at most once per
9
- * server lifetime. The flag survives bun --hot reloads (via globalThis state).
9
+ * server lifetime. The flag survives hot reloads (via globalThis state).
10
10
  */
11
11
  declare const ensureAdaptersDir: (state: ServerState) => Promise<void>;
12
12
  /** Prefix for dynamically generated exec script files */
@@ -40,7 +40,9 @@ declare const cleanupStaleAdapterFiles: (currentPluginNames: Set<string>) => Pro
40
40
  /**
41
41
  * Write a dynamic exec script to the adapters/ directory.
42
42
  * Wraps the user's code in an IIFE that captures the result (sync or async)
43
- * into globalThis.__openTabs.__lastExecResult for the extension to read back.
43
+ * into namespaced keys on globalThis.__openTabs for the extension to read back.
44
+ * Each execution uses keys derived from its UUID (`__execResult_<uuid>` and
45
+ * `__execAsync_<uuid>`) so concurrent executions on the same tab do not collide.
44
46
  *
45
47
  * Returns the filename (relative to adapters/) for the extension to inject.
46
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-files.d.ts","sourceRoot":"","sources":["../src/adapter-files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,GAAU,OAAO,WAAW,KAAG,OAAO,CAAC,IAAI,CAIjE,CAAC;AAEF,yDAAyD;AACzD,QAAA,MAAM,gBAAgB,YAAY,CAAC;AAEnC,yEAAyE;AACzE,QAAA,MAAM,wBAAwB,QAAS,CAAC;AAExC,qEAAqE;AACrE,QAAA,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,MAAM,KAAG;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAQvF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,gBAAgB,GAAU,YAAY,MAAM,EAAE,MAAM,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CA6BpG,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,wBAAwB,GAAU,oBAAoB,GAAG,CAAC,MAAM,CAAC,KAAG,OAAO,CAAC,IAAI,CAgDrF,CAAC;AAMF;;;;;;GAMG;AACH,QAAA,MAAM,aAAa,GAAU,OAAO,WAAW,EAAE,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,CAkC7F,CAAC;AAEF,4EAA4E;AAC5E,QAAA,MAAM,cAAc,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAM5D,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,qBAAqB,QAAa,OAAO,CAAC,IAAI,CAgBnD,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,wBAAwB,EACxB,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"adapter-files.d.ts","sourceRoot":"","sources":["../src/adapter-files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,QAAA,MAAM,iBAAiB,GAAU,OAAO,WAAW,KAAG,OAAO,CAAC,IAAI,CAIjE,CAAC;AAEF,yDAAyD;AACzD,QAAA,MAAM,gBAAgB,YAAY,CAAC;AAKnC,yEAAyE;AACzE,QAAA,MAAM,wBAAwB,QAAS,CAAC;AAExC,qEAAqE;AACrE,QAAA,MAAM,WAAW,GAAI,CAAC,EAAE,OAAO,CAAC,EAAE,IAAI,MAAM,KAAG;IAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAA;CAQvF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,gBAAgB,GAAU,YAAY,MAAM,EAAE,MAAM,MAAM,EAAE,YAAY,MAAM,KAAG,OAAO,CAAC,MAAM,CAiCpG,CAAC;AAEF;;;;GAIG;AACH,QAAA,MAAM,wBAAwB,GAAU,oBAAoB,GAAG,CAAC,MAAM,CAAC,KAAG,OAAO,CAAC,IAAI,CAgDrF,CAAC;AAMF;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAU,OAAO,WAAW,EAAE,QAAQ,MAAM,EAAE,MAAM,MAAM,KAAG,OAAO,CAAC,MAAM,CAwC7F,CAAC;AAEF,4EAA4E;AAC5E,QAAA,MAAM,cAAc,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,IAAI,CAM5D,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,qBAAqB,QAAa,OAAO,CAAC,IAAI,CAiBnD,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,wBAAwB,EACxB,gBAAgB,GACjB,CAAC"}
@@ -11,16 +11,18 @@ import { join } from 'node:path';
11
11
  /**
12
12
  * Ensure the adapters directory exists, creating it if necessary.
13
13
  * Caches the result on ServerState so mkdir is called at most once per
14
- * server lifetime. The flag survives bun --hot reloads (via globalThis state).
14
+ * server lifetime. The flag survives hot reloads (via globalThis state).
15
15
  */
16
16
  const ensureAdaptersDir = async (state) => {
17
17
  if (state.adaptersDirReady)
18
18
  return;
19
- await mkdir(getAdaptersDir(), { recursive: true });
19
+ await mkdir(getAdaptersDir(), { recursive: true, mode: 0o700 });
20
20
  state.adaptersDirReady = true;
21
21
  };
22
22
  /** Prefix for dynamically generated exec script files */
23
23
  const EXEC_FILE_PREFIX = '__exec-';
24
+ /** Escape special regex characters in a string for use in a RegExp */
25
+ const escapeRegex = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
24
26
  /** Timeout for batch adapter file writes in sendSyncFull (10 seconds) */
25
27
  const ADAPTER_WRITE_TIMEOUT_MS = 10_000;
26
28
  /** Create a cancellable timeout promise for use with Promise.race */
@@ -49,16 +51,8 @@ const writeAdapterFile = async (pluginName, iife, sourceMap) => {
49
51
  const adaptersDir = getAdaptersDir();
50
52
  const contentHash = createHash('sha256').update(iife).digest('hex').slice(0, 8);
51
53
  const baseName = `${pluginName}-${contentHash}`;
52
- // Clean up old hashed versions of the same plugin before writing the new one
53
- let entries;
54
- try {
55
- entries = await readdir(adaptersDir);
56
- }
57
- catch {
58
- entries = [];
59
- }
60
- const oldFiles = entries.filter(f => f.startsWith(`${pluginName}-`) && f !== `${baseName}.js` && f !== `${baseName}.js.map` && !f.endsWith('.tmp'));
61
- await Promise.allSettled(oldFiles.map(f => unlink(join(adaptersDir, f)).catch(() => { })));
54
+ // Write the new adapter file before deleting old versions so there is always
55
+ // at least one valid adapter file on disk for this plugin.
62
56
  let content = iife;
63
57
  if (sourceMap) {
64
58
  // Rewrite sourceMappingURL to use the per-plugin hashed filename
@@ -68,6 +62,19 @@ const writeAdapterFile = async (pluginName, iife, sourceMap) => {
68
62
  await atomicWrite(mapFinalPath, sourceMap);
69
63
  }
70
64
  await atomicWrite(join(adaptersDir, `${baseName}.js`), content);
65
+ // Clean up old hashed versions of the same plugin now that the new file is on disk.
66
+ // Using a regex prevents prefix collisions (e.g., plugin 'foo' must not delete
67
+ // files for plugin 'foo-bar').
68
+ let entries;
69
+ try {
70
+ entries = await readdir(adaptersDir);
71
+ }
72
+ catch {
73
+ entries = [];
74
+ }
75
+ const pluginFileRegex = new RegExp(`^${escapeRegex(pluginName)}-[0-9a-f]{8}\\.js(\\.map)?$`);
76
+ const oldFiles = entries.filter(f => pluginFileRegex.test(f) && f !== `${baseName}.js` && f !== `${baseName}.js.map`);
77
+ await Promise.allSettled(oldFiles.map(f => unlink(join(adaptersDir, f))));
71
78
  return `adapters/${baseName}.js`;
72
79
  };
73
80
  /**
@@ -109,7 +116,7 @@ const cleanupStaleAdapterFiles = async (currentPluginNames) => {
109
116
  });
110
117
  if (staleFiles.length === 0)
111
118
  return;
112
- const results = await Promise.allSettled(staleFiles.map(f => unlink(join(adaptersDir, f)).catch(() => { })));
119
+ const results = await Promise.allSettled(staleFiles.map(f => unlink(join(adaptersDir, f))));
113
120
  let deleted = 0;
114
121
  for (const [i, result] of results.entries()) {
115
122
  if (result.status === 'rejected') {
@@ -128,7 +135,9 @@ const cleanupStaleAdapterFiles = async (currentPluginNames) => {
128
135
  /**
129
136
  * Write a dynamic exec script to the adapters/ directory.
130
137
  * Wraps the user's code in an IIFE that captures the result (sync or async)
131
- * into globalThis.__openTabs.__lastExecResult for the extension to read back.
138
+ * into namespaced keys on globalThis.__openTabs for the extension to read back.
139
+ * Each execution uses keys derived from its UUID (`__execResult_<uuid>` and
140
+ * `__execAsync_<uuid>`) so concurrent executions on the same tab do not collide.
132
141
  *
133
142
  * Returns the filename (relative to adapters/) for the extension to inject.
134
143
  */
@@ -136,9 +145,12 @@ const writeExecFile = async (state, execId, code) => {
136
145
  await ensureAdaptersDir(state);
137
146
  const filename = `${EXEC_FILE_PREFIX}${execId}.js`;
138
147
  const finalPath = join(getAdaptersDir(), filename);
148
+ const resultKey = `__execResult_${execId}`;
149
+ const asyncKey = `__execAsync_${execId}`;
139
150
  // Wrap user code to capture sync/async results and errors.
140
- // The wrapper stores results at globalThis.__openTabs.__lastExecResult.
141
- // The extension reads this value after injection and cleans it up.
151
+ // The wrapper stores results at namespaced keys on globalThis.__openTabs
152
+ // so concurrent executions do not collide. The extension reads the
153
+ // namespaced key matching this execution's UUID and cleans it up.
142
154
  //
143
155
  // User code is passed as a JSON-escaped string literal to new Function(),
144
156
  // preventing IIFE wrapper breakout attacks. The Function constructor
@@ -147,18 +159,20 @@ const writeExecFile = async (state, execId, code) => {
147
159
  const wrapped = [
148
160
  '(function() {',
149
161
  ' var __ot = globalThis.__openTabs = globalThis.__openTabs || {};',
162
+ ` var __resultKey = ${JSON.stringify(resultKey)};`,
163
+ ` var __asyncKey = ${JSON.stringify(asyncKey)};`,
150
164
  ' try {',
151
165
  ` var __userFn = new Function(${JSON.stringify(code)});`,
152
166
  ' var __r = __userFn();',
153
167
  ' if (__r && typeof __r === "object" && typeof __r.then === "function") {',
154
- ' __ot.__lastExecAsync = true;',
155
- ' __r.then(function(v) { __ot.__lastExecResult = { value: v }; })',
156
- ' .catch(function(e) { __ot.__lastExecResult = { error: e instanceof Error ? e.message : String(e) }; });',
168
+ ' __ot[__asyncKey] = true;',
169
+ ' __r.then(function(v) { __ot[__resultKey] = { value: v }; })',
170
+ ' .catch(function(e) { __ot[__resultKey] = { error: e instanceof Error ? e.message : String(e) }; });',
157
171
  ' } else {',
158
- ' __ot.__lastExecResult = { value: __r };',
172
+ ' __ot[__resultKey] = { value: __r };',
159
173
  ' }',
160
174
  ' } catch (e) {',
161
- ' __ot.__lastExecResult = { error: e instanceof Error ? e.message : String(e) };',
175
+ ' __ot[__resultKey] = { error: e instanceof Error ? e.message : String(e) };',
162
176
  ' }',
163
177
  '})();',
164
178
  ].join('\n');
@@ -168,7 +182,7 @@ const writeExecFile = async (state, execId, code) => {
168
182
  /** Delete a dynamic exec script file. Fire-and-forget — logs on failure. */
169
183
  const deleteExecFile = async (filename) => {
170
184
  try {
171
- await unlink(join(getAdaptersDir(), filename)).catch(() => { });
185
+ await unlink(join(getAdaptersDir(), filename));
172
186
  }
173
187
  catch {
174
188
  log.warn(`Failed to delete exec file: ${filename}`);
@@ -190,8 +204,9 @@ const cleanupStaleExecFiles = async () => {
190
204
  const staleExecFiles = entries.filter(f => f.startsWith(EXEC_FILE_PREFIX) && (f.endsWith('.js') || f.endsWith('.js.tmp')));
191
205
  if (staleExecFiles.length === 0)
192
206
  return;
193
- await Promise.allSettled(staleExecFiles.map(f => unlink(join(adaptersDir, f)).catch(() => { })));
194
- log.info(`Cleaned up ${staleExecFiles.length} stale exec file(s)`);
207
+ const results = await Promise.allSettled(staleExecFiles.map(f => unlink(join(adaptersDir, f))));
208
+ const deleted = results.filter(r => r.status === 'fulfilled').length;
209
+ log.info(`Cleaned up ${deleted} stale exec file(s)`);
195
210
  };
196
211
  export { ensureAdaptersDir, writeAdapterFile, cleanupStaleAdapterFiles, writeExecFile, deleteExecFile, cleanupStaleExecFiles, timeoutRace, ADAPTER_WRITE_TIMEOUT_MS, EXEC_FILE_PREFIX, };
197
212
  //# sourceMappingURL=adapter-files.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-files.js","sourceRoot":"","sources":["../src/adapter-files.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC;;;;GAIG;AACH,MAAM,iBAAiB,GAAG,KAAK,EAAE,KAAkB,EAAiB,EAAE;IACpE,IAAI,KAAK,CAAC,gBAAgB;QAAE,OAAO;IACnC,MAAM,KAAK,CAAC,cAAc,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAChC,CAAC,CAAC;AAEF,yDAAyD;AACzD,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC,yEAAyE;AACzE,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAExC,qEAAqE;AACrE,MAAM,WAAW,GAAG,CAAI,KAAQ,EAAE,EAAU,EAA+C,EAAE;IAC3F,IAAI,OAAsC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAI,OAAO,CAAC,EAAE;QACvC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IACH,4DAA4D;IAC5D,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,gBAAgB,GAAG,KAAK,EAAE,UAAkB,EAAE,IAAY,EAAE,SAAkB,EAAmB,EAAE;IACvG,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,GAAG,UAAU,IAAI,WAAW,EAAE,CAAC;IAEhD,6EAA6E;IAC7E,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,EAAE,CAAC;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,QAAQ,KAAK,IAAI,CAAC,KAAK,GAAG,QAAQ,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnH,CAAC;IACF,MAAM,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1F,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,SAAS,EAAE,CAAC;QACd,iEAAiE;QACjE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,+CAA+C,EAAE,wBAAwB,QAAQ,SAAS,CAAC,CAAC;QAEnH,8BAA8B;QAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,SAAS,CAAC,CAAC;QAC7D,MAAM,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,QAAQ,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,YAAY,QAAQ,KAAK,CAAC;AACnC,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,KAAK,EAAE,kBAA+B,EAAiB,EAAE;IACxF,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;QAC3C,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,mDAAmD;IACnD,MAAM,SAAS,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAE9E,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;QACpC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;YAAE,OAAO,KAAK,CAAC;QACrE,IAAI,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC,CAAC,mCAAmC;QAErF,4DAA4D;QAC5D,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc;YAC/C,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,yCAAyC;QACzC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB;YACnD,MAAM,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,uCAAuC,QAAQ,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,cAAc,OAAO,wBAAwB,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,KAAK,EAAE,KAAkB,EAAE,MAAc,EAAE,IAAY,EAAmB,EAAE;IAChG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,GAAG,gBAAgB,GAAG,MAAM,KAAK,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC;IAEnD,2DAA2D;IAC3D,wEAAwE;IACxE,mEAAmE;IACnE,EAAE;IACF,0EAA0E;IAC1E,qEAAqE;IACrE,qEAAqE;IACrE,wCAAwC;IACxC,MAAM,OAAO,GAAG;QACd,eAAe;QACf,mEAAmE;QACnE,SAAS;QACT,mCAAmC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;QAC3D,2BAA2B;QAC3B,6EAA6E;QAC7E,oCAAoC;QACpC,uEAAuE;QACvE,iHAAiH;QACjH,cAAc;QACd,+CAA+C;QAC/C,OAAO;QACP,iBAAiB;QACjB,oFAAoF;QACpF,KAAK;QACL,OAAO;KACR,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IAC/D,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,qBAAqB,GAAG,KAAK,IAAmB,EAAE;IACtD,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;IACT,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CACpF,CAAC;IACF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExC,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,GAAG,CAAC,IAAI,CAAC,cAAc,cAAc,CAAC,MAAM,qBAAqB,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,aAAa,EACb,cAAc,EACd,qBAAqB,EACrB,WAAW,EACX,wBAAwB,EACxB,gBAAgB,GACjB,CAAC"}
1
+ {"version":3,"file":"adapter-files.js","sourceRoot":"","sources":["../src/adapter-files.ts"],"names":[],"mappings":"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"}
@@ -14,10 +14,10 @@ declare const getAuditLogPath: () => string;
14
14
  * Append an audit entry to the disk-based audit log.
15
15
  *
16
16
  * Fire-and-forget: errors are caught and logged, never thrown.
17
- * Rotation is checked before each write for simplicity.
17
+ * Rotation is checked once every ROTATION_CHECK_INTERVAL writes to avoid per-write stat() overhead.
18
18
  */
19
19
  declare const appendAuditEntryToDisk: (entry: AuditEntry) => Promise<void>;
20
- /** Reset initialized state (for testing) */
20
+ /** Reset initialized state and write counter (for testing) */
21
21
  declare const _resetInitialized: () => void;
22
22
  export { appendAuditEntryToDisk, getAuditLogPath, _resetInitialized };
23
23
  //# sourceMappingURL=audit-disk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-disk.d.ts","sourceRoot":"","sources":["../src/audit-disk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiC7C,yCAAyC;AACzC,QAAA,MAAM,eAAe,QAAO,MAA2C,CAAC;AAExE;;;;;GAKG;AACH,QAAA,MAAM,sBAAsB,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,IAAI,CAoBrE,CAAC;AAEF,4CAA4C;AAC5C,QAAA,MAAM,iBAAiB,QAAO,IAE7B,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"audit-disk.d.ts","sourceRoot":"","sources":["../src/audit-disk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuC7C,yCAAyC;AACzC,QAAA,MAAM,eAAe,QAAO,MAA2C,CAAC;AAExE;;;;;GAKG;AACH,QAAA,MAAM,sBAAsB,GAAU,OAAO,UAAU,KAAG,OAAO,CAAC,IAAI,CA2BrE,CAAC;AAEF,8DAA8D;AAC9D,QAAA,MAAM,iBAAiB,QAAO,IAI7B,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
@@ -14,8 +14,12 @@ import { appendFile, rename, stat, unlink } from 'node:fs/promises';
14
14
  import { join } from 'node:path';
15
15
  /** Maximum audit.log size before rotation (10 MB) */
16
16
  const MAX_AUDIT_FILE_SIZE = 10 * 1024 * 1024;
17
- /** globalThis key for persisting the initialized flag across bun --hot reloads */
17
+ /** globalThis key for persisting the initialized flag across hot reloads */
18
18
  const INITIALIZED_KEY = '__opentabs_audit_initialized__';
19
+ /** globalThis key for persisting the write counter across hot reloads */
20
+ const WRITE_COUNT_KEY = '__opentabs_audit_write_count__';
21
+ /** Check rotation every N writes to avoid per-write stat() syscalls */
22
+ const ROTATION_CHECK_INTERVAL = 100;
19
23
  /**
20
24
  * Rotate the audit log if it exceeds MAX_AUDIT_FILE_SIZE.
21
25
  * Renames audit.log → audit.log.1, deleting any existing audit.log.1 first.
@@ -45,18 +49,23 @@ const getAuditLogPath = () => join(getConfigDir(), 'audit.log');
45
49
  * Append an audit entry to the disk-based audit log.
46
50
  *
47
51
  * Fire-and-forget: errors are caught and logged, never thrown.
48
- * Rotation is checked before each write for simplicity.
52
+ * Rotation is checked once every ROTATION_CHECK_INTERVAL writes to avoid per-write stat() overhead.
49
53
  */
50
54
  const appendAuditEntryToDisk = async (entry) => {
51
55
  try {
52
56
  const auditPath = getAuditLogPath();
53
57
  const line = JSON.stringify(entry) + '\n';
54
- // Rotate if the file exceeds the size limit
55
- await rotateIfNeeded(auditPath);
58
+ const g = globalThis;
59
+ const count = g[WRITE_COUNT_KEY] ?? 0;
60
+ // Rotate if the file exceeds the size limit — checked every ROTATION_CHECK_INTERVAL writes
61
+ if (count % ROTATION_CHECK_INTERVAL === 0) {
62
+ await rotateIfNeeded(auditPath);
63
+ }
64
+ // Increment counter after the rotation check so count=0 always checks on the first write
65
+ g[WRITE_COUNT_KEY] = count + 1;
56
66
  // Append the entry
57
67
  await appendFile(auditPath, line, { mode: 0o600 });
58
- // Set permissions on first write this session (survives bun --hot reloads)
59
- const g = globalThis;
68
+ // Set permissions on first write this session (survives hot reloads)
60
69
  if (!g[INITIALIZED_KEY]) {
61
70
  await safeChmod(auditPath, 0o600);
62
71
  g[INITIALIZED_KEY] = true;
@@ -66,9 +75,11 @@ const appendAuditEntryToDisk = async (entry) => {
66
75
  log.warn(`Failed to write audit entry to disk: ${toErrorMessage(err)}`);
67
76
  }
68
77
  };
69
- /** Reset initialized state (for testing) */
78
+ /** Reset initialized state and write counter (for testing) */
70
79
  const _resetInitialized = () => {
71
- globalThis[INITIALIZED_KEY] = false;
80
+ const g = globalThis;
81
+ g[INITIALIZED_KEY] = false;
82
+ g[WRITE_COUNT_KEY] = 0;
72
83
  };
73
84
  export { appendAuditEntryToDisk, getAuditLogPath, _resetInitialized };
74
85
  //# sourceMappingURL=audit-disk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-disk.js","sourceRoot":"","sources":["../src/audit-disk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,qDAAqD;AACrD,MAAM,mBAAmB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,kFAAkF;AAClF,MAAM,eAAe,GAAG,gCAAyC,CAAC;AAElE;;;GAGG;AACH,MAAM,cAAc,GAAG,KAAK,EAAE,SAAiB,EAAiB,EAAE;IAChE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,GAAG,mBAAmB;YAAE,OAAO;QAE7C,MAAM,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;QAErC,mCAAmC;QACnC,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE1C,2BAA2B;QAC3B,MAAM,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAErC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,6DAA6D;QAC7D,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAC7D,GAAG,CAAC,IAAI,CAAC,8BAA8B,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC,CAAC;AAEF,yCAAyC;AACzC,MAAM,eAAe,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,WAAW,CAAC,CAAC;AAExE;;;;;GAKG;AACH,MAAM,sBAAsB,GAAG,KAAK,EAAE,KAAiB,EAAiB,EAAE;IACxE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QAE1C,4CAA4C;QAC5C,MAAM,cAAc,CAAC,SAAS,CAAC,CAAC;QAEhC,mBAAmB;QACnB,MAAM,UAAU,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAEnD,2EAA2E;QAC3E,MAAM,CAAC,GAAG,UAAqC,CAAC;QAChD,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CAAC,wCAAwC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC,CAAC;AAEF,4CAA4C;AAC5C,MAAM,iBAAiB,GAAG,GAAS,EAAE;IAClC,UAAsC,CAAC,eAAe,CAAC,GAAG,KAAK,CAAC;AACnE,CAAC,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"audit-disk.js","sourceRoot":"","sources":["../src/audit-disk.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-tool-names.d.ts","sourceRoot":"","sources":["../src/browser-tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,QAAA,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAsCxC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"browser-tool-names.d.ts","sourceRoot":"","sources":["../src/browser-tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,QAAA,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAwCxC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -32,6 +32,8 @@ const BROWSER_TOOL_NAMES = [
32
32
  'browser_delete_cookies',
33
33
  'browser_enable_network_capture',
34
34
  'browser_get_network_requests',
35
+ 'browser_get_websocket_frames',
36
+ 'browser_export_har',
35
37
  'browser_disable_network_capture',
36
38
  'browser_get_console_logs',
37
39
  'browser_clear_console_logs',
@@ -1 +1 @@
1
- {"version":3,"file":"browser-tool-names.js","sourceRoot":"","sources":["../src/browser-tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,kBAAkB,GAAsB;IAC5C,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,oBAAoB;IACpB,wBAAwB;IACxB,gCAAgC;IAChC,8BAA8B;IAC9B,iCAAiC;IACjC,0BAA0B;IAC1B,4BAA4B;IAC5B,wBAAwB;IACxB,8BAA8B;IAC9B,mBAAmB;IACnB,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,2BAA2B;IAC3B,qBAAqB;CACtB,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"browser-tool-names.js","sourceRoot":"","sources":["../src/browser-tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,kBAAkB,GAAsB;IAC5C,kBAAkB;IAClB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,sBAAsB;IACtB,mBAAmB;IACnB,sBAAsB;IACtB,wBAAwB;IACxB,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,qBAAqB;IACrB,uBAAuB;IACvB,mBAAmB;IACnB,uBAAuB;IACvB,0BAA0B;IAC1B,wBAAwB;IACxB,qBAAqB;IACrB,oBAAoB;IACpB,wBAAwB;IACxB,gCAAgC;IAChC,8BAA8B;IAC9B,8BAA8B;IAC9B,oBAAoB;IACpB,iCAAiC;IACjC,0BAA0B;IAC1B,4BAA4B;IAC5B,wBAAwB;IACxB,8BAA8B;IAC9B,mBAAmB;IACnB,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,qBAAqB;IACrB,oBAAoB;IACpB,0BAA0B;IAC1B,yBAAyB;IACzB,2BAA2B;IAC3B,qBAAqB;CACtB,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -8,6 +8,14 @@
8
8
  import type { NetworkRequest } from './detect-auth.js';
9
9
  /** Supported API protocol classifications for captured network requests. */
10
10
  type ApiProtocol = 'rest' | 'graphql' | 'grpc-web' | 'jsonrpc' | 'trpc' | 'websocket' | 'sse' | 'form-submission';
11
+ /** A captured WebSocket frame from the network capture engine. */
12
+ interface WsFrame {
13
+ url: string;
14
+ direction: 'sent' | 'received';
15
+ data: string;
16
+ opcode: number;
17
+ timestamp: number;
18
+ }
11
19
  /** A single detected API endpoint with its protocol, auth info, and call frequency. */
12
20
  interface ApiEndpoint {
13
21
  url: string;
@@ -18,6 +26,7 @@ interface ApiEndpoint {
18
26
  requestBodySample: string | undefined;
19
27
  responseStatus: number | undefined;
20
28
  callCount: number;
29
+ wsFrameSamples: string[] | undefined;
21
30
  }
22
31
  /** Result of API pattern detection: classified endpoints and the primary API base URL. */
23
32
  interface ApiAnalysis {
@@ -27,10 +36,13 @@ interface ApiAnalysis {
27
36
  /**
28
37
  * Analyze captured network requests and detect API patterns.
29
38
  *
30
- * This is a pure function: takes an array of captured network requests,
31
- * classifies by protocol, groups by endpoint, and filters noise.
39
+ * This is a pure function: takes an array of captured network requests and
40
+ * optionally captured WebSocket frames, classifies by protocol, groups by
41
+ * endpoint, and filters noise. When WebSocket frames are provided, the first
42
+ * few unique received text frame payloads are attached to WebSocket endpoints
43
+ * as wsFrameSamples.
32
44
  */
33
- declare const detectApis: (requests: NetworkRequest[]) => ApiAnalysis;
45
+ declare const detectApis: (requests: NetworkRequest[], wsFrames?: WsFrame[]) => ApiAnalysis;
34
46
  export { detectApis };
35
- export type { ApiProtocol, ApiEndpoint, ApiAnalysis };
47
+ export type { ApiProtocol, ApiEndpoint, ApiAnalysis, WsFrame };
36
48
  //# sourceMappingURL=detect-apis.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect-apis.d.ts","sourceRoot":"","sources":["../../../src/browser-tools/analyze-site/detect-apis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,4EAA4E;AAC5E,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAElH,uFAAuF;AACvF,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0FAA0F;AAC1F,UAAU,WAAW;IACnB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAkVD;;;;;GAKG;AACH,QAAA,MAAM,UAAU,GAAI,UAAU,cAAc,EAAE,KAAG,WAyDhD,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"detect-apis.d.ts","sourceRoot":"","sources":["../../../src/browser-tools/analyze-site/detect-apis.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMvD,4EAA4E;AAC5E,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAElH,kEAAkE;AAClE,UAAU,OAAO;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uFAAuF;AACvF,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,WAAW,CAAC;IACtB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACtC;AAED,0FAA0F;AAC1F,UAAU,WAAW;IACnB,SAAS,EAAE,WAAW,EAAE,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AA4WD;;;;;;;;GAQG;AACH,QAAA,MAAM,UAAU,GAAI,UAAU,cAAc,EAAE,EAAE,WAAW,OAAO,EAAE,KAAG,WAwEtE,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC"}
@@ -259,6 +259,28 @@ const classifyProtocol = (req) => {
259
259
  return undefined;
260
260
  };
261
261
  // ---------------------------------------------------------------------------
262
+ // WebSocket URL normalization
263
+ // ---------------------------------------------------------------------------
264
+ /**
265
+ * Normalizes a WebSocket URL for comparison by converting wss:// to https://
266
+ * and ws:// to http://, then returning origin + pathname (no query string).
267
+ * This allows matching frame URLs (wss://) against endpoint URLs derived from
268
+ * HTTP upgrade requests (https://).
269
+ */
270
+ const normalizeWsUrl = (url) => {
271
+ try {
272
+ const parsed = new URL(url);
273
+ if (parsed.protocol === 'wss:')
274
+ parsed.protocol = 'https:';
275
+ else if (parsed.protocol === 'ws:')
276
+ parsed.protocol = 'http:';
277
+ return `${parsed.origin}${parsed.pathname}`;
278
+ }
279
+ catch {
280
+ return url;
281
+ }
282
+ };
283
+ // ---------------------------------------------------------------------------
262
284
  // Grouping
263
285
  // ---------------------------------------------------------------------------
264
286
  /** Generate a grouping key for deduplication: method + normalized URL path. */
@@ -294,11 +316,11 @@ const detectPrimaryApiBaseUrl = (endpoints) => {
294
316
  try {
295
317
  const parsed = new URL(endpoint.url);
296
318
  const pathSegments = parsed.pathname.split('/').filter(Boolean);
297
- // Register origin alone and each incremental path prefix
298
- prefixCounts.set(parsed.origin, (prefixCounts.get(parsed.origin) ?? 0) + endpoint.callCount);
319
+ // Register origin alone and each incremental path prefix (count each endpoint once)
320
+ prefixCounts.set(parsed.origin, (prefixCounts.get(parsed.origin) ?? 0) + 1);
299
321
  for (let depth = 1; depth <= Math.min(pathSegments.length, 3); depth++) {
300
322
  const prefix = `${parsed.origin}/${pathSegments.slice(0, depth).join('/')}`;
301
- prefixCounts.set(prefix, (prefixCounts.get(prefix) ?? 0) + endpoint.callCount);
323
+ prefixCounts.set(prefix, (prefixCounts.get(prefix) ?? 0) + 1);
302
324
  }
303
325
  }
304
326
  catch {
@@ -308,8 +330,7 @@ const detectPrimaryApiBaseUrl = (endpoints) => {
308
330
  if (prefixCounts.size === 0)
309
331
  return undefined;
310
332
  // Find the deepest prefix that is shared by at least 2 endpoints (or all if only 1)
311
- const totalEndpoints = endpoints.reduce((sum, e) => sum + e.callCount, 0);
312
- const minCount = totalEndpoints > 1 ? 2 : 1;
333
+ const minCount = endpoints.length > 1 ? 2 : 1;
313
334
  let bestPrefix;
314
335
  let bestDepth = -1;
315
336
  let bestCount = 0;
@@ -330,13 +351,20 @@ const detectPrimaryApiBaseUrl = (endpoints) => {
330
351
  // Main export
331
352
  // ---------------------------------------------------------------------------
332
353
  const MAX_BODY_SAMPLE_LENGTH = 500;
354
+ /** Maximum number of WebSocket frame samples to include per endpoint. */
355
+ const MAX_WS_FRAME_SAMPLES = 5;
356
+ /** Maximum length per WebSocket frame sample payload. */
357
+ const MAX_WS_FRAME_SAMPLE_LENGTH = 500;
333
358
  /**
334
359
  * Analyze captured network requests and detect API patterns.
335
360
  *
336
- * This is a pure function: takes an array of captured network requests,
337
- * classifies by protocol, groups by endpoint, and filters noise.
361
+ * This is a pure function: takes an array of captured network requests and
362
+ * optionally captured WebSocket frames, classifies by protocol, groups by
363
+ * endpoint, and filters noise. When WebSocket frames are provided, the first
364
+ * few unique received text frame payloads are attached to WebSocket endpoints
365
+ * as wsFrameSamples.
338
366
  */
339
- const detectApis = (requests) => {
367
+ const detectApis = (requests, wsFrames) => {
340
368
  // Phase 1: Filter noise
341
369
  const apiRequests = requests.filter(req => !isNoise(req));
342
370
  // Phase 2: Classify and group
@@ -370,10 +398,39 @@ const detectApis = (requests) => {
370
398
  requestBodySample: truncateBody(req.requestBody, MAX_BODY_SAMPLE_LENGTH),
371
399
  responseStatus: req.status,
372
400
  callCount: 1,
401
+ wsFrameSamples: undefined,
373
402
  });
374
403
  }
375
404
  }
376
405
  const endpoints = [...groups.values()];
406
+ // Enrich WebSocket endpoints with frame samples when frames are available
407
+ if (wsFrames && wsFrames.length > 0) {
408
+ for (const ep of endpoints) {
409
+ if (ep.protocol !== 'websocket')
410
+ continue;
411
+ // Collect unique received text frames (opcode 1) for this endpoint URL
412
+ const seen = new Set();
413
+ const samples = [];
414
+ for (const frame of wsFrames) {
415
+ if (samples.length >= MAX_WS_FRAME_SAMPLES)
416
+ break;
417
+ if (frame.direction !== 'received' || frame.opcode !== 1)
418
+ continue;
419
+ if (normalizeWsUrl(frame.url) !== normalizeWsUrl(ep.url))
420
+ continue;
421
+ const payload = frame.data.length > MAX_WS_FRAME_SAMPLE_LENGTH
422
+ ? frame.data.slice(0, MAX_WS_FRAME_SAMPLE_LENGTH) + '...'
423
+ : frame.data;
424
+ if (seen.has(payload))
425
+ continue;
426
+ seen.add(payload);
427
+ samples.push(payload);
428
+ }
429
+ if (samples.length > 0) {
430
+ ep.wsFrameSamples = samples;
431
+ }
432
+ }
433
+ }
377
434
  return {
378
435
  endpoints,
379
436
  primaryApiBaseUrl: detectPrimaryApiBaseUrl(endpoints),
@@ -1 +1 @@
1
- {"version":3,"file":"detect-apis.js","sourceRoot":"","sources":["../../../src/browser-tools/analyze-site/detect-apis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect-apis.js","sourceRoot":"","sources":["../../../src/browser-tools/analyze-site/detect-apis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect-auth.d.ts","sourceRoot":"","sources":["../../../src/browser-tools/analyze-site/detect-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,mFAAmF;AACnF,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mEAAmE;AACnE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6DAA6D;AAC7D,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oEAAoE;AACpE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,0EAA0E;AAC1E,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mEAAmE;AACnE,UAAU,kBAAkB;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,mBAAmB,EAAE,YAAY,EAAE,CAAC;IACpC,qBAAqB,EAAE,YAAY,EAAE,CAAC;IACtC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B;AAMD,iFAAiF;AACjF,KAAK,cAAc,GACf,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,oBAAoB,GACpB,aAAa,CAAC;AAElB,yGAAyG;AACzG,UAAU,UAAU;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,0GAA0G;AAC1G,UAAU,YAAY;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAwXD;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAI,OAAO,kBAAkB,KAAG,YAqC/C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,GACb,CAAC"}
1
+ {"version":3,"file":"detect-auth.d.ts","sourceRoot":"","sources":["../../../src/browser-tools/analyze-site/detect-auth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,mFAAmF;AACnF,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mEAAmE;AACnE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,6DAA6D;AAC7D,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oEAAoE;AACpE,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,0EAA0E;AAC1E,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,GAAG,cAAc,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,mEAAmE;AACnE,UAAU,kBAAkB;IAC1B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,mBAAmB,EAAE,YAAY,EAAE,CAAC;IACpC,qBAAqB,EAAE,YAAY,EAAE,CAAC;IACtC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B;AAMD,iFAAiF;AACjF,KAAK,cAAc,GACf,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,GACpB,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,oBAAoB,GACpB,aAAa,CAAC;AAElB,yGAAyG;AACzG,UAAU,UAAU;IAClB,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,0GAA0G;AAC1G,UAAU,YAAY;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AA4XD;;;;;;GAMG;AACH,QAAA,MAAM,UAAU,GAAI,OAAO,kBAAkB,KAAG,YAqC/C,CAAC;AAEF,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,GACb,CAAC"}
@@ -29,13 +29,13 @@ const SESSION_COOKIE_PATTERNS = [
29
29
  // ---------------------------------------------------------------------------
30
30
  // JWT detection
31
31
  // ---------------------------------------------------------------------------
32
- const BASE64URL_SEGMENT = /^[A-Za-z0-9_-]+=*$/;
32
+ const BASE64URL_SEGMENT = /^[A-Za-z0-9_-]+$/;
33
33
  /** Returns true if the string looks like a JWT (three dot-separated base64url segments). */
34
34
  const looksLikeJwt = (value) => {
35
35
  const parts = value.split('.');
36
36
  if (parts.length !== 3)
37
37
  return false;
38
- return parts.every(p => p.length > 0 && BASE64URL_SEGMENT.test(p));
38
+ return parts.every(p => p.length >= 10 && BASE64URL_SEGMENT.test(p));
39
39
  };
40
40
  // ---------------------------------------------------------------------------
41
41
  // Auth-related key pattern (used for globals and storage)
@@ -196,10 +196,15 @@ const detectBasicAuth = (requests) => {
196
196
  });
197
197
  if (!hasBasicPrefix)
198
198
  return [];
199
- const firstReq = requestsWithAuth[0];
200
- if (!firstReq)
199
+ const basicReq = requestsWithAuth.find(r => {
200
+ if (!r.requestHeaders)
201
+ return false;
202
+ const val = getHeaderValue(r.requestHeaders, 'authorization');
203
+ return val !== undefined && val.startsWith('Basic ');
204
+ });
205
+ if (!basicReq)
201
206
  return [];
202
- const sampleUrl = firstReq.url;
207
+ const sampleUrl = basicReq.url;
203
208
  return [
204
209
  {
205
210
  type: 'basic-auth',