pumuki 6.3.371 → 6.3.373
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/integrations/config/skillsRuleClassification.ts +25 -0
- package/package.json +1 -1
- package/scripts/framework-menu-system-notifications-legacy-skill-cause.ts +4 -4
- package/scripts/framework-menu-system-notifications-macos-dialog-payload.ts +4 -3
- package/scripts/framework-menu-system-notifications-payloads-blocked.ts +4 -3
- package/skills.lock.json +1 -1
|
@@ -240,6 +240,17 @@ const isNonCodeRule = (rule: SkillsCompiledRule): boolean => {
|
|
|
240
240
|
return NON_CODE_RULE_PATTERNS.some((pattern) => pattern.test(haystack));
|
|
241
241
|
};
|
|
242
242
|
|
|
243
|
+
const isMetaInstructionRule = (rule: SkillsCompiledRule): boolean => {
|
|
244
|
+
const normalizedId = normalizeText(rule.id);
|
|
245
|
+
return (
|
|
246
|
+
normalizedId.includes('.use-grep-for-') ||
|
|
247
|
+
normalizedId.includes('.use-read-on-') ||
|
|
248
|
+
normalizedId.includes('.use-references-') ||
|
|
249
|
+
normalizedId.includes('.references-') ||
|
|
250
|
+
normalizedId.includes('.then-use-references-')
|
|
251
|
+
);
|
|
252
|
+
};
|
|
253
|
+
|
|
243
254
|
const hasDirectCodeDetectorCandidate = (rule: SkillsCompiledRule): boolean => {
|
|
244
255
|
const haystack = normalizeText(`${rule.id} ${rule.description} ${rule.sourceSkill}`);
|
|
245
256
|
return CODE_RULE_WITH_DIRECT_DETECTOR_PATTERNS.some((pattern) => pattern.test(haystack));
|
|
@@ -249,6 +260,20 @@ const classifyRule = (rule: SkillsCompiledRule): ClassifiedSkillsRule => {
|
|
|
249
260
|
const evaluationMode = rule.evaluationMode ?? 'AUTO';
|
|
250
261
|
const astNodeIds = resolveMappedHeuristicRuleIdsForCompiledRule(rule);
|
|
251
262
|
|
|
263
|
+
if (isMetaInstructionRule(rule)) {
|
|
264
|
+
return {
|
|
265
|
+
ruleId: rule.id,
|
|
266
|
+
platform: rule.platform,
|
|
267
|
+
sourceSkill: rule.sourceSkill,
|
|
268
|
+
sourcePath: rule.sourcePath,
|
|
269
|
+
evaluationMode,
|
|
270
|
+
severity: rule.severity,
|
|
271
|
+
status: 'NO_ES_REGLA_DE_CODIGO',
|
|
272
|
+
reason: 'Instruccion meta de uso de tooling o referencias; no debe emitirse como finding runtime.',
|
|
273
|
+
astNodeIds,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
|
|
252
277
|
if (astNodeIds.length > 0) {
|
|
253
278
|
return {
|
|
254
279
|
ruleId: rule.id,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pumuki",
|
|
3
|
-
"version": "6.3.
|
|
3
|
+
"version": "6.3.373",
|
|
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": {
|
|
@@ -13,10 +13,10 @@ type LegacySkillCause = {
|
|
|
13
13
|
const FIELD_NAMES = ['severity', 'file', 'line', 'lines', 'message', 'remediation'] as const;
|
|
14
14
|
|
|
15
15
|
const RULE_LABELS: Readonly<Record<string, string>> = {
|
|
16
|
-
'skills.ios.prefer-swift-testing': '
|
|
17
|
-
'skills.ios.no-wait-for-expectations': '
|
|
18
|
-
'skills.ios.no-xctassert': 'Swift Testing',
|
|
19
|
-
'skills.ios.no-xctunwrap': 'Swift Testing',
|
|
16
|
+
'skills.ios.prefer-swift-testing': 'Test XCTest legacy',
|
|
17
|
+
'skills.ios.no-wait-for-expectations': 'waitForExpectations legacy',
|
|
18
|
+
'skills.ios.no-xctassert': 'Assertions XCTest en Swift Testing',
|
|
19
|
+
'skills.ios.no-xctunwrap': 'XCTUnwrap en Swift Testing',
|
|
20
20
|
'skills.backend.no-empty-catch': 'Backend: no empty catch',
|
|
21
21
|
};
|
|
22
22
|
|
|
@@ -156,9 +156,10 @@ const formatLocation = (cause: NonNullable<Extract<PumukiCriticalNotificationEve
|
|
|
156
156
|
const humanizeRuleId = (ruleId: string): string => {
|
|
157
157
|
const knownRules: Record<string, string> = {
|
|
158
158
|
'no-empty-catch': 'catch vacío',
|
|
159
|
-
'prefer-swift-testing': '
|
|
160
|
-
'no-xctassert': 'XCTest
|
|
161
|
-
'no-
|
|
159
|
+
'prefer-swift-testing': 'Test XCTest legacy',
|
|
160
|
+
'no-xctassert': 'Assertions XCTest en Swift Testing',
|
|
161
|
+
'no-xctunwrap': 'XCTUnwrap en Swift Testing',
|
|
162
|
+
'no-wait-for-expectations': 'waitForExpectations legacy',
|
|
162
163
|
'ios-test-quality': 'calidad de tests iOS',
|
|
163
164
|
'action-handlers-should-reference-methods-not-contain-inline-logic': 'handlers SwiftUI sin lógica inline',
|
|
164
165
|
'ensure-constant-number-of-views-per-foreach-element': 'estructura estable en ForEach',
|
|
@@ -140,9 +140,10 @@ const formatCauseRule = (cause: BlockedCause): string => cause.ruleId ?? cause.c
|
|
|
140
140
|
|
|
141
141
|
const humanizeRuleId = (ruleId: string): string => {
|
|
142
142
|
const knownRules: Record<string, string> = {
|
|
143
|
-
'prefer-swift-testing': '
|
|
144
|
-
'no-xctassert': 'XCTest
|
|
145
|
-
'no-
|
|
143
|
+
'prefer-swift-testing': 'Test XCTest legacy',
|
|
144
|
+
'no-xctassert': 'Assertions XCTest en Swift Testing',
|
|
145
|
+
'no-xctunwrap': 'XCTUnwrap en Swift Testing',
|
|
146
|
+
'no-wait-for-expectations': 'waitForExpectations legacy',
|
|
146
147
|
'ios-test-quality': 'calidad de tests iOS',
|
|
147
148
|
'dynamic-type-font-scaling-automatico': 'Dynamic Type',
|
|
148
149
|
'dynamic-type-font-scaling-automa-tico': 'Dynamic Type',
|