semantic-complexity 0.0.7-741984fb → 0.0.15-f5745e88

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 (163) hide show
  1. package/dist/__tests__/analyzers.test.d.ts +5 -0
  2. package/dist/__tests__/analyzers.test.d.ts.map +1 -0
  3. package/dist/__tests__/analyzers.test.js +357 -0
  4. package/dist/__tests__/analyzers.test.js.map +1 -0
  5. package/dist/__tests__/gate.test.d.ts +5 -0
  6. package/dist/__tests__/gate.test.d.ts.map +1 -0
  7. package/dist/__tests__/gate.test.js +140 -0
  8. package/dist/__tests__/gate.test.js.map +1 -0
  9. package/dist/analyzers/bread.d.ts +63 -0
  10. package/dist/analyzers/bread.d.ts.map +1 -0
  11. package/dist/analyzers/bread.js +415 -0
  12. package/dist/analyzers/bread.js.map +1 -0
  13. package/dist/analyzers/cheese.d.ts +111 -0
  14. package/dist/analyzers/cheese.d.ts.map +1 -0
  15. package/dist/analyzers/cheese.js +881 -0
  16. package/dist/analyzers/cheese.js.map +1 -0
  17. package/dist/analyzers/ham.d.ts +33 -0
  18. package/dist/analyzers/ham.d.ts.map +1 -0
  19. package/dist/analyzers/ham.js +264 -0
  20. package/dist/analyzers/ham.js.map +1 -0
  21. package/dist/analyzers/index.d.ts +7 -0
  22. package/dist/analyzers/index.d.ts.map +1 -0
  23. package/dist/analyzers/index.js +7 -0
  24. package/dist/analyzers/index.js.map +1 -0
  25. package/dist/budget/index.d.ts +50 -0
  26. package/dist/budget/index.d.ts.map +1 -0
  27. package/dist/budget/index.js +138 -0
  28. package/dist/budget/index.js.map +1 -0
  29. package/dist/cli/index.d.ts +6 -0
  30. package/dist/cli/index.d.ts.map +1 -0
  31. package/dist/cli/index.js +103 -0
  32. package/dist/cli/index.js.map +1 -0
  33. package/dist/gate/index.d.ts +31 -0
  34. package/dist/gate/index.d.ts.map +1 -0
  35. package/dist/gate/index.js +117 -0
  36. package/dist/gate/index.js.map +1 -0
  37. package/dist/gate/waiver.d.ts +83 -0
  38. package/dist/gate/waiver.d.ts.map +1 -0
  39. package/dist/gate/waiver.js +425 -0
  40. package/dist/gate/waiver.js.map +1 -0
  41. package/dist/index.d.ts +8 -34
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +8 -49
  44. package/dist/index.js.map +1 -1
  45. package/dist/mcp/index.d.ts +5 -0
  46. package/dist/mcp/index.d.ts.map +1 -0
  47. package/dist/mcp/index.js +351 -0
  48. package/dist/mcp/index.js.map +1 -0
  49. package/dist/recommend/index.d.ts +32 -0
  50. package/dist/recommend/index.d.ts.map +1 -0
  51. package/dist/recommend/index.js +169 -0
  52. package/dist/recommend/index.js.map +1 -0
  53. package/dist/simplex/index.d.ts +26 -0
  54. package/dist/simplex/index.d.ts.map +1 -0
  55. package/dist/simplex/index.js +100 -0
  56. package/dist/simplex/index.js.map +1 -0
  57. package/dist/types/index.d.ts +39 -0
  58. package/dist/types/index.d.ts.map +1 -0
  59. package/dist/types/index.js +5 -0
  60. package/dist/types/index.js.map +1 -0
  61. package/package.json +27 -52
  62. package/LICENSE +0 -21
  63. package/README.md +0 -72
  64. package/dist/ast/index.d.ts +0 -2
  65. package/dist/ast/index.d.ts.map +0 -1
  66. package/dist/ast/index.js +0 -2
  67. package/dist/ast/index.js.map +0 -1
  68. package/dist/ast/parser.d.ts +0 -27
  69. package/dist/ast/parser.d.ts.map +0 -1
  70. package/dist/ast/parser.js +0 -273
  71. package/dist/ast/parser.js.map +0 -1
  72. package/dist/canonical/convergence.d.ts +0 -56
  73. package/dist/canonical/convergence.d.ts.map +0 -1
  74. package/dist/canonical/convergence.js +0 -149
  75. package/dist/canonical/convergence.js.map +0 -1
  76. package/dist/canonical/index.d.ts +0 -11
  77. package/dist/canonical/index.d.ts.map +0 -1
  78. package/dist/canonical/index.js +0 -11
  79. package/dist/canonical/index.js.map +0 -1
  80. package/dist/canonical/profiles.d.ts +0 -40
  81. package/dist/canonical/profiles.d.ts.map +0 -1
  82. package/dist/canonical/profiles.js +0 -182
  83. package/dist/canonical/profiles.js.map +0 -1
  84. package/dist/canonical/types.d.ts +0 -124
  85. package/dist/canonical/types.d.ts.map +0 -1
  86. package/dist/canonical/types.js +0 -46
  87. package/dist/canonical/types.js.map +0 -1
  88. package/dist/compare.d.ts +0 -31
  89. package/dist/compare.d.ts.map +0 -1
  90. package/dist/compare.js +0 -354
  91. package/dist/compare.js.map +0 -1
  92. package/dist/context/index.d.ts +0 -41
  93. package/dist/context/index.d.ts.map +0 -1
  94. package/dist/context/index.js +0 -253
  95. package/dist/context/index.js.map +0 -1
  96. package/dist/gates/delta.d.ts +0 -45
  97. package/dist/gates/delta.d.ts.map +0 -1
  98. package/dist/gates/delta.js +0 -260
  99. package/dist/gates/delta.js.map +0 -1
  100. package/dist/gates/index.d.ts +0 -9
  101. package/dist/gates/index.d.ts.map +0 -1
  102. package/dist/gates/index.js +0 -9
  103. package/dist/gates/index.js.map +0 -1
  104. package/dist/gates/types.d.ts +0 -96
  105. package/dist/gates/types.d.ts.map +0 -1
  106. package/dist/gates/types.js +0 -59
  107. package/dist/gates/types.js.map +0 -1
  108. package/dist/graph/call.d.ts +0 -63
  109. package/dist/graph/call.d.ts.map +0 -1
  110. package/dist/graph/call.js +0 -240
  111. package/dist/graph/call.js.map +0 -1
  112. package/dist/graph/dependency.d.ts +0 -52
  113. package/dist/graph/dependency.d.ts.map +0 -1
  114. package/dist/graph/dependency.js +0 -296
  115. package/dist/graph/dependency.js.map +0 -1
  116. package/dist/graph/index.d.ts +0 -3
  117. package/dist/graph/index.d.ts.map +0 -1
  118. package/dist/graph/index.js +0 -3
  119. package/dist/graph/index.js.map +0 -1
  120. package/dist/metrics/cognitive.d.ts +0 -42
  121. package/dist/metrics/cognitive.d.ts.map +0 -1
  122. package/dist/metrics/cognitive.js +0 -204
  123. package/dist/metrics/cognitive.js.map +0 -1
  124. package/dist/metrics/cyclomatic.d.ts +0 -31
  125. package/dist/metrics/cyclomatic.d.ts.map +0 -1
  126. package/dist/metrics/cyclomatic.js +0 -121
  127. package/dist/metrics/cyclomatic.js.map +0 -1
  128. package/dist/metrics/dimensional.d.ts +0 -32
  129. package/dist/metrics/dimensional.d.ts.map +0 -1
  130. package/dist/metrics/dimensional.js +0 -560
  131. package/dist/metrics/dimensional.js.map +0 -1
  132. package/dist/metrics/index.d.ts +0 -26
  133. package/dist/metrics/index.d.ts.map +0 -1
  134. package/dist/metrics/index.js +0 -120
  135. package/dist/metrics/index.js.map +0 -1
  136. package/dist/metrics/meta.d.ts +0 -90
  137. package/dist/metrics/meta.d.ts.map +0 -1
  138. package/dist/metrics/meta.js +0 -144
  139. package/dist/metrics/meta.js.map +0 -1
  140. package/dist/tensor/canonical.d.ts +0 -53
  141. package/dist/tensor/canonical.d.ts.map +0 -1
  142. package/dist/tensor/canonical.js +0 -192
  143. package/dist/tensor/canonical.js.map +0 -1
  144. package/dist/tensor/index.d.ts +0 -22
  145. package/dist/tensor/index.d.ts.map +0 -1
  146. package/dist/tensor/index.js +0 -22
  147. package/dist/tensor/index.js.map +0 -1
  148. package/dist/tensor/matrix.d.ts +0 -62
  149. package/dist/tensor/matrix.d.ts.map +0 -1
  150. package/dist/tensor/matrix.js +0 -187
  151. package/dist/tensor/matrix.js.map +0 -1
  152. package/dist/tensor/scoring.d.ts +0 -82
  153. package/dist/tensor/scoring.d.ts.map +0 -1
  154. package/dist/tensor/scoring.js +0 -233
  155. package/dist/tensor/scoring.js.map +0 -1
  156. package/dist/tensor/types.d.ts +0 -186
  157. package/dist/tensor/types.d.ts.map +0 -1
  158. package/dist/tensor/types.js +0 -15
  159. package/dist/tensor/types.js.map +0 -1
  160. package/dist/types.d.ts +0 -341
  161. package/dist/types.d.ts.map +0 -1
  162. package/dist/types.js +0 -22
  163. package/dist/types.js.map +0 -1
@@ -0,0 +1,425 @@
1
+ /**
2
+ * Essential Complexity Waiver System
3
+ *
4
+ * 본질적 복잡도 면제 시스템:
5
+ * - __essential_complexity__ 파싱 (인라인)
6
+ * - .waiver.json 파일 지원 (외부)
7
+ * - ADR 존재 여부 검증
8
+ * - ComplexityContext (토대 정보) 생성
9
+ *
10
+ * 사용법:
11
+ * // 방법 1: 모듈에서 인라인 선언
12
+ * export const __essential_complexity__ = {
13
+ * adr: "docs/adr/003-inference-complexity.md",
14
+ * };
15
+ *
16
+ * // 방법 2: 프로젝트 루트에 .waiver.json 파일 생성
17
+ * // {
18
+ * // "version": "1.0",
19
+ * // "waivers": [
20
+ * // { "pattern": "src/crypto/*.ts", "adr": "ADR-007" }
21
+ * // ]
22
+ * // }
23
+ *
24
+ * // Gate에서 체크
25
+ * const waiver = checkWaiver(source, filePath);
26
+ * if (waiver.waived) {
27
+ * // 복잡도 검사 유예
28
+ * }
29
+ */
30
+ import * as ts from 'typescript';
31
+ import { existsSync, readFileSync } from 'fs';
32
+ import { join, dirname, relative } from 'path';
33
+ export const ESSENTIAL_COMPLEXITY_SIGNALS = {
34
+ math: [
35
+ [/np\.(linalg|fft|einsum)/, 'linear algebra / signal processing'],
36
+ [/torch\.(matmul|einsum|conv\dd)/, 'tensor operations'],
37
+ [/\b(gradient|jacobian|hessian)\b/i, 'calculus'],
38
+ [/\b(eigenvalue|eigenvector|svd)\b/i, 'matrix decomposition'],
39
+ [/tf\.(matmul|linalg|signal)/, 'TensorFlow ops'],
40
+ ],
41
+ algorithm: [
42
+ [/function\s+(\w+)\s*\([^)]*\)[^{]*\{[\s\S]*?\1\s*\(/, 'recursion'],
43
+ [/(memo|dp|cache)\[/, 'dynamic programming'],
44
+ [/(visited|seen)\s*=\s*(new\s+Set|{})/, 'graph traversal'],
45
+ [/\.sort\s*\(\s*\(.*\)\s*=>/, 'custom sorting'],
46
+ [/while\s*\([^)]*\)\s*\{[\s\S]*?(left|right|mid)/, 'binary search'],
47
+ ],
48
+ domain: [
49
+ [/(voxel|slice|volume|segmentation)/i, '3D imaging'],
50
+ [/(encrypt|decrypt|cipher|hash)/i, 'cryptography'],
51
+ [/(tokenize|parse|ast\.)/i, 'parsing/compilation'],
52
+ [/(patient|diagnosis|medical)/i, 'healthcare'],
53
+ [/(tensor|embedding|attention)/i, 'ML/deep learning'],
54
+ ],
55
+ };
56
+ // 복잡 도메인 라이브러리
57
+ export const COMPLEX_DOMAIN_LIBRARIES = new Set([
58
+ 'tensorflow',
59
+ '@tensorflow/tfjs',
60
+ 'torch',
61
+ 'onnxruntime',
62
+ 'crypto',
63
+ 'node:crypto',
64
+ 'd3',
65
+ 'three',
66
+ 'mathjs',
67
+ 'numeric',
68
+ 'ml-matrix',
69
+ ]);
70
+ // ============================================================
71
+ // __essential_complexity__ 파싱
72
+ // ============================================================
73
+ export function parseEssentialComplexity(source) {
74
+ let sourceFile;
75
+ try {
76
+ sourceFile = ts.createSourceFile('temp.ts', source, ts.ScriptTarget.Latest, true);
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ let config = null;
82
+ function visit(node) {
83
+ // export const __essential_complexity__ = { ... }
84
+ if (ts.isVariableStatement(node)) {
85
+ for (const decl of node.declarationList.declarations) {
86
+ if (ts.isIdentifier(decl.name) &&
87
+ decl.name.text === '__essential_complexity__' &&
88
+ decl.initializer &&
89
+ ts.isObjectLiteralExpression(decl.initializer)) {
90
+ config = parseConfigObject(decl.initializer);
91
+ return;
92
+ }
93
+ }
94
+ }
95
+ // const __essential_complexity__ = { ... } (without export)
96
+ if (ts.isVariableDeclaration(node)) {
97
+ if (ts.isIdentifier(node.name) &&
98
+ node.name.text === '__essential_complexity__' &&
99
+ node.initializer &&
100
+ ts.isObjectLiteralExpression(node.initializer)) {
101
+ config = parseConfigObject(node.initializer);
102
+ return;
103
+ }
104
+ }
105
+ ts.forEachChild(node, visit);
106
+ }
107
+ visit(sourceFile);
108
+ return config;
109
+ }
110
+ function parseConfigObject(obj) {
111
+ const config = {};
112
+ for (const prop of obj.properties) {
113
+ if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {
114
+ const key = prop.name.text;
115
+ if (key === 'adr' && ts.isStringLiteral(prop.initializer)) {
116
+ config.adr = prop.initializer.text;
117
+ }
118
+ else if (key === 'nesting' && ts.isNumericLiteral(prop.initializer)) {
119
+ config.nesting = Number(prop.initializer.text);
120
+ }
121
+ else if (key === 'concepts') {
122
+ if (ts.isNumericLiteral(prop.initializer)) {
123
+ config.conceptsTotal = Number(prop.initializer.text);
124
+ }
125
+ else if (ts.isObjectLiteralExpression(prop.initializer)) {
126
+ for (const inner of prop.initializer.properties) {
127
+ if (ts.isPropertyAssignment(inner) && ts.isIdentifier(inner.name)) {
128
+ if (inner.name.text === 'total' && ts.isNumericLiteral(inner.initializer)) {
129
+ config.conceptsTotal = Number(inner.initializer.text);
130
+ }
131
+ else if (inner.name.text === 'params' && ts.isNumericLiteral(inner.initializer)) {
132
+ config.conceptsParams = Number(inner.initializer.text);
133
+ }
134
+ }
135
+ }
136
+ }
137
+ }
138
+ }
139
+ }
140
+ return config;
141
+ }
142
+ // ============================================================
143
+ // 신호 탐지
144
+ // ============================================================
145
+ export function detectComplexitySignals(source) {
146
+ const signals = [];
147
+ const seen = new Set();
148
+ for (const [category, patterns] of Object.entries(ESSENTIAL_COMPLEXITY_SIGNALS)) {
149
+ for (const [pattern, description] of patterns) {
150
+ const patternKey = pattern.source;
151
+ if (seen.has(patternKey))
152
+ continue;
153
+ if (pattern.test(source)) {
154
+ signals.push({
155
+ category,
156
+ pattern: patternKey,
157
+ description,
158
+ });
159
+ seen.add(patternKey);
160
+ }
161
+ }
162
+ }
163
+ return signals;
164
+ }
165
+ export function detectComplexImports(source) {
166
+ let sourceFile;
167
+ try {
168
+ sourceFile = ts.createSourceFile('temp.ts', source, ts.ScriptTarget.Latest, true);
169
+ }
170
+ catch {
171
+ return [];
172
+ }
173
+ const imports = [];
174
+ function visit(node) {
175
+ if (ts.isImportDeclaration(node) && ts.isStringLiteral(node.moduleSpecifier)) {
176
+ const moduleName = node.moduleSpecifier.text;
177
+ const baseName = moduleName.split('/')[0];
178
+ if (COMPLEX_DOMAIN_LIBRARIES.has(moduleName) || COMPLEX_DOMAIN_LIBRARIES.has(baseName)) {
179
+ imports.push(moduleName);
180
+ }
181
+ }
182
+ ts.forEachChild(node, visit);
183
+ }
184
+ visit(sourceFile);
185
+ return [...new Set(imports)];
186
+ }
187
+ // ============================================================
188
+ // 질문 생성
189
+ // ============================================================
190
+ export function generateReviewQuestions(signals, imports) {
191
+ const questions = [];
192
+ for (const signal of signals) {
193
+ switch (signal.category) {
194
+ case 'math':
195
+ questions.push(`${signal.description} - 라이브러리 함수로 대체 가능?`);
196
+ break;
197
+ case 'algorithm':
198
+ questions.push(`${signal.description} - 표준 라이브러리/더 간단한 대안?`);
199
+ break;
200
+ case 'domain':
201
+ questions.push(`${signal.description} - 기존 프레임워크 컴포넌트 재사용 가능?`);
202
+ break;
203
+ }
204
+ }
205
+ if (imports.some((i) => i.includes('tensorflow') || i.includes('torch'))) {
206
+ questions.push('ML 파이프라인 - 고수준 API 사용 가능?');
207
+ }
208
+ if (signals.length === 0 && imports.length === 0) {
209
+ questions.push('복잡도 신호 없음 - 리팩토링으로 해결 가능?');
210
+ }
211
+ return questions;
212
+ }
213
+ // ============================================================
214
+ // 토대 정보 생성
215
+ // ============================================================
216
+ export function buildComplexityContext(source, metrics = {}) {
217
+ const signals = detectComplexitySignals(source);
218
+ const imports = detectComplexImports(source);
219
+ const questions = generateReviewQuestions(signals, imports);
220
+ return {
221
+ signals,
222
+ imports,
223
+ metrics,
224
+ questions,
225
+ };
226
+ }
227
+ // ============================================================
228
+ // Layer 1: 외부 .waiver.json 파일 파싱
229
+ // ============================================================
230
+ export function parseWaiverFile(waiverPath) {
231
+ try {
232
+ if (!existsSync(waiverPath)) {
233
+ return null;
234
+ }
235
+ const content = readFileSync(waiverPath, 'utf-8');
236
+ const data = JSON.parse(content);
237
+ // 기본 스키마 검증
238
+ if (!data.version || !Array.isArray(data.waivers)) {
239
+ return null;
240
+ }
241
+ // waivers 배열 파싱
242
+ const waivers = data.waivers.map((w) => ({
243
+ pattern: String(w.pattern || ''),
244
+ adr: String(w.adr || ''),
245
+ justification: w.justification ? String(w.justification) : undefined,
246
+ approvedAt: w.approved_at ? String(w.approved_at) : undefined,
247
+ expiresAt: w.expires_at === null ? null : (w.expires_at ? String(w.expires_at) : undefined),
248
+ approver: w.approver ? String(w.approver) : undefined,
249
+ }));
250
+ return {
251
+ $schema: data.$schema,
252
+ version: data.version,
253
+ waivers,
254
+ };
255
+ }
256
+ catch {
257
+ return null;
258
+ }
259
+ }
260
+ // ============================================================
261
+ // Layer 2: .waiver.json 파일 탐색
262
+ // ============================================================
263
+ export function findWaiverFile(filePath, projectRoot) {
264
+ const normalizedPath = filePath.replace(/\\/g, '/');
265
+ const normalizedRoot = projectRoot.replace(/\\/g, '/');
266
+ let currentDir = dirname(normalizedPath);
267
+ while (currentDir.startsWith(normalizedRoot) || currentDir === normalizedRoot) {
268
+ const waiverPath = join(currentDir, '.waiver.json');
269
+ if (existsSync(waiverPath)) {
270
+ return waiverPath;
271
+ }
272
+ const parentDir = dirname(currentDir);
273
+ if (parentDir === currentDir) {
274
+ break; // 루트 도달
275
+ }
276
+ currentDir = parentDir;
277
+ }
278
+ return null;
279
+ }
280
+ // ============================================================
281
+ // Layer 3: 파일 패턴 매칭
282
+ // ============================================================
283
+ export function matchFilePattern(filePath, pattern) {
284
+ // 경로 정규화 (Windows 백슬래시 -> 슬래시)
285
+ const normalizedPath = filePath.replace(/\\/g, '/');
286
+ const normalizedPattern = pattern.replace(/\\/g, '/');
287
+ // 글롭 패턴을 정규식으로 변환
288
+ const regexPattern = normalizedPattern
289
+ .replace(/\./g, '\\.')
290
+ .replace(/\*\*/g, '<<<DOUBLE_STAR>>>')
291
+ .replace(/\*/g, '[^/]*')
292
+ .replace(/<<<DOUBLE_STAR>>>/g, '.*')
293
+ .replace(/\?/g, '.');
294
+ const regex = new RegExp(`^${regexPattern}$`);
295
+ return regex.test(normalizedPath);
296
+ }
297
+ // ============================================================
298
+ // Layer 4: 외부 waiver 만료 체크
299
+ // ============================================================
300
+ export function isWaiverExpired(entry) {
301
+ if (!entry.expiresAt) {
302
+ return false; // null 또는 undefined = 영구
303
+ }
304
+ try {
305
+ const expiryDate = new Date(entry.expiresAt);
306
+ const today = new Date();
307
+ today.setHours(0, 0, 0, 0);
308
+ return today > expiryDate;
309
+ }
310
+ catch {
311
+ return false; // 파싱 실패 시 만료되지 않은 것으로 처리
312
+ }
313
+ }
314
+ // ============================================================
315
+ // Layer 5: 외부 waiver 체크
316
+ // ============================================================
317
+ export function checkExternalWaiver(filePath, projectRoot) {
318
+ const waiverFilePath = findWaiverFile(filePath, projectRoot);
319
+ if (!waiverFilePath) {
320
+ return { waived: false, reason: '.waiver.json 파일 없음' };
321
+ }
322
+ const waiverFile = parseWaiverFile(waiverFilePath);
323
+ if (!waiverFile) {
324
+ return { waived: false, reason: '.waiver.json 파싱 실패' };
325
+ }
326
+ // 상대 경로로 변환하여 패턴 매칭
327
+ const relativePath = relative(projectRoot, filePath).replace(/\\/g, '/');
328
+ for (const entry of waiverFile.waivers) {
329
+ if (matchFilePattern(relativePath, entry.pattern)) {
330
+ // 만료 체크
331
+ if (isWaiverExpired(entry)) {
332
+ return {
333
+ waived: false,
334
+ reason: `waiver 만료됨: ${entry.expiresAt}`,
335
+ adrPath: entry.adr,
336
+ externalWaiver: entry,
337
+ };
338
+ }
339
+ return {
340
+ waived: true,
341
+ reason: entry.justification,
342
+ adrPath: entry.adr,
343
+ externalWaiver: entry,
344
+ };
345
+ }
346
+ }
347
+ return { waived: false, reason: '매칭되는 waiver 패턴 없음' };
348
+ }
349
+ // ============================================================
350
+ // Layer 6: 통합 Waiver 체크 (외부 우선, 인라인 폴백)
351
+ // ============================================================
352
+ export function checkWaiver(source, filePath, projectRoot) {
353
+ // 1. 외부 waiver 체크 (우선순위 높음)
354
+ if (filePath && projectRoot) {
355
+ const externalResult = checkExternalWaiver(filePath, projectRoot);
356
+ if (externalResult.waived || externalResult.externalWaiver) {
357
+ return externalResult;
358
+ }
359
+ }
360
+ // 2. 인라인 waiver 체크 (폴백)
361
+ return checkInlineWaiver(source, filePath, projectRoot);
362
+ }
363
+ // ============================================================
364
+ // 인라인 Waiver 체크 (기존 로직)
365
+ // ============================================================
366
+ export function checkInlineWaiver(source, filePath, projectRoot) {
367
+ const config = parseEssentialComplexity(source);
368
+ if (!config) {
369
+ return { waived: false, reason: '__essential_complexity__ 없음' };
370
+ }
371
+ if (!config.adr) {
372
+ return {
373
+ waived: false,
374
+ reason: 'ADR 경로 없음',
375
+ config,
376
+ };
377
+ }
378
+ // ADR 경로 해석
379
+ let adrFullPath;
380
+ if (projectRoot) {
381
+ adrFullPath = join(projectRoot, config.adr);
382
+ }
383
+ else if (filePath) {
384
+ adrFullPath = join(dirname(filePath), config.adr);
385
+ }
386
+ else {
387
+ adrFullPath = config.adr;
388
+ }
389
+ // ADR 존재 여부 체크
390
+ if (!existsSync(adrFullPath)) {
391
+ return {
392
+ waived: false,
393
+ reason: `ADR 파일 없음: ${config.adr}`,
394
+ adrPath: config.adr,
395
+ config,
396
+ };
397
+ }
398
+ // ADR 최소 내용 체크
399
+ try {
400
+ const adrContent = readFileSync(adrFullPath, 'utf-8');
401
+ if (adrContent.trim().length < 50) {
402
+ return {
403
+ waived: false,
404
+ reason: 'ADR 파일이 너무 짧음 (< 50자)',
405
+ adrPath: config.adr,
406
+ config,
407
+ };
408
+ }
409
+ }
410
+ catch {
411
+ return {
412
+ waived: false,
413
+ reason: `ADR 파일 읽기 실패: ${config.adr}`,
414
+ adrPath: config.adr,
415
+ config,
416
+ };
417
+ }
418
+ // 유예 승인
419
+ return {
420
+ waived: true,
421
+ adrPath: config.adr,
422
+ config,
423
+ };
424
+ }
425
+ //# sourceMappingURL=waiver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"waiver.js","sourceRoot":"","sources":["../../src/gate/waiver.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,37 +1,11 @@
1
1
  /**
2
- * semantic-complexity - Multi-dimensional code complexity analyzer (v0.0.3)
3
- *
4
- * Core 엔진 모듈
5
- *
6
- * v0.0.3 Features:
7
- * - Second-order tensor: score = v^T M v + <v, w>
8
- * - ε-regularization for convergence
9
- * - Module-type canonical profiles
10
- * - Hodge decomposition of complexity space
2
+ * semantic-complexity
3
+ * Multi-dimensional code complexity analyzer (Bread-Cheese-Ham sandwich model)
11
4
  */
12
- export type { SourceLocation, FunctionInfo, ParameterInfo, ComplexityResult, ComplexityDetail, ComplexityContributor, FileAnalysisResult, ImportInfo, ImportSpecifier, ExportInfo, DependencyNode, CallNode, CallEdge, AnalysisContext, ProjectInfo, AnalysisOptions, DimensionalComplexity, DimensionalWeights, ExtendedComplexityResult, } from './types.js';
13
- export { DEFAULT_OPTIONS } from './types.js';
14
- export { parseSourceFile, getSourceLocation, extractFunctionInfo, extractAllFunctions, extractImports, extractExports, } from './ast/index.js';
15
- export { calculateCyclomaticComplexity, calculateCognitiveComplexity, analyzeFunction, analyzeFunctionExtended, analyzeFile, getComplexityGrade, generateComplexitySummary, } from './metrics/index.js';
16
- export { DependencyGraph, CallGraph, exportToDot, exportToMermaid, } from './graph/index.js';
17
- export { ContextCollector, quickAnalyze } from './context/index.js';
18
- export type { ModuleType, ModuleTypeInfo, MetaDimensions, MetaWeights, Range, CanonicalLevel, CanonicalProfile, Vector3D, Deviation, ConvergenceResult, Snapshot, ConvergenceStatus, ConvergenceAdvice, } from './canonical/index.js';
19
- export { MODULE_TYPE_INFO, DEFAULT_META_WEIGHTS, LEVEL_RANGES, CANONICAL_PROFILES, levelToRange, levelToMidpoint, getIdealMetaDimensions, getProfile, isWithinCanonicalRange, isCanonical, inferModuleType, calculateDeviation, calculateConvergenceVector, calculateConvergenceRate, analyzeConvergence, analyzeAllModuleTypes, findBestFitModuleType, getConvergenceStatus, generateConvergenceAdvice, } from './canonical/index.js';
20
- export type { GateType, GateInfo, ViolationSeverity, Violation, DeltaAnalysis, DeltaThresholds, GateDecision, GateResult, GatePipelineResult, } from './gates/index.js';
21
- export { GATE_RESPONSIBILITIES, GATE_INFO, DEFAULT_DELTA_THRESHOLDS, calculateDelta, calculateDeltaPercent, detectViolations, analyzeDelta, checkGate, runGatePipeline, createSnapshot, } from './gates/index.js';
22
- export { calculateSecurity, calculateContext, calculateBehavior, toMetaDimensions, calculateMetaWeightedSum, normalizeMetaDimensions, metaDistance, addMetaDimensions, subtractMetaDimensions, ZERO_META, } from './metrics/meta.js';
23
- export type { Vector5D, ModuleType as TensorModuleType, Matrix5x5, TensorScore, ConvergenceStatus as TensorConvergenceStatus, ConvergenceAnalysis, HodgeDecomposition, ComplexityLevel, DeviationResult, RefactoringRecommendation, CanonicalBounds, } from './tensor/index.js';
24
- export { IDX_CONTROL, IDX_NESTING, IDX_STATE, IDX_ASYNC, IDX_COUPLING, DEFAULT_MATRIX, MODULE_MATRICES, DEFAULT_WEIGHTS, CANONICAL_5D_PROFILES, } from './tensor/index.js';
25
- export { getInteractionMatrix, vectorToArray, arrayToVector, zeroVector, vectorNorm, dotProduct, quadraticForm, isPositiveSemidefinite, euclideanDistance, mahalanobisDistance, } from './tensor/index.js';
26
- export { calculateTensorScore, calculateRawSum, calculateRawSumThreshold, convergenceScore, estimateLipschitz, analyzeConvergence as analyzeTensorConvergence, hodgeDecomposition, classifyComplexityLevel, recommendRefactoring, isSafe, needsReview, isViolation, } from './tensor/index.js';
27
- export { getCanonicalProfile, getProfileCentroid, isWithinCanonicalBounds, getViolationDimensions, isOrphan, analyzeDeviation, findBestModuleType as findBestTensorModuleType, } from './tensor/index.js';
28
- import type { FileAnalysisResult } from './types.js';
29
- /**
30
- * 파일 경로로 복잡도 분석
31
- */
32
- export declare function analyzeFilePath(filePath: string): FileAnalysisResult;
33
- /**
34
- * 소스 코드 문자열로 복잡도 분석
35
- */
36
- export declare function analyzeSource(source: string, fileName?: string): FileAnalysisResult;
5
+ export * from './types/index.js';
6
+ export * from './analyzers/index.js';
7
+ export * from './simplex/index.js';
8
+ export * from './gate/index.js';
9
+ export * from './budget/index.js';
10
+ export * from './recommend/index.js';
37
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,52 +1,11 @@
1
1
  /**
2
- * semantic-complexity - Multi-dimensional code complexity analyzer (v0.0.3)
3
- *
4
- * Core 엔진 모듈
5
- *
6
- * v0.0.3 Features:
7
- * - Second-order tensor: score = v^T M v + <v, w>
8
- * - ε-regularization for convergence
9
- * - Module-type canonical profiles
10
- * - Hodge decomposition of complexity space
2
+ * semantic-complexity
3
+ * Multi-dimensional code complexity analyzer (Bread-Cheese-Ham sandwich model)
11
4
  */
12
- export { DEFAULT_OPTIONS } from './types.js';
13
- // AST
14
- export { parseSourceFile, getSourceLocation, extractFunctionInfo, extractAllFunctions, extractImports, extractExports, } from './ast/index.js';
15
- // Metrics
16
- export { calculateCyclomaticComplexity, calculateCognitiveComplexity, analyzeFunction, analyzeFunctionExtended, analyzeFile, getComplexityGrade, generateComplexitySummary, } from './metrics/index.js';
17
- // Graph
18
- export { DependencyGraph, CallGraph, exportToDot, exportToMermaid, } from './graph/index.js';
19
- // Context
20
- export { ContextCollector, quickAnalyze } from './context/index.js';
21
- export { MODULE_TYPE_INFO, DEFAULT_META_WEIGHTS, LEVEL_RANGES, CANONICAL_PROFILES, levelToRange, levelToMidpoint, getIdealMetaDimensions, getProfile, isWithinCanonicalRange, isCanonical, inferModuleType, calculateDeviation, calculateConvergenceVector, calculateConvergenceRate, analyzeConvergence, analyzeAllModuleTypes, findBestFitModuleType, getConvergenceStatus, generateConvergenceAdvice, } from './canonical/index.js';
22
- export { GATE_RESPONSIBILITIES, GATE_INFO, DEFAULT_DELTA_THRESHOLDS, calculateDelta, calculateDeltaPercent, detectViolations, analyzeDelta, checkGate, runGatePipeline, createSnapshot, } from './gates/index.js';
23
- // Meta Dimensions (v0.0.2)
24
- export { calculateSecurity, calculateContext, calculateBehavior, toMetaDimensions, calculateMetaWeightedSum, normalizeMetaDimensions, metaDistance, addMetaDimensions, subtractMetaDimensions, ZERO_META, } from './metrics/meta.js';
25
- // Tensor constants
26
- export { IDX_CONTROL, IDX_NESTING, IDX_STATE, IDX_ASYNC, IDX_COUPLING, DEFAULT_MATRIX, MODULE_MATRICES, DEFAULT_WEIGHTS, CANONICAL_5D_PROFILES, } from './tensor/index.js';
27
- // Tensor matrix operations
28
- export { getInteractionMatrix, vectorToArray, arrayToVector, zeroVector, vectorNorm, dotProduct, quadraticForm, isPositiveSemidefinite, euclideanDistance, mahalanobisDistance, } from './tensor/index.js';
29
- // Tensor scoring
30
- export { calculateTensorScore, calculateRawSum, calculateRawSumThreshold, convergenceScore, estimateLipschitz, analyzeConvergence as analyzeTensorConvergence, hodgeDecomposition, classifyComplexityLevel, recommendRefactoring, isSafe, needsReview, isViolation, } from './tensor/index.js';
31
- // Tensor canonical profiles
32
- export { getCanonicalProfile, getProfileCentroid, isWithinCanonicalBounds, getViolationDimensions, isOrphan, analyzeDeviation, findBestModuleType as findBestTensorModuleType, } from './tensor/index.js';
33
- // ─── Convenience Functions ───────────────────────────────────────
34
- import * as fs from 'node:fs';
35
- import { parseSourceFile } from './ast/index.js';
36
- import { analyzeFile } from './metrics/index.js';
37
- /**
38
- * 파일 경로로 복잡도 분석
39
- */
40
- export function analyzeFilePath(filePath) {
41
- const content = fs.readFileSync(filePath, 'utf-8');
42
- const sourceFile = parseSourceFile(filePath, content);
43
- return analyzeFile(sourceFile);
44
- }
45
- /**
46
- * 소스 코드 문자열로 복잡도 분석
47
- */
48
- export function analyzeSource(source, fileName = 'input.ts') {
49
- const sourceFile = parseSourceFile(fileName, source);
50
- return analyzeFile(sourceFile);
51
- }
5
+ export * from './types/index.js';
6
+ export * from './analyzers/index.js';
7
+ export * from './simplex/index.js';
8
+ export * from './gate/index.js';
9
+ export * from './budget/index.js';
10
+ export * from './recommend/index.js';
52
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * semantic-complexity MCP Server
3
+ */
4
+ export declare function main(): Promise<void>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+XH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1C"}