code-auditor-mcp 3.4.17 → 3.5.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +94 -0
- package/README.md +5 -5
- package/dist/analyzers/applicability.d.ts +13 -0
- package/dist/analyzers/applicability.d.ts.map +1 -1
- package/dist/analyzers/applicability.js +37 -0
- package/dist/analyzers/applicability.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +23 -2
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +52 -9
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +228 -55
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +19 -12
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +78 -111
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +0 -6
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +85 -73
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +5 -5
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +1 -0
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +7 -9
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +88 -124
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +120 -21
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +21 -0
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +61 -12
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +60 -24
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +5 -2
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +173 -56
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +2 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +23 -12
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +11 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +60 -22
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +2 -3
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +258 -87
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js +7 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.js +7 -11
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
- package/dist/applyDataDirEnv.js +1 -1
- package/dist/applyDataDirEnv.js.map +1 -1
- package/dist/auditRouter.d.ts +41 -0
- package/dist/auditRouter.d.ts.map +1 -0
- package/dist/auditRouter.js +185 -0
- package/dist/auditRouter.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +97 -58
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +247 -23
- package/dist/cli.js.map +1 -1
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +36 -2
- package/dist/codeIndexDB.js.map +1 -1
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +7 -2
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configLoader.d.ts +9 -0
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +30 -2
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +10 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/dataPaths.d.ts +8 -1
- package/dist/dataPaths.d.ts.map +1 -1
- package/dist/dataPaths.js +57 -5
- package/dist/dataPaths.js.map +1 -1
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +1 -17
- package/dist/functionScanner.js.map +1 -1
- package/dist/grammars/tree-sitter-scss.wasm +0 -0
- package/dist/invariants/ruleEngine.d.ts +8 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +35 -16
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +10 -11
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +135 -101
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +28 -1
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +160 -49
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts +2 -0
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +15 -22
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/go/analyzer +0 -0
- package/dist/languages/go/analyzer-src/analyzer.go +510 -0
- package/dist/languages/go/analyzer-src/go.mod +3 -0
- package/dist/languages/go/analyzer-src/indexer.go +268 -0
- package/dist/languages/go/analyzer-src/parser.go +461 -0
- package/dist/languages/go/analyzer-src/solid.go +395 -0
- package/dist/languages/go/analyzer-src/testconventions.go +25 -0
- package/dist/languages/go/analyzer-src/types.go +148 -0
- package/dist/languages/go/go.mod +7 -0
- package/dist/languages/go/main.go +203 -0
- package/dist/languages/testConventions.d.ts +35 -0
- package/dist/languages/testConventions.d.ts.map +1 -0
- package/dist/languages/testConventions.js +51 -0
- package/dist/languages/testConventions.js.map +1 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +3 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +25 -18
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +1 -1
- package/dist/mcp-tools/workflowGuide.js +3 -3
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts +0 -3
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js +24 -128
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcp.js +18 -12
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +13 -0
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpAutoIndex.js +1 -1
- package/dist/mcpAutoIndex.js.map +1 -1
- package/dist/nextFile.d.ts +21 -0
- package/dist/nextFile.d.ts.map +1 -0
- package/dist/nextFile.js +51 -0
- package/dist/nextFile.js.map +1 -0
- package/dist/nextFileIncremental.d.ts +141 -0
- package/dist/nextFileIncremental.d.ts.map +1 -0
- package/dist/nextFileIncremental.js +314 -0
- package/dist/nextFileIncremental.js.map +1 -0
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +22 -0
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +17 -0
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +800 -44
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +11 -30
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts +7 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +44 -61
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/types/crossLanguage.d.ts +1 -0
- package/dist/types/crossLanguage.d.ts.map +1 -1
- package/dist/types.d.ts +27 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +11 -2
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +23 -5
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +59 -44
- package/dist/utils/reactDetection.js.map +1 -1
- package/package.json +31 -27
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/README.md +6 -6
- package/plugin/hooks/hooks.json +4 -0
- package/plugin/scripts/hook-audit.sh +0 -0
- package/plugin/scripts/hook-self-audit.sh +107 -0
- package/plugin/skills/code-auditor/SKILL-RULE-KINDS.md +55 -7
- package/plugin/skills/code-auditor/SKILL.md +22 -23
|
@@ -115,42 +115,56 @@ export function returnsJSX(node) {
|
|
|
115
115
|
export function isClassComponent(node) {
|
|
116
116
|
if (node.type !== 'class_declaration')
|
|
117
117
|
return false;
|
|
118
|
-
// Check heritage clauses for extends React.Component / PureComponent
|
|
118
|
+
// Check heritage clauses for extends React.Component / PureComponent.
|
|
119
|
+
// tree-sitter-typescript nests heritage as `class_heritage` → `extends_clause`;
|
|
120
|
+
// older grammars used a flat `heritage_clause` — handle both. `implements_clause`
|
|
121
|
+
// must NOT count as a React base (implementing an interface is not extending).
|
|
119
122
|
for (const child of node.children ?? []) {
|
|
120
|
-
if (child.type !== 'heritage_clause')
|
|
123
|
+
if (child.type !== 'class_heritage' && child.type !== 'heritage_clause')
|
|
121
124
|
continue;
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if (!isExtends)
|
|
128
|
-
continue;
|
|
129
|
-
// Check each type in the extends clause
|
|
130
|
-
for (const typeNode of child.children ?? []) {
|
|
131
|
-
if (typeNode.type === 'member_expression') {
|
|
132
|
-
// React.Component or React.PureComponent
|
|
133
|
-
const parts = typeNode.children ?? [];
|
|
134
|
-
if (parts.length >= 2) {
|
|
135
|
-
const obj = parts[0];
|
|
136
|
-
const prop = parts[parts.length - 1];
|
|
137
|
-
if (obj.type === 'identifier' && rawText(obj) === 'React' &&
|
|
138
|
-
prop.type === 'property_identifier' &&
|
|
139
|
-
(rawText(prop) === 'Component' || rawText(prop) === 'PureComponent')) {
|
|
140
|
-
return true;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
if (typeNode.type === 'identifier') {
|
|
145
|
-
const name = rawText(typeNode);
|
|
146
|
-
if (name === 'Component' || name === 'PureComponent') {
|
|
125
|
+
for (const clause of child.children ?? []) {
|
|
126
|
+
if (clause.type !== 'extends_clause')
|
|
127
|
+
continue;
|
|
128
|
+
for (const typeNode of clause.children ?? []) {
|
|
129
|
+
if (isReactComponentBaseType(typeNode))
|
|
147
130
|
return true;
|
|
148
|
-
}
|
|
149
131
|
}
|
|
150
132
|
}
|
|
151
133
|
}
|
|
152
134
|
return false;
|
|
153
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* True when a heritage-clause type names `Component`/`PureComponent`, with or
|
|
138
|
+
* without a `React.` qualifier and with or without generic type arguments
|
|
139
|
+
* (e.g. `Component`, `React.Component`, `Component<Props>`,
|
|
140
|
+
* `React.Component<Props, State>`). `generic_type` (type + `type_arguments`)
|
|
141
|
+
* is otherwise missed — `extends Component<{ children }, State>` was not
|
|
142
|
+
* recognised as a class component, so error boundaries that extend
|
|
143
|
+
* `Component<Props>` were dropped from `detectComponentType`.
|
|
144
|
+
*/
|
|
145
|
+
function isReactComponentBaseType(typeNode) {
|
|
146
|
+
// identifier: `Component` / `PureComponent`
|
|
147
|
+
if (typeNode.type === 'identifier') {
|
|
148
|
+
const name = rawText(typeNode);
|
|
149
|
+
return name === 'Component' || name === 'PureComponent';
|
|
150
|
+
}
|
|
151
|
+
// member_expression: `React.Component` / `React.PureComponent`
|
|
152
|
+
if (typeNode.type === 'member_expression') {
|
|
153
|
+
const parts = typeNode.children ?? [];
|
|
154
|
+
const obj = parts[0];
|
|
155
|
+
const prop = parts[parts.length - 1];
|
|
156
|
+
return obj?.type === 'identifier' && rawText(obj) === 'React' &&
|
|
157
|
+
prop?.type === 'property_identifier' &&
|
|
158
|
+
(rawText(prop) === 'Component' || rawText(prop) === 'PureComponent');
|
|
159
|
+
}
|
|
160
|
+
// generic_type: `Component<Props>` / `React.Component<Props>` — the base
|
|
161
|
+
// type name is the first named child, before the `type_arguments`.
|
|
162
|
+
if (typeNode.type === 'generic_type') {
|
|
163
|
+
const name = typeNode.children?.[0];
|
|
164
|
+
return name ? isReactComponentBaseType(name) : false;
|
|
165
|
+
}
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
154
168
|
// ---------------------------------------------------------------------------
|
|
155
169
|
// Hook extraction
|
|
156
170
|
// ---------------------------------------------------------------------------
|
|
@@ -340,21 +354,21 @@ export function extractPropTypes(node) {
|
|
|
340
354
|
// For class components, check Props in extends clause
|
|
341
355
|
if (node.type === 'class_declaration') {
|
|
342
356
|
for (const child of node.children ?? []) {
|
|
343
|
-
if (child.type !== 'heritage_clause')
|
|
344
|
-
continue;
|
|
345
|
-
const raw = child.raw;
|
|
346
|
-
const isExtends = raw?.children?.some(c => !c.isNamed && c.type === 'extends') ?? false;
|
|
347
|
-
if (!isExtends)
|
|
357
|
+
if (child.type !== 'class_heritage' && child.type !== 'heritage_clause')
|
|
348
358
|
continue;
|
|
349
|
-
for (const
|
|
350
|
-
if (
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
359
|
+
for (const clause of child.children ?? []) {
|
|
360
|
+
if (clause.type !== 'extends_clause')
|
|
361
|
+
continue;
|
|
362
|
+
// `extends Component<Props>` — tree-sitter-typescript puts the base type
|
|
363
|
+
// (`identifier`/`member_expression`) and its `type_arguments` as siblings,
|
|
364
|
+
// not wrapped in a `generic_type`. Only inline object literals are
|
|
365
|
+
// recoverable; `Component<Props>` (a type reference) cannot be resolved
|
|
366
|
+
// without TypeChecker (documented tree-sitter limitation).
|
|
367
|
+
const typeArgs = findChildOfType(clause, 'type_arguments');
|
|
368
|
+
if (typeArgs?.children) {
|
|
369
|
+
const firstArg = typeArgs.children[0];
|
|
370
|
+
if (firstArg?.type === 'object_type' || firstArg?.type === 'type_literal') {
|
|
371
|
+
props.push(...extractPropsFromTypeLiteral(firstArg));
|
|
358
372
|
}
|
|
359
373
|
}
|
|
360
374
|
}
|
|
@@ -465,9 +479,10 @@ export function getComponentName(node) {
|
|
|
465
479
|
if (nameNode)
|
|
466
480
|
return rawText(nameNode);
|
|
467
481
|
}
|
|
468
|
-
// Class declaration
|
|
482
|
+
// Class declaration — tree-sitter-typescript names classes with a
|
|
483
|
+
// `type_identifier`, not a plain `identifier`.
|
|
469
484
|
if (node.type === 'class_declaration') {
|
|
470
|
-
const nameNode = findChildOfType(node, 'identifier');
|
|
485
|
+
const nameNode = findChildOfType(node, 'identifier') ?? findChildOfType(node, 'type_identifier');
|
|
471
486
|
if (nameNode)
|
|
472
487
|
return rawText(nameNode);
|
|
473
488
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactDetection.js","sourceRoot":"","sources":["../../src/utils/reactDetection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAW,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAe,MAAM,+BAA+B,CAAC;AAG/G,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,oEAAoE;AACpE,SAAS,OAAO,CAAC,IAAa;IAC5B,OAAQ,IAAI,CAAC,GAAsB,EAAE,IAAI,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACxG,CAAC;AAED,sDAAsD;AACtD,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,0BAA0B,CAAC;AAClG,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,YAAY,GAAG;QACnB,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa;QAClE,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,iBAAiB;QAC7D,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,eAAe;QAC7D,sBAAsB,EAAE,oBAAoB;KAC7C,CAAC;IACF,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAa,EAAE,IAAY;IAClD,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAa,EAAE,IAAY;IACrD,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAChF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,uDAAuD;IACvD,gFAAgF;IAChF,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,oDAAoD;YACpD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;YAC5G,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACzD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,iDAAiD;IACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,6CAA6C;IAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,KAAK,CAAC;IAEpD,qEAAqE;IACrE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAAE,SAAS;QAE/C,0DAA0D;QAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,GAAqB,CAAC;QACxC,IAAI,CAAC,GAAG,EAAE,QAAQ;YAAE,SAAS;QAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,wCAAwC;QACxC,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBAC1C,yCAAyC;gBACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACtC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACrC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO;wBACrD,IAAI,CAAC,IAAI,KAAK,qBAAqB;wBACnC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,EAAE,CAAC;wBACzE,OAAO,IAAI,CAAC;oBACd,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACnC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;oBACrD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,YAA0B;IACpE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,6CAA6C;IAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,mFAAmF;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,IAAI;oBACJ,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;iBACjC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,2DAA2D;gBAC3D,8DAA8D;gBAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,IAAI;oBACJ,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/C,wCAAwC;YACxC,0EAA0E;YAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;YAC9E,IAAI,MAAM,IAAI,QAAQ;gBAClB,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBAChE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI;wBACJ,IAAI;wBACJ,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;GAEG;AACH,SAAS,2BAA2B,CAAC,WAAoB;IACvD,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB;YAAE,SAAS;QAEnD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAErF,4BAA4B;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAqB,CAAC;QACzC,MAAM,WAAW,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC;QAEpF,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;YACvB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,WAAW;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,2FAA2F;IAC3F,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAEtG,2EAA2E;QAC3E,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,gBAAgB,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE,CAAC;YACzG,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YACjE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,UAAU,EAAE,CAAC;oBACf,uEAAuE;oBACvE,gEAAgE;oBAChE,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC;wBAC3D,eAAe,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;oBACxD,IAAI,OAAO,EAAE,CAAC;wBACZ,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;4BAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc;gCACrE,OAAO,CAAC,IAAI,KAAK,uCAAuC;gCAAE,SAAS;4BAEvE,+EAA+E;4BAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,uCAAuC;gCACvE,CAAC,CAAC,OAAO;gCACT,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CACzB,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;4BAEnE,IAAI,CAAC,QAAQ;gCAAE,SAAS;4BAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAqB,CAAC;4BAC1C,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;4BAClF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,KAAK,CAAC;4BAErH,KAAK,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;gCACvB,IAAI,EAAE,KAAK;gCACX,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU;gCACjC,UAAU;6BACX,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,+EAA+E;gBAC/E,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC;oBAC3D,eAAe,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;gBACxD,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;wBAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,uCAAuC;4BAAE,SAAS;wBAE7G,+EAA+E;wBAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,uCAAuC;4BACvE,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CACzB,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;wBAEnE,IAAI,CAAC,QAAQ;4BAAE,SAAS;wBAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAqB,CAAC;wBAC1C,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;wBAClF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,KAAK,CAAC;wBAErH,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;4BACvB,IAAI,EAAE,KAAK;4BACX,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU;4BACjC,UAAU;yBACX,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,mDAAmD;gBACnD,iFAAiF;gBACjF,kFAAkF;gBAClF,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;gBACjE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;oBACzD,IAAI,QAAQ,EAAE,CAAC;wBACb,KAAK,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACvD,CAAC;oBACD,gEAAgE;oBAChE,gEAAgE;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;gBAAE,SAAS;YAE/C,MAAM,GAAG,GAAG,KAAK,CAAC,GAAqB,CAAC;YACxC,MAAM,SAAS,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,CAAC;YACxF,IAAI,CAAC,SAAS;gBAAE,SAAS;YAEzB,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACrC,iEAAiE;oBACjE,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBAC7D,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;wBACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;wBACtC,IAAI,QAAQ,EAAE,IAAI,KAAK,aAAa,IAAI,QAAQ,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;4BAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACvD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IAE3E,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,uCAAuC;QACvC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAE5D,8CAA8C;QAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEzE,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,qDAAqD;QACrD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACxC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB;wBAAE,SAAS;oBAC/C,yDAAyD;oBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC9E,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACtD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;wBAChC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC7D,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,wDAAwD;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;gBACnC,IAAI,IAAI,KAAK,YAAY;oBAAE,OAAO,YAAY,CAAC;YACjD,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACrC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;wBAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC/B,IAAI,QAAQ,KAAK,MAAM;4BAAE,OAAO,MAAM,CAAC;wBACvC,IAAI,QAAQ,KAAK,YAAY;4BAAE,OAAO,YAAY,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,qBAAqB,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAErD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,uBAAuB;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,oBAAoB;IACpB,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACzE,IAAI,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACnE,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,IAAI,MAAM,GAAwB,IAAI,CAAC,MAAM,CAAC;QAE9C,0EAA0E;QAC1E,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QAED,oEAAoE;QACpE,8DAA8D;QAC9D,IAAI,MAAM,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACvE,IAAI,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,2EAA2E;IAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACzD,IAAI,QAAQ;oBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YACD,oEAAoE;YACpE,0DAA0D;YAC1D,IAAI,QAAQ,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACxC,IAAI,MAAM,GAAwB,IAAI,CAAC,MAAM,CAAC;gBAC9C,IAAI,MAAM,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;oBACvE,IAAI,QAAQ;wBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
|
|
1
|
+
{"version":3,"file":"reactDetection.js","sourceRoot":"","sources":["../../src/utils/reactDetection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAW,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAe,MAAM,+BAA+B,CAAC;AAG/G,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,oEAAoE;AACpE,SAAS,OAAO,CAAC,IAAa;IAC5B,OAAQ,IAAI,CAAC,GAAsB,EAAE,IAAI,IAAI,EAAE,CAAC;AAClD,CAAC;AAED,uEAAuE;AACvE,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,qBAAqB,IAAI,IAAI,KAAK,gBAAgB,CAAC;AACxG,CAAC;AAED,sDAAsD;AACtD,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,KAAK,aAAa,IAAI,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,0BAA0B,CAAC;AAClG,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,YAAY,GAAG;QACnB,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa;QAClE,SAAS,EAAE,QAAQ,EAAE,qBAAqB,EAAE,iBAAiB;QAC7D,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,eAAe;QAC7D,sBAAsB,EAAE,oBAAoB;KAC7C,CAAC;IACF,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,IAAa,EAAE,IAAY;IAClD,OAAO,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,IAAa,EAAE,IAAY;IACrD,OAAO,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAa;IACjD,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QAChF,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,uDAAuD;IACvD,gFAAgF;IAChF,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,oDAAoD;YACpD,MAAM,WAAW,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;YAC5G,IAAI,WAAW,IAAI,WAAW,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACzD,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,iDAAiD;IACjD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,6CAA6C;IAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACvC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB;QAAE,OAAO,KAAK,CAAC;IAEpD,sEAAsE;IACtE,gFAAgF;IAChF,kFAAkF;IAClF,+EAA+E;IAC/E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;YAAE,SAAS;QAElF,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB;gBAAE,SAAS;YAE/C,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC7C,IAAI,wBAAwB,CAAC,QAAQ,CAAC;oBAAE,OAAO,IAAI,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,wBAAwB,CAAC,QAAiB;IACjD,4CAA4C;IAC5C,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,eAAe,CAAC;IAC1D,CAAC;IAED,+DAA+D;IAC/D,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,OAAO,GAAG,EAAE,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO;YAC3D,IAAI,EAAE,IAAI,KAAK,qBAAqB;YACpC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,CAAC;IACzE,CAAC;IAED,yEAAyE;IACzE,mEAAmE;IACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACvD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,YAA0B;IACpE,MAAM,KAAK,GAAgB,EAAE,CAAC;IAE9B,6CAA6C;IAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IAErE,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,mFAAmF;QACnF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,IAAI;oBACJ,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;iBACjC,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,YAAY,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAClD,2DAA2D;gBAC3D,8DAA8D;gBAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,IAAI;oBACJ,UAAU,EAAE,IAAI;iBACjB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/C,wCAAwC;YACxC,0EAA0E;YAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;YAC9E,IAAI,MAAM,IAAI,QAAQ;gBAClB,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBAChE,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3B,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBAC1C,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI;wBACJ,IAAI;wBACJ,UAAU,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC;qBACjC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,uBAAuB;AACvB,8EAA8E;AAE9E;;GAEG;AACH,SAAS,2BAA2B,CAAC,WAAoB;IACvD,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAChD,IAAI,MAAM,CAAC,IAAI,KAAK,oBAAoB;YAAE,SAAS;QAEnD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;QACzG,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAErF,4BAA4B;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAqB,CAAC;QACzC,MAAM,WAAW,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC;QAEpF,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;YACvB,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC,WAAW;YACtB,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,2FAA2F;IAC3F,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAC3D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAEtG,2EAA2E;QAC3E,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,gBAAgB,IAAI,WAAW,CAAC,IAAI,KAAK,qBAAqB,CAAC,EAAE,CAAC;YACzG,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;YACjE,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,UAAU,EAAE,CAAC;oBACf,uEAAuE;oBACvE,gEAAgE;oBAChE,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC;wBAC3D,eAAe,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;oBACxD,IAAI,OAAO,EAAE,CAAC;wBACZ,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;4BAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,cAAc;gCACrE,OAAO,CAAC,IAAI,KAAK,uCAAuC;gCAAE,SAAS;4BAEvE,+EAA+E;4BAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,uCAAuC;gCACvE,CAAC,CAAC,OAAO;gCACT,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CACzB,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;4BAEnE,IAAI,CAAC,QAAQ;gCAAE,SAAS;4BAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAqB,CAAC;4BAC1C,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;4BAClF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,KAAK,CAAC;4BAErH,KAAK,CAAC,IAAI,CAAC;gCACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;gCACvB,IAAI,EAAE,KAAK;gCACX,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU;gCACjC,UAAU;6BACX,CAAC,CAAC;wBACL,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE,CAAC;gBACf,+EAA+E;gBAC/E,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,gBAAgB,CAAC;oBAC3D,eAAe,CAAC,UAAU,EAAE,wBAAwB,CAAC,CAAC;gBACxD,IAAI,OAAO,EAAE,CAAC;oBACZ,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;wBAC7C,IAAI,OAAO,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,CAAC,IAAI,KAAK,uCAAuC;4BAAE,SAAS;wBAE7G,+EAA+E;wBAC/E,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,KAAK,uCAAuC;4BACvE,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CACzB,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC;wBAEnE,IAAI,CAAC,QAAQ;4BAAE,SAAS;wBAExB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAqB,CAAC;wBAC1C,MAAM,OAAO,GAAG,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC;wBAClF,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,IAAI,KAAK,CAAC;wBAErH,KAAK,CAAC,IAAI,CAAC;4BACT,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC;4BACvB,IAAI,EAAE,KAAK;4BACX,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,UAAU;4BACjC,UAAU;yBACX,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,mDAAmD;gBACnD,iFAAiF;gBACjF,kFAAkF;gBAClF,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;gBACjE,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAC5C,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;oBACzD,IAAI,QAAQ,EAAE,CAAC;wBACb,KAAK,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACvD,CAAC;oBACD,gEAAgE;oBAChE,gEAAgE;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;gBAAE,SAAS;YAElF,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;gBAC1C,IAAI,MAAM,CAAC,IAAI,KAAK,gBAAgB;oBAAE,SAAS;gBAE/C,yEAAyE;gBACzE,2EAA2E;gBAC3E,mEAAmE;gBACnE,wEAAwE;gBACxE,2DAA2D;gBAC3D,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,IAAI,QAAQ,EAAE,QAAQ,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACtC,IAAI,QAAQ,EAAE,IAAI,KAAK,aAAa,IAAI,QAAQ,EAAE,IAAI,KAAK,cAAc,EAAE,CAAC;wBAC1E,KAAK,CAAC,IAAI,CAAC,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAgB;IACtD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;IAE3E,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,uCAAuC;QACvC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAE5D,8CAA8C;QAC9C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEzE,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY;YAAE,SAAS;QAE5B,qDAAqD;QACrD,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAChD,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC;YAED,gBAAgB;YAChB,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACnC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACxC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB;wBAAE,SAAS;oBAC/C,yDAAyD;oBACzD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,IAAI,EAAE,CAAC;oBAC9E,MAAM,SAAS,GAAG,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACtD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;wBAChC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;4BAC1B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;wBAC7D,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAa;IAC/C,wDAAwD;IACxD,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,MAAM;oBAAE,OAAO,MAAM,CAAC;gBACnC,IAAI,IAAI,KAAK,YAAY;oBAAE,OAAO,YAAY,CAAC;YACjD,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACxC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACpC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;oBACrB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBACrC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;wBAC1D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;wBAC/B,IAAI,QAAQ,KAAK,MAAM;4BAAE,OAAO,MAAM,CAAC;wBACvC,IAAI,QAAQ,KAAK,YAAY;4BAAE,OAAO,YAAY,CAAC;oBACrD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC3C,IAAI,qBAAqB,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAErD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,uBAAuB;IACvB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACrD,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,kEAAkE;IAClE,+CAA+C;IAC/C,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,eAAe,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACjG,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,6CAA6C;IAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;QAChE,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACzE,IAAI,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;QACnE,IAAI,QAAQ;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,IAAI,MAAM,GAAwB,IAAI,CAAC,MAAM,CAAC;QAE9C,0EAA0E;QAC1E,IAAI,MAAM,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QACD,IAAI,MAAM,EAAE,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACvC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QAED,oEAAoE;QACpE,8DAA8D;QAC9D,IAAI,MAAM,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YACvE,IAAI,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED,2EAA2E;IAC3E,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,QAAQ,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACzD,IAAI,QAAQ;oBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzC,CAAC;YACD,oEAAoE;YACpE,0DAA0D;YAC1D,IAAI,QAAQ,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBACxC,IAAI,MAAM,GAAwB,IAAI,CAAC,MAAM,CAAC;gBAC9C,IAAI,MAAM,EAAE,IAAI,KAAK,qBAAqB,EAAE,CAAC;oBAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;oBACvE,IAAI,QAAQ;wBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-auditor-mcp",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.5.0",
|
|
4
4
|
"description": "Architectural invariants and code quality analysis, enforced inside your AI agent's edit loop. MCP server + CLI + Claude Code plugin. TypeScript, JavaScript, Go.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -10,6 +10,33 @@
|
|
|
10
10
|
"code-audit": "dist/cli.js",
|
|
11
11
|
"code-auditor-mcp": "dist/mcp.js"
|
|
12
12
|
},
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc && pnpm run build:go && pnpm run build:grammars && pnpm run download:natives && pnpm run build:skills",
|
|
15
|
+
"download:natives": "bash scripts/download-natives.sh",
|
|
16
|
+
"build:grammars": "cp node_modules/tree-sitter-typescript/tree-sitter-typescript.wasm node_modules/tree-sitter-typescript/tree-sitter-tsx.wasm node_modules/tree-sitter-javascript/tree-sitter-javascript.wasm node_modules/tree-sitter-go/tree-sitter-go.wasm node_modules/tree-sitter-css/tree-sitter-css.wasm node_modules/tree-sitter-scss/tree-sitter-scss.wasm dist/grammars/",
|
|
17
|
+
"build:skills": "cp -r plugin/skills/* ../skills/",
|
|
18
|
+
"watch": "tsc --watch",
|
|
19
|
+
"dev": "tsx src/cli.ts",
|
|
20
|
+
"dev:server": "tsx --watch src/cli.ts start --rest-api",
|
|
21
|
+
"dev:mcp": "tsx src/mcp.ts",
|
|
22
|
+
"dev:mcp:ui": "tsx src/mcp.ts --ui",
|
|
23
|
+
"audit": "node dist/cli.js",
|
|
24
|
+
"start": "node dist/mcp.js",
|
|
25
|
+
"start:ui": "node dist/mcp.js --ui",
|
|
26
|
+
"start:stdio": "node dist/mcp.js --stdio",
|
|
27
|
+
"start:rest": "node dist/cli.js start --rest-api",
|
|
28
|
+
"generate": "node dist/cli.js generate-config",
|
|
29
|
+
"prepublishOnly": "pnpm run build",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
32
|
+
"test:watch": "vitest watch",
|
|
33
|
+
"verify:dist": "npm pack --silent && bash scripts/verify-dist.sh && rm -f code-auditor-mcp-*.tgz",
|
|
34
|
+
"verify:self": "node scripts/verify-self.mjs && node scripts/verify-languages.mjs",
|
|
35
|
+
"verify:languages": "node scripts/verify-languages.mjs",
|
|
36
|
+
"verify:gate-budget": "node scripts/verify-gate-budget.mjs",
|
|
37
|
+
"verify:close": "npm run test && npm run test:integration && npm run verify:gate-budget && npm run verify:dist && npm run verify:self",
|
|
38
|
+
"build:go": "bash scripts/build-go.sh"
|
|
39
|
+
},
|
|
13
40
|
"keywords": [
|
|
14
41
|
"mcp",
|
|
15
42
|
"code-quality",
|
|
@@ -27,6 +54,7 @@
|
|
|
27
54
|
],
|
|
28
55
|
"author": "benahammond",
|
|
29
56
|
"license": "MIT",
|
|
57
|
+
"packageManager": "pnpm@10.12.1",
|
|
30
58
|
"engines": {
|
|
31
59
|
"node": ">=18.0.0"
|
|
32
60
|
},
|
|
@@ -90,29 +118,5 @@
|
|
|
90
118
|
"bugs": {
|
|
91
119
|
"url": "https://github.com/BenAHammond/code-auditor-mcp/issues"
|
|
92
120
|
},
|
|
93
|
-
"homepage": "https://www.codeauditormcp.com/"
|
|
94
|
-
|
|
95
|
-
"build": "tsc && pnpm run build:grammars && pnpm run download:natives && pnpm run build:skills",
|
|
96
|
-
"download:natives": "bash scripts/download-natives.sh",
|
|
97
|
-
"build:grammars": "cp node_modules/tree-sitter-typescript/tree-sitter-typescript.wasm node_modules/tree-sitter-typescript/tree-sitter-tsx.wasm node_modules/tree-sitter-javascript/tree-sitter-javascript.wasm node_modules/tree-sitter-go/tree-sitter-go.wasm node_modules/tree-sitter-css/tree-sitter-css.wasm node_modules/tree-sitter-scss/tree-sitter-scss.wasm dist/grammars/",
|
|
98
|
-
"build:skills": "cp -r plugin/skills/* ../skills/",
|
|
99
|
-
"watch": "tsc --watch",
|
|
100
|
-
"dev": "tsx src/cli.ts",
|
|
101
|
-
"dev:server": "tsx --watch src/cli.ts start --rest-api",
|
|
102
|
-
"dev:mcp": "tsx src/mcp.ts",
|
|
103
|
-
"dev:mcp:ui": "tsx src/mcp.ts --ui",
|
|
104
|
-
"audit": "node dist/cli.js",
|
|
105
|
-
"start": "node dist/mcp.js",
|
|
106
|
-
"start:ui": "node dist/mcp.js --ui",
|
|
107
|
-
"start:stdio": "node dist/mcp.js --stdio",
|
|
108
|
-
"start:rest": "node dist/cli.js start --rest-api",
|
|
109
|
-
"generate": "node dist/cli.js generate-config",
|
|
110
|
-
"test": "vitest run",
|
|
111
|
-
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
112
|
-
"test:watch": "vitest watch",
|
|
113
|
-
"verify:dist": "npm pack --silent && bash scripts/verify-dist.sh && rm -f code-auditor-mcp-*.tgz",
|
|
114
|
-
"verify:self": "node scripts/verify-self.mjs",
|
|
115
|
-
"verify:gate-budget": "node scripts/verify-gate-budget.mjs",
|
|
116
|
-
"verify:close": "npm run test && npm run test:integration && npm run verify:gate-budget && npm run verify:dist && npm run verify:self"
|
|
117
|
-
}
|
|
118
|
-
}
|
|
121
|
+
"homepage": "https://www.codeauditormcp.com/"
|
|
122
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "code-auditor",
|
|
3
3
|
"description": "Diff-scoped code quality auditing on every edit. Indexes your codebase, enforces invariants, and feeds violations back to the agent so fixes happen inline.",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.5.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Ben Hammond",
|
|
7
7
|
"email": "ben@benhammond.tech"
|
package/plugin/README.md
CHANGED
|
@@ -17,20 +17,20 @@ If the plugin format iterates in a future Claude Code release, update the manife
|
|
|
17
17
|
|
|
18
18
|
| Component | Purpose |
|
|
19
19
|
|-----------|---------|
|
|
20
|
-
| `hooks/hooks.json` | `PostToolUse` on `Write\|Edit` → runs `code-audit changed --stdin --json
|
|
21
|
-
| `skills/code-auditor/SKILL.md` | Teaches the agent when to use `search`, `definition`, `audit`, `
|
|
20
|
+
| `hooks/hooks.json` | `PostToolUse` on `Write\|Edit` → runs `code-audit changed --stdin --json` |
|
|
21
|
+
| `skills/code-auditor/SKILL.md` | Teaches the agent when to use `search`, `definition`, `audit`, `next-file`, `config`, and how to interpret hook feedback |
|
|
22
22
|
| `scripts/hook-audit.sh` | Hook script: extracts file path from event JSON, pipes to `code-audit changed`, degrades cleanly when the package isn't installed |
|
|
23
23
|
|
|
24
24
|
**No bundled `.mcp.json`.** The hook calls `code-audit` via the CLI, which resolves through the user's `PATH` (global install or `npx`). We deliberately chose not to bundle an MCP server in the plugin manifest: the skill + CLI path is cheaper — no standing tool-schema token cost on every context window — and equivalent to the MCP surface wherever a shell exists. The standalone MCP server (`npx code-auditor-mcp`) remains available for shell-less hosts or users who prefer the MCP transport.
|
|
25
25
|
|
|
26
26
|
## The hook
|
|
27
27
|
|
|
28
|
-
After every Write or Edit, the hook runs `code-audit changed` on the edited file
|
|
28
|
+
After every Write or Edit, the hook runs `code-audit changed` on the edited file. The flow:
|
|
29
29
|
|
|
30
30
|
1. **File edited** → hook fires with the event JSON on stdin
|
|
31
|
-
2. **Hook extracts the file path** and pipes it to `code-audit changed --stdin --json
|
|
32
|
-
3. **No
|
|
33
|
-
4. **
|
|
31
|
+
2. **Hook extracts the file path** and pipes it to `code-audit changed --stdin --json`
|
|
32
|
+
3. **No gating violations** → exit 0, agent continues
|
|
33
|
+
4. **Gating violation found** → exit 2, violation JSON is fed back to the agent, agent reads the invariant's `message` and fixes the violation
|
|
34
34
|
5. **code-audit not installed** → exit 0 with one-line notice, agent continues uninterrupted
|
|
35
35
|
|
|
36
36
|
### Disabling the hook
|
package/plugin/hooks/hooks.json
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
{
|
|
8
8
|
"type": "command",
|
|
9
9
|
"command": "if [ -z \"${CLAUDE_PLUGIN_ROOT}\" ]; then echo '[code-auditor] CLAUDE_PLUGIN_ROOT is unset; audit hook did not run' >&2; exit 1; fi; \"${CLAUDE_PLUGIN_ROOT}\"/scripts/hook-audit.sh"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"type": "command",
|
|
13
|
+
"command": "if [ -z \"${CLAUDE_PLUGIN_ROOT}\" ]; then echo '[code-auditor] CLAUDE_PLUGIN_ROOT is unset; self-audit hook did not run' >&2; exit 1; fi; \"${CLAUDE_PLUGIN_ROOT}\"/scripts/hook-self-audit.sh"
|
|
10
14
|
}
|
|
11
15
|
]
|
|
12
16
|
}
|
|
File without changes
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# code-auditor PostToolUse self-audit hook — enforce the self-audit scope
|
|
3
|
+
# (analyzers/ + languages/) at edit time, not just at release (Spec 33 Item 15).
|
|
4
|
+
#
|
|
5
|
+
# Reads the PostToolUse event JSON from stdin, extracts the edited file path,
|
|
6
|
+
# and — only when that file is production source in the self-audit scope — runs
|
|
7
|
+
# `code-audit self-audit --stdin --json` against it. Exit code 2 blocks the edit
|
|
8
|
+
# and feeds the finding JSON back to the agent.
|
|
9
|
+
#
|
|
10
|
+
# This hook is a no-op for every edit outside the self-audit scope (consumer
|
|
11
|
+
# projects, tests, fixtures, and the declarative ruleRegistry table), so it adds
|
|
12
|
+
# no latency to ordinary edits. It runs *in addition to* hook-audit.sh, whose
|
|
13
|
+
# diff-gate enforces invariant rules on every edit.
|
|
14
|
+
set -euo pipefail
|
|
15
|
+
|
|
16
|
+
# Read event JSON from stdin
|
|
17
|
+
event="$(cat)"
|
|
18
|
+
|
|
19
|
+
# Extract the file path from the tool input (Write and Edit both use file_path)
|
|
20
|
+
file="$(node -e "
|
|
21
|
+
try {
|
|
22
|
+
var d = JSON.parse(require('fs').readFileSync('/dev/stdin','utf8'));
|
|
23
|
+
process.stdout.write(d.tool_input?.file_path || d.tool_input?.path || '');
|
|
24
|
+
} catch(e) { process.stdout.write(''); }
|
|
25
|
+
" <<< "${event}")"
|
|
26
|
+
|
|
27
|
+
# No file path in the event — nothing to audit
|
|
28
|
+
if [ -z "${file}" ]; then
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
# Normalize the edited file to an absolute path (absolute paths pass through;
|
|
33
|
+
# relative paths resolve against the current working directory).
|
|
34
|
+
case "${file}" in
|
|
35
|
+
/*) file_abs="${file}" ;;
|
|
36
|
+
*) file_abs="$(cd "$(dirname "${file}")" 2>/dev/null && pwd)/$(basename "${file}")" ;;
|
|
37
|
+
esac
|
|
38
|
+
|
|
39
|
+
# Out-of-repo edit no-op (Spec 35 item 9): an edit outside the audited project
|
|
40
|
+
# must not error the hook.
|
|
41
|
+
if [ -n "${CLAUDE_PROJECT_DIR:-}" ]; then
|
|
42
|
+
project_abs="$(cd "${CLAUDE_PROJECT_DIR}" 2>/dev/null && pwd)" || project_abs="${CLAUDE_PROJECT_DIR%/}"
|
|
43
|
+
case "${file_abs}" in
|
|
44
|
+
"${project_abs}"/*) : ;; # inside the project — continue
|
|
45
|
+
*) exit 0 ;; # outside — nothing to self-audit
|
|
46
|
+
esac
|
|
47
|
+
fi
|
|
48
|
+
|
|
49
|
+
# Self-audit scope gate: only production files under src/analyzers/ or
|
|
50
|
+
# src/languages/ are self-audit targets. Everything else — every file in a
|
|
51
|
+
# consumer repo, plus this repo's tests, specs, fixtures, and the declarative
|
|
52
|
+
# ruleRegistry.ts data table — is a no-op. The `self-audit` command re-checks
|
|
53
|
+
# this scope on the reported finding paths, so this is only a cheap pre-filter
|
|
54
|
+
# to keep the hook off the hot path for ordinary edits.
|
|
55
|
+
case "${file_abs}" in
|
|
56
|
+
*"/src/analyzers/"*|*"/src/languages/"*) : ;;
|
|
57
|
+
*) exit 0 ;;
|
|
58
|
+
esac
|
|
59
|
+
case "${file_abs}" in
|
|
60
|
+
*"__tests__"*|*".test."*|*".spec."*|*"fixtures"*|*"ruleRegistry.ts"*) exit 0 ;;
|
|
61
|
+
esac
|
|
62
|
+
|
|
63
|
+
# Resolve the code-audit binary. The `self-audit` command is new in 3.5.0, so a
|
|
64
|
+
# stale PATH/global binary would silently lack it — prefer the plugin's own
|
|
65
|
+
# bundled CLI first (guaranteed to be the version that ships with this hook),
|
|
66
|
+
# then fall back to project-local → PATH → npx auto-install.
|
|
67
|
+
resolve_code_audit() {
|
|
68
|
+
# 1. The plugin's own bundled CLI (ships alongside this script in the package;
|
|
69
|
+
# dist/cli.js is the `code-audit` bin target, so npm marks it executable).
|
|
70
|
+
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -f "${CLAUDE_PLUGIN_ROOT}/../dist/cli.js" ]; then
|
|
71
|
+
echo "${CLAUDE_PLUGIN_ROOT}/../dist/cli.js"
|
|
72
|
+
return
|
|
73
|
+
fi
|
|
74
|
+
# 2. Project-local install (consumer project's own node_modules).
|
|
75
|
+
if [ -n "${CLAUDE_PROJECT_DIR:-}" ] && [ -x "${CLAUDE_PROJECT_DIR}/node_modules/.bin/code-audit" ]; then
|
|
76
|
+
echo "${CLAUDE_PROJECT_DIR}/node_modules/.bin/code-audit"
|
|
77
|
+
return
|
|
78
|
+
fi
|
|
79
|
+
# 3. Global install or PATH.
|
|
80
|
+
if command -v code-audit &>/dev/null; then
|
|
81
|
+
echo "code-audit"
|
|
82
|
+
return
|
|
83
|
+
fi
|
|
84
|
+
# 4. npx auto-install (first use downloads the package; subsequent runs use the npx cache).
|
|
85
|
+
echo "npx -y -p code-auditor-mcp@^3.0.0 code-audit"
|
|
86
|
+
}
|
|
87
|
+
CODE_AUDIT_BIN="$(resolve_code_audit)"
|
|
88
|
+
|
|
89
|
+
# Run the self-audit on the edited file. stdout/stderr are fed back to the agent.
|
|
90
|
+
set +e
|
|
91
|
+
if [ -n "${CLAUDE_PROJECT_DIR:-}" ]; then
|
|
92
|
+
echo "${file_abs}" | ${CODE_AUDIT_BIN} self-audit --stdin --json -p "${CLAUDE_PROJECT_DIR}"
|
|
93
|
+
else
|
|
94
|
+
echo "${file_abs}" | ${CODE_AUDIT_BIN} self-audit --stdin --json
|
|
95
|
+
fi
|
|
96
|
+
exit_code=$?
|
|
97
|
+
set -e
|
|
98
|
+
|
|
99
|
+
# Exit code 2 = a blocking self-audit finding; let it propagate so Claude Code
|
|
100
|
+
# feeds the finding back to the agent.
|
|
101
|
+
if [ ${exit_code} -eq 2 ]; then
|
|
102
|
+
exit 2
|
|
103
|
+
fi
|
|
104
|
+
|
|
105
|
+
# Non-zero exit (npx auto-install failure, network issue, etc.) degrades
|
|
106
|
+
# gracefully — never wedge the agent loop.
|
|
107
|
+
exit 0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Invariant Rule Kinds
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Seven rule kinds are available in `.codeauditor.json`. Rules are validated at startup — bad configs fail the audit, not silently skipped.
|
|
4
4
|
|
|
5
5
|
## Rule Kinds
|
|
6
6
|
|
|
@@ -139,13 +139,61 @@ With language and path constraints:
|
|
|
139
139
|
|
|
140
140
|
`$$$` matches zero or more nodes (like `...` in rest patterns). `$$$ARGS` is a named meta-variable. See the [ast-grep pattern guide](https://ast-grep.github.io/guide/pattern-syntax.html) for full syntax.
|
|
141
141
|
|
|
142
|
+
### `style-mechanism`
|
|
143
|
+
|
|
144
|
+
Enforce which styling mechanisms are allowed in files matching an optional `path` glob. A style declaration using an unapproved mechanism is flagged.
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"id": "tailwind-only-in-components",
|
|
149
|
+
"kind": "style-mechanism",
|
|
150
|
+
"severity": "warning",
|
|
151
|
+
"allow": ["tailwind"],
|
|
152
|
+
"path": "src/components/**",
|
|
153
|
+
"message": "Only Tailwind utilities in src/components/ — use the project's CSS modules elsewhere"
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
`allow` lists the permitted mechanisms (`tailwind`, `css-modules`, `styled-components`, `inline`, `css`). `path` is optional — omit it to apply the rule to every file.
|
|
158
|
+
|
|
159
|
+
### `no-raw-values`
|
|
160
|
+
|
|
161
|
+
Require designated CSS properties to reference a design token instead of a raw value. A declaration whose normalized value has no token reference (and is not in `allowValues`) is flagged.
|
|
162
|
+
|
|
163
|
+
```json
|
|
164
|
+
{
|
|
165
|
+
"id": "no-raw-colors-in-pages",
|
|
166
|
+
"kind": "no-raw-values",
|
|
167
|
+
"severity": "warning",
|
|
168
|
+
"properties": ["color", "background-color"],
|
|
169
|
+
"allowValues": ["inherit", "transparent"],
|
|
170
|
+
"path": "src/pages/**",
|
|
171
|
+
"message": "No raw colors in src/pages/ — use design tokens"
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
`properties` lists the CSS properties to check. `allowValues` names values that are always permitted without a token reference. `path` is optional.
|
|
176
|
+
|
|
142
177
|
## Severity Levels
|
|
143
178
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
179
|
+
Severity ranks how urgent a finding is to fix. It never decides whether a
|
|
180
|
+
finding is real, and it never licenses leaving one unresolved. Whether an edit
|
|
181
|
+
is *blocked* is a separate axis: the edit hook gates on invariant rules that
|
|
182
|
+
declare `gating: true` (a binary, per-rule flag), not on severity.
|
|
183
|
+
|
|
184
|
+
| Severity | What it means |
|
|
185
|
+
|----------|---------------|
|
|
186
|
+
| `critical` | Security vulnerabilities, data-loss risks |
|
|
187
|
+
| `warning` | Architecture violations, tech debt, missing documentation |
|
|
188
|
+
| `suggestion` | Smaller defects — naming, conventions, minor correctness |
|
|
189
|
+
|
|
190
|
+
> **Severity ranks urgency, never whether a finding is real.** There is no
|
|
191
|
+
> "noise" tier — every finding is a defect to resolve. A finding that does not
|
|
192
|
+
> block the edit still fails the review unless it is fixed, or the rule that
|
|
193
|
+
> produces it is edited in `.codeauditor.json`. There is no "waive" — a finding
|
|
194
|
+
> leaves the queue only by being resolved or by changing the rule that fires it.
|
|
195
|
+
> Documentation findings are not stylistic: missing
|
|
196
|
+
> JSDoc is a maintainability defect, not a nicety.
|
|
149
197
|
|
|
150
198
|
## Validation
|
|
151
199
|
|
|
@@ -153,7 +201,7 @@ Rules are validated against `invariant-rules.schema.json` on startup. Common err
|
|
|
153
201
|
|
|
154
202
|
- **Missing required field**: each kind has required fields (e.g., `import-ban` requires `module`)
|
|
155
203
|
- **Invalid severity**: must be one of `critical`, `warning`, `suggestion`
|
|
156
|
-
- **Invalid kind**: must be one of the
|
|
204
|
+
- **Invalid kind**: must be one of the seven kinds above
|
|
157
205
|
- **Both allowFrom and denyFrom**: `call-constraint` requires exactly one
|
|
158
206
|
- **Empty pattern**: `ast-pattern` requires a non-empty `pattern` string
|
|
159
207
|
- **Invalid language**: `ast-pattern` language must be `typescript`, `javascript`, or `go`
|
|
@@ -38,12 +38,25 @@ Run an audit before declaring a task complete:
|
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
code-audit audit --path . # Full audit
|
|
41
|
-
code-audit changed --json
|
|
41
|
+
code-audit changed --json # Diff-scoped audit (hook contract)
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
Use `code-audit changed` after edits to confirm you haven't introduced violations. If the hook is active it already runs `code-audit changed
|
|
44
|
+
Use `code-audit changed` after edits to confirm you haven't introduced violations. If the hook is active it already runs `code-audit changed` automatically on Write/Edit — pay attention to its output.
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
**Every finding is a defect to resolve, not a suggestion to weigh.** After a full audit, work the violations in severity order — criticals first, then warnings, then suggestions — and fix them all. Severity ranks urgency, never whether a finding is real; there is no "noise" tier. Documentation findings (missing JSDoc) are maintainability defects, not stylistic niceties. If you choose not to fix one, record why before moving on — never silently dismiss it.
|
|
47
|
+
|
|
48
|
+
Expected output: JSON violation list (with `--json`) or colored terminal summary. The full `audit` command exits non-zero when violations at or above `--fail-on` severity exist; the diff-scoped `changed` hook gates on per-rule `gating: true` flags, not severity.
|
|
49
|
+
|
|
50
|
+
### `code-audit next-file` — fix violations one file at a time
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
code-audit next-file --path . # Highest-priority file + all its findings
|
|
54
|
+
code-audit next-file --path . --json # Machine-readable
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This is the refactoring loop. `next-file` audits the project and returns the single highest-priority file — ranked by highest-severity finding, then total finding count — with every finding on it, ordered critical → warning → suggestion. Fix that file, then run it again: a still-broken file comes back, otherwise the next-worst file surfaces. `{done:true}` means the tree is clean.
|
|
58
|
+
|
|
59
|
+
There is **no skip or decline affordance**. A finding leaves the queue only by being fixed, or by editing the rule that produces it in `.codeauditor.json` (your rules editor). If a rule keeps firing on something you judge correct, change the rule — never work around it.
|
|
47
60
|
|
|
48
61
|
### `code-audit config` — know the project's laws
|
|
49
62
|
|
|
@@ -77,20 +90,6 @@ A **built-in** `scripts-and-tests` profile ships with every install — it exclu
|
|
|
77
90
|
|
|
78
91
|
Invariant violations are **immune** to path profile gate exclusion — invariants enforce declared laws and always block.
|
|
79
92
|
|
|
80
|
-
### `code-audit tasks` — queue remediation work
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
code-audit tasks list # List all tasks
|
|
84
|
-
code-audit tasks create --title "Fix SQL injection" --priority high
|
|
85
|
-
code-audit tasks get <taskId> # Get task details
|
|
86
|
-
code-audit tasks update <taskId> --status in_progress
|
|
87
|
-
code-audit tasks complete <taskId> # Mark task done
|
|
88
|
-
code-audit tasks delete <taskId> # Delete a task
|
|
89
|
-
code-audit tasks from-audit # Create tasks from audit violations
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
Use `tasks from-audit` to convert audit violations into a tracked task list. This lets you triage findings: fix criticals now, file warnings for later, dismiss suggestions. Tasks carry fingerprints so duplicates are automatically deduplicated across audit runs.
|
|
93
|
-
|
|
94
93
|
### `code-audit index` — refresh the index after structural changes
|
|
95
94
|
|
|
96
95
|
```bash
|
|
@@ -139,7 +138,7 @@ code-audit conventions propose --json # JSON proposal array
|
|
|
139
138
|
|
|
140
139
|
**Usage:** Run a full audit or `code-audit index sync` to mine conventions from the codebase index. Then `code-audit conventions list` to see what was found, and `code-audit conventions propose` to get the rules. Paste the proposals into the `rules` array in `.codeauditor.json`.
|
|
141
140
|
|
|
142
|
-
|
|
141
|
+
Convention violations ship at `suggestion` severity by default. Severity ranks how a finding blocks the edit gate, not whether it matters — resolve suggestions the same way you resolve warnings, and promote them with `severityOverrides` if your team wants them to block edits too.
|
|
143
142
|
|
|
144
143
|
### `code-audit hotspots` — identify churn-prone code
|
|
145
144
|
|
|
@@ -181,14 +180,14 @@ When an edit hook blocks your edit with a violation message:
|
|
|
181
180
|
1. **Read the violation** — it includes the invariant rule's `message` field explaining *why* the edit was blocked
|
|
182
181
|
2. **Fix the violation** — change your approach to comply with the invariant
|
|
183
182
|
3. **Do NOT retry the same edit** — the hook will block it again
|
|
184
|
-
4. The hook runs `code-audit changed
|
|
183
|
+
4. The hook runs `code-audit changed`, and its gate is binary and per-rule: an invariant rule blocks the edit only if it declares `gating: true` (regardless of severity). Warnings and suggestions are still violations and must be fixed — they pass the gate, they are not resolved.
|
|
185
184
|
|
|
186
185
|
The hook auto-installs the package via npx on first use — no manual npm step needed. If the hook reports `[code-auditor] code-audit could not run`, the npx auto-install failed (network, unsupported platform). The agent should try again; if it persists, `npm install code-auditor-mcp` is the manual fix.
|
|
187
186
|
|
|
188
187
|
## Host-specific notes
|
|
189
188
|
|
|
190
|
-
- **Claude Code**: This skill is bundled in the `code-auditor` plugin (`claude plugin install code-auditor`). The plugin also ships a `PostToolUse` hook on `Write|Edit` that runs `code-audit changed
|
|
191
|
-
- **Cursor**: Skill install via `code-audit install --agent cursor`. Cursor's `afterFileEdit` hook
|
|
189
|
+
- **Claude Code**: This skill is bundled in the `code-auditor` plugin (`claude plugin install code-auditor`). The plugin also ships a `PostToolUse` hook on `Write|Edit` that runs `code-audit changed` automatically — the hook feedback section above describes that behavior. The MCP server is available as `mcp__code-auditor__*` tools for shell-less use.
|
|
190
|
+
- **Cursor**: Skill install via `code-audit install --agent cursor`. Cursor's `afterFileEdit` hook fires after the edit and cannot block retroactively, so violations are reported through the strongest available feedback channel — fix them even though the edit already landed.
|
|
192
191
|
- **Codex**: Skill install via `code-audit install --agent codex`. Codex's `PostToolUse` hook provides blocking feedback via exit code 2, replacing the tool result with violation messages.
|
|
193
192
|
- **Gemini CLI**: Skill install only (`code-audit install --agent gemini`). No hook system exists; MCP covers shell-less use.
|
|
194
193
|
- **Other SKILL.md-compliant tools**: Install via `code-audit install --agent agents`. The skill teaches the `code-audit` CLI, which is identical everywhere. The MCP server is the shell-less side door.
|
|
@@ -201,11 +200,11 @@ The hook auto-installs the package via npx on first use — no manual npm step n
|
|
|
201
200
|
| Find by import | `code-audit search "dep:<module>"` |
|
|
202
201
|
| Complex functions | `code-audit search "lang:go complexity:>10"` |
|
|
203
202
|
| Look up symbol | `code-audit search --definition "<name>"` |
|
|
204
|
-
| Diff-scoped audit | `code-audit changed --json
|
|
203
|
+
| Diff-scoped audit | `code-audit changed --json` |
|
|
205
204
|
| List invariant rules | `code-audit config rules-list` |
|
|
206
205
|
| Inspect path profiles | `code-audit config profiles` |
|
|
207
206
|
| Resolve file profiles | `code-audit config profiles --file <path>` |
|
|
208
|
-
|
|
|
207
|
+
| Next file to fix | `code-audit next-file` |
|
|
209
208
|
| Sync index | `code-audit index sync --path .` |
|
|
210
209
|
| Codebase map | `code-audit map -p .` |
|
|
211
210
|
| Mine conventions | `code-audit conventions list` |
|