couchloop-eq-mcp 1.0.4 → 1.0.5

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 (282) hide show
  1. package/README.md +24 -11
  2. package/dist/developer/analyzers/bloat-detector.d.ts +89 -0
  3. package/dist/developer/analyzers/bloat-detector.d.ts.map +1 -0
  4. package/dist/developer/analyzers/bloat-detector.js +483 -0
  5. package/dist/developer/analyzers/bloat-detector.js.map +1 -0
  6. package/dist/developer/backup/auto-backup.d.ts +96 -0
  7. package/dist/developer/backup/auto-backup.d.ts.map +1 -0
  8. package/dist/developer/backup/auto-backup.js +346 -0
  9. package/dist/developer/backup/auto-backup.js.map +1 -0
  10. package/dist/developer/blockers/package-blocker.d.ts +33 -0
  11. package/dist/developer/blockers/package-blocker.d.ts.map +1 -0
  12. package/dist/developer/blockers/package-blocker.js +224 -0
  13. package/dist/developer/blockers/package-blocker.js.map +1 -0
  14. package/dist/developer/evaluators/ai-error-preventer.d.ts +54 -0
  15. package/dist/developer/evaluators/ai-error-preventer.d.ts.map +1 -0
  16. package/dist/developer/evaluators/ai-error-preventer.js +270 -0
  17. package/dist/developer/evaluators/ai-error-preventer.js.map +1 -0
  18. package/dist/developer/evaluators/build-context-detector.d.ts +44 -0
  19. package/dist/developer/evaluators/build-context-detector.d.ts.map +1 -0
  20. package/dist/developer/evaluators/build-context-detector.js +258 -0
  21. package/dist/developer/evaluators/build-context-detector.js.map +1 -0
  22. package/dist/developer/evaluators/package-evaluator.d.ts +37 -0
  23. package/dist/developer/evaluators/package-evaluator.d.ts.map +1 -0
  24. package/dist/developer/evaluators/package-evaluator.js +278 -0
  25. package/dist/developer/evaluators/package-evaluator.js.map +1 -0
  26. package/dist/developer/guards/file-guardian.d.ts +79 -0
  27. package/dist/developer/guards/file-guardian.d.ts.map +1 -0
  28. package/dist/developer/guards/file-guardian.js +309 -0
  29. package/dist/developer/guards/file-guardian.js.map +1 -0
  30. package/dist/developer/managers/context-manager.d.ts +61 -0
  31. package/dist/developer/managers/context-manager.d.ts.map +1 -0
  32. package/dist/developer/managers/context-manager.js +302 -0
  33. package/dist/developer/managers/context-manager.js.map +1 -0
  34. package/dist/developer/metrics/complexity-calculator.d.ts +52 -0
  35. package/dist/developer/metrics/complexity-calculator.d.ts.map +1 -0
  36. package/dist/developer/metrics/complexity-calculator.js +259 -0
  37. package/dist/developer/metrics/complexity-calculator.js.map +1 -0
  38. package/dist/developer/reports/review-summary.d.ts +49 -0
  39. package/dist/developer/reports/review-summary.d.ts.map +1 -0
  40. package/dist/developer/reports/review-summary.js +249 -0
  41. package/dist/developer/reports/review-summary.js.map +1 -0
  42. package/dist/developer/scanners/review-assistant.d.ts +41 -0
  43. package/dist/developer/scanners/review-assistant.d.ts.map +1 -0
  44. package/dist/developer/scanners/review-assistant.js +374 -0
  45. package/dist/developer/scanners/review-assistant.js.map +1 -0
  46. package/dist/developer/scanners/secret-scanner.d.ts +66 -0
  47. package/dist/developer/scanners/secret-scanner.d.ts.map +1 -0
  48. package/dist/developer/scanners/secret-scanner.js +287 -0
  49. package/dist/developer/scanners/secret-scanner.js.map +1 -0
  50. package/dist/developer/scanners/sql-injection-detector.d.ts +54 -0
  51. package/dist/developer/scanners/sql-injection-detector.d.ts.map +1 -0
  52. package/dist/developer/scanners/sql-injection-detector.js +174 -0
  53. package/dist/developer/scanners/sql-injection-detector.js.map +1 -0
  54. package/dist/developer/scanners/xss-detector.d.ts +60 -0
  55. package/dist/developer/scanners/xss-detector.d.ts.map +1 -0
  56. package/dist/developer/scanners/xss-detector.js +229 -0
  57. package/dist/developer/scanners/xss-detector.js.map +1 -0
  58. package/dist/developer/types/ai-errors.d.ts +34 -0
  59. package/dist/developer/types/ai-errors.d.ts.map +1 -0
  60. package/dist/developer/types/ai-errors.js +271 -0
  61. package/dist/developer/types/ai-errors.js.map +1 -0
  62. package/dist/developer/types/package.d.ts +32 -0
  63. package/dist/developer/types/package.d.ts.map +1 -0
  64. package/dist/developer/types/package.js +5 -0
  65. package/dist/developer/types/package.js.map +1 -0
  66. package/dist/developer/updaters/dependency-updater.d.ts +102 -0
  67. package/dist/developer/updaters/dependency-updater.d.ts.map +1 -0
  68. package/dist/developer/updaters/dependency-updater.js +472 -0
  69. package/dist/developer/updaters/dependency-updater.js.map +1 -0
  70. package/dist/developer/validators/cargo.d.ts +14 -0
  71. package/dist/developer/validators/cargo.d.ts.map +1 -0
  72. package/dist/developer/validators/cargo.js +132 -0
  73. package/dist/developer/validators/cargo.js.map +1 -0
  74. package/dist/developer/validators/gem.d.ts +14 -0
  75. package/dist/developer/validators/gem.d.ts.map +1 -0
  76. package/dist/developer/validators/gem.js +85 -0
  77. package/dist/developer/validators/gem.js.map +1 -0
  78. package/dist/developer/validators/go.d.ts +14 -0
  79. package/dist/developer/validators/go.d.ts.map +1 -0
  80. package/dist/developer/validators/go.js +138 -0
  81. package/dist/developer/validators/go.js.map +1 -0
  82. package/dist/developer/validators/maven.d.ts +14 -0
  83. package/dist/developer/validators/maven.d.ts.map +1 -0
  84. package/dist/developer/validators/maven.js +99 -0
  85. package/dist/developer/validators/maven.js.map +1 -0
  86. package/dist/developer/validators/npm.d.ts +14 -0
  87. package/dist/developer/validators/npm.d.ts.map +1 -0
  88. package/dist/developer/validators/npm.js +96 -0
  89. package/dist/developer/validators/npm.js.map +1 -0
  90. package/dist/developer/validators/nuget.d.ts +15 -0
  91. package/dist/developer/validators/nuget.d.ts.map +1 -0
  92. package/dist/developer/validators/nuget.js +107 -0
  93. package/dist/developer/validators/nuget.js.map +1 -0
  94. package/dist/developer/validators/pypi.d.ts +14 -0
  95. package/dist/developer/validators/pypi.d.ts.map +1 -0
  96. package/dist/developer/validators/pypi.js +118 -0
  97. package/dist/developer/validators/pypi.js.map +1 -0
  98. package/dist/developer/validators/registry-manager.d.ts +37 -0
  99. package/dist/developer/validators/registry-manager.d.ts.map +1 -0
  100. package/dist/developer/validators/registry-manager.js +89 -0
  101. package/dist/developer/validators/registry-manager.js.map +1 -0
  102. package/dist/developer/validators/version-checker.d.ts +145 -0
  103. package/dist/developer/validators/version-checker.d.ts.map +1 -0
  104. package/dist/developer/validators/version-checker.js +529 -0
  105. package/dist/developer/validators/version-checker.js.map +1 -0
  106. package/dist/server/index.js.map +1 -1
  107. package/dist/server/middleware/auth.d.ts +7 -9
  108. package/dist/server/middleware/auth.d.ts.map +1 -1
  109. package/dist/server/middleware/auth.js.map +1 -1
  110. package/dist/tools/check-versions.d.ts +100 -0
  111. package/dist/tools/check-versions.d.ts.map +1 -0
  112. package/dist/tools/check-versions.js +328 -0
  113. package/dist/tools/check-versions.js.map +1 -0
  114. package/dist/tools/detect-code-smell.d.ts +9 -0
  115. package/dist/tools/detect-code-smell.d.ts.map +1 -0
  116. package/dist/tools/detect-code-smell.js +231 -0
  117. package/dist/tools/detect-code-smell.js.map +1 -0
  118. package/dist/tools/index.d.ts +471 -0
  119. package/dist/tools/index.d.ts.map +1 -1
  120. package/dist/tools/index.js +178 -0
  121. package/dist/tools/index.js.map +1 -1
  122. package/dist/tools/journey.js +1 -1
  123. package/dist/tools/journey.js.map +1 -1
  124. package/dist/tools/pre-review-code.d.ts +71 -0
  125. package/dist/tools/pre-review-code.d.ts.map +1 -0
  126. package/dist/tools/pre-review-code.js +159 -0
  127. package/dist/tools/pre-review-code.js.map +1 -0
  128. package/dist/tools/preserve-context.d.ts +27 -0
  129. package/dist/tools/preserve-context.d.ts.map +1 -0
  130. package/dist/tools/preserve-context.js +98 -0
  131. package/dist/tools/preserve-context.js.map +1 -0
  132. package/dist/tools/protect-files.d.ts +224 -0
  133. package/dist/tools/protect-files.d.ts.map +1 -0
  134. package/dist/tools/protect-files.js +286 -0
  135. package/dist/tools/protect-files.js.map +1 -0
  136. package/dist/tools/scan-security.d.ts +38 -0
  137. package/dist/tools/scan-security.d.ts.map +1 -0
  138. package/dist/tools/scan-security.js +237 -0
  139. package/dist/tools/scan-security.js.map +1 -0
  140. package/dist/tools/validate_packages.d.ts +8 -0
  141. package/dist/tools/validate_packages.d.ts.map +1 -0
  142. package/dist/tools/validate_packages.js +159 -0
  143. package/dist/tools/validate_packages.js.map +1 -0
  144. package/dist/types/auth.d.ts.map +1 -1
  145. package/dist/types/auth.js +1 -2
  146. package/dist/types/auth.js.map +1 -1
  147. package/dist/types/context.d.ts +46 -0
  148. package/dist/types/context.d.ts.map +1 -0
  149. package/dist/types/context.js +17 -0
  150. package/dist/types/context.js.map +1 -0
  151. package/dist/types/file-protection.d.ts +50 -0
  152. package/dist/types/file-protection.d.ts.map +1 -0
  153. package/dist/types/file-protection.js +9 -0
  154. package/dist/types/file-protection.js.map +1 -0
  155. package/dist/utils/errorHandler.d.ts.map +1 -1
  156. package/dist/utils/errorHandler.js +2 -1
  157. package/dist/utils/errorHandler.js.map +1 -1
  158. package/package.json +23 -2
  159. package/dist/db/migrate.d.ts +0 -4
  160. package/dist/db/migrate.d.ts.map +0 -1
  161. package/dist/db/migrate.js +0 -34
  162. package/dist/db/migrate.js.map +0 -1
  163. package/dist/db/migrations/schema.d.ts +0 -1074
  164. package/dist/db/migrations/schema.d.ts.map +0 -1
  165. package/dist/db/migrations/schema.js +0 -160
  166. package/dist/db/migrations/schema.js.map +0 -1
  167. package/dist/db/schema.d.ts +0 -1576
  168. package/dist/db/schema.d.ts.map +0 -1
  169. package/dist/db/schema.js +0 -204
  170. package/dist/db/schema.js.map +0 -1
  171. package/dist/db/seed.d.ts +0 -4
  172. package/dist/db/seed.d.ts.map +0 -1
  173. package/dist/db/seed.js +0 -57
  174. package/dist/db/seed.js.map +0 -1
  175. package/dist/db/seedOAuth.d.ts +0 -4
  176. package/dist/db/seedOAuth.d.ts.map +0 -1
  177. package/dist/db/seedOAuth.js +0 -76
  178. package/dist/db/seedOAuth.js.map +0 -1
  179. package/dist/governance/config.d.ts +0 -66
  180. package/dist/governance/config.d.ts.map +0 -1
  181. package/dist/governance/config.js +0 -238
  182. package/dist/governance/config.js.map +0 -1
  183. package/dist/governance/detectors/hallucination.d.ts +0 -61
  184. package/dist/governance/detectors/hallucination.d.ts.map +0 -1
  185. package/dist/governance/detectors/hallucination.js +0 -338
  186. package/dist/governance/detectors/hallucination.js.map +0 -1
  187. package/dist/governance/detectors/inconsistency.d.ts +0 -99
  188. package/dist/governance/detectors/inconsistency.d.ts.map +0 -1
  189. package/dist/governance/detectors/inconsistency.js +0 -548
  190. package/dist/governance/detectors/inconsistency.js.map +0 -1
  191. package/dist/governance/detectors/toneDrift.d.ts +0 -63
  192. package/dist/governance/detectors/toneDrift.d.ts.map +0 -1
  193. package/dist/governance/detectors/toneDrift.js +0 -421
  194. package/dist/governance/detectors/toneDrift.js.map +0 -1
  195. package/dist/governance/detectors/unsafeReasoning.d.ts +0 -54
  196. package/dist/governance/detectors/unsafeReasoning.d.ts.map +0 -1
  197. package/dist/governance/detectors/unsafeReasoning.js +0 -473
  198. package/dist/governance/detectors/unsafeReasoning.js.map +0 -1
  199. package/dist/governance/evaluationEngine.d.ts +0 -112
  200. package/dist/governance/evaluationEngine.d.ts.map +0 -1
  201. package/dist/governance/evaluationEngine.js +0 -265
  202. package/dist/governance/evaluationEngine.js.map +0 -1
  203. package/dist/governance/intervention.d.ts +0 -81
  204. package/dist/governance/intervention.d.ts.map +0 -1
  205. package/dist/governance/intervention.js +0 -405
  206. package/dist/governance/intervention.js.map +0 -1
  207. package/dist/server/oauth/anomalyDetection.d.ts +0 -146
  208. package/dist/server/oauth/anomalyDetection.d.ts.map +0 -1
  209. package/dist/server/oauth/anomalyDetection.js +0 -405
  210. package/dist/server/oauth/anomalyDetection.js.map +0 -1
  211. package/dist/server/oauth/authServer.d.ts +0 -61
  212. package/dist/server/oauth/authServer.d.ts.map +0 -1
  213. package/dist/server/oauth/authServer.js +0 -283
  214. package/dist/server/oauth/authServer.js.map +0 -1
  215. package/dist/server/oauth/dpop.d.ts +0 -135
  216. package/dist/server/oauth/dpop.d.ts.map +0 -1
  217. package/dist/server/oauth/dpop.js +0 -338
  218. package/dist/server/oauth/dpop.js.map +0 -1
  219. package/dist/server/oauth/gdpr/consent.d.ts +0 -173
  220. package/dist/server/oauth/gdpr/consent.d.ts.map +0 -1
  221. package/dist/server/oauth/gdpr/consent.js +0 -388
  222. package/dist/server/oauth/gdpr/consent.js.map +0 -1
  223. package/dist/server/oauth/gdpr/dataPortability.d.ts +0 -214
  224. package/dist/server/oauth/gdpr/dataPortability.d.ts.map +0 -1
  225. package/dist/server/oauth/gdpr/dataPortability.js +0 -486
  226. package/dist/server/oauth/gdpr/dataPortability.js.map +0 -1
  227. package/dist/server/oauth/gdpr/index.d.ts +0 -103
  228. package/dist/server/oauth/gdpr/index.d.ts.map +0 -1
  229. package/dist/server/oauth/gdpr/index.js +0 -273
  230. package/dist/server/oauth/gdpr/index.js.map +0 -1
  231. package/dist/server/oauth/gdpr/rightToErasure.d.ts +0 -184
  232. package/dist/server/oauth/gdpr/rightToErasure.d.ts.map +0 -1
  233. package/dist/server/oauth/gdpr/rightToErasure.js +0 -527
  234. package/dist/server/oauth/gdpr/rightToErasure.js.map +0 -1
  235. package/dist/server/oauth/monitoring/securityMonitor.d.ts +0 -218
  236. package/dist/server/oauth/monitoring/securityMonitor.d.ts.map +0 -1
  237. package/dist/server/oauth/monitoring/securityMonitor.js +0 -615
  238. package/dist/server/oauth/monitoring/securityMonitor.js.map +0 -1
  239. package/dist/server/oauth/pkce.d.ts +0 -61
  240. package/dist/server/oauth/pkce.d.ts.map +0 -1
  241. package/dist/server/oauth/pkce.js +0 -157
  242. package/dist/server/oauth/pkce.js.map +0 -1
  243. package/dist/server/oauth/providers/base.d.ts +0 -147
  244. package/dist/server/oauth/providers/base.d.ts.map +0 -1
  245. package/dist/server/oauth/providers/base.js +0 -312
  246. package/dist/server/oauth/providers/base.js.map +0 -1
  247. package/dist/server/oauth/providers/github.d.ts +0 -55
  248. package/dist/server/oauth/providers/github.d.ts.map +0 -1
  249. package/dist/server/oauth/providers/github.js +0 -225
  250. package/dist/server/oauth/providers/github.js.map +0 -1
  251. package/dist/server/oauth/providers/google.d.ts +0 -49
  252. package/dist/server/oauth/providers/google.d.ts.map +0 -1
  253. package/dist/server/oauth/providers/google.js +0 -153
  254. package/dist/server/oauth/providers/google.js.map +0 -1
  255. package/dist/server/oauth/providers/index.d.ts +0 -9
  256. package/dist/server/oauth/providers/index.d.ts.map +0 -1
  257. package/dist/server/oauth/providers/index.js +0 -24
  258. package/dist/server/oauth/providers/index.js.map +0 -1
  259. package/dist/server/oauth/refreshTokenRotation.d.ts +0 -114
  260. package/dist/server/oauth/refreshTokenRotation.d.ts.map +0 -1
  261. package/dist/server/oauth/refreshTokenRotation.js +0 -344
  262. package/dist/server/oauth/refreshTokenRotation.js.map +0 -1
  263. package/dist/server/oauth/security.d.ts +0 -101
  264. package/dist/server/oauth/security.d.ts.map +0 -1
  265. package/dist/server/oauth/security.js +0 -268
  266. package/dist/server/oauth/security.js.map +0 -1
  267. package/dist/server/oauth/tokenEncryption.d.ts +0 -80
  268. package/dist/server/oauth/tokenEncryption.d.ts.map +0 -1
  269. package/dist/server/oauth/tokenEncryption.js +0 -218
  270. package/dist/server/oauth/tokenEncryption.js.map +0 -1
  271. package/dist/tools/sendMessage-complex-backup.d.ts +0 -6
  272. package/dist/tools/sendMessage-complex-backup.d.ts.map +0 -1
  273. package/dist/tools/sendMessage-complex-backup.js +0 -545
  274. package/dist/tools/sendMessage-complex-backup.js.map +0 -1
  275. package/dist/tools/sendMessage-revised.d.ts +0 -11
  276. package/dist/tools/sendMessage-revised.d.ts.map +0 -1
  277. package/dist/tools/sendMessage-revised.js +0 -429
  278. package/dist/tools/sendMessage-revised.js.map +0 -1
  279. package/dist/tools/sendMessage-truly-simple.d.ts +0 -8
  280. package/dist/tools/sendMessage-truly-simple.d.ts.map +0 -1
  281. package/dist/tools/sendMessage-truly-simple.js +0 -299
  282. package/dist/tools/sendMessage-truly-simple.js.map +0 -1
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Protect Files Tool - MCP tool handler for file protection
3
+ * Intercepts and validates destructive file operations
4
+ * Prevents accidental deletion, overwriting, and data loss
5
+ */
6
+ export declare function protectFiles(args: any): Promise<{
7
+ error: string;
8
+ details?: any;
9
+ } | {
10
+ success: boolean;
11
+ operation_id: string;
12
+ allowed: boolean;
13
+ message: string;
14
+ violations: import("../types/file-protection.js").ProtectionViolation[];
15
+ recommendation: string;
16
+ action_required: string;
17
+ requires_approval?: undefined;
18
+ severity?: undefined;
19
+ suggested_backup?: undefined;
20
+ reason?: undefined;
21
+ status?: undefined;
22
+ operation_details?: undefined;
23
+ next_steps?: undefined;
24
+ safety_measures?: undefined;
25
+ error?: undefined;
26
+ details?: undefined;
27
+ } | {
28
+ success: boolean;
29
+ operation_id: string;
30
+ allowed: boolean;
31
+ requires_approval: boolean;
32
+ message: string;
33
+ violations: import("../types/file-protection.js").ProtectionViolation[];
34
+ severity: "medium" | "high" | "low" | "critical";
35
+ recommendation: string;
36
+ suggested_backup: string;
37
+ action_required?: undefined;
38
+ reason?: undefined;
39
+ status?: undefined;
40
+ operation_details?: undefined;
41
+ next_steps?: undefined;
42
+ safety_measures?: undefined;
43
+ error?: undefined;
44
+ details?: undefined;
45
+ } | {
46
+ success: boolean;
47
+ operation_id: string;
48
+ message: string;
49
+ reason: string;
50
+ allowed?: undefined;
51
+ violations?: undefined;
52
+ recommendation?: undefined;
53
+ action_required?: undefined;
54
+ requires_approval?: undefined;
55
+ severity?: undefined;
56
+ suggested_backup?: undefined;
57
+ status?: undefined;
58
+ operation_details?: undefined;
59
+ next_steps?: undefined;
60
+ safety_measures?: undefined;
61
+ error?: undefined;
62
+ details?: undefined;
63
+ } | {
64
+ success: boolean;
65
+ operation_id: string;
66
+ allowed: boolean;
67
+ status: string;
68
+ message: string;
69
+ operation_details: {
70
+ type: "delete" | "overwrite" | "move";
71
+ path: string;
72
+ target_path: string | null;
73
+ backup_path: string | null;
74
+ };
75
+ next_steps: string[];
76
+ safety_measures: {
77
+ backup_created: boolean;
78
+ backup_location: string;
79
+ rollback_available: boolean;
80
+ operation_logged: boolean;
81
+ };
82
+ violations?: undefined;
83
+ recommendation?: undefined;
84
+ action_required?: undefined;
85
+ requires_approval?: undefined;
86
+ severity?: undefined;
87
+ suggested_backup?: undefined;
88
+ reason?: undefined;
89
+ error?: undefined;
90
+ details?: undefined;
91
+ } | {
92
+ success: boolean;
93
+ error: string;
94
+ details: any;
95
+ operation_id?: undefined;
96
+ allowed?: undefined;
97
+ message?: undefined;
98
+ violations?: undefined;
99
+ recommendation?: undefined;
100
+ action_required?: undefined;
101
+ requires_approval?: undefined;
102
+ severity?: undefined;
103
+ suggested_backup?: undefined;
104
+ reason?: undefined;
105
+ status?: undefined;
106
+ operation_details?: undefined;
107
+ next_steps?: undefined;
108
+ safety_measures?: undefined;
109
+ }>;
110
+ /**
111
+ * Get file protection status
112
+ */
113
+ export declare function getProtectionStatus(_args: any): Promise<{
114
+ error: string;
115
+ details?: any;
116
+ } | {
117
+ success: boolean;
118
+ protection_status: {
119
+ code_freeze_mode: boolean;
120
+ protected_patterns: string[];
121
+ forbidden_paths: string[];
122
+ critical_system_files: string[];
123
+ };
124
+ backup_stats: {
125
+ total_backups: number;
126
+ total_size_mb: number;
127
+ oldest_backup: Date | undefined;
128
+ newest_backup: Date | undefined;
129
+ disk_usage_percent: number;
130
+ };
131
+ protection_report: {
132
+ code_freeze_enabled: boolean;
133
+ operations_logged: number;
134
+ protected_items_count: number;
135
+ recent_violations_count: number;
136
+ };
137
+ }>;
138
+ /**
139
+ * Get operation history
140
+ */
141
+ export declare function getOperationHistory(args: any): Promise<{
142
+ error: string;
143
+ details?: any;
144
+ } | {
145
+ success: boolean;
146
+ operations_count: number;
147
+ operations: {
148
+ id: string;
149
+ operation: "delete" | "overwrite" | "move";
150
+ path: string;
151
+ target_path: string | null;
152
+ timestamp: Date;
153
+ status: "approved" | "pending" | "denied" | "executed" | "rolled_back";
154
+ force: boolean;
155
+ backup_path: string | null;
156
+ error: string | null;
157
+ }[];
158
+ }>;
159
+ /**
160
+ * List available backups
161
+ */
162
+ export declare function listBackups(_args: any): Promise<{
163
+ error: string;
164
+ details?: any;
165
+ } | {
166
+ success: boolean;
167
+ backup_count: number;
168
+ backups: {
169
+ id: string;
170
+ original_path: string;
171
+ backup_path: string;
172
+ timestamp: Date;
173
+ file_size_kb: number;
174
+ operation: "delete" | "overwrite" | "move";
175
+ reason: string | null;
176
+ }[];
177
+ }>;
178
+ /**
179
+ * Rollback a file from backup
180
+ */
181
+ export declare function rollbackFile(args: any): Promise<{
182
+ error: string;
183
+ details?: any;
184
+ } | {
185
+ success: boolean;
186
+ message: string;
187
+ backup_id: any;
188
+ restored_path?: undefined;
189
+ backup_path?: undefined;
190
+ timestamp?: undefined;
191
+ } | {
192
+ success: boolean;
193
+ message: string;
194
+ restored_path: string;
195
+ backup_id: any;
196
+ backup_path: string;
197
+ timestamp: Date;
198
+ }>;
199
+ /**
200
+ * Enable code freeze mode (all operations require approval)
201
+ */
202
+ export declare function enableCodeFreeze(_args: any): Promise<{
203
+ error: string;
204
+ details?: any;
205
+ } | {
206
+ success: boolean;
207
+ message: string;
208
+ status: string;
209
+ effect: string;
210
+ warning: string;
211
+ }>;
212
+ /**
213
+ * Disable code freeze mode
214
+ */
215
+ export declare function disableCodeFreeze(_args: any): Promise<{
216
+ error: string;
217
+ details?: any;
218
+ } | {
219
+ success: boolean;
220
+ message: string;
221
+ status: string;
222
+ effect: string;
223
+ }>;
224
+ //# sourceMappingURL=protect-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-files.d.ts","sourceRoot":"","sources":["../../src/tools/protect-files.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AAEH,wBAAsB,YAAY,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+I3C;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;;;;;GAgCnD;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;GAwBlD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;GAqB3C;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;;;;GA8B3C;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,GAAG;;;;;;;;;GAkBhD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,GAAG;;;;;;;;GAgBjD"}
@@ -0,0 +1,286 @@
1
+ import { ProtectFilesSchema } from '../types/file-protection.js';
2
+ import { fileGuardian } from '../developer/guards/file-guardian.js';
3
+ import { autoBackup } from '../developer/backup/auto-backup.js';
4
+ import { handleError, AuthorizationError, ValidationError } from '../utils/errors.js';
5
+ import { logger } from '../utils/logger.js';
6
+ import { nanoid } from 'nanoid';
7
+ /**
8
+ * Protect Files Tool - MCP tool handler for file protection
9
+ * Intercepts and validates destructive file operations
10
+ * Prevents accidental deletion, overwriting, and data loss
11
+ */
12
+ export async function protectFiles(args) {
13
+ try {
14
+ // Validate input
15
+ const input = ProtectFilesSchema.parse(args);
16
+ logger.info(`File protection check: ${input.operation} on ${input.path}${input.target_path ? ` -> ${input.target_path}` : ''}`);
17
+ // Run validation
18
+ const validation = fileGuardian.validateOperation(input.operation, input.path, input.target_path, input.force || false);
19
+ // Create operation record
20
+ const operation = {
21
+ id: nanoid(),
22
+ operation: input.operation,
23
+ path: input.path,
24
+ targetPath: input.target_path,
25
+ timestamp: new Date(),
26
+ status: 'pending',
27
+ reason: input.reason,
28
+ force: input.force || false,
29
+ };
30
+ // Log the operation
31
+ fileGuardian.logOperation(operation);
32
+ // If operation is not allowed, deny it
33
+ if (!validation.allowed) {
34
+ operation.status = 'denied';
35
+ fileGuardian.logOperation(operation);
36
+ const violationDetails = validation.violations
37
+ .map(v => `[${v.severity.toUpperCase()}] ${v.message}`)
38
+ .join('\n');
39
+ logger.warn(`File operation DENIED - ${input.operation} on ${input.path}\nViolations:\n${violationDetails}`);
40
+ return {
41
+ success: false,
42
+ operation_id: operation.id,
43
+ allowed: false,
44
+ message: `File operation BLOCKED: ${input.operation} operation not permitted`,
45
+ violations: validation.violations,
46
+ recommendation: `This ${input.operation} operation was blocked for safety. Violations detected: ${validation.violations.length}`,
47
+ action_required: 'Human approval needed for this operation',
48
+ };
49
+ }
50
+ // If operation requires approval (violations exist but not critical), request confirmation
51
+ if (validation.requiresApproval && validation.severity !== 'none') {
52
+ operation.status = 'pending';
53
+ const violationDetails = validation.violations
54
+ .map(v => `[${v.severity.toUpperCase()}] ${v.message}`)
55
+ .join('\n');
56
+ logger.warn(`File operation requires approval - ${input.operation} on ${input.path}\nViolations:\n${violationDetails}`);
57
+ return {
58
+ success: false,
59
+ operation_id: operation.id,
60
+ allowed: false,
61
+ requires_approval: true,
62
+ message: `File operation requires explicit approval before proceeding`,
63
+ violations: validation.violations,
64
+ severity: validation.severity,
65
+ recommendation: 'Please review violations and either:\n1. Obtain human approval, or\n2. Use force flag (if appropriate)',
66
+ suggested_backup: `Consider creating a backup before proceeding with ${input.operation}`,
67
+ };
68
+ }
69
+ // Operation is allowed - if it involves modification, create backup first
70
+ if (input.operation === 'delete' || input.operation === 'overwrite') {
71
+ const backupResult = await autoBackup.createBackup(input.path, input.operation, input.reason);
72
+ if (backupResult.success) {
73
+ operation.backupPath = backupResult.backupPath;
74
+ logger.info(`Backup created before ${input.operation}: ${backupResult.backupPath}`);
75
+ }
76
+ else {
77
+ logger.warn(`Failed to create backup: ${backupResult.error}`);
78
+ return {
79
+ success: false,
80
+ operation_id: operation.id,
81
+ message: `Cannot proceed - backup creation failed: ${backupResult.error}`,
82
+ reason: 'Safety measure: backups required before destructive operations',
83
+ };
84
+ }
85
+ }
86
+ // Mark operation as approved and ready
87
+ operation.status = 'approved';
88
+ fileGuardian.logOperation(operation);
89
+ // Return approval response with execution details
90
+ return {
91
+ success: true,
92
+ operation_id: operation.id,
93
+ allowed: true,
94
+ status: 'approved',
95
+ message: `File operation ${input.operation} has been validated and approved`,
96
+ operation_details: {
97
+ type: input.operation,
98
+ path: input.path,
99
+ target_path: input.target_path || null,
100
+ backup_path: operation.backupPath || null,
101
+ },
102
+ next_steps: [
103
+ `1. Execute the approved ${input.operation} operation`,
104
+ operation.backupPath ? `2. Backup is available at: ${operation.backupPath}` : '',
105
+ operation.backupPath ? `3. If needed, rollback can restore from this backup` : '',
106
+ ].filter(Boolean),
107
+ safety_measures: {
108
+ backup_created: !!operation.backupPath,
109
+ backup_location: operation.backupPath || 'none',
110
+ rollback_available: !!operation.backupPath,
111
+ operation_logged: true,
112
+ },
113
+ };
114
+ }
115
+ catch (error) {
116
+ if (error instanceof ValidationError || error instanceof AuthorizationError) {
117
+ return {
118
+ success: false,
119
+ error: error.message,
120
+ details: error.details,
121
+ };
122
+ }
123
+ logger.error('Error in protect_files tool:', error);
124
+ return handleError(error);
125
+ }
126
+ }
127
+ /**
128
+ * Get file protection status
129
+ */
130
+ export async function getProtectionStatus(_args) {
131
+ try {
132
+ const config = fileGuardian.getProtectionConfig();
133
+ const stats = await autoBackup.getBackupStats();
134
+ const report = fileGuardian.getProtectionReport();
135
+ return {
136
+ success: true,
137
+ protection_status: {
138
+ code_freeze_mode: config.codeFreezeMode,
139
+ protected_patterns: config.protectedPatterns,
140
+ forbidden_paths: config.forbiddenPaths,
141
+ critical_system_files: config.criticalSystemFiles,
142
+ },
143
+ backup_stats: {
144
+ total_backups: stats.totalBackups,
145
+ total_size_mb: Math.round(stats.totalSize / 1024 / 1024),
146
+ oldest_backup: stats.oldestBackup,
147
+ newest_backup: stats.newestBackup,
148
+ disk_usage_percent: Math.round(stats.diskUsagePercent),
149
+ },
150
+ protection_report: {
151
+ code_freeze_enabled: report.codeFreezeEnabled,
152
+ operations_logged: report.totalOperationsLogged,
153
+ protected_items_count: report.protectedItemsCount,
154
+ recent_violations_count: report.recentViolations.length,
155
+ },
156
+ };
157
+ }
158
+ catch (error) {
159
+ logger.error('Error getting protection status:', error);
160
+ return handleError(error);
161
+ }
162
+ }
163
+ /**
164
+ * Get operation history
165
+ */
166
+ export async function getOperationHistory(args) {
167
+ try {
168
+ const limit = (args.limit || 50);
169
+ const history = fileGuardian.getOperationHistory(limit);
170
+ return {
171
+ success: true,
172
+ operations_count: history.length,
173
+ operations: history.map(op => ({
174
+ id: op.id,
175
+ operation: op.operation,
176
+ path: op.path,
177
+ target_path: op.targetPath || null,
178
+ timestamp: op.timestamp,
179
+ status: op.status,
180
+ force: op.force,
181
+ backup_path: op.backupPath || null,
182
+ error: op.error || null,
183
+ })),
184
+ };
185
+ }
186
+ catch (error) {
187
+ logger.error('Error getting operation history:', error);
188
+ return handleError(error);
189
+ }
190
+ }
191
+ /**
192
+ * List available backups
193
+ */
194
+ export async function listBackups(_args) {
195
+ try {
196
+ const backups = await autoBackup.listBackups();
197
+ return {
198
+ success: true,
199
+ backup_count: backups.length,
200
+ backups: backups.map(backup => ({
201
+ id: backup.originalPath,
202
+ original_path: backup.originalPath,
203
+ backup_path: backup.backupPath,
204
+ timestamp: backup.timestamp,
205
+ file_size_kb: Math.round(backup.fileSize / 1024),
206
+ operation: backup.operation,
207
+ reason: backup.reason || null,
208
+ })),
209
+ };
210
+ }
211
+ catch (error) {
212
+ logger.error('Error listing backups:', error);
213
+ return handleError(error);
214
+ }
215
+ }
216
+ /**
217
+ * Rollback a file from backup
218
+ */
219
+ export async function rollbackFile(args) {
220
+ try {
221
+ if (!args.backup_id) {
222
+ throw new ValidationError('backup_id is required for rollback operation');
223
+ }
224
+ const result = await autoBackup.rollback(args.backup_id);
225
+ if (!result.success) {
226
+ return {
227
+ success: false,
228
+ message: result.message,
229
+ backup_id: args.backup_id,
230
+ };
231
+ }
232
+ logger.info(`File successfully rolled back: ${result.restoredPath}`);
233
+ return {
234
+ success: true,
235
+ message: result.message,
236
+ restored_path: result.restoredPath,
237
+ backup_id: args.backup_id,
238
+ backup_path: result.backupPath,
239
+ timestamp: result.timestamp,
240
+ };
241
+ }
242
+ catch (error) {
243
+ logger.error('Error rolling back file:', error);
244
+ return handleError(error);
245
+ }
246
+ }
247
+ /**
248
+ * Enable code freeze mode (all operations require approval)
249
+ */
250
+ export async function enableCodeFreeze(_args) {
251
+ try {
252
+ fileGuardian.enableCodeFreezeMode();
253
+ logger.warn('CODE FREEZE MODE ENABLED - All file operations require explicit approval');
254
+ return {
255
+ success: true,
256
+ message: 'Code freeze mode is now ENABLED',
257
+ status: 'active',
258
+ effect: 'All file operations (delete, overwrite, move) now require explicit approval',
259
+ warning: 'Critical mode - use only when sensitive to file modifications. Normal operations will be blocked.',
260
+ };
261
+ }
262
+ catch (error) {
263
+ logger.error('Error enabling code freeze mode:', error);
264
+ return handleError(error);
265
+ }
266
+ }
267
+ /**
268
+ * Disable code freeze mode
269
+ */
270
+ export async function disableCodeFreeze(_args) {
271
+ try {
272
+ fileGuardian.disableCodeFreezeMode();
273
+ logger.info('Code freeze mode disabled');
274
+ return {
275
+ success: true,
276
+ message: 'Code freeze mode is now DISABLED',
277
+ status: 'inactive',
278
+ effect: 'File operations resume normal protection rules',
279
+ };
280
+ }
281
+ catch (error) {
282
+ logger.error('Error disabling code freeze mode:', error);
283
+ return handleError(error);
284
+ }
285
+ }
286
+ //# sourceMappingURL=protect-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect-files.js","sourceRoot":"","sources":["../../src/tools/protect-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * MCP Tool: scan_security
3
+ * Comprehensive security vulnerability scanner for AI-generated code
4
+ * Detects SQL injection, XSS, hardcoded secrets, and other security issues
5
+ */
6
+ import { Tool } from '@modelcontextprotocol/sdk/types.js';
7
+ interface SecurityVulnerability {
8
+ type: string;
9
+ severity: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW';
10
+ line: number;
11
+ column: number;
12
+ code: string;
13
+ issue: string;
14
+ cwe: string;
15
+ fix: string;
16
+ scanner: string;
17
+ secretType?: string;
18
+ secretPreview?: string;
19
+ }
20
+ interface SecurityScanResult {
21
+ summary: {
22
+ totalVulnerabilities: number;
23
+ critical: number;
24
+ high: number;
25
+ medium: number;
26
+ low: number;
27
+ language: string;
28
+ scanType: string;
29
+ };
30
+ vulnerabilities: SecurityVulnerability[];
31
+ riskLevel: 'CRITICAL' | 'HIGH' | 'MEDIUM' | 'LOW' | 'SAFE';
32
+ recommendations: string[];
33
+ developerNotes: string;
34
+ }
35
+ export declare const scanSecurityTool: Tool;
36
+ export declare function handleScanSecurity(input: unknown): Promise<SecurityScanResult>;
37
+ export {};
38
+ //# sourceMappingURL=scan-security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-security.d.ts","sourceRoot":"","sources":["../../src/tools/scan-security.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAa1D,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE;QACP,oBAAoB,EAAE,MAAM,CAAC;QAC7B,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,eAAe,EAAE,qBAAqB,EAAE,CAAC;IACzC,SAAS,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC3D,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,gBAAgB,EAAE,IAyB9B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAiGpF"}