@oculum/cli 1.0.3 → 1.0.4

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 (2) hide show
  1. package/dist/index.js +11 -8
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -43540,19 +43540,22 @@ async function runScanOnce(targetPath, options) {
43540
43540
  }
43541
43541
  spinner.succeed(`Found ${files.length} files to scan`);
43542
43542
  const onProgress = (progress) => {
43543
- const fileInfo = source_default.dim(`(${progress.totalFiles} files)`);
43543
+ if (options.verbose) {
43544
+ console.log(`[Progress] ${progress.status}: ${progress.filesProcessed}/${progress.totalFiles} files, ${progress.vulnerabilitiesFound} findings`);
43545
+ }
43546
+ const fileProgress = progress.filesProcessed && progress.filesProcessed < progress.totalFiles ? ` \u2022 ${progress.filesProcessed}/${progress.totalFiles} files` : ` (${progress.totalFiles} files)`;
43544
43547
  switch (progress.status) {
43545
43548
  case "layer1":
43546
- spinner.text = `Layer 1: Pattern matching ${fileInfo} ${source_default.dim(`\u2192 ${progress.vulnerabilitiesFound} candidates`)}`;
43549
+ spinner.text = `Layer 1: Pattern matching${fileProgress} ${source_default.dim(`\u2192 ${progress.vulnerabilitiesFound} candidates`)}`;
43547
43550
  break;
43548
43551
  case "layer2":
43549
- spinner.text = `Layer 2: Code structure analysis ${fileInfo} ${source_default.dim(`\u2192 ${progress.vulnerabilitiesFound} findings`)}`;
43552
+ spinner.text = `Layer 2: Code structure analysis${fileProgress} ${source_default.dim(`\u2192 ${progress.vulnerabilitiesFound} findings`)}`;
43550
43553
  break;
43551
43554
  case "validating":
43552
- spinner.text = `AI validation ${source_default.dim(`\u2192 reviewing ${progress.vulnerabilitiesFound} candidates`)}`;
43555
+ spinner.text = `AI validation${fileProgress} ${source_default.dim(`\u2192 reviewing ${progress.vulnerabilitiesFound} candidates`)}`;
43553
43556
  break;
43554
43557
  case "layer3":
43555
- spinner.text = `Layer 3: Deep AI analysis ${source_default.dim(`\u2192 semantic security check`)}`;
43558
+ spinner.text = `Layer 3: Deep AI analysis${fileProgress} ${source_default.dim(`\u2192 semantic security check`)}`;
43556
43559
  break;
43557
43560
  case "complete":
43558
43561
  const issueText = progress.vulnerabilitiesFound === 1 ? "issue" : "issues";
@@ -43572,7 +43575,7 @@ async function runScanOnce(targetPath, options) {
43572
43575
  spinner.start("Starting scan...");
43573
43576
  const hasLocalAI = !!process.env.ANTHROPIC_API_KEY;
43574
43577
  if (options.depth !== "cheap" && isAuthenticated() && !hasLocalAI) {
43575
- spinner.text = `Sending ${files.length} files to backend for ${options.depth} scan...`;
43578
+ spinner.text = `Backend ${options.depth} scan analyzing ${files.length} files...`;
43576
43579
  result = await callBackendAPI(
43577
43580
  files,
43578
43581
  options.depth,
@@ -43583,7 +43586,7 @@ async function runScanOnce(targetPath, options) {
43583
43586
  branch: "local"
43584
43587
  }
43585
43588
  );
43586
- spinner.succeed(`Backend scan complete`);
43589
+ spinner.succeed(`Backend ${options.depth} scan complete`);
43587
43590
  } else {
43588
43591
  const enableAI = options.depth !== "cheap" && hasLocalAI;
43589
43592
  const shouldBeQuiet = options.quiet ?? !options.verbose;
@@ -47869,7 +47872,7 @@ var usageCommand = new Command("usage").description("Show current usage and quot
47869
47872
 
47870
47873
  // src/index.ts
47871
47874
  var program2 = new Command();
47872
- program2.name("oculum").description("AI-native security scanner for detecting vulnerabilities in LLM-generated code").version("1.0.0").addHelpText("after", `
47875
+ program2.name("oculum").description("AI-native security scanner for detecting vulnerabilities in LLM-generated code").version("1.0.4").addHelpText("after", `
47873
47876
  Quick Start:
47874
47877
  $ oculum scan . Scan current directory (free)
47875
47878
  $ oculum ui Interactive mode with guided setup
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oculum/cli",
3
- "version": "1.0.3",
3
+ "version": "1.0.4",
4
4
  "description": "AI-native security scanner CLI for detecting vulnerabilities in AI-generated code, BYOK patterns, and modern web applications",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -18,13 +18,13 @@
18
18
  "url": "https://github.com/flexipie/oculum/issues"
19
19
  },
20
20
  "scripts": {
21
- "build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --banner:js=\"#!/usr/bin/env node\" --define:process.env.OCULUM_API_URL='undefined'",
21
+ "build": "esbuild src/index.ts --bundle --platform=node --target=node18 --outfile=dist/index.js --banner:js=\"#!/usr/bin/env node\" --define:process.env.OCULUM_API_URL='undefined' --define:VERSION='\"1.0.4\"'",
22
22
  "dev": "npm run build -- --watch",
23
23
  "test": "echo \"No tests configured yet\"",
24
24
  "lint": "eslint src/"
25
25
  },
26
26
  "dependencies": {
27
- "@oculum/scanner": "^1.0.0",
27
+ "@oculum/scanner": "^1.0.2",
28
28
  "@oculum/shared": "^1.0.0",
29
29
  "commander": "^12.1.0",
30
30
  "chalk": "^5.3.0",