log-llm-config 1.0.23 → 1.0.25

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.
@@ -393,7 +393,7 @@ function resolvePatternToTargets(pathPattern, fileType, projectRoot, home) {
393
393
  * Collect config files by resolving API patterns to paths and reading existing files.
394
394
  * Reuses readMCPConfig, readJSONFile, readMarkdownFile, readVSCDBState, readInstalledExtensions and directory scan helpers.
395
395
  */
396
- function collectConfigFilesFromPatterns(patterns, projectRoot) {
396
+ function collectConfigFilesFromPatterns(patterns, projectRoot, onProgress) {
397
397
  const home = homedir();
398
398
  const seenPaths = new Set();
399
399
  const targets = [];
@@ -422,7 +422,12 @@ function collectConfigFilesFromPatterns(patterns, projectRoot) {
422
422
  }
423
423
  const configFiles = [];
424
424
  const handledSpecialPaths = new Set();
425
+ const loggedFileTypes = new Set();
425
426
  for (const t of targets) {
427
+ if (onProgress && !loggedFileTypes.has(t.file_type)) {
428
+ loggedFileTypes.add(t.file_type);
429
+ onProgress(`scanning file_type=${t.file_type}`);
430
+ }
426
431
  if (t.isDirectory) {
427
432
  if (!existsSync(t.path))
428
433
  continue;
@@ -518,6 +523,8 @@ function collectConfigFilesFromPatterns(patterns, projectRoot) {
518
523
  'lastBrowserConnectionMode',
519
524
  'playwrightProtection',
520
525
  'isWebSearchToolEnabled',
526
+ 'isWebSearchToolEnabled2',
527
+ 'isWebSearchToolEnabled3',
521
528
  'isWebFetchToolEnabled',
522
529
  'autoAcceptWebSearchTool',
523
530
  ];
@@ -1459,6 +1466,8 @@ function readVSCDBState(dbPath) {
1459
1466
  'lastBrowserConnectionMode',
1460
1467
  'playwrightProtection',
1461
1468
  'isWebSearchToolEnabled',
1469
+ 'isWebSearchToolEnabled2',
1470
+ 'isWebSearchToolEnabled3',
1462
1471
  'isWebFetchToolEnabled',
1463
1472
  'autoAcceptWebSearchTool',
1464
1473
  ];
@@ -1740,6 +1749,8 @@ function collectConfigFiles() {
1740
1749
  'lastBrowserConnectionMode',
1741
1750
  'playwrightProtection',
1742
1751
  'isWebSearchToolEnabled',
1752
+ 'isWebSearchToolEnabled2',
1753
+ 'isWebSearchToolEnabled3',
1743
1754
  'isWebFetchToolEnabled',
1744
1755
  'autoAcceptWebSearchTool',
1745
1756
  ];
@@ -2274,10 +2285,13 @@ async function sendConfigFilesBatch(configFiles, hardwareUuid, authKey, hookRequ
2274
2285
  org_identifier: process.env.GITHUB_ORG || process.env.GH_ORG || '',
2275
2286
  repo_identifier: process.env.GITHUB_REPOSITORY || process.env.GH_REPOSITORY || '',
2276
2287
  };
2288
+ const numChunks = Math.ceil(configFiles.length / BATCH_CHUNK_SIZE);
2277
2289
  let totalAccepted = 0;
2278
2290
  let totalFailed = 0;
2279
2291
  for (let i = 0; i < configFiles.length; i += BATCH_CHUNK_SIZE) {
2292
+ const chunkIndex = Math.floor(i / BATCH_CHUNK_SIZE) + 1;
2280
2293
  const chunk = configFiles.slice(i, i + BATCH_CHUNK_SIZE);
2294
+ hookRunLog(`batch send ${chunkIndex}/${numChunks}: ${chunk.length} file(s)`);
2281
2295
  const config_files = chunk.map((c) => ({
2282
2296
  file_type: c.file_type,
2283
2297
  file_path: c.file_path,
@@ -2290,7 +2304,7 @@ async function sendConfigFilesBatch(configFiles, hardwareUuid, authKey, hookRequ
2290
2304
  const signature = createSignature(payload, authKey.key);
2291
2305
  const body = { ...payload, signature, key_id: authKey.key_id || '' };
2292
2306
  try {
2293
- const response = (await postStartupPayload(apiUrl, body));
2307
+ const response = (await postStartupPayload(apiUrl, body, 30000));
2294
2308
  if (response.status === 'accepted') {
2295
2309
  const accepted = typeof response.accepted === 'number' ? response.accepted : chunk.length;
2296
2310
  const failedList = Array.isArray(response.failed) ? response.failed : [];
@@ -2710,6 +2724,8 @@ async function logSingleFile(filePath) {
2710
2724
  'lastBrowserConnectionMode',
2711
2725
  'playwrightProtection',
2712
2726
  'isWebSearchToolEnabled',
2727
+ 'isWebSearchToolEnabled2',
2728
+ 'isWebSearchToolEnabled3',
2713
2729
  'isWebFetchToolEnabled',
2714
2730
  'autoAcceptWebSearchTool',
2715
2731
  ];
@@ -2868,12 +2884,15 @@ async function main() {
2868
2884
  hookRunLog(`patterns_error: ${err instanceof Error ? err.message : String(err)}`);
2869
2885
  throw err;
2870
2886
  }
2887
+ hookRunLog(`scanning config files`);
2871
2888
  const configFiles = patternsResponse?.patterns?.length
2872
- ? collectConfigFilesFromPatterns(patternsResponse.patterns, PROJECT_ROOT)
2889
+ ? collectConfigFilesFromPatterns(patternsResponse.patterns, PROJECT_ROOT, hookRunLog)
2873
2890
  : collectConfigFiles();
2874
2891
  // Collect from Claude installed_plugins.json (cache-based installs: skills + hooks per installPath)
2892
+ hookRunLog(`scanning installed plugins`);
2875
2893
  configFiles.push(...collectConfigFilesFromInstalledPlugins());
2876
2894
  // Add sensitive paths audit (same auth, same batch): path names only, never contents
2895
+ hookRunLog(`running sensitive paths audit`);
2877
2896
  const auditOutputDir = join(homedir(), 'opt-ai-sec', 'management');
2878
2897
  let auditResult;
2879
2898
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "log-llm-config",
3
- "version": "1.0.23",
3
+ "version": "1.0.25",
4
4
  "description": "CLI helpers for logging hardware UUIDs and posting startup payloads to Optimus Security.",
5
5
  "type": "module",
6
6
  "bin": {