fivosense 0.1.5 → 0.2.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 (136) hide show
  1. package/.kilo/skill/fivosense/skill.json +5 -5
  2. package/COMPLETE_SUMMARY.md +412 -0
  3. package/DEPLOYMENT_GUIDE.md +2 -2
  4. package/FINAL_VERIFICATION.md +316 -0
  5. package/GITHUB_PUSH.md +4 -4
  6. package/LICENSE +1 -1
  7. package/README.md +290 -208
  8. package/RELEASE_READY.md +3 -3
  9. package/bin/fivosense.mjs +6 -0
  10. package/dist/ai/client.d.ts +33 -0
  11. package/dist/ai/client.d.ts.map +1 -0
  12. package/dist/ai/client.js +170 -0
  13. package/dist/ai/client.js.map +1 -0
  14. package/dist/ai/judge.d.ts +9 -3
  15. package/dist/ai/judge.d.ts.map +1 -1
  16. package/dist/ai/judge.js +49 -14
  17. package/dist/ai/judge.js.map +1 -1
  18. package/dist/cli/index.d.ts +3 -1
  19. package/dist/cli/index.d.ts.map +1 -1
  20. package/dist/cli/index.js +6 -1
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/core/orchestrator.d.ts +34 -0
  23. package/dist/core/orchestrator.d.ts.map +1 -0
  24. package/dist/core/orchestrator.js +211 -0
  25. package/dist/core/orchestrator.js.map +1 -0
  26. package/dist/core/scope.d.ts +32 -0
  27. package/dist/core/scope.d.ts.map +1 -0
  28. package/dist/core/scope.js +149 -0
  29. package/dist/core/scope.js.map +1 -0
  30. package/dist/editors/vscode.d.ts +4 -2
  31. package/dist/editors/vscode.d.ts.map +1 -1
  32. package/dist/editors/vscode.js +6 -0
  33. package/dist/editors/vscode.js.map +1 -1
  34. package/dist/engine/adversary.d.ts +9 -2
  35. package/dist/engine/adversary.d.ts.map +1 -1
  36. package/dist/engine/adversary.js +47 -13
  37. package/dist/engine/adversary.js.map +1 -1
  38. package/dist/engine/graph.d.ts +4 -1
  39. package/dist/engine/graph.d.ts.map +1 -1
  40. package/dist/engine/graph.js +6 -0
  41. package/dist/engine/graph.js.map +1 -1
  42. package/dist/engine/poc.d.ts +26 -0
  43. package/dist/engine/poc.d.ts.map +1 -0
  44. package/dist/engine/poc.js +179 -0
  45. package/dist/engine/poc.js.map +1 -0
  46. package/dist/engine/reach.d.ts +4 -2
  47. package/dist/engine/reach.d.ts.map +1 -1
  48. package/dist/engine/reach.js +6 -0
  49. package/dist/engine/reach.js.map +1 -1
  50. package/dist/engine/sinks.d.ts +22 -32
  51. package/dist/engine/sinks.d.ts.map +1 -1
  52. package/dist/engine/sinks.js +338 -44
  53. package/dist/engine/sinks.js.map +1 -1
  54. package/dist/engine/sources.d.ts +11 -19
  55. package/dist/engine/sources.d.ts.map +1 -1
  56. package/dist/engine/sources.js +100 -24
  57. package/dist/engine/sources.js.map +1 -1
  58. package/dist/engine/taint.d.ts +6 -0
  59. package/dist/engine/taint.d.ts.map +1 -1
  60. package/dist/engine/taint.js +6 -0
  61. package/dist/engine/taint.js.map +1 -1
  62. package/dist/engine/verify.d.ts +4 -1
  63. package/dist/engine/verify.d.ts.map +1 -1
  64. package/dist/engine/verify.js +6 -0
  65. package/dist/engine/verify.js.map +1 -1
  66. package/dist/features/badge.d.ts +6 -0
  67. package/dist/features/badge.d.ts.map +1 -1
  68. package/dist/features/badge.js +4 -1
  69. package/dist/features/badge.js.map +1 -1
  70. package/dist/features/fix.d.ts +6 -0
  71. package/dist/features/fix.d.ts.map +1 -1
  72. package/dist/features/fix.js +4 -1
  73. package/dist/features/fix.js.map +1 -1
  74. package/dist/features/index.d.ts +6 -0
  75. package/dist/features/index.d.ts.map +1 -1
  76. package/dist/features/index.js +6 -0
  77. package/dist/features/index.js.map +1 -1
  78. package/dist/features/roast.d.ts +6 -0
  79. package/dist/features/roast.d.ts.map +1 -1
  80. package/dist/features/roast.js +4 -1
  81. package/dist/features/roast.js.map +1 -1
  82. package/dist/hooks/agent.d.ts +4 -1
  83. package/dist/hooks/agent.d.ts.map +1 -1
  84. package/dist/hooks/agent.js +6 -0
  85. package/dist/hooks/agent.js.map +1 -1
  86. package/dist/hooks/git.d.ts +34 -0
  87. package/dist/hooks/git.d.ts.map +1 -0
  88. package/dist/hooks/git.js +161 -0
  89. package/dist/hooks/git.js.map +1 -0
  90. package/dist/index.d.ts +4 -2
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +6 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/rules/destructive.d.ts +12 -21
  95. package/dist/rules/destructive.d.ts.map +1 -1
  96. package/dist/rules/destructive.js +306 -24
  97. package/dist/rules/destructive.js.map +1 -1
  98. package/dist/rules/secrets.d.ts +8 -10
  99. package/dist/rules/secrets.d.ts.map +1 -1
  100. package/dist/rules/secrets.js +294 -17
  101. package/dist/rules/secrets.js.map +1 -1
  102. package/mcp/index.js +55 -20
  103. package/mcp/package-lock.json +382 -0
  104. package/mcp/package.json +21 -4
  105. package/package.json +5 -5
  106. package/src/ai/client.ts +226 -0
  107. package/src/ai/judge.ts +58 -14
  108. package/src/cli/index.ts +7 -1
  109. package/src/core/orchestrator.ts +266 -0
  110. package/src/core/scope.ts +175 -0
  111. package/src/editors/vscode.ts +7 -0
  112. package/src/engine/adversary.ts +55 -12
  113. package/src/engine/graph.ts +7 -0
  114. package/src/engine/poc.ts +219 -0
  115. package/src/engine/reach.ts +7 -0
  116. package/src/engine/sinks.ts +358 -45
  117. package/src/engine/sources.ts +109 -24
  118. package/src/engine/taint.ts +7 -0
  119. package/src/engine/verify.ts +7 -0
  120. package/src/features/badge.ts +7 -0
  121. package/src/features/fix.ts +7 -0
  122. package/src/features/index.ts +7 -0
  123. package/src/features/roast.ts +7 -0
  124. package/src/hooks/agent.ts +7 -0
  125. package/src/hooks/git.ts +194 -0
  126. package/src/index.ts +7 -0
  127. package/src/rules/destructive.ts +316 -26
  128. package/src/rules/secrets.ts +306 -17
  129. package/vscode-extension/CHANGELOG.md +14 -2
  130. package/vscode-extension/LICENSE +1 -1
  131. package/vscode-extension/README.md +28 -23
  132. package/vscode-extension/fivosense-vscode-0.1.0.vsix +0 -0
  133. package/vscode-extension/fivosense-vscode-0.1.1.vsix +0 -0
  134. package/vscode-extension/package-lock.json +6 -6
  135. package/vscode-extension/package.json +7 -5
  136. package/vscode-extension/src/extension.ts +65 -11
@@ -1,10 +1,10 @@
1
1
  /**
2
- * Destructive command detection
3
- * Blocks dangerous operations: rm -rf, DROP TABLE, mass deletes, etc.
4
- */
5
- /**
6
- * Filesystem destructive patterns
2
+ * FivoSense - AI Security Scanner
3
+ * Copyright (c) 2026 thevinsoni
4
+ * Licensed under the MIT License
5
+ * https://github.com/thevinsoni/sense
7
6
  */
7
+ // === Filesystem Destructive ===
8
8
  export const FS_DESTRUCTIVE = [
9
9
  {
10
10
  pattern: /rm\s+-rf\s+[\/~]/,
@@ -18,6 +18,12 @@ export const FS_DESTRUCTIVE = [
18
18
  severity: 'critical',
19
19
  category: 'filesystem',
20
20
  },
21
+ {
22
+ pattern: /rm\s+-rf\s+["']?\//,
23
+ description: 'Recursive force delete from absolute path',
24
+ severity: 'critical',
25
+ category: 'filesystem',
26
+ },
21
27
  {
22
28
  pattern: /unlink\s*\(\s*['"]\/['"]\s*\)/,
23
29
  description: 'Unlink root directory',
@@ -30,10 +36,56 @@ export const FS_DESTRUCTIVE = [
30
36
  severity: 'critical',
31
37
  category: 'filesystem',
32
38
  },
39
+ {
40
+ pattern: /shred\s+/,
41
+ description: 'Secure file deletion (shred)',
42
+ severity: 'critical',
43
+ category: 'filesystem',
44
+ },
45
+ {
46
+ pattern: /mkfs\./,
47
+ description: 'Format filesystem',
48
+ severity: 'critical',
49
+ category: 'filesystem',
50
+ },
51
+ {
52
+ pattern: /dd\s+if=.*of=\/dev\//,
53
+ description: 'dd write to device',
54
+ severity: 'critical',
55
+ category: 'filesystem',
56
+ },
57
+ {
58
+ pattern: />\s*\/dev\/sd[a-z]/,
59
+ description: 'Write directly to disk device',
60
+ severity: 'critical',
61
+ category: 'filesystem',
62
+ },
63
+ {
64
+ pattern: /wipefs\s+/,
65
+ description: 'Wipe filesystem signatures',
66
+ severity: 'critical',
67
+ category: 'filesystem',
68
+ },
69
+ {
70
+ pattern: /truncate\s+-s\s+0/,
71
+ description: 'Truncate file to zero bytes',
72
+ severity: 'high',
73
+ category: 'filesystem',
74
+ },
75
+ {
76
+ pattern: /del\s+\/[sfq]/i,
77
+ description: 'Windows force delete',
78
+ severity: 'critical',
79
+ category: 'filesystem',
80
+ },
81
+ {
82
+ pattern: /rmdir\s+\/s\s+\/q/i,
83
+ description: 'Windows recursive directory delete',
84
+ severity: 'critical',
85
+ category: 'filesystem',
86
+ },
33
87
  ];
34
- /**
35
- * Database destructive patterns
36
- */
88
+ // === Database Destructive ===
37
89
  export const DB_DESTRUCTIVE = [
38
90
  {
39
91
  pattern: /DROP\s+TABLE/i,
@@ -47,10 +99,16 @@ export const DB_DESTRUCTIVE = [
47
99
  severity: 'critical',
48
100
  category: 'database',
49
101
  },
102
+ {
103
+ pattern: /DROP\s+SCHEMA/i,
104
+ description: 'SQL DROP SCHEMA',
105
+ severity: 'critical',
106
+ category: 'database',
107
+ },
50
108
  {
51
109
  pattern: /TRUNCATE\s+TABLE/i,
52
110
  description: 'SQL TRUNCATE TABLE',
53
- severity: 'high',
111
+ severity: 'critical',
54
112
  category: 'database',
55
113
  },
56
114
  {
@@ -59,41 +117,268 @@ export const DB_DESTRUCTIVE = [
59
117
  severity: 'critical',
60
118
  category: 'database',
61
119
  },
120
+ {
121
+ pattern: /UPDATE\s+\w+\s+SET.*WHERE\s+1\s*=\s*1/i,
122
+ description: 'SQL UPDATE all rows',
123
+ severity: 'critical',
124
+ category: 'database',
125
+ },
126
+ {
127
+ pattern: /db\.dropDatabase/,
128
+ description: 'MongoDB drop database',
129
+ severity: 'critical',
130
+ category: 'database',
131
+ },
62
132
  {
63
133
  pattern: /db\.collection\(\w+\)\.drop\(\)/,
64
134
  description: 'MongoDB collection drop',
135
+ severity: 'critical',
136
+ category: 'database',
137
+ },
138
+ {
139
+ pattern: /FLUSH\s+(PRIVILEGES|TABLES|LOGS)/i,
140
+ description: 'MySQL FLUSH command',
65
141
  severity: 'high',
66
142
  category: 'database',
67
143
  },
144
+ {
145
+ pattern: /ALTER\s+TABLE.*DROP\s+COLUMN/i,
146
+ description: 'SQL DROP COLUMN',
147
+ severity: 'high',
148
+ category: 'database',
149
+ },
150
+ {
151
+ pattern: /db\.users\.remove/,
152
+ description: 'MongoDB mass remove',
153
+ severity: 'critical',
154
+ category: 'database',
155
+ },
156
+ {
157
+ pattern: /\.remove\(\{\}\)/,
158
+ description: 'MongoDB remove all documents',
159
+ severity: 'critical',
160
+ category: 'database',
161
+ },
68
162
  ];
69
- /**
70
- * System destructive patterns
71
- */
163
+ // === System Destructive ===
72
164
  export const SYSTEM_DESTRUCTIVE = [
73
165
  {
74
- pattern: /shutdown|reboot|halt/i,
166
+ pattern: /shutdown\s+(-[hprs])?\s*(now|\+[0-9])/i,
75
167
  description: 'System shutdown command',
76
168
  severity: 'critical',
77
169
  category: 'system',
78
170
  },
79
171
  {
80
- pattern: /kill\s+-9\s+1/,
81
- description: 'Kill init process',
172
+ pattern: /reboot\s*(-[f])?/i,
173
+ description: 'System reboot',
174
+ severity: 'critical',
175
+ category: 'system',
176
+ },
177
+ {
178
+ pattern: /halt\s*(-[f])?/i,
179
+ description: 'System halt',
180
+ severity: 'critical',
181
+ category: 'system',
182
+ },
183
+ {
184
+ pattern: /poweroff/i,
185
+ description: 'System power off',
186
+ severity: 'critical',
187
+ category: 'system',
188
+ },
189
+ {
190
+ pattern: /kill\s+-9\s+1\b/,
191
+ description: 'Kill init process (PID 1)',
192
+ severity: 'critical',
193
+ category: 'system',
194
+ },
195
+ {
196
+ pattern: /killall\s+-9/,
197
+ description: 'Force kill all processes',
198
+ severity: 'critical',
199
+ category: 'system',
200
+ },
201
+ {
202
+ pattern: /:(){ :\|:& };:/,
203
+ description: 'Fork bomb',
204
+ severity: 'critical',
205
+ category: 'system',
206
+ },
207
+ {
208
+ pattern: /init\s+0/,
209
+ description: 'Init shutdown',
82
210
  severity: 'critical',
83
211
  category: 'system',
84
212
  },
213
+ {
214
+ pattern: /systemctl\s+(stop|disable)\s+/,
215
+ description: 'Stop/disable systemd service',
216
+ severity: 'high',
217
+ category: 'system',
218
+ },
219
+ {
220
+ pattern: /service\s+\w+\s+stop/,
221
+ description: 'Stop system service',
222
+ severity: 'high',
223
+ category: 'system',
224
+ },
85
225
  ];
86
- /**
87
- * All destructive patterns
88
- */
226
+ // === Network Destructive ===
227
+ export const NETWORK_DESTRUCTIVE = [
228
+ {
229
+ pattern: /iptables\s+-F/,
230
+ description: 'Flush all firewall rules',
231
+ severity: 'critical',
232
+ category: 'network',
233
+ },
234
+ {
235
+ pattern: /iptables\s+--flush/,
236
+ description: 'Flush firewall rules',
237
+ severity: 'critical',
238
+ category: 'network',
239
+ },
240
+ {
241
+ pattern: /ufw\s+disable/,
242
+ description: 'Disable UFW firewall',
243
+ severity: 'critical',
244
+ category: 'network',
245
+ },
246
+ {
247
+ pattern: /netsh\s+firewall\s+set\s+opmode\s+disable/i,
248
+ description: 'Windows disable firewall',
249
+ severity: 'critical',
250
+ category: 'network',
251
+ },
252
+ {
253
+ pattern: /ip\s+link\s+set\s+\w+\s+down/,
254
+ description: 'Disable network interface',
255
+ severity: 'high',
256
+ category: 'network',
257
+ },
258
+ {
259
+ pattern: /ifconfig\s+\w+\s+down/,
260
+ description: 'Disable network interface (ifconfig)',
261
+ severity: 'high',
262
+ category: 'network',
263
+ },
264
+ {
265
+ pattern: /route\s+(del|flush)/,
266
+ description: 'Delete/flush routing table',
267
+ severity: 'high',
268
+ category: 'network',
269
+ },
270
+ {
271
+ pattern: /curl\s+.*\|\s*(bash|sh)/,
272
+ description: 'Remote code execution via curl pipe',
273
+ severity: 'critical',
274
+ category: 'network',
275
+ },
276
+ {
277
+ pattern: /wget\s+.*\|\s*(bash|sh)/,
278
+ description: 'Remote code execution via wget pipe',
279
+ severity: 'critical',
280
+ category: 'network',
281
+ },
282
+ ];
283
+ // === Container / Cloud Destructive ===
284
+ export const CONTAINER_DESTRUCTIVE = [
285
+ {
286
+ pattern: /docker\s+rm\s+-f\s+\$\(docker\s+ps/,
287
+ description: 'Force remove all Docker containers',
288
+ severity: 'critical',
289
+ category: 'container',
290
+ },
291
+ {
292
+ pattern: /docker\s+rmi\s+-f\s+\$\(docker\s+images/,
293
+ description: 'Force remove all Docker images',
294
+ severity: 'critical',
295
+ category: 'container',
296
+ },
297
+ {
298
+ pattern: /docker\s+system\s+prune\s+-a/,
299
+ description: 'Prune all Docker data',
300
+ severity: 'high',
301
+ category: 'container',
302
+ },
303
+ {
304
+ pattern: /kubectl\s+delete\s+(pods|deployment|namespace)\s+--all/,
305
+ description: 'Delete all Kubernetes resources',
306
+ severity: 'critical',
307
+ category: 'container',
308
+ },
309
+ {
310
+ pattern: /kubectl\s+delete\s+namespace/,
311
+ description: 'Delete Kubernetes namespace',
312
+ severity: 'critical',
313
+ category: 'container',
314
+ },
315
+ ];
316
+ // === Privilege Escalation ===
317
+ export const PRIVILEGE_DESTRUCTIVE = [
318
+ {
319
+ pattern: /chmod\s+777\s+[\/~]/,
320
+ description: 'Set full permissions (chmod 777)',
321
+ severity: 'critical',
322
+ category: 'privilege',
323
+ },
324
+ {
325
+ pattern: /chmod\s+-R\s+777/,
326
+ description: 'Recursive full permissions',
327
+ severity: 'critical',
328
+ category: 'privilege',
329
+ },
330
+ {
331
+ pattern: /chown\s+-R\s+root/,
332
+ description: 'Recursive ownership to root',
333
+ severity: 'critical',
334
+ category: 'privilege',
335
+ },
336
+ {
337
+ pattern: /chmod\s+\+s/,
338
+ description: 'Set SUID/SGID bit',
339
+ severity: 'critical',
340
+ category: 'privilege',
341
+ },
342
+ {
343
+ pattern: /chmod\s+u\+s/,
344
+ description: 'Set SUID bit',
345
+ severity: 'critical',
346
+ category: 'privilege',
347
+ },
348
+ {
349
+ pattern: /visudo/,
350
+ description: 'Edit sudoers file',
351
+ severity: 'critical',
352
+ category: 'privilege',
353
+ },
354
+ {
355
+ pattern: /echo\s+.*>>\s*\/etc\/sudoers/,
356
+ description: 'Append to sudoers file',
357
+ severity: 'critical',
358
+ category: 'privilege',
359
+ },
360
+ {
361
+ pattern: /usermod\s+-aG\s+sudo/,
362
+ description: 'Add user to sudo group',
363
+ severity: 'high',
364
+ category: 'privilege',
365
+ },
366
+ {
367
+ pattern: /passwd\s+(root|-e)/,
368
+ description: 'Change root password or expire',
369
+ severity: 'critical',
370
+ category: 'privilege',
371
+ },
372
+ ];
373
+ // === All destructive patterns combined ===
89
374
  export const ALL_DESTRUCTIVE = [
90
375
  ...FS_DESTRUCTIVE,
91
376
  ...DB_DESTRUCTIVE,
92
377
  ...SYSTEM_DESTRUCTIVE,
378
+ ...NETWORK_DESTRUCTIVE,
379
+ ...CONTAINER_DESTRUCTIVE,
380
+ ...PRIVILEGE_DESTRUCTIVE,
93
381
  ];
94
- /**
95
- * Check if code contains destructive patterns
96
- */
97
382
  export function detectDestructive(code) {
98
383
  const matches = [];
99
384
  for (const pattern of ALL_DESTRUCTIVE) {
@@ -103,9 +388,6 @@ export function detectDestructive(code) {
103
388
  }
104
389
  return matches;
105
390
  }
106
- /**
107
- * Check if specific line contains destructive command
108
- */
109
391
  export function isDestructiveLine(line) {
110
392
  for (const pattern of ALL_DESTRUCTIVE) {
111
393
  if (pattern.pattern.test(line)) {
@@ -1 +1 @@
1
- {"version":3,"file":"destructive.js","sourceRoot":"","sources":["../../src/rules/destructive.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAyB;IAClD;QACE,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,kCAAkC;QAC/C,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,sCAAsC;QACnD,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,OAAO,EAAE,+BAA+B;QACxC,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,OAAO,EAAE,6BAA6B;QACtC,WAAW,EAAE,uBAAuB;QACpC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,YAAY;KACvB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAyB;IAClD;QACE,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,gBAAgB;QAC7B,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,OAAO,EAAE,mBAAmB;QAC5B,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,OAAO,EAAE,0BAA0B;QACnC,WAAW,EAAE,iCAAiC;QAC9C,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,UAAU;KACrB;IACD;QACE,OAAO,EAAE,iCAAiC;QAC1C,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,UAAU;KACrB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAyB;IACtD;QACE,OAAO,EAAE,uBAAuB;QAChC,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,QAAQ;KACnB;IACD;QACE,OAAO,EAAE,eAAe;QACxB,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,cAAc;IACjB,GAAG,cAAc;IACjB,GAAG,kBAAkB;CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,OAAO,GAAyB,EAAE,CAAC;IAEzC,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"destructive.js","sourceRoot":"","sources":["../../src/rules/destructive.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,12 @@
1
1
  /**
2
- * Secret detection - finds hardcoded API keys, tokens, passwords
2
+ * FivoSense - AI Security Scanner
3
+ * Copyright (c) 2026 thevinsoni
4
+ * Licensed under the MIT License
5
+ * https://github.com/thevinsoni/sense
6
+ */
7
+ /**
8
+ * Secret detection — finds hardcoded API keys, tokens, passwords
9
+ * 55+ patterns covering AI, cloud, SaaS, payments, databases, and dev tools
3
10
  */
4
11
  export interface SecretPattern {
5
12
  pattern: RegExp;
@@ -7,9 +14,6 @@ export interface SecretPattern {
7
14
  description: string;
8
15
  severity: 'high' | 'medium';
9
16
  }
10
- /**
11
- * Common secret patterns
12
- */
13
17
  export declare const SECRET_PATTERNS: SecretPattern[];
14
18
  export interface SecretMatch {
15
19
  type: string;
@@ -18,12 +22,6 @@ export interface SecretMatch {
18
22
  line: number;
19
23
  match: string;
20
24
  }
21
- /**
22
- * Detect secrets in code
23
- */
24
25
  export declare function detectSecrets(code: string): SecretMatch[];
25
- /**
26
- * Check if specific line contains a secret
27
- */
28
26
  export declare function isSecretLine(line: string): SecretPattern | null;
29
27
  //# sourceMappingURL=secrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/rules/secrets.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC7B;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAAa,EAuD1C,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAyBzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAO/D"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/rules/secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC7B;AAED,eAAO,MAAM,eAAe,EAAE,aAAa,EA0V1C,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,CAwBzD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAO/D"}