@skillsmith/core 0.2.0 → 2.0.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.
Files changed (233) hide show
  1. package/README.md +233 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
  4. package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
  5. package/dist/src/analysis/__tests__/incremental.test.js +515 -0
  6. package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
  7. package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
  8. package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
  9. package/dist/src/analysis/__tests__/integration.test.js +1059 -0
  10. package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
  11. package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
  12. package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
  13. package/dist/src/analysis/__tests__/metrics.test.js +369 -0
  14. package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
  15. package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
  16. package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
  17. package/dist/src/analysis/__tests__/performance.test.js +402 -0
  18. package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
  19. package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
  20. package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
  21. package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
  22. package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
  23. package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
  24. package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
  25. package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
  26. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
  27. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
  28. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
  29. package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
  30. package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
  31. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
  32. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
  33. package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
  34. package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
  35. package/dist/src/analysis/adapters/base.d.ts +83 -0
  36. package/dist/src/analysis/adapters/base.d.ts.map +1 -0
  37. package/dist/src/analysis/adapters/base.js +40 -0
  38. package/dist/src/analysis/adapters/base.js.map +1 -0
  39. package/dist/src/analysis/adapters/factory.d.ts +150 -0
  40. package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
  41. package/dist/src/analysis/adapters/factory.js +244 -0
  42. package/dist/src/analysis/adapters/factory.js.map +1 -0
  43. package/dist/src/analysis/adapters/go.d.ts +131 -0
  44. package/dist/src/analysis/adapters/go.d.ts.map +1 -0
  45. package/dist/src/analysis/adapters/go.js +414 -0
  46. package/dist/src/analysis/adapters/go.js.map +1 -0
  47. package/dist/src/analysis/adapters/index.d.ts +20 -0
  48. package/dist/src/analysis/adapters/index.d.ts.map +1 -0
  49. package/dist/src/analysis/adapters/index.js +23 -0
  50. package/dist/src/analysis/adapters/index.js.map +1 -0
  51. package/dist/src/analysis/adapters/java.d.ts +154 -0
  52. package/dist/src/analysis/adapters/java.d.ts.map +1 -0
  53. package/dist/src/analysis/adapters/java.js +407 -0
  54. package/dist/src/analysis/adapters/java.js.map +1 -0
  55. package/dist/src/analysis/adapters/python.d.ts +165 -0
  56. package/dist/src/analysis/adapters/python.d.ts.map +1 -0
  57. package/dist/src/analysis/adapters/python.js +475 -0
  58. package/dist/src/analysis/adapters/python.js.map +1 -0
  59. package/dist/src/analysis/adapters/rust.d.ts +116 -0
  60. package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
  61. package/dist/src/analysis/adapters/rust.js +476 -0
  62. package/dist/src/analysis/adapters/rust.js.map +1 -0
  63. package/dist/src/analysis/adapters/typescript.d.ts +68 -0
  64. package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
  65. package/dist/src/analysis/adapters/typescript.js +79 -0
  66. package/dist/src/analysis/adapters/typescript.js.map +1 -0
  67. package/dist/src/analysis/aggregator.d.ts +193 -0
  68. package/dist/src/analysis/aggregator.d.ts.map +1 -0
  69. package/dist/src/analysis/aggregator.js +283 -0
  70. package/dist/src/analysis/aggregator.js.map +1 -0
  71. package/dist/src/analysis/cache.d.ts +180 -0
  72. package/dist/src/analysis/cache.d.ts.map +1 -0
  73. package/dist/src/analysis/cache.js +279 -0
  74. package/dist/src/analysis/cache.js.map +1 -0
  75. package/dist/src/analysis/file-streamer.d.ts +136 -0
  76. package/dist/src/analysis/file-streamer.d.ts.map +1 -0
  77. package/dist/src/analysis/file-streamer.js +291 -0
  78. package/dist/src/analysis/file-streamer.js.map +1 -0
  79. package/dist/src/analysis/incremental-parser.d.ts +186 -0
  80. package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
  81. package/dist/src/analysis/incremental-parser.js +291 -0
  82. package/dist/src/analysis/incremental-parser.js.map +1 -0
  83. package/dist/src/analysis/incremental.d.ts +186 -0
  84. package/dist/src/analysis/incremental.d.ts.map +1 -0
  85. package/dist/src/analysis/incremental.js +247 -0
  86. package/dist/src/analysis/incremental.js.map +1 -0
  87. package/dist/src/analysis/index.d.ts +25 -3
  88. package/dist/src/analysis/index.d.ts.map +1 -1
  89. package/dist/src/analysis/index.js +45 -3
  90. package/dist/src/analysis/index.js.map +1 -1
  91. package/dist/src/analysis/language-detector.d.ts +92 -0
  92. package/dist/src/analysis/language-detector.d.ts.map +1 -0
  93. package/dist/src/analysis/language-detector.js +602 -0
  94. package/dist/src/analysis/language-detector.js.map +1 -0
  95. package/dist/src/analysis/memory-monitor.d.ts +199 -0
  96. package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
  97. package/dist/src/analysis/memory-monitor.js +271 -0
  98. package/dist/src/analysis/memory-monitor.js.map +1 -0
  99. package/dist/src/analysis/metrics.d.ts +300 -0
  100. package/dist/src/analysis/metrics.d.ts.map +1 -0
  101. package/dist/src/analysis/metrics.js +537 -0
  102. package/dist/src/analysis/metrics.js.map +1 -0
  103. package/dist/src/analysis/router.d.ts +264 -0
  104. package/dist/src/analysis/router.d.ts.map +1 -0
  105. package/dist/src/analysis/router.js +398 -0
  106. package/dist/src/analysis/router.js.map +1 -0
  107. package/dist/src/analysis/tree-cache.d.ts +208 -0
  108. package/dist/src/analysis/tree-cache.d.ts.map +1 -0
  109. package/dist/src/analysis/tree-cache.js +288 -0
  110. package/dist/src/analysis/tree-cache.js.map +1 -0
  111. package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
  112. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
  113. package/dist/src/analysis/tree-sitter/manager.js +239 -0
  114. package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
  115. package/dist/src/analysis/types.d.ts +69 -6
  116. package/dist/src/analysis/types.d.ts.map +1 -1
  117. package/dist/src/analysis/types.js +23 -2
  118. package/dist/src/analysis/types.js.map +1 -1
  119. package/dist/src/analysis/worker-pool.d.ts +141 -0
  120. package/dist/src/analysis/worker-pool.d.ts.map +1 -0
  121. package/dist/src/analysis/worker-pool.js +418 -0
  122. package/dist/src/analysis/worker-pool.js.map +1 -0
  123. package/dist/src/analytics/schema.d.ts +1 -1
  124. package/dist/src/analytics/schema.d.ts.map +1 -1
  125. package/dist/src/analytics/schema.js +72 -0
  126. package/dist/src/analytics/schema.js.map +1 -1
  127. package/dist/src/api/cache.d.ts +24 -1
  128. package/dist/src/api/cache.d.ts.map +1 -1
  129. package/dist/src/api/cache.js +50 -2
  130. package/dist/src/api/cache.js.map +1 -1
  131. package/dist/src/api/client.d.ts +132 -2
  132. package/dist/src/api/client.d.ts.map +1 -1
  133. package/dist/src/api/client.js +214 -18
  134. package/dist/src/api/client.js.map +1 -1
  135. package/dist/src/api/index.d.ts +2 -0
  136. package/dist/src/api/index.d.ts.map +1 -1
  137. package/dist/src/api/index.js +7 -0
  138. package/dist/src/api/index.js.map +1 -1
  139. package/dist/src/api/types.d.ts +251 -0
  140. package/dist/src/api/types.d.ts.map +1 -0
  141. package/dist/src/api/types.js +9 -0
  142. package/dist/src/api/types.js.map +1 -0
  143. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
  144. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
  145. package/dist/src/embeddings/index.d.ts.map +1 -1
  146. package/dist/src/embeddings/index.js.map +1 -1
  147. package/dist/src/errors.d.ts +1 -0
  148. package/dist/src/errors.d.ts.map +1 -1
  149. package/dist/src/errors.js +1 -0
  150. package/dist/src/errors.js.map +1 -1
  151. package/dist/src/index.d.ts +3 -3
  152. package/dist/src/index.d.ts.map +1 -1
  153. package/dist/src/index.js +4 -4
  154. package/dist/src/index.js.map +1 -1
  155. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  156. package/dist/src/repositories/IndexerRepository.js +1 -0
  157. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  158. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  159. package/dist/src/repositories/SkillRepository.js +1 -0
  160. package/dist/src/repositories/SkillRepository.js.map +1 -1
  161. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  162. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  163. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
  164. package/dist/src/repositories/quarantine/query-builder.js +1 -1
  165. package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
  166. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +3 -3
  167. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  168. package/dist/src/scripts/github-import/index.js.map +1 -1
  169. package/dist/src/scripts/import-github-skills.js +1 -1
  170. package/dist/src/scripts/import-github-skills.js.map +1 -1
  171. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
  172. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
  173. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  174. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  175. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  176. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  177. package/dist/src/scripts/validation/index.js +1 -2
  178. package/dist/src/scripts/validation/index.js.map +1 -1
  179. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
  180. package/dist/src/scripts/validation/pipeline.js.map +1 -1
  181. package/dist/src/scripts/validation/types.d.ts +2 -2
  182. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  183. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  184. package/dist/src/services/SearchService.d.ts.map +1 -1
  185. package/dist/src/services/SearchService.js +1 -0
  186. package/dist/src/services/SearchService.js.map +1 -1
  187. package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
  188. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  189. package/dist/src/session/SessionHealthMonitor.js +1 -1
  190. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  191. package/dist/src/telemetry/index.d.ts +1 -1
  192. package/dist/src/telemetry/index.d.ts.map +1 -1
  193. package/dist/src/telemetry/index.js +2 -2
  194. package/dist/src/telemetry/index.js.map +1 -1
  195. package/dist/src/telemetry/posthog.d.ts +27 -5
  196. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  197. package/dist/src/telemetry/posthog.js +20 -5
  198. package/dist/src/telemetry/posthog.js.map +1 -1
  199. package/dist/src/types/skill.d.ts +3 -0
  200. package/dist/src/types/skill.d.ts.map +1 -1
  201. package/dist/src/types.d.ts +2 -1
  202. package/dist/src/types.d.ts.map +1 -1
  203. package/dist/src/types.js +2 -2
  204. package/dist/src/types.js.map +1 -1
  205. package/dist/tests/adapters-factory.test.d.ts +13 -0
  206. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  207. package/dist/tests/adapters-factory.test.js +308 -0
  208. package/dist/tests/adapters-factory.test.js.map +1 -0
  209. package/dist/tests/adapters-java.test.d.ts +13 -0
  210. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  211. package/dist/tests/adapters-java.test.js +925 -0
  212. package/dist/tests/adapters-java.test.js.map +1 -0
  213. package/dist/tests/api/client.validation.test.d.ts +7 -0
  214. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  215. package/dist/tests/api/client.validation.test.js +183 -0
  216. package/dist/tests/api/client.validation.test.js.map +1 -0
  217. package/dist/tests/language-detector.test.d.ts +13 -0
  218. package/dist/tests/language-detector.test.d.ts.map +1 -0
  219. package/dist/tests/language-detector.test.js +674 -0
  220. package/dist/tests/language-detector.test.js.map +1 -0
  221. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  222. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  223. package/dist/tests/telemetry/posthog.test.js +600 -0
  224. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  225. package/package.json +5 -6
  226. package/dist/src/security/RateLimiter.d.ts +0 -337
  227. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  228. package/dist/src/security/RateLimiter.js +0 -782
  229. package/dist/src/security/RateLimiter.js.map +0 -1
  230. package/dist/src/security/scanner.d.ts +0 -151
  231. package/dist/src/security/scanner.d.ts.map +0 -1
  232. package/dist/src/security/scanner.js +0 -599
  233. package/dist/src/security/scanner.js.map +0 -1
@@ -0,0 +1,414 @@
1
+ /**
2
+ * SMI-1305: Go Language Adapter
3
+ *
4
+ * Parses Go source files and extracts imports, exports, and functions
5
+ * using regex-based parsing. Go uses capitalization-based visibility:
6
+ * identifiers starting with uppercase are exported (public).
7
+ *
8
+ * @see docs/architecture/multi-language-analysis.md
9
+ */
10
+ import { LanguageAdapter } from './base.js';
11
+ /**
12
+ * Go Language Adapter
13
+ *
14
+ * Parses Go source files using regex-based parsing.
15
+ * Handles Go's capitalization-based visibility rules.
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const adapter = new GoAdapter()
20
+ * const result = adapter.parseFile(goCode, 'main.go')
21
+ * console.log(result.exports) // Uppercase identifiers only
22
+ * ```
23
+ */
24
+ export class GoAdapter extends LanguageAdapter {
25
+ language = 'go';
26
+ extensions = ['.go'];
27
+ /**
28
+ * Parse a Go source file and extract information
29
+ */
30
+ parseFile(content, filePath) {
31
+ const imports = this.extractImports(content, filePath);
32
+ const exports = this.extractExports(content, filePath);
33
+ const functions = this.extractFunctions(content, filePath);
34
+ return { imports, exports, functions };
35
+ }
36
+ /**
37
+ * Parse file incrementally (currently same as full parse)
38
+ */
39
+ parseIncremental(content, filePath, _previousTree) {
40
+ // Incremental parsing not yet implemented for Go
41
+ // Will be added with tree-sitter integration
42
+ return this.parseFile(content, filePath);
43
+ }
44
+ /**
45
+ * Get Go framework detection rules
46
+ */
47
+ getFrameworkRules() {
48
+ return [
49
+ {
50
+ name: 'Gin',
51
+ depIndicators: ['github.com/gin-gonic/gin'],
52
+ importIndicators: ['github.com/gin-gonic/gin'],
53
+ },
54
+ {
55
+ name: 'Echo',
56
+ depIndicators: ['github.com/labstack/echo'],
57
+ importIndicators: ['github.com/labstack/echo', 'github.com/labstack/echo/v4'],
58
+ },
59
+ {
60
+ name: 'Fiber',
61
+ depIndicators: ['github.com/gofiber/fiber'],
62
+ importIndicators: ['github.com/gofiber/fiber', 'github.com/gofiber/fiber/v2'],
63
+ },
64
+ {
65
+ name: 'GORM',
66
+ depIndicators: ['gorm.io/gorm'],
67
+ importIndicators: ['gorm.io/gorm', 'gorm.io/driver/postgres', 'gorm.io/driver/mysql'],
68
+ },
69
+ {
70
+ name: 'Cobra',
71
+ depIndicators: ['github.com/spf13/cobra'],
72
+ importIndicators: ['github.com/spf13/cobra'],
73
+ },
74
+ {
75
+ name: 'Viper',
76
+ depIndicators: ['github.com/spf13/viper'],
77
+ importIndicators: ['github.com/spf13/viper'],
78
+ },
79
+ {
80
+ name: 'Chi',
81
+ depIndicators: ['github.com/go-chi/chi'],
82
+ importIndicators: ['github.com/go-chi/chi', 'github.com/go-chi/chi/v5'],
83
+ },
84
+ {
85
+ name: 'Gorilla Mux',
86
+ depIndicators: ['github.com/gorilla/mux'],
87
+ importIndicators: ['github.com/gorilla/mux'],
88
+ },
89
+ {
90
+ name: 'gRPC',
91
+ depIndicators: ['google.golang.org/grpc'],
92
+ importIndicators: ['google.golang.org/grpc', 'google.golang.org/protobuf'],
93
+ },
94
+ {
95
+ name: 'testify',
96
+ depIndicators: ['github.com/stretchr/testify'],
97
+ importIndicators: [
98
+ 'github.com/stretchr/testify/assert',
99
+ 'github.com/stretchr/testify/require',
100
+ 'github.com/stretchr/testify/mock',
101
+ ],
102
+ },
103
+ ];
104
+ }
105
+ /**
106
+ * Clean up resources (no-op for regex-based parsing)
107
+ */
108
+ dispose() {
109
+ // No resources to clean up for regex-based parsing
110
+ }
111
+ /**
112
+ * Check if an identifier is exported (starts with uppercase)
113
+ *
114
+ * In Go, identifiers starting with uppercase are exported (public)
115
+ * and can be accessed from other packages.
116
+ *
117
+ * @param name - Identifier name
118
+ * @returns True if the identifier is exported
119
+ */
120
+ isExported(name) {
121
+ return /^[A-Z]/.test(name);
122
+ }
123
+ /**
124
+ * Extract import statements from Go source
125
+ *
126
+ * Handles both single imports and import blocks:
127
+ * - import "fmt"
128
+ * - import ( "fmt" \n "os" )
129
+ * - import alias "path/to/package"
130
+ */
131
+ extractImports(content, filePath) {
132
+ const imports = [];
133
+ // Single import: import "fmt" or import alias "path"
134
+ const singleImportRegex = /import\s+(?:(\w+)\s+)?"([^"]+)"/g;
135
+ let match;
136
+ while ((match = singleImportRegex.exec(content)) !== null) {
137
+ imports.push({
138
+ module: match[2],
139
+ namedImports: [],
140
+ defaultImport: match[1] || undefined,
141
+ isTypeOnly: false,
142
+ sourceFile: filePath,
143
+ });
144
+ }
145
+ // Import block: import ( "fmt" \n "os" )
146
+ const blockImportRegex = /import\s*\(\s*([\s\S]*?)\)/g;
147
+ while ((match = blockImportRegex.exec(content)) !== null) {
148
+ const block = match[1];
149
+ // Match each line in the block: optional alias followed by quoted path
150
+ // Handles: "fmt", alias "path", . "path", _ "path"
151
+ const lineRegex = /(?:([._]|\w+)\s+)?"([^"]+)"/g;
152
+ let lineMatch;
153
+ while ((lineMatch = lineRegex.exec(block)) !== null) {
154
+ imports.push({
155
+ module: lineMatch[2],
156
+ namedImports: [],
157
+ defaultImport: lineMatch[1] || undefined,
158
+ isTypeOnly: false,
159
+ sourceFile: filePath,
160
+ });
161
+ }
162
+ }
163
+ return imports;
164
+ }
165
+ /**
166
+ * Extract exports (public declarations) from Go source
167
+ *
168
+ * In Go, any top-level declaration starting with uppercase is exported:
169
+ * - type Foo struct/interface
170
+ * - func Foo() or func (r *Receiver) Foo()
171
+ * - const/var Foo
172
+ */
173
+ extractExports(content, filePath) {
174
+ const exports = [];
175
+ const lines = content.split('\n');
176
+ // Track if we're inside a const or var block
177
+ let inConstBlock = false;
178
+ let inVarBlock = false;
179
+ for (let i = 0; i < lines.length; i++) {
180
+ const line = lines[i];
181
+ const trimmedLine = line.trim();
182
+ // Check for start of const/var blocks
183
+ if (/^const\s*\(/.test(line)) {
184
+ inConstBlock = true;
185
+ continue;
186
+ }
187
+ if (/^var\s*\(/.test(line)) {
188
+ inVarBlock = true;
189
+ continue;
190
+ }
191
+ // Check for end of blocks (closing paren at start of line)
192
+ if ((inConstBlock || inVarBlock) && /^\)/.test(trimmedLine)) {
193
+ inConstBlock = false;
194
+ inVarBlock = false;
195
+ continue;
196
+ }
197
+ // Inside const block: extract exported identifiers
198
+ if (inConstBlock) {
199
+ const blockConstMatch = trimmedLine.match(/^([A-Z]\w*)/);
200
+ if (blockConstMatch) {
201
+ exports.push({
202
+ name: blockConstMatch[1],
203
+ kind: 'variable',
204
+ isDefault: false,
205
+ sourceFile: filePath,
206
+ });
207
+ }
208
+ continue;
209
+ }
210
+ // Inside var block: extract exported identifiers
211
+ if (inVarBlock) {
212
+ const blockVarMatch = trimmedLine.match(/^([A-Z]\w*)/);
213
+ if (blockVarMatch) {
214
+ exports.push({
215
+ name: blockVarMatch[1],
216
+ kind: 'variable',
217
+ isDefault: false,
218
+ sourceFile: filePath,
219
+ });
220
+ }
221
+ continue;
222
+ }
223
+ // Type declarations: type Foo struct/interface/...
224
+ const typeMatch = line.match(/^type\s+([A-Z]\w*)\s+(struct|interface)/);
225
+ if (typeMatch) {
226
+ exports.push({
227
+ name: typeMatch[1],
228
+ kind: typeMatch[2] === 'struct' ? 'struct' : 'interface',
229
+ isDefault: false,
230
+ sourceFile: filePath,
231
+ });
232
+ continue;
233
+ }
234
+ // Type alias or simple type: type Foo = Other or type Foo Other
235
+ const typeAliasMatch = line.match(/^type\s+([A-Z]\w*)\s+(?:=\s+)?(\w+)/);
236
+ if (typeAliasMatch && !line.includes('struct') && !line.includes('interface')) {
237
+ exports.push({
238
+ name: typeAliasMatch[1],
239
+ kind: 'type',
240
+ isDefault: false,
241
+ sourceFile: filePath,
242
+ });
243
+ continue;
244
+ }
245
+ // Function declarations: func Foo() or func (r *Receiver) Foo()
246
+ const funcMatch = line.match(/^func\s+(?:\([^)]+\)\s+)?([A-Z]\w*)\s*\(/);
247
+ if (funcMatch) {
248
+ exports.push({
249
+ name: funcMatch[1],
250
+ kind: 'function',
251
+ isDefault: false,
252
+ sourceFile: filePath,
253
+ });
254
+ continue;
255
+ }
256
+ // Single-line const declarations: const Foo = ... (not inside a block)
257
+ const constMatch = line.match(/^const\s+([A-Z]\w*)/);
258
+ if (constMatch && !line.includes('(')) {
259
+ exports.push({
260
+ name: constMatch[1],
261
+ kind: 'variable',
262
+ isDefault: false,
263
+ sourceFile: filePath,
264
+ });
265
+ continue;
266
+ }
267
+ // Single-line var declarations: var Foo = ... (not inside a block)
268
+ const varMatch = line.match(/^var\s+([A-Z]\w*)/);
269
+ if (varMatch && !line.includes('(')) {
270
+ exports.push({
271
+ name: varMatch[1],
272
+ kind: 'variable',
273
+ isDefault: false,
274
+ sourceFile: filePath,
275
+ });
276
+ continue;
277
+ }
278
+ }
279
+ return exports;
280
+ }
281
+ /**
282
+ * Extract function definitions from Go source
283
+ *
284
+ * Handles both regular functions and methods:
285
+ * - func name(params) return
286
+ * - func (r *Receiver) name(params) return
287
+ */
288
+ extractFunctions(content, filePath) {
289
+ const functions = [];
290
+ const lines = content.split('\n');
291
+ for (let i = 0; i < lines.length; i++) {
292
+ const line = lines[i];
293
+ const lineNum = i + 1;
294
+ // Match: func Name(params) or func (r *Receiver) Name(params)
295
+ // Captures: [1] receiver, [2] name, [3] params
296
+ const match = line.match(/^func\s+(?:\(([^)]+)\)\s+)?(\w+)\s*\(([^)]*)\)/);
297
+ if (match) {
298
+ // SMI-1334: Capture receiver for method output
299
+ const receiver = match[1]?.trim() || undefined;
300
+ const name = match[2];
301
+ const paramsStr = match[3];
302
+ // Count parameters (split by comma, filter empty)
303
+ const params = paramsStr
304
+ ? paramsStr
305
+ .split(',')
306
+ .map((p) => p.trim())
307
+ .filter((p) => p.length > 0).length
308
+ : 0;
309
+ functions.push({
310
+ name,
311
+ parameterCount: params,
312
+ isAsync: false, // Go uses goroutines, not async/await
313
+ isExported: this.isExported(name),
314
+ sourceFile: filePath,
315
+ line: lineNum,
316
+ // SMI-1334: Include receiver in function output
317
+ receiver,
318
+ });
319
+ }
320
+ }
321
+ return functions;
322
+ }
323
+ }
324
+ /**
325
+ * Parse go.mod file to extract module info and dependencies
326
+ *
327
+ * @param content - Content of go.mod file
328
+ * @returns Parsed go.mod information
329
+ *
330
+ * @example
331
+ * ```typescript
332
+ * const modInfo = parseGoMod(goModContent)
333
+ * console.log(modInfo.module) // "github.com/user/project"
334
+ * console.log(modInfo.require) // [{ path: "...", version: "..." }]
335
+ * ```
336
+ */
337
+ export function parseGoMod(content) {
338
+ const result = {
339
+ module: '',
340
+ require: [],
341
+ replace: [],
342
+ };
343
+ // Extract module name
344
+ const moduleMatch = content.match(/^module\s+(\S+)/m);
345
+ if (moduleMatch) {
346
+ result.module = moduleMatch[1];
347
+ }
348
+ // Extract Go version
349
+ const goVersionMatch = content.match(/^go\s+(\d+\.\d+(?:\.\d+)?)/m);
350
+ if (goVersionMatch) {
351
+ result.goVersion = goVersionMatch[1];
352
+ }
353
+ // Extract require blocks first
354
+ const requireBlockRegex = /require\s*\(\s*([\s\S]*?)\)/gm;
355
+ let match;
356
+ while ((match = requireBlockRegex.exec(content)) !== null) {
357
+ const block = match[1];
358
+ // Match package path and version (path must start with a letter or domain)
359
+ const lineRegex = /^\s*([a-zA-Z][\w./-]+)\s+(v[\d.]+\S*)/gm;
360
+ let lineMatch;
361
+ while ((lineMatch = lineRegex.exec(block)) !== null) {
362
+ result.require.push({
363
+ path: lineMatch[1],
364
+ version: lineMatch[2],
365
+ });
366
+ }
367
+ }
368
+ // Extract single-line require directives (not followed by parenthesis)
369
+ // Match: require github.com/pkg v1.0.0
370
+ const singleRequireRegex = /^require\s+([a-zA-Z][\w./-]+)\s+(v[\d.]+\S*)/gm;
371
+ while ((match = singleRequireRegex.exec(content)) !== null) {
372
+ // Check if this is not part of a block (no opening paren on same line)
373
+ const lineStart = content.lastIndexOf('\n', match.index) + 1;
374
+ const lineEnd = content.indexOf('\n', match.index);
375
+ const fullLine = content.slice(lineStart, lineEnd === -1 ? undefined : lineEnd);
376
+ if (!fullLine.includes('(')) {
377
+ result.require.push({
378
+ path: match[1],
379
+ version: match[2],
380
+ });
381
+ }
382
+ }
383
+ // Extract replace blocks first
384
+ const replaceBlockRegex = /replace\s*\(\s*([\s\S]*?)\)/gm;
385
+ while ((match = replaceBlockRegex.exec(content)) !== null) {
386
+ const block = match[1];
387
+ const lineRegex = /^\s*([a-zA-Z][\w./-]+)\s+=>\s+(\S+)(?:\s+(v[\d.]+\S*))?/gm;
388
+ let lineMatch;
389
+ while ((lineMatch = lineRegex.exec(block)) !== null) {
390
+ result.replace.push({
391
+ old: lineMatch[1],
392
+ new: lineMatch[2],
393
+ version: lineMatch[3],
394
+ });
395
+ }
396
+ }
397
+ // Extract single-line replace directives
398
+ const singleReplaceRegex = /^replace\s+([a-zA-Z][\w./-]+)\s+=>\s+(\S+)(?:\s+(v[\d.]+\S*))?/gm;
399
+ while ((match = singleReplaceRegex.exec(content)) !== null) {
400
+ // Check if this is not part of a block
401
+ const lineStart = content.lastIndexOf('\n', match.index) + 1;
402
+ const lineEnd = content.indexOf('\n', match.index);
403
+ const fullLine = content.slice(lineStart, lineEnd === -1 ? undefined : lineEnd);
404
+ if (!fullLine.includes('(')) {
405
+ result.replace.push({
406
+ old: match[1],
407
+ new: match[2],
408
+ version: match[3],
409
+ });
410
+ }
411
+ }
412
+ return result;
413
+ }
414
+ //# sourceMappingURL=go.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/go.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SMI-1303, SMI-1310: Language Adapters Module
3
+ * SMI-1339: Added AdapterFactory
4
+ *
5
+ * Exports all language adapter classes and types for multi-language
6
+ * codebase analysis.
7
+ *
8
+ * @see docs/architecture/multi-language-analysis.md
9
+ */
10
+ export { LanguageAdapter, type SupportedLanguage, type LanguageInfo, type FrameworkRule, type ParseResult, } from './base.js';
11
+ export { AdapterFactory } from './factory.js';
12
+ export { TypeScriptAdapter } from './typescript.js';
13
+ export { PythonAdapter } from './python.js';
14
+ export { GoAdapter, parseGoMod } from './go.js';
15
+ export type { GoExportInfo, GoFunctionInfo, GoModInfo } from './go.js';
16
+ export { RustAdapter, parseCargoToml } from './rust.js';
17
+ export type { RustExportInfo, RustFunctionInfo, CargoDependency } from './rust.js';
18
+ export { JavaAdapter, parsePomXml, parseBuildGradle } from './java.js';
19
+ export type { JavaExportInfo, JavaFunctionInfo, MavenDependency } from './java.js';
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAA;AAGlB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAG7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAGtE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACvD,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAGlF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AACtE,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * SMI-1303, SMI-1310: Language Adapters Module
3
+ * SMI-1339: Added AdapterFactory
4
+ *
5
+ * Exports all language adapter classes and types for multi-language
6
+ * codebase analysis.
7
+ *
8
+ * @see docs/architecture/multi-language-analysis.md
9
+ */
10
+ // Base adapter class and types
11
+ export { LanguageAdapter, } from './base.js';
12
+ // SMI-1339: Adapter Factory Pattern
13
+ export { AdapterFactory } from './factory.js';
14
+ // Language-specific adapters
15
+ export { TypeScriptAdapter } from './typescript.js';
16
+ export { PythonAdapter } from './python.js';
17
+ // SMI-1305: Go Language Adapter
18
+ export { GoAdapter, parseGoMod } from './go.js';
19
+ // SMI-1306: Rust Language Adapter
20
+ export { RustAdapter, parseCargoToml } from './rust.js';
21
+ // SMI-1307: Java Language Adapter
22
+ export { JavaAdapter, parsePomXml, parseBuildGradle } from './java.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,+BAA+B;AAC/B,OAAO,EACL,eAAe,GAKhB,MAAM,WAAW,CAAA;AAElB,oCAAoC;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C,6BAA6B;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAG/C,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAGvD,kCAAkC;AAClC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA"}
@@ -0,0 +1,154 @@
1
+ /**
2
+ * SMI-1307: Java Language Adapter
3
+ *
4
+ * Parses Java source files and extracts imports, exports, and functions
5
+ * using regex-based parsing. Handles Java-specific features including:
6
+ * - Visibility modifiers (public, private, protected, package-private)
7
+ * - Annotations (@Override, @Test, @Autowired, etc.)
8
+ * - Generics in class and method declarations
9
+ * - Interfaces, abstract classes, enums, and annotation types
10
+ *
11
+ * @see docs/architecture/multi-language-analysis.md
12
+ */
13
+ import { LanguageAdapter, type SupportedLanguage } from './base.js';
14
+ import type { ParseResult, ExportInfo, FunctionInfo, FrameworkRule } from './base.js';
15
+ /**
16
+ * Extended ExportInfo for Java with visibility support
17
+ */
18
+ export interface JavaExportInfo extends ExportInfo {
19
+ /** Java visibility modifier */
20
+ visibility: 'public' | 'private' | 'protected' | 'internal';
21
+ /** Line number in source */
22
+ line: number;
23
+ /** Whether the class/method is abstract */
24
+ isAbstract?: boolean;
25
+ /** Whether the class is final */
26
+ isFinal?: boolean;
27
+ }
28
+ /**
29
+ * Extended FunctionInfo for Java with decorator/annotation support
30
+ */
31
+ export interface JavaFunctionInfo extends FunctionInfo {
32
+ /** Annotations on the method (@Override, @Test, etc.) */
33
+ decorators?: string[];
34
+ /** Whether the method is static */
35
+ isStatic?: boolean;
36
+ /** Whether the method is synchronized */
37
+ isSynchronized?: boolean;
38
+ }
39
+ /**
40
+ * Java Language Adapter
41
+ *
42
+ * Parses Java source files using regex-based parsing.
43
+ * Handles Java's explicit visibility modifiers and annotation system.
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const adapter = new JavaAdapter()
48
+ * const result = adapter.parseFile(javaCode, 'Main.java')
49
+ * console.log(result.exports) // public classes, interfaces, enums
50
+ * console.log(result.functions) // public/protected methods
51
+ * ```
52
+ */
53
+ export declare class JavaAdapter extends LanguageAdapter {
54
+ readonly language: SupportedLanguage;
55
+ readonly extensions: string[];
56
+ /**
57
+ * Parse a Java source file and extract information
58
+ */
59
+ parseFile(content: string, filePath: string): ParseResult;
60
+ /**
61
+ * Parse file incrementally (currently same as full parse)
62
+ */
63
+ parseIncremental(content: string, filePath: string, _previousTree?: unknown): ParseResult;
64
+ /**
65
+ * Get Java framework detection rules
66
+ */
67
+ getFrameworkRules(): FrameworkRule[];
68
+ /**
69
+ * Clean up resources (no-op for regex-based parsing)
70
+ */
71
+ dispose(): void;
72
+ /**
73
+ * Extract import statements from Java source
74
+ *
75
+ * Handles:
76
+ * - Regular imports: import com.example.Class;
77
+ * - Static imports: import static com.example.Class.method;
78
+ * - Wildcard imports: import com.example.*;
79
+ */
80
+ private extractImports;
81
+ /**
82
+ * Extract exports (public declarations) from Java source
83
+ *
84
+ * In Java, exports are determined by visibility modifiers:
85
+ * - public: accessible from anywhere
86
+ * - protected: accessible from subclasses
87
+ * - package-private (default): accessible within package
88
+ * - private: not exported
89
+ */
90
+ private extractExports;
91
+ /**
92
+ * Extract function definitions from Java source
93
+ *
94
+ * Handles:
95
+ * - Regular methods: public void foo(String s, int n)
96
+ * - Generic methods: public <T> List<T> bar(T item)
97
+ * - Abstract methods: protected abstract void baz();
98
+ * - Static methods: public static void main(String[] args)
99
+ * - Annotated methods: @Override public String toString()
100
+ */
101
+ private extractFunctions;
102
+ }
103
+ /**
104
+ * Maven pom.xml dependency information
105
+ */
106
+ export interface MavenDependency {
107
+ /** Maven groupId */
108
+ groupId: string;
109
+ /** Maven artifactId */
110
+ artifactId: string;
111
+ /** Dependency name in groupId:artifactId format */
112
+ name: string;
113
+ /** Version (may be a property reference like ${project.version}) */
114
+ version: string;
115
+ /** Whether this is a test/provided scope dependency */
116
+ isDev: boolean;
117
+ /** Maven scope (compile, test, provided, runtime, system) */
118
+ scope?: string;
119
+ }
120
+ /**
121
+ * Parse pom.xml to extract Maven dependencies
122
+ *
123
+ * @param content - Content of pom.xml file
124
+ * @returns Array of dependency information
125
+ *
126
+ * @example
127
+ * ```typescript
128
+ * const deps = parsePomXml(pomXmlContent)
129
+ * console.log(deps) // [{ name: "org.springframework:spring-core", version: "5.3.0", ... }]
130
+ * ```
131
+ */
132
+ export declare function parsePomXml(content: string): {
133
+ name: string;
134
+ version: string;
135
+ isDev: boolean;
136
+ }[];
137
+ /**
138
+ * Parse build.gradle or build.gradle.kts to extract Gradle dependencies
139
+ *
140
+ * @param content - Content of build.gradle file
141
+ * @returns Array of dependency information
142
+ *
143
+ * @example
144
+ * ```typescript
145
+ * const deps = parseBuildGradle(gradleContent)
146
+ * console.log(deps) // [{ name: "org.springframework:spring-core", version: "5.3.0", ... }]
147
+ * ```
148
+ */
149
+ export declare function parseBuildGradle(content: string): {
150
+ name: string;
151
+ version: string;
152
+ isDev: boolean;
153
+ }[];
154
+ //# sourceMappingURL=java.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/java.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAc,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEjG;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,+BAA+B;IAC/B,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAA;IAC3D,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,iCAAiC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,yDAAyD;IACzD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,yCAAyC;IACzC,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAS;IAC7C,QAAQ,CAAC,UAAU,WAAY;IAE/B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAOzD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,WAAW;IAMzF;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IA0FpC;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAmCtB;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAuCtB;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;CAuEzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAA;IACZ,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,KAAK,EAAE,OAAO,CAAA;IACd,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CAkChG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GACd;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,CA4CrD"}