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
@@ -1,273 +0,0 @@
1
- import ts from 'typescript';
2
- /**
3
- * 소스 파일을 파싱하여 AST를 생성
4
- */
5
- export function parseSourceFile(filePath, content) {
6
- return ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, filePath.endsWith('.tsx') || filePath.endsWith('.jsx')
7
- ? ts.ScriptKind.TSX
8
- : ts.ScriptKind.TS);
9
- }
10
- /**
11
- * AST 노드에서 소스 위치 정보 추출
12
- */
13
- export function getSourceLocation(node, sourceFile) {
14
- const start = sourceFile.getLineAndCharacterOfPosition(node.getStart());
15
- const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
16
- return {
17
- filePath: sourceFile.fileName,
18
- startLine: start.line + 1,
19
- startColumn: start.character + 1,
20
- endLine: end.line + 1,
21
- endColumn: end.character + 1,
22
- };
23
- }
24
- /**
25
- * 함수 노드에서 함수 정보 추출
26
- */
27
- export function extractFunctionInfo(node, sourceFile, className) {
28
- if (ts.isFunctionDeclaration(node)) {
29
- return {
30
- name: node.name?.getText(sourceFile) ?? '<anonymous>',
31
- kind: 'function',
32
- location: getSourceLocation(node, sourceFile),
33
- isAsync: hasModifier(node, ts.SyntaxKind.AsyncKeyword),
34
- isGenerator: !!node.asteriskToken,
35
- isExported: hasModifier(node, ts.SyntaxKind.ExportKeyword),
36
- parameters: extractParameters(node.parameters, sourceFile),
37
- returnType: node.type?.getText(sourceFile),
38
- };
39
- }
40
- if (ts.isMethodDeclaration(node)) {
41
- return {
42
- name: node.name.getText(sourceFile),
43
- kind: 'method',
44
- location: getSourceLocation(node, sourceFile),
45
- isAsync: hasModifier(node, ts.SyntaxKind.AsyncKeyword),
46
- isGenerator: !!node.asteriskToken,
47
- isExported: false,
48
- parameters: extractParameters(node.parameters, sourceFile),
49
- returnType: node.type?.getText(sourceFile),
50
- className,
51
- };
52
- }
53
- if (ts.isArrowFunction(node) || ts.isFunctionExpression(node)) {
54
- const parent = node.parent;
55
- let name = '<anonymous>';
56
- if (ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name)) {
57
- name = parent.name.getText(sourceFile);
58
- }
59
- else if (ts.isPropertyAssignment(parent)) {
60
- name = parent.name.getText(sourceFile);
61
- }
62
- return {
63
- name,
64
- kind: 'arrow',
65
- location: getSourceLocation(node, sourceFile),
66
- isAsync: hasModifier(node, ts.SyntaxKind.AsyncKeyword),
67
- isGenerator: ts.isFunctionExpression(node) && !!node.asteriskToken,
68
- isExported: false,
69
- parameters: extractParameters(node.parameters, sourceFile),
70
- returnType: node.type?.getText(sourceFile),
71
- className,
72
- };
73
- }
74
- if (ts.isGetAccessor(node)) {
75
- return {
76
- name: node.name.getText(sourceFile),
77
- kind: 'getter',
78
- location: getSourceLocation(node, sourceFile),
79
- isAsync: false,
80
- isGenerator: false,
81
- isExported: false,
82
- parameters: [],
83
- returnType: node.type?.getText(sourceFile),
84
- className,
85
- };
86
- }
87
- if (ts.isSetAccessor(node)) {
88
- return {
89
- name: node.name.getText(sourceFile),
90
- kind: 'setter',
91
- location: getSourceLocation(node, sourceFile),
92
- isAsync: false,
93
- isGenerator: false,
94
- isExported: false,
95
- parameters: extractParameters(node.parameters, sourceFile),
96
- className,
97
- };
98
- }
99
- if (ts.isConstructorDeclaration(node)) {
100
- return {
101
- name: 'constructor',
102
- kind: 'constructor',
103
- location: getSourceLocation(node, sourceFile),
104
- isAsync: false,
105
- isGenerator: false,
106
- isExported: false,
107
- parameters: extractParameters(node.parameters, sourceFile),
108
- className,
109
- };
110
- }
111
- return null;
112
- }
113
- /**
114
- * 파라미터 정보 추출
115
- */
116
- function extractParameters(params, sourceFile) {
117
- return params.map((param) => ({
118
- name: param.name.getText(sourceFile),
119
- type: param.type?.getText(sourceFile),
120
- isOptional: !!param.questionToken,
121
- isRest: !!param.dotDotDotToken,
122
- hasDefault: !!param.initializer,
123
- }));
124
- }
125
- /**
126
- * 모디파이어 확인
127
- */
128
- function hasModifier(node, kind) {
129
- const modifiers = ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined;
130
- return modifiers?.some((mod) => mod.kind === kind) ?? false;
131
- }
132
- /**
133
- * 모든 함수 노드 추출
134
- */
135
- export function extractAllFunctions(sourceFile) {
136
- const functions = [];
137
- function visit(node, className) {
138
- // 클래스 내부 순회
139
- if (ts.isClassDeclaration(node) || ts.isClassExpression(node)) {
140
- const name = node.name?.getText(sourceFile) ?? '<anonymous>';
141
- node.members.forEach((member) => visit(member, name));
142
- return;
143
- }
144
- // 함수 정보 추출
145
- const funcInfo = extractFunctionInfo(node, sourceFile, className);
146
- if (funcInfo) {
147
- functions.push(funcInfo);
148
- }
149
- // 자식 노드 순회 (함수 내부의 중첩 함수도 추출)
150
- ts.forEachChild(node, (child) => visit(child, className));
151
- }
152
- visit(sourceFile);
153
- return functions;
154
- }
155
- /**
156
- * Import 정보 추출
157
- */
158
- export function extractImports(sourceFile) {
159
- const imports = [];
160
- ts.forEachChild(sourceFile, (node) => {
161
- if (ts.isImportDeclaration(node)) {
162
- const specifiers = [];
163
- const clause = node.importClause;
164
- if (clause) {
165
- // default import
166
- if (clause.name) {
167
- specifiers.push({
168
- name: clause.name.getText(sourceFile),
169
- isDefault: true,
170
- isNamespace: false,
171
- });
172
- }
173
- // named imports or namespace import
174
- const bindings = clause.namedBindings;
175
- if (bindings) {
176
- if (ts.isNamespaceImport(bindings)) {
177
- specifiers.push({
178
- name: bindings.name.getText(sourceFile),
179
- isDefault: false,
180
- isNamespace: true,
181
- });
182
- }
183
- else if (ts.isNamedImports(bindings)) {
184
- bindings.elements.forEach((element) => {
185
- specifiers.push({
186
- name: element.name.getText(sourceFile),
187
- alias: element.propertyName?.getText(sourceFile),
188
- isDefault: false,
189
- isNamespace: false,
190
- });
191
- });
192
- }
193
- }
194
- }
195
- imports.push({
196
- source: node.moduleSpecifier.text,
197
- specifiers,
198
- isTypeOnly: !!clause?.isTypeOnly,
199
- location: getSourceLocation(node, sourceFile),
200
- });
201
- }
202
- });
203
- return imports;
204
- }
205
- /**
206
- * Export 정보 추출
207
- */
208
- export function extractExports(sourceFile) {
209
- const exports = [];
210
- ts.forEachChild(sourceFile, (node) => {
211
- // export declaration (re-export)
212
- if (ts.isExportDeclaration(node)) {
213
- if (node.exportClause && ts.isNamedExports(node.exportClause)) {
214
- node.exportClause.elements.forEach((element) => {
215
- exports.push({
216
- name: element.name.getText(sourceFile),
217
- kind: 're-export',
218
- location: getSourceLocation(element, sourceFile),
219
- source: node.moduleSpecifier
220
- ? node.moduleSpecifier.text
221
- : undefined,
222
- });
223
- });
224
- }
225
- return;
226
- }
227
- // exported declarations
228
- if (!hasModifier(node, ts.SyntaxKind.ExportKeyword)) {
229
- return;
230
- }
231
- if (ts.isFunctionDeclaration(node) && node.name) {
232
- exports.push({
233
- name: node.name.getText(sourceFile),
234
- kind: 'function',
235
- location: getSourceLocation(node, sourceFile),
236
- });
237
- }
238
- else if (ts.isClassDeclaration(node) && node.name) {
239
- exports.push({
240
- name: node.name.getText(sourceFile),
241
- kind: 'class',
242
- location: getSourceLocation(node, sourceFile),
243
- });
244
- }
245
- else if (ts.isVariableStatement(node)) {
246
- node.declarationList.declarations.forEach((decl) => {
247
- if (ts.isIdentifier(decl.name)) {
248
- exports.push({
249
- name: decl.name.getText(sourceFile),
250
- kind: 'variable',
251
- location: getSourceLocation(decl, sourceFile),
252
- });
253
- }
254
- });
255
- }
256
- else if (ts.isInterfaceDeclaration(node)) {
257
- exports.push({
258
- name: node.name.getText(sourceFile),
259
- kind: 'interface',
260
- location: getSourceLocation(node, sourceFile),
261
- });
262
- }
263
- else if (ts.isTypeAliasDeclaration(node)) {
264
- exports.push({
265
- name: node.name.getText(sourceFile),
266
- kind: 'type',
267
- location: getSourceLocation(node, sourceFile),
268
- });
269
- }
270
- });
271
- return exports;
272
- }
273
- //# sourceMappingURL=parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/ast/parser.ts"],"names":[],"mappings":"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"}
@@ -1,56 +0,0 @@
1
- /**
2
- * 수렴 분석기 (Convergence Analyzer)
3
- *
4
- * 현재 상태에서 정준 상태로의 거리 및 방향을 계산
5
- *
6
- * NP-hard가 P로 환원되는 이유:
7
- * - 모든 가능한 구조를 탐색하지 않음
8
- * - 타입별 정준형으로의 거리만 측정
9
- * - 거리 측정: O(n)
10
- */
11
- import type { ModuleType, MetaDimensions, ConvergenceResult, Deviation, Vector3D } from './types.js';
12
- /**
13
- * 편차 계산
14
- */
15
- export declare function calculateDeviation(current: MetaDimensions, ideal: MetaDimensions): Deviation;
16
- /**
17
- * 수렴 벡터 계산 (정준 상태로의 방향)
18
- */
19
- export declare function calculateConvergenceVector(current: MetaDimensions, ideal: MetaDimensions): Vector3D;
20
- /**
21
- * 수렴률 계산 (0-1, 1이면 완전 정준)
22
- */
23
- export declare function calculateConvergenceRate(deviation: Deviation, maxDeviation?: number): number;
24
- /**
25
- * 수렴 분석 수행
26
- */
27
- export declare function analyzeConvergence(moduleType: ModuleType, currentMeta: MetaDimensions): ConvergenceResult;
28
- /**
29
- * 모든 모듈 타입에 대해 수렴 분석
30
- * 가장 적합한 모듈 타입 추천에 활용
31
- */
32
- export declare function analyzeAllModuleTypes(currentMeta: MetaDimensions): ConvergenceResult[];
33
- /**
34
- * 가장 가까운 정준 상태를 가진 모듈 타입 반환
35
- */
36
- export declare function findBestFitModuleType(currentMeta: MetaDimensions): ConvergenceResult;
37
- /**
38
- * 수렴 상태 해석
39
- */
40
- export type ConvergenceStatus = 'canonical' | 'near-canonical' | 'drifting' | 'divergent';
41
- /**
42
- * 수렴 상태 판정
43
- */
44
- export declare function getConvergenceStatus(result: ConvergenceResult): ConvergenceStatus;
45
- /**
46
- * 개선 제안 생성
47
- */
48
- export interface ConvergenceAdvice {
49
- dimension: 'security' | 'context' | 'behavior';
50
- currentValue: number;
51
- idealValue: number;
52
- deviation: number;
53
- suggestion: string;
54
- }
55
- export declare function generateConvergenceAdvice(result: ConvergenceResult): ConvergenceAdvice[];
56
- //# sourceMappingURL=convergence.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convergence.d.ts","sourceRoot":"","sources":["../../src/canonical/convergence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACT,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,cAAc,GACpB,SAAS,CAWX;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,cAAc,GACpB,QAAQ,CAkBV;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,YAAY,GAAE,MAAW,GACxB,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,cAAc,GAC1B,iBAAiB,CAiBnB;AAMD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,cAAc,GAC1B,iBAAiB,EAAE,CAGrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,cAAc,GAC1B,iBAAiB,CAKnB;AAMD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,gBAAgB,GAChB,UAAU,GACV,WAAW,CAAC;AAEhB;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,CAWnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,iBAAiB,GACxB,iBAAiB,EAAE,CA4CrB"}
@@ -1,149 +0,0 @@
1
- /**
2
- * 수렴 분석기 (Convergence Analyzer)
3
- *
4
- * 현재 상태에서 정준 상태로의 거리 및 방향을 계산
5
- *
6
- * NP-hard가 P로 환원되는 이유:
7
- * - 모든 가능한 구조를 탐색하지 않음
8
- * - 타입별 정준형으로의 거리만 측정
9
- * - 거리 측정: O(n)
10
- */
11
- import { CANONICAL_PROFILES, getIdealMetaDimensions, isCanonical, } from './profiles.js';
12
- import { metaDistance, subtractMetaDimensions } from '../metrics/meta.js';
13
- // ─────────────────────────────────────────────────────────────────
14
- // 수렴 분석
15
- // ─────────────────────────────────────────────────────────────────
16
- /**
17
- * 편차 계산
18
- */
19
- export function calculateDeviation(current, ideal) {
20
- const securityDiff = current.security - ideal.security;
21
- const contextDiff = current.context - ideal.context;
22
- const behaviorDiff = current.behavior - ideal.behavior;
23
- return {
24
- security: Math.round(securityDiff * 100) / 100,
25
- context: Math.round(contextDiff * 100) / 100,
26
- behavior: Math.round(behaviorDiff * 100) / 100,
27
- total: Math.round(metaDistance(current, ideal) * 100) / 100,
28
- };
29
- }
30
- /**
31
- * 수렴 벡터 계산 (정준 상태로의 방향)
32
- */
33
- export function calculateConvergenceVector(current, ideal) {
34
- const diff = subtractMetaDimensions(ideal, current);
35
- const magnitude = Math.sqrt(diff.security * diff.security +
36
- diff.context * diff.context +
37
- diff.behavior * diff.behavior);
38
- if (magnitude === 0) {
39
- return { x: 0, y: 0, z: 0 };
40
- }
41
- // 정규화된 방향 벡터
42
- return {
43
- x: Math.round((diff.security / magnitude) * 100) / 100,
44
- y: Math.round((diff.context / magnitude) * 100) / 100,
45
- z: Math.round((diff.behavior / magnitude) * 100) / 100,
46
- };
47
- }
48
- /**
49
- * 수렴률 계산 (0-1, 1이면 완전 정준)
50
- */
51
- export function calculateConvergenceRate(deviation, maxDeviation = 50) {
52
- const rate = 1 - Math.min(deviation.total / maxDeviation, 1);
53
- return Math.round(rate * 100) / 100;
54
- }
55
- /**
56
- * 수렴 분석 수행
57
- */
58
- export function analyzeConvergence(moduleType, currentMeta) {
59
- const profile = CANONICAL_PROFILES[moduleType];
60
- const idealMeta = getIdealMetaDimensions(profile);
61
- const deviation = calculateDeviation(currentMeta, idealMeta);
62
- const vector = calculateConvergenceVector(currentMeta, idealMeta);
63
- const rate = calculateConvergenceRate(deviation);
64
- const stable = isCanonical(currentMeta, profile);
65
- return {
66
- moduleType,
67
- currentState: currentMeta,
68
- canonicalState: idealMeta,
69
- deviation,
70
- convergenceVector: vector,
71
- isStable: stable,
72
- convergenceRate: rate,
73
- };
74
- }
75
- // ─────────────────────────────────────────────────────────────────
76
- // 다중 모듈 분석
77
- // ─────────────────────────────────────────────────────────────────
78
- /**
79
- * 모든 모듈 타입에 대해 수렴 분석
80
- * 가장 적합한 모듈 타입 추천에 활용
81
- */
82
- export function analyzeAllModuleTypes(currentMeta) {
83
- const types = ['api', 'app', 'lib', 'deploy'];
84
- return types.map((type) => analyzeConvergence(type, currentMeta));
85
- }
86
- /**
87
- * 가장 가까운 정준 상태를 가진 모듈 타입 반환
88
- */
89
- export function findBestFitModuleType(currentMeta) {
90
- const results = analyzeAllModuleTypes(currentMeta);
91
- return results.reduce((best, current) => current.deviation.total < best.deviation.total ? current : best);
92
- }
93
- /**
94
- * 수렴 상태 판정
95
- */
96
- export function getConvergenceStatus(result) {
97
- if (result.isStable) {
98
- return 'canonical';
99
- }
100
- if (result.convergenceRate >= 0.8) {
101
- return 'near-canonical';
102
- }
103
- if (result.convergenceRate >= 0.5) {
104
- return 'drifting';
105
- }
106
- return 'divergent';
107
- }
108
- export function generateConvergenceAdvice(result) {
109
- const advice = [];
110
- const { currentState, canonicalState, deviation, moduleType } = result;
111
- // Security 편차 분석
112
- if (Math.abs(deviation.security) > 2) {
113
- advice.push({
114
- dimension: 'security',
115
- currentValue: currentState.security,
116
- idealValue: canonicalState.security,
117
- deviation: deviation.security,
118
- suggestion: deviation.security > 0
119
- ? `${moduleType} 모듈은 외부 의존성을 줄여야 합니다. 전역 접근과 환경 변수 사용을 최소화하세요.`
120
- : `${moduleType} 모듈에 보안 검증 로직이 부족합니다. 입력 검증을 강화하세요.`,
121
- });
122
- }
123
- // Context 편차 분석
124
- if (Math.abs(deviation.context) > 3) {
125
- advice.push({
126
- dimension: 'context',
127
- currentValue: currentState.context,
128
- idealValue: canonicalState.context,
129
- deviation: deviation.context,
130
- suggestion: deviation.context > 0
131
- ? `${moduleType} 모듈의 맥락 밀도가 높습니다. 중첩을 줄이고 로직을 분리하세요.`
132
- : `${moduleType} 모듈이 너무 단순합니다. 적절한 검증/처리 로직이 필요할 수 있습니다.`,
133
- });
134
- }
135
- // Behavior 편차 분석
136
- if (Math.abs(deviation.behavior) > 2) {
137
- advice.push({
138
- dimension: 'behavior',
139
- currentValue: currentState.behavior,
140
- idealValue: canonicalState.behavior,
141
- deviation: deviation.behavior,
142
- suggestion: deviation.behavior > 0
143
- ? `${moduleType} 모듈의 상태/비동기 복잡도가 높습니다. 순수 함수로 리팩토링하세요.`
144
- : `${moduleType} 모듈에 비즈니스 로직이 부족합니다.`,
145
- });
146
- }
147
- return advice;
148
- }
149
- //# sourceMappingURL=convergence.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"convergence.js","sourceRoot":"","sources":["../../src/canonical/convergence.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /**
2
- * 정준성(Canonicality) 프레임워크
3
- *
4
- * 모듈 타입 기반 P-NP 특수해 접근
5
- */
6
- export type { ModuleType, ModuleTypeInfo, MetaDimensions, MetaWeights, Range, CanonicalLevel, CanonicalProfile, Vector3D, Deviation, ConvergenceResult, Snapshot, } from './types.js';
7
- export { MODULE_TYPE_INFO, DEFAULT_META_WEIGHTS, LEVEL_RANGES, } from './types.js';
8
- export { CANONICAL_PROFILES, levelToRange, levelToMidpoint, getIdealMetaDimensions, getProfile, isWithinCanonicalRange, isCanonical, inferModuleType, } from './profiles.js';
9
- export { calculateDeviation, calculateConvergenceVector, calculateConvergenceRate, analyzeConvergence, analyzeAllModuleTypes, findBestFitModuleType, getConvergenceStatus, generateConvergenceAdvice, } from './convergence.js';
10
- export type { ConvergenceStatus, ConvergenceAdvice, } from './convergence.js';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/canonical/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,KAAK,EACL,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,SAAS,EACT,iBAAiB,EACjB,QAAQ,GACT,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC"}
@@ -1,11 +0,0 @@
1
- /**
2
- * 정준성(Canonicality) 프레임워크
3
- *
4
- * 모듈 타입 기반 P-NP 특수해 접근
5
- */
6
- export { MODULE_TYPE_INFO, DEFAULT_META_WEIGHTS, LEVEL_RANGES, } from './types.js';
7
- // Profiles
8
- export { CANONICAL_PROFILES, levelToRange, levelToMidpoint, getIdealMetaDimensions, getProfile, isWithinCanonicalRange, isCanonical, inferModuleType, } from './profiles.js';
9
- // Convergence
10
- export { calculateDeviation, calculateConvergenceVector, calculateConvergenceRate, analyzeConvergence, analyzeAllModuleTypes, findBestFitModuleType, getConvergenceStatus, generateConvergenceAdvice, } from './convergence.js';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/canonical/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,UAAU,EACV,sBAAsB,EACtB,WAAW,EACX,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,cAAc;AACd,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,EACxB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,kBAAkB,CAAC"}
@@ -1,40 +0,0 @@
1
- /**
2
- * 모듈별 정준형 프로파일 정의
3
- *
4
- * 각 모듈 타입의 이상적인 메타 차원 범위를 정의
5
- * P-NP 관점: 모듈 타입이 제약 조건으로 작용하여 탐색 공간 축소
6
- */
7
- import type { ModuleType, CanonicalProfile, CanonicalLevel, MetaDimensions, Range } from './types.js';
8
- /**
9
- * 모든 정준형 프로파일
10
- */
11
- export declare const CANONICAL_PROFILES: Record<ModuleType, CanonicalProfile>;
12
- /**
13
- * 레벨을 수치 범위로 변환
14
- */
15
- export declare function levelToRange(level: CanonicalLevel): Range;
16
- /**
17
- * 레벨의 중앙값 반환
18
- */
19
- export declare function levelToMidpoint(level: CanonicalLevel): number;
20
- /**
21
- * 프로파일의 이상적 메타 차원값 반환
22
- */
23
- export declare function getIdealMetaDimensions(profile: CanonicalProfile): MetaDimensions;
24
- /**
25
- * 모듈 타입으로 프로파일 조회
26
- */
27
- export declare function getProfile(moduleType: ModuleType): CanonicalProfile;
28
- /**
29
- * 값이 정준 범위 내에 있는지 확인
30
- */
31
- export declare function isWithinCanonicalRange(value: number, level: CanonicalLevel, tolerance?: number): boolean;
32
- /**
33
- * 메타 차원이 프로파일의 정준 범위 내에 있는지 확인
34
- */
35
- export declare function isCanonical(meta: MetaDimensions, profile: CanonicalProfile): boolean;
36
- /**
37
- * 모듈 타입 자동 추론 (파일 경로 기반)
38
- */
39
- export declare function inferModuleType(filePath: string): ModuleType;
40
- //# sourceMappingURL=profiles.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/canonical/profiles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,KAAK,EACN,MAAM,YAAY,CAAC;AAkFpB;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAKnE,CAAC;AAMF;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CASzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAM7D;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,CAMhF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAEnE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,cAAc,EACrB,SAAS,GAAE,MAAU,GACpB,OAAO,CAGT;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAMT;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAwC5D"}