pumuki-ast-hooks 5.5.58 → 5.5.60
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.
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki-ast-hooks",
|
|
3
|
-
"version": "5.5.
|
|
3
|
+
"version": "5.5.60",
|
|
4
4
|
"description": "Enterprise-grade AST Intelligence System with multi-platform support (iOS, Android, Backend, Frontend) and Feature-First + DDD + Clean Architecture enforcement. Includes dynamic violations API for intelligent querying.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|
|
@@ -134,4 +134,4 @@
|
|
|
134
134
|
"./skills": "./skills/skill-rules.json",
|
|
135
135
|
"./hooks": "./hooks/index.js"
|
|
136
136
|
}
|
|
137
|
-
}
|
|
137
|
+
}
|
|
@@ -3,7 +3,6 @@ const path = require('path');
|
|
|
3
3
|
const AuditLogger = require('../logging/AuditLogger');
|
|
4
4
|
const McpServerConfigBuilder = require('./mcp/McpServerConfigBuilder');
|
|
5
5
|
const McpProjectConfigWriter = require('./mcp/McpProjectConfigWriter');
|
|
6
|
-
const McpGlobalConfigCleaner = require('./mcp/McpGlobalConfigCleaner');
|
|
7
6
|
|
|
8
7
|
const COLORS = {
|
|
9
8
|
reset: '\x1b[0m',
|
|
@@ -19,7 +18,6 @@ class McpConfigurator {
|
|
|
19
18
|
this.logger = logger;
|
|
20
19
|
this.serverConfigBuilder = new McpServerConfigBuilder(targetRoot, hookSystemRoot, logger);
|
|
21
20
|
this.projectWriter = new McpProjectConfigWriter(targetRoot, logger, this.logSuccess.bind(this), this.logWarning.bind(this), this.logInfo.bind(this));
|
|
22
|
-
this.globalCleaner = new McpGlobalConfigCleaner(targetRoot, logger, this.logInfo.bind(this));
|
|
23
21
|
}
|
|
24
22
|
|
|
25
23
|
configure() {
|
|
@@ -27,7 +25,6 @@ class McpConfigurator {
|
|
|
27
25
|
|
|
28
26
|
const { serverId, mcpConfig } = this.serverConfigBuilder.build();
|
|
29
27
|
this.projectWriter.configureProjectScoped(mcpConfig, serverId);
|
|
30
|
-
this.globalCleaner.cleanupGlobalConfig(serverId);
|
|
31
28
|
}
|
|
32
29
|
|
|
33
30
|
detectIDEs() {
|
|
@@ -281,6 +281,11 @@ function runCommonIntelligence(project, findings) {
|
|
|
281
281
|
|
|
282
282
|
const full = sf.getFullText();
|
|
283
283
|
const isSpecFile = /\.(spec|test)\.(ts|tsx|js|jsx)$/.test(filePath);
|
|
284
|
+
const isSwiftFile = /\.swift$/i.test(filePath);
|
|
285
|
+
|
|
286
|
+
// Skip secret detection for Swift struct/class properties - they're not hardcoded secrets
|
|
287
|
+
if (isSwiftFile) return;
|
|
288
|
+
|
|
284
289
|
const secretPattern = /(PASSWORD|TOKEN|SECRET|API_KEY)\s*[:=]\s*['"]([^'"]{8,})['"]/gi;
|
|
285
290
|
const matches = Array.from(full.matchAll(secretPattern));
|
|
286
291
|
|
package/scripts/hooks-system/infrastructure/ast/ios/detectors/ios-ast-intelligent-strategies.js
CHANGED
|
@@ -153,7 +153,7 @@ function analyzeClassAST(analyzer, node, filePath) {
|
|
|
153
153
|
return true;
|
|
154
154
|
});
|
|
155
155
|
|
|
156
|
-
if (name && !/Spec$|Test$|Mock/.test(name)) {
|
|
156
|
+
if (name && !/Spec$|Test$|Mock/.test(name) && !name.includes('Coordinator')) {
|
|
157
157
|
const complexity = calculateComplexityAST(substructure);
|
|
158
158
|
analyzer.godClassCandidates.push({
|
|
159
159
|
name,
|
|
@@ -233,8 +233,15 @@ function analyzeClassAST(analyzer, node, filePath) {
|
|
|
233
233
|
}
|
|
234
234
|
|
|
235
235
|
// Skip ISP validation for test files - spies/mocks are allowed to have unused properties
|
|
236
|
+
<<<<<<< HEAD
|
|
237
|
+
// Also skip ObservableObject classes - their @Published properties are inherently observed externally
|
|
238
|
+
const isTestFile = /Tests?\/|Spec|Mock|Spy|Stub|Fake|Dummy/.test(filePath);
|
|
239
|
+
const isObservableObject = inheritedTypes.some((t) => t['key.name'] === 'ObservableObject');
|
|
240
|
+
if (!isTestFile && !isObservableObject) {
|
|
241
|
+
=======
|
|
236
242
|
const isTestFile = /Tests?\/|Spec|Mock|Spy|Stub|Fake|Dummy/.test(filePath);
|
|
237
243
|
if (!isTestFile) {
|
|
244
|
+
>>>>>>> origin/main
|
|
238
245
|
const unusedProps = findUnusedPropertiesAST(analyzer, properties, methods);
|
|
239
246
|
for (const prop of unusedProps) {
|
|
240
247
|
analyzer.pushFinding(
|