@vibecheckai/cli 2.5.7 → 2.7.0

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 (159) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bundles/vibecheck-core.js +20 -20
  3. package/dist/commands/secrets-allowlist.js +4 -4
  4. package/dist/commands/secrets-allowlist.js.map +1 -1
  5. package/dist/commands/ship-consolidated.js +193 -193
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +5 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/init/ci-generator.d.ts +2 -2
  10. package/dist/init/hooks-installer.d.ts +2 -2
  11. package/dist/init/index.d.ts +1 -1
  12. package/dist/init/index.d.ts.map +1 -1
  13. package/dist/init/index.js +2 -2
  14. package/dist/init/index.js.map +1 -1
  15. package/dist/init/templates.d.ts +6 -285
  16. package/dist/init/templates.d.ts.map +1 -1
  17. package/dist/init/templates.js +2 -3
  18. package/dist/init/templates.js.map +1 -1
  19. package/dist/runtime/json-output.d.ts +2 -2
  20. package/package.json +11 -3
  21. package/dist/bundles/guardrail-core.js +0 -25799
  22. package/dist/bundles/guardrail-security.js +0 -208687
  23. package/dist/bundles/guardrail-ship.js +0 -2318
  24. package/dist/commands/autopilot-decision.d.ts +0 -24
  25. package/dist/commands/autopilot-decision.d.ts.map +0 -1
  26. package/dist/commands/autopilot-decision.js +0 -304
  27. package/dist/commands/autopilot-decision.js.map +0 -1
  28. package/dist/commands/autopilot.d.ts +0 -33
  29. package/dist/commands/autopilot.d.ts.map +0 -1
  30. package/dist/commands/autopilot.js +0 -1539
  31. package/dist/commands/autopilot.js.map +0 -1
  32. package/dist/commands/context.d.ts +0 -8
  33. package/dist/commands/context.d.ts.map +0 -1
  34. package/dist/commands/context.js +0 -340
  35. package/dist/commands/context.js.map +0 -1
  36. package/dist/commands/debug.d.ts +0 -78
  37. package/dist/commands/debug.d.ts.map +0 -1
  38. package/dist/commands/debug.js +0 -381
  39. package/dist/commands/debug.js.map +0 -1
  40. package/dist/commands/preview.d.ts +0 -54
  41. package/dist/commands/preview.d.ts.map +0 -1
  42. package/dist/commands/preview.js +0 -352
  43. package/dist/commands/preview.js.map +0 -1
  44. package/dist/commands/quality/check.d.ts +0 -31
  45. package/dist/commands/quality/check.d.ts.map +0 -1
  46. package/dist/commands/quality/check.js +0 -242
  47. package/dist/commands/quality/check.js.map +0 -1
  48. package/dist/commands/quality/index.d.ts +0 -8
  49. package/dist/commands/quality/index.d.ts.map +0 -1
  50. package/dist/commands/quality/index.js +0 -14
  51. package/dist/commands/quality/index.js.map +0 -1
  52. package/dist/commands/quality/setup-quality.d.ts +0 -23
  53. package/dist/commands/quality/setup-quality.d.ts.map +0 -1
  54. package/dist/commands/quality/setup-quality.js +0 -452
  55. package/dist/commands/quality/setup-quality.js.map +0 -1
  56. package/dist/commands/quality/tidy.d.ts +0 -41
  57. package/dist/commands/quality/tidy.d.ts.map +0 -1
  58. package/dist/commands/quality/tidy.js +0 -466
  59. package/dist/commands/quality/tidy.js.map +0 -1
  60. package/dist/commands/quality/utils.d.ts +0 -73
  61. package/dist/commands/quality/utils.d.ts.map +0 -1
  62. package/dist/commands/quality/utils.js +0 -158
  63. package/dist/commands/quality/utils.js.map +0 -1
  64. package/dist/fix/analytics.d.ts +0 -121
  65. package/dist/fix/analytics.d.ts.map +0 -1
  66. package/dist/fix/analytics.js +0 -289
  67. package/dist/fix/analytics.js.map +0 -1
  68. package/dist/fix/audit.d.ts +0 -61
  69. package/dist/fix/audit.d.ts.map +0 -1
  70. package/dist/fix/audit.js +0 -149
  71. package/dist/fix/audit.js.map +0 -1
  72. package/dist/fix/config.d.ts +0 -78
  73. package/dist/fix/config.d.ts.map +0 -1
  74. package/dist/fix/config.js +0 -200
  75. package/dist/fix/config.js.map +0 -1
  76. package/dist/fix/impact.d.ts +0 -74
  77. package/dist/fix/impact.d.ts.map +0 -1
  78. package/dist/fix/impact.js +0 -281
  79. package/dist/fix/impact.js.map +0 -1
  80. package/dist/fix/learning.d.ts +0 -109
  81. package/dist/fix/learning.d.ts.map +0 -1
  82. package/dist/fix/learning.js +0 -296
  83. package/dist/fix/learning.js.map +0 -1
  84. package/dist/fix/metrics.d.ts +0 -106
  85. package/dist/fix/metrics.d.ts.map +0 -1
  86. package/dist/fix/metrics.js +0 -138
  87. package/dist/fix/metrics.js.map +0 -1
  88. package/dist/fix/parallel.d.ts +0 -69
  89. package/dist/fix/parallel.d.ts.map +0 -1
  90. package/dist/fix/parallel.js +0 -203
  91. package/dist/fix/parallel.js.map +0 -1
  92. package/dist/fix/report.d.ts +0 -40
  93. package/dist/fix/report.d.ts.map +0 -1
  94. package/dist/fix/report.js +0 -212
  95. package/dist/fix/report.js.map +0 -1
  96. package/dist/fix/strategy.d.ts +0 -53
  97. package/dist/fix/strategy.d.ts.map +0 -1
  98. package/dist/fix/strategy.js +0 -143
  99. package/dist/fix/strategy.js.map +0 -1
  100. package/dist/fix/templates.d.ts +0 -58
  101. package/dist/fix/templates.d.ts.map +0 -1
  102. package/dist/fix/templates.js +0 -259
  103. package/dist/fix/templates.js.map +0 -1
  104. package/dist/fix/testing.d.ts +0 -68
  105. package/dist/fix/testing.d.ts.map +0 -1
  106. package/dist/fix/testing.js +0 -245
  107. package/dist/fix/testing.js.map +0 -1
  108. package/dist/fix/validation.d.ts +0 -71
  109. package/dist/fix/validation.d.ts.map +0 -1
  110. package/dist/fix/validation.js +0 -267
  111. package/dist/fix/validation.js.map +0 -1
  112. package/dist/fix/visualization.d.ts +0 -73
  113. package/dist/fix/visualization.d.ts.map +0 -1
  114. package/dist/fix/visualization.js +0 -243
  115. package/dist/fix/visualization.js.map +0 -1
  116. package/dist/runtime/cli-errors.d.ts +0 -38
  117. package/dist/runtime/cli-errors.d.ts.map +0 -1
  118. package/dist/runtime/cli-errors.js +0 -354
  119. package/dist/runtime/cli-errors.js.map +0 -1
  120. package/dist/runtime/owner-mode.d.ts +0 -48
  121. package/dist/runtime/owner-mode.d.ts.map +0 -1
  122. package/dist/runtime/owner-mode.js +0 -284
  123. package/dist/runtime/owner-mode.js.map +0 -1
  124. package/dist/scanner/index.d.ts +0 -8
  125. package/dist/scanner/index.d.ts.map +0 -1
  126. package/dist/scanner/index.js +0 -15
  127. package/dist/scanner/index.js.map +0 -1
  128. package/dist/scanner/placeholder-detector.d.ts +0 -56
  129. package/dist/scanner/placeholder-detector.d.ts.map +0 -1
  130. package/dist/scanner/placeholder-detector.js +0 -220
  131. package/dist/scanner/placeholder-detector.js.map +0 -1
  132. package/dist/scanner/route-detector.d.ts +0 -100
  133. package/dist/scanner/route-detector.d.ts.map +0 -1
  134. package/dist/scanner/route-detector.js +0 -455
  135. package/dist/scanner/route-detector.js.map +0 -1
  136. package/dist/scanner/scoring.d.ts +0 -67
  137. package/dist/scanner/scoring.d.ts.map +0 -1
  138. package/dist/scanner/scoring.js +0 -284
  139. package/dist/scanner/scoring.js.map +0 -1
  140. package/dist/ship-baseline.d.ts +0 -56
  141. package/dist/ship-baseline.d.ts.map +0 -1
  142. package/dist/ship-baseline.js +0 -194
  143. package/dist/ship-baseline.js.map +0 -1
  144. package/dist/ship-config.d.ts +0 -91
  145. package/dist/ship-config.d.ts.map +0 -1
  146. package/dist/ship-config.js +0 -133
  147. package/dist/ship-config.js.map +0 -1
  148. package/dist/ship-data-loader.d.ts +0 -70
  149. package/dist/ship-data-loader.d.ts.map +0 -1
  150. package/dist/ship-data-loader.js +0 -301
  151. package/dist/ship-data-loader.js.map +0 -1
  152. package/dist/utils/ai-helpers.d.ts +0 -72
  153. package/dist/utils/ai-helpers.d.ts.map +0 -1
  154. package/dist/utils/ai-helpers.js +0 -339
  155. package/dist/utils/ai-helpers.js.map +0 -1
  156. package/dist/utils/validation.d.ts +0 -34
  157. package/dist/utils/validation.d.ts.map +0 -1
  158. package/dist/utils/validation.js +0 -160
  159. package/dist/utils/validation.js.map +0 -1
@@ -1,133 +0,0 @@
1
- "use strict";
2
- /**
3
- * Ship Configuration Management
4
- * Enterprise-grade configuration system for ship checks
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ShipConfigManager = void 0;
8
- const fs_1 = require("fs");
9
- const path_1 = require("path");
10
- const DEFAULT_CONFIG = {
11
- version: '1.0.0',
12
- thresholds: {
13
- passScore: 90,
14
- warnScore: 70,
15
- failScore: 50,
16
- },
17
- checks: [],
18
- baseline: {
19
- enabled: false,
20
- path: '.guardrail/ship-baseline.json',
21
- },
22
- };
23
- class ShipConfigManager {
24
- /**
25
- * Load ship configuration from file
26
- */
27
- static loadConfig(projectPath) {
28
- const configPath = (0, path_1.join)(projectPath, '.guardrail', 'ship.config.json');
29
- if (!(0, fs_1.existsSync)(configPath)) {
30
- return { ...DEFAULT_CONFIG };
31
- }
32
- try {
33
- const content = (0, fs_1.readFileSync)(configPath, 'utf-8');
34
- const config = JSON.parse(content);
35
- // Merge with defaults to ensure all fields are present
36
- return {
37
- ...DEFAULT_CONFIG,
38
- ...config,
39
- thresholds: {
40
- ...DEFAULT_CONFIG.thresholds,
41
- ...config.thresholds,
42
- },
43
- };
44
- }
45
- catch (error) {
46
- console.warn(`Failed to load ship config: ${error}`);
47
- return { ...DEFAULT_CONFIG };
48
- }
49
- }
50
- /**
51
- * Save ship configuration to file
52
- */
53
- static saveConfig(projectPath, config) {
54
- const configDir = (0, path_1.join)(projectPath, '.guardrail');
55
- const configPath = (0, path_1.join)(configDir, 'ship.config.json');
56
- (0, fs_1.mkdirSync)(configDir, { recursive: true });
57
- (0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2), 'utf-8');
58
- }
59
- /**
60
- * Initialize default configuration
61
- */
62
- static initConfig(projectPath) {
63
- const config = { ...DEFAULT_CONFIG };
64
- this.saveConfig(projectPath, config);
65
- return config;
66
- }
67
- /**
68
- * Validate configuration
69
- */
70
- static validateConfig(config) {
71
- const errors = [];
72
- if (config.thresholds.passScore < 0 || config.thresholds.passScore > 100) {
73
- errors.push('passScore must be between 0 and 100');
74
- }
75
- if (config.thresholds.warnScore < 0 || config.thresholds.warnScore > 100) {
76
- errors.push('warnScore must be between 0 and 100');
77
- }
78
- if (config.thresholds.failScore < 0 || config.thresholds.failScore > 100) {
79
- errors.push('failScore must be between 0 and 100');
80
- }
81
- if (config.thresholds.passScore < config.thresholds.warnScore) {
82
- errors.push('passScore must be >= warnScore');
83
- }
84
- if (config.thresholds.warnScore < config.thresholds.failScore) {
85
- errors.push('warnScore must be >= failScore');
86
- }
87
- return {
88
- valid: errors.length === 0,
89
- errors,
90
- };
91
- }
92
- /**
93
- * Export configuration (for sharing between projects)
94
- */
95
- static exportConfig(config) {
96
- // Remove sensitive data
97
- const exportConfig = {
98
- ...config,
99
- notifications: config.notifications
100
- ? {
101
- enabled: config.notifications.enabled,
102
- }
103
- : undefined,
104
- integrations: config.integrations
105
- ? {
106
- ...config.integrations,
107
- dashboards: config.integrations.dashboards
108
- ? {
109
- enabled: config.integrations.dashboards.enabled,
110
- }
111
- : undefined,
112
- }
113
- : undefined,
114
- };
115
- return JSON.stringify(exportConfig, null, 2);
116
- }
117
- /**
118
- * Import configuration
119
- */
120
- static importConfig(configJson) {
121
- const imported = JSON.parse(configJson);
122
- return {
123
- ...DEFAULT_CONFIG,
124
- ...imported,
125
- thresholds: {
126
- ...DEFAULT_CONFIG.thresholds,
127
- ...imported.thresholds,
128
- },
129
- };
130
- }
131
- }
132
- exports.ShipConfigManager = ShipConfigManager;
133
- //# sourceMappingURL=ship-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ship-config.js","sourceRoot":"","sources":["../src/ship-config.ts"],"names":[],"mappings":"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"}
@@ -1,70 +0,0 @@
1
- /**
2
- * Ship Data Loader
3
- *
4
- * Robust data loading for ship command with fallback to local files
5
- * Handles offline mode, API failures, and missing fields gracefully
6
- */
7
- export interface ScanData {
8
- scans?: Array<{
9
- id: string;
10
- name: string;
11
- status: string;
12
- score?: number;
13
- duration?: number;
14
- criticalIssues?: number;
15
- warnings?: number;
16
- [key: string]: any;
17
- }>;
18
- checks?: Array<{
19
- id: string;
20
- name: string;
21
- status: string;
22
- message?: string;
23
- details?: string[];
24
- [key: string]: any;
25
- }>;
26
- verdict?: 'ship' | 'no-ship' | 'review';
27
- score?: number;
28
- summary?: {
29
- totalScans?: number;
30
- passedScans?: number;
31
- failedScans?: number;
32
- criticalIssues?: number;
33
- warnings?: number;
34
- totalDuration?: number;
35
- };
36
- [key: string]: any;
37
- }
38
- export interface LoadScanDataOptions {
39
- projectPath: string;
40
- debug?: boolean;
41
- }
42
- export interface LoadScanDataResult {
43
- data: ScanData | null;
44
- source: 'api' | 'local' | 'none';
45
- error?: string;
46
- }
47
- /**
48
- * Load scan data from API (if available) or fallback to local files
49
- * Always returns normalized data shape
50
- */
51
- export declare function loadScanData(options: LoadScanDataOptions): Promise<LoadScanDataResult>;
52
- /**
53
- * Custom error class for ship data validation failures
54
- */
55
- export declare class ShipDataError extends Error {
56
- readonly missingFields?: string[];
57
- constructor(message: string, missingFields?: string[]);
58
- }
59
- /**
60
- * Normalize and validate ship response data
61
- * Throws ShipDataError if critical fields are missing
62
- * Returns a stable object shape with all required fields
63
- */
64
- export declare function normalizeShipResponse(raw: any): ScanData;
65
- /**
66
- * Merge scan data with defaults to ensure all required fields exist
67
- * This is a non-throwing version for backwards compatibility
68
- */
69
- export declare function normalizeScanData(data: ScanData | null): ScanData;
70
- //# sourceMappingURL=ship-data-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ship-data-loader.d.ts","sourceRoot":"","sources":["../src/ship-data-loader.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,CAwE7B;AA4HD;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aACO,aAAa,CAAC,EAAE,MAAM,EAAE;gBAAzD,OAAO,EAAE,MAAM,EAAkB,aAAa,CAAC,EAAE,MAAM,EAAE;CAKtE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,QAAQ,CA0ExD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,QAAQ,CAuBjE"}
@@ -1,301 +0,0 @@
1
- "use strict";
2
- /**
3
- * Ship Data Loader
4
- *
5
- * Robust data loading for ship command with fallback to local files
6
- * Handles offline mode, API failures, and missing fields gracefully
7
- */
8
- Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ShipDataError = void 0;
10
- exports.loadScanData = loadScanData;
11
- exports.normalizeShipResponse = normalizeShipResponse;
12
- exports.normalizeScanData = normalizeScanData;
13
- const fs_1 = require("fs");
14
- const path_1 = require("path");
15
- const creds_1 = require("./runtime/creds");
16
- /**
17
- * Load scan data from API (if available) or fallback to local files
18
- * Always returns normalized data shape
19
- */
20
- async function loadScanData(options) {
21
- const { projectPath, debug = false } = options;
22
- // Try API first if we have credentials
23
- try {
24
- const authState = (0, creds_1.loadAuthState)();
25
- if (authState?.apiKey) {
26
- if (debug) {
27
- console.log('[DEBUG] Attempting to load scan data from API...');
28
- }
29
- const apiData = await loadScanDataFromAPI(authState.apiKey, projectPath, debug);
30
- if (apiData) {
31
- // Normalize API response before returning
32
- try {
33
- const normalized = normalizeShipResponse(apiData);
34
- if (debug) {
35
- console.log('[DEBUG] Successfully loaded and normalized scan data from API');
36
- }
37
- return { data: normalized, source: 'api' };
38
- }
39
- catch (normalizeError) {
40
- if (normalizeError instanceof ShipDataError) {
41
- if (debug) {
42
- console.log(`[DEBUG] API response validation failed: ${normalizeError.message}`);
43
- }
44
- // Continue to local fallback on validation failure
45
- }
46
- else {
47
- throw normalizeError;
48
- }
49
- }
50
- }
51
- }
52
- }
53
- catch (error) {
54
- if (debug) {
55
- console.log(`[DEBUG] API load failed: ${error.message}, falling back to local files`);
56
- }
57
- // Continue to local fallback
58
- }
59
- // Fallback to local files
60
- try {
61
- const localData = loadScanDataFromLocal(projectPath, debug);
62
- if (localData) {
63
- // Normalize local data before returning
64
- try {
65
- const normalized = normalizeShipResponse(localData);
66
- if (debug) {
67
- console.log('[DEBUG] Successfully loaded and normalized scan data from local files');
68
- }
69
- return { data: normalized, source: 'local' };
70
- }
71
- catch (normalizeError) {
72
- if (normalizeError instanceof ShipDataError) {
73
- if (debug) {
74
- console.log(`[DEBUG] Local data validation failed: ${normalizeError.message}`);
75
- }
76
- // Return null if local data is invalid
77
- }
78
- else {
79
- throw normalizeError;
80
- }
81
- }
82
- }
83
- }
84
- catch (error) {
85
- if (debug) {
86
- console.log(`[DEBUG] Local file load failed: ${error.message}`);
87
- }
88
- }
89
- // No data available
90
- if (debug) {
91
- console.log('[DEBUG] No scan data available from API or local files');
92
- }
93
- return { data: null, source: 'none', error: 'No scan data available' };
94
- }
95
- /**
96
- * Load scan data from API
97
- */
98
- async function loadScanDataFromAPI(apiKey, projectPath, debug) {
99
- try {
100
- const baseUrl = process.env.GUARDRAIL_API_BASE_URL || 'https://api.guardrail.dev';
101
- const projectName = (0, path_1.basename)(projectPath);
102
- // Try to get scan results from API
103
- // Note: This is a placeholder - adjust the endpoint as needed
104
- const response = await fetch(`${baseUrl}/api/ship/results`, {
105
- method: 'POST',
106
- headers: {
107
- 'Content-Type': 'application/json',
108
- 'Authorization': `Bearer ${apiKey}`,
109
- },
110
- body: JSON.stringify({
111
- projectPath,
112
- projectName,
113
- }),
114
- });
115
- if (!response.ok) {
116
- if (debug) {
117
- console.log(`[DEBUG] API returned status ${response.status}`);
118
- }
119
- return null;
120
- }
121
- const responseData = await response.json();
122
- // Validate response structure
123
- if (!responseData || typeof responseData !== 'object') {
124
- if (debug) {
125
- console.log('[DEBUG] API response is invalid or empty');
126
- }
127
- return null;
128
- }
129
- // Return raw data - normalization will happen in loadScanData
130
- // This allows loadScanData to handle validation errors appropriately
131
- return responseData;
132
- }
133
- catch (error) {
134
- if (debug) {
135
- console.log(`[DEBUG] API request failed: ${error.message}`);
136
- }
137
- return null;
138
- }
139
- }
140
- /**
141
- * Load scan data from local .guardrail directory
142
- */
143
- function loadScanDataFromLocal(projectPath, debug) {
144
- const guardrailDir = (0, path_1.join)(projectPath, '.guardrail');
145
- if (!(0, fs_1.existsSync)(guardrailDir)) {
146
- if (debug) {
147
- console.log('[DEBUG] .guardrail directory does not exist');
148
- }
149
- return null;
150
- }
151
- // Try to find latest scan result file
152
- const scanFiles = [
153
- (0, path_1.join)(guardrailDir, 'ship-result.json'),
154
- (0, path_1.join)(guardrailDir, 'ship-report.json'),
155
- (0, path_1.join)(guardrailDir, 'scan-result.json'),
156
- ];
157
- // Also check ship subdirectory
158
- const shipDir = (0, path_1.join)(guardrailDir, 'ship');
159
- if ((0, fs_1.existsSync)(shipDir)) {
160
- try {
161
- const shipFiles = (0, fs_1.readdirSync)(shipDir)
162
- .filter(f => f.endsWith('.json'))
163
- .sort()
164
- .reverse()
165
- .slice(0, 1)
166
- .map(f => (0, path_1.join)(shipDir, f));
167
- scanFiles.push(...shipFiles);
168
- }
169
- catch (e) {
170
- // Ignore readdir errors
171
- }
172
- }
173
- // Try to load from each potential file
174
- for (const filePath of scanFiles) {
175
- if ((0, fs_1.existsSync)(filePath)) {
176
- try {
177
- const content = (0, fs_1.readFileSync)(filePath, 'utf-8');
178
- const data = JSON.parse(content);
179
- // Extract ship data (might be nested under 'ship' key)
180
- const shipData = data.ship || data;
181
- if (debug) {
182
- console.log(`[DEBUG] Loaded scan data from ${filePath}`);
183
- }
184
- // Return raw data - normalization will happen in loadScanData
185
- // This ensures consistent normalization for both API and local sources
186
- return shipData;
187
- }
188
- catch (error) {
189
- if (debug) {
190
- console.log(`[DEBUG] Failed to parse ${filePath}: ${error.message}`);
191
- }
192
- // Continue to next file
193
- }
194
- }
195
- }
196
- return null;
197
- }
198
- /**
199
- * Custom error class for ship data validation failures
200
- */
201
- class ShipDataError extends Error {
202
- constructor(message, missingFields) {
203
- super(message);
204
- this.missingFields = missingFields;
205
- this.name = 'ShipDataError';
206
- Error.captureStackTrace?.(this, ShipDataError);
207
- }
208
- }
209
- exports.ShipDataError = ShipDataError;
210
- /**
211
- * Normalize and validate ship response data
212
- * Throws ShipDataError if critical fields are missing
213
- * Returns a stable object shape with all required fields
214
- */
215
- function normalizeShipResponse(raw) {
216
- // Handle null/undefined
217
- if (raw == null) {
218
- throw new ShipDataError('Ship data is null or undefined. Cannot proceed with ship check.', ['scans', 'checks', 'verdict', 'score']);
219
- }
220
- // Ensure it's an object
221
- if (typeof raw !== 'object') {
222
- throw new ShipDataError(`Invalid ship data type: expected object, got ${typeof raw}`, ['scans', 'checks', 'verdict', 'score']);
223
- }
224
- // Validate and normalize scans - CRITICAL FIELD
225
- // scans is optional but if present must be an array
226
- const scans = raw.scans != null
227
- ? (Array.isArray(raw.scans) ? raw.scans : [])
228
- : [];
229
- // Validate and normalize checks - CRITICAL FIELD
230
- // checks is optional but if present must be an array
231
- const checks = raw.checks != null
232
- ? (Array.isArray(raw.checks) ? raw.checks : [])
233
- : [];
234
- // Validate and normalize verdict
235
- const validVerdicts = ['ship', 'no-ship', 'review'];
236
- const verdict = raw.verdict && validVerdicts.includes(raw.verdict)
237
- ? raw.verdict
238
- : 'review';
239
- // Validate and normalize score
240
- const score = typeof raw.score === 'number' && !isNaN(raw.score)
241
- ? Math.max(0, Math.min(100, raw.score)) // Clamp to 0-100
242
- : 0;
243
- // Validate and normalize summary
244
- const summary = raw.summary && typeof raw.summary === 'object'
245
- ? {
246
- totalScans: typeof raw.summary.totalScans === 'number' ? raw.summary.totalScans : scans.length,
247
- passedScans: typeof raw.summary.passedScans === 'number' ? raw.summary.passedScans : 0,
248
- failedScans: typeof raw.summary.failedScans === 'number' ? raw.summary.failedScans : 0,
249
- criticalIssues: typeof raw.summary.criticalIssues === 'number' ? raw.summary.criticalIssues : 0,
250
- warnings: typeof raw.summary.warnings === 'number' ? raw.summary.warnings : 0,
251
- totalDuration: typeof raw.summary.totalDuration === 'number' ? raw.summary.totalDuration : 0,
252
- ...raw.summary,
253
- }
254
- : {
255
- totalScans: scans.length,
256
- passedScans: 0,
257
- failedScans: 0,
258
- criticalIssues: 0,
259
- warnings: 0,
260
- totalDuration: 0,
261
- };
262
- // Return normalized response with stable shape
263
- return {
264
- scans,
265
- checks,
266
- verdict,
267
- score,
268
- summary,
269
- // Preserve other fields if present
270
- ...Object.fromEntries(Object.entries(raw).filter(([key]) => !['scans', 'checks', 'verdict', 'score', 'summary'].includes(key))),
271
- };
272
- }
273
- /**
274
- * Merge scan data with defaults to ensure all required fields exist
275
- * This is a non-throwing version for backwards compatibility
276
- */
277
- function normalizeScanData(data) {
278
- if (!data) {
279
- return {
280
- scans: [],
281
- checks: [],
282
- verdict: 'review',
283
- score: 0,
284
- summary: {},
285
- };
286
- }
287
- try {
288
- return normalizeShipResponse(data);
289
- }
290
- catch (error) {
291
- // If normalization fails, return safe defaults
292
- return {
293
- scans: Array.isArray(data.scans) ? data.scans : [],
294
- checks: Array.isArray(data.checks) ? data.checks : [],
295
- verdict: data.verdict || 'review',
296
- score: typeof data.score === 'number' ? data.score : 0,
297
- summary: data.summary || {},
298
- };
299
- }
300
- }
301
- //# sourceMappingURL=ship-data-loader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ship-data-loader.js","sourceRoot":"","sources":["../src/ship-data-loader.ts"],"names":[],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- /**
2
- * AI Helpers
3
- *
4
- * Utility functions for AI-powered features across CLI commands
5
- * Provides consistent AI capabilities with multi-provider support
6
- *
7
- * ⚠️ PRO FEATURE - Requires PRO tier subscription
8
- */
9
- import OpenAI from 'openai';
10
- import Anthropic from '@anthropic-ai/sdk';
11
- export interface AIConfig {
12
- provider?: 'openai' | 'anthropic' | 'auto';
13
- model?: string;
14
- maxTokens?: number;
15
- temperature?: number;
16
- }
17
- export interface AIExplanation {
18
- summary: string;
19
- details: string[];
20
- severity: 'low' | 'medium' | 'high' | 'critical';
21
- impact: string;
22
- recommendations: string[];
23
- provider: string;
24
- timestamp: string;
25
- }
26
- export interface AISuggestion {
27
- type: 'fix' | 'improvement' | 'refactor' | 'security';
28
- priority: 'low' | 'medium' | 'high';
29
- description: string;
30
- code?: string;
31
- explanation: string;
32
- confidence: number;
33
- }
34
- /**
35
- * Get available AI provider
36
- */
37
- export declare function getAIProvider(): 'openai' | 'anthropic' | null;
38
- /**
39
- * Check if AI is available (both API key and PRO tier)
40
- */
41
- export declare function isAIAvailable(): Promise<boolean>;
42
- /**
43
- * Check if AI is available (sync version - checks API key only)
44
- * Use for UI hints, not for actual feature access
45
- */
46
- export declare function hasAIAPIKey(): boolean;
47
- /**
48
- * Get AI client based on provider
49
- */
50
- export declare function getAIClient(provider?: 'openai' | 'anthropic' | 'auto'): OpenAI | Anthropic | null;
51
- /**
52
- * Explain a vulnerability or issue using AI
53
- * ⚠️ PRO FEATURE - Requires PRO tier subscription
54
- */
55
- export declare function explainIssue(issue: {
56
- type: string;
57
- severity: string;
58
- description: string;
59
- file?: string;
60
- line?: number;
61
- code?: string;
62
- }, config?: AIConfig): Promise<AIExplanation | null>;
63
- /**
64
- * Generate AI-powered suggestions for code improvements
65
- * ⚠️ PRO FEATURE - Requires PRO tier subscription
66
- */
67
- export declare function generateSuggestions(code: string, context: {
68
- file?: string;
69
- language?: string;
70
- issues?: string[];
71
- }, config?: AIConfig): Promise<AISuggestion[] | null>;
72
- //# sourceMappingURL=ai-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/ai-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,GAAG,aAAa,GAAG,UAAU,GAAG,UAAU,CAAC;IACtD,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,QAAQ,GAAG,WAAW,GAAG,IAAI,CAW7D;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBtD;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,IAAI,CAcjG;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE;IACL,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,EACD,MAAM,GAAE,QAAa,GACpB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAmE/B;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,EACD,MAAM,GAAE,QAAa,GACpB,OAAO,CAAC,YAAY,EAAE,GAAG,IAAI,CAAC,CAqEhC"}