@omaikit/agents 0.1.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 (186) hide show
  1. package/README.md +31 -0
  2. package/dist/agent.d.ts +31 -0
  3. package/dist/agent.d.ts.map +1 -0
  4. package/dist/agent.js +30 -0
  5. package/dist/agent.js.map +1 -0
  6. package/dist/ai-provider/anthropic.d.ts +13 -0
  7. package/dist/ai-provider/anthropic.d.ts.map +1 -0
  8. package/dist/ai-provider/anthropic.js +85 -0
  9. package/dist/ai-provider/anthropic.js.map +1 -0
  10. package/dist/ai-provider/factory.d.ts +3 -0
  11. package/dist/ai-provider/factory.d.ts.map +1 -0
  12. package/dist/ai-provider/factory.js +22 -0
  13. package/dist/ai-provider/factory.js.map +1 -0
  14. package/dist/ai-provider/openai.d.ts +16 -0
  15. package/dist/ai-provider/openai.d.ts.map +1 -0
  16. package/dist/ai-provider/openai.js +252 -0
  17. package/dist/ai-provider/openai.js.map +1 -0
  18. package/dist/ai-provider/provider.d.ts +25 -0
  19. package/dist/ai-provider/provider.d.ts.map +1 -0
  20. package/dist/ai-provider/provider.js +2 -0
  21. package/dist/ai-provider/provider.js.map +1 -0
  22. package/dist/ai-provider/token-manager.d.ts +12 -0
  23. package/dist/ai-provider/token-manager.d.ts.map +1 -0
  24. package/dist/ai-provider/token-manager.js +63 -0
  25. package/dist/ai-provider/token-manager.js.map +1 -0
  26. package/dist/coder/code-parser.d.ts +23 -0
  27. package/dist/coder/code-parser.d.ts.map +1 -0
  28. package/dist/coder/code-parser.js +184 -0
  29. package/dist/coder/code-parser.js.map +1 -0
  30. package/dist/coder/coder.d.ts +79 -0
  31. package/dist/coder/coder.d.ts.map +1 -0
  32. package/dist/coder/coder.js +476 -0
  33. package/dist/coder/coder.js.map +1 -0
  34. package/dist/coder/dependency-resolver.d.ts +23 -0
  35. package/dist/coder/dependency-resolver.d.ts.map +1 -0
  36. package/dist/coder/dependency-resolver.js +94 -0
  37. package/dist/coder/dependency-resolver.js.map +1 -0
  38. package/dist/coder/language-handlers.d.ts +38 -0
  39. package/dist/coder/language-handlers.d.ts.map +1 -0
  40. package/dist/coder/language-handlers.js +264 -0
  41. package/dist/coder/language-handlers.js.map +1 -0
  42. package/dist/coder/linter-integration.d.ts +37 -0
  43. package/dist/coder/linter-integration.d.ts.map +1 -0
  44. package/dist/coder/linter-integration.js +200 -0
  45. package/dist/coder/linter-integration.js.map +1 -0
  46. package/dist/coder/prompt-templates.d.ts +13 -0
  47. package/dist/coder/prompt-templates.d.ts.map +1 -0
  48. package/dist/coder/prompt-templates.js +78 -0
  49. package/dist/coder/prompt-templates.js.map +1 -0
  50. package/dist/coder/quality-checker.d.ts +31 -0
  51. package/dist/coder/quality-checker.d.ts.map +1 -0
  52. package/dist/coder/quality-checker.js +264 -0
  53. package/dist/coder/quality-checker.js.map +1 -0
  54. package/dist/coder/syntax-validator.d.ts +21 -0
  55. package/dist/coder/syntax-validator.d.ts.map +1 -0
  56. package/dist/coder/syntax-validator.js +169 -0
  57. package/dist/coder/syntax-validator.js.map +1 -0
  58. package/dist/coder.d.ts +2 -0
  59. package/dist/coder.d.ts.map +1 -0
  60. package/dist/coder.js +2 -0
  61. package/dist/coder.js.map +1 -0
  62. package/dist/errors.d.ts +11 -0
  63. package/dist/errors.d.ts.map +1 -0
  64. package/dist/errors.js +16 -0
  65. package/dist/errors.js.map +1 -0
  66. package/dist/index.d.ts +18 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +18 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/logger.d.ts +6 -0
  71. package/dist/logger.d.ts.map +1 -0
  72. package/dist/logger.js +12 -0
  73. package/dist/logger.js.map +1 -0
  74. package/dist/manager/manager.d.ts +31 -0
  75. package/dist/manager/manager.d.ts.map +1 -0
  76. package/dist/manager/manager.js +162 -0
  77. package/dist/manager/manager.js.map +1 -0
  78. package/dist/memory/memory-store.d.ts +20 -0
  79. package/dist/memory/memory-store.d.ts.map +1 -0
  80. package/dist/memory/memory-store.js +68 -0
  81. package/dist/memory/memory-store.js.map +1 -0
  82. package/dist/planner/clarification-handler.d.ts +11 -0
  83. package/dist/planner/clarification-handler.d.ts.map +1 -0
  84. package/dist/planner/clarification-handler.js +60 -0
  85. package/dist/planner/clarification-handler.js.map +1 -0
  86. package/dist/planner/plan-parser.d.ts +11 -0
  87. package/dist/planner/plan-parser.d.ts.map +1 -0
  88. package/dist/planner/plan-parser.js +136 -0
  89. package/dist/planner/plan-parser.js.map +1 -0
  90. package/dist/planner/plan-validator.d.ts +29 -0
  91. package/dist/planner/plan-validator.d.ts.map +1 -0
  92. package/dist/planner/plan-validator.js +123 -0
  93. package/dist/planner/plan-validator.js.map +1 -0
  94. package/dist/planner/planner.d.ts +25 -0
  95. package/dist/planner/planner.d.ts.map +1 -0
  96. package/dist/planner/planner.js +334 -0
  97. package/dist/planner/planner.js.map +1 -0
  98. package/dist/planner/prompt-templates.d.ts +9 -0
  99. package/dist/planner/prompt-templates.d.ts.map +1 -0
  100. package/dist/planner/prompt-templates.js +168 -0
  101. package/dist/planner/prompt-templates.js.map +1 -0
  102. package/dist/planner.d.ts +2 -0
  103. package/dist/planner.d.ts.map +1 -0
  104. package/dist/planner.js +2 -0
  105. package/dist/planner.js.map +1 -0
  106. package/dist/reviewer/reviewer.d.ts +29 -0
  107. package/dist/reviewer/reviewer.d.ts.map +1 -0
  108. package/dist/reviewer/reviewer.js +40 -0
  109. package/dist/reviewer/reviewer.js.map +1 -0
  110. package/dist/reviewer.d.ts +2 -0
  111. package/dist/reviewer.d.ts.map +1 -0
  112. package/dist/reviewer.js +2 -0
  113. package/dist/reviewer.js.map +1 -0
  114. package/dist/tester/coverage-analyzer.d.ts +9 -0
  115. package/dist/tester/coverage-analyzer.d.ts.map +1 -0
  116. package/dist/tester/coverage-analyzer.js +18 -0
  117. package/dist/tester/coverage-analyzer.js.map +1 -0
  118. package/dist/tester/coverage-validator.d.ts +10 -0
  119. package/dist/tester/coverage-validator.d.ts.map +1 -0
  120. package/dist/tester/coverage-validator.js +14 -0
  121. package/dist/tester/coverage-validator.js.map +1 -0
  122. package/dist/tester/framework-detector.d.ts +4 -0
  123. package/dist/tester/framework-detector.d.ts.map +1 -0
  124. package/dist/tester/framework-detector.js +26 -0
  125. package/dist/tester/framework-detector.js.map +1 -0
  126. package/dist/tester/prompt-templates.d.ts +6 -0
  127. package/dist/tester/prompt-templates.d.ts.map +1 -0
  128. package/dist/tester/prompt-templates.js +30 -0
  129. package/dist/tester/prompt-templates.js.map +1 -0
  130. package/dist/tester/test-executor.d.ts +11 -0
  131. package/dist/tester/test-executor.d.ts.map +1 -0
  132. package/dist/tester/test-executor.js +24 -0
  133. package/dist/tester/test-executor.js.map +1 -0
  134. package/dist/tester/test-parser.d.ts +10 -0
  135. package/dist/tester/test-parser.d.ts.map +1 -0
  136. package/dist/tester/test-parser.js +83 -0
  137. package/dist/tester/test-parser.js.map +1 -0
  138. package/dist/tester/test-patterns.d.ts +10 -0
  139. package/dist/tester/test-patterns.d.ts.map +1 -0
  140. package/dist/tester/test-patterns.js +65 -0
  141. package/dist/tester/test-patterns.js.map +1 -0
  142. package/dist/tester/tester.d.ts +56 -0
  143. package/dist/tester/tester.d.ts.map +1 -0
  144. package/dist/tester/tester.js +246 -0
  145. package/dist/tester/tester.js.map +1 -0
  146. package/dist/tester.d.ts +3 -0
  147. package/dist/tester.d.ts.map +1 -0
  148. package/dist/tester.js +2 -0
  149. package/dist/tester.js.map +1 -0
  150. package/dist/tools/default-registry.d.ts +3 -0
  151. package/dist/tools/default-registry.d.ts.map +1 -0
  152. package/dist/tools/default-registry.js +12 -0
  153. package/dist/tools/default-registry.js.map +1 -0
  154. package/dist/tools/edit.d.ts +4 -0
  155. package/dist/tools/edit.d.ts.map +1 -0
  156. package/dist/tools/edit.js +95 -0
  157. package/dist/tools/edit.js.map +1 -0
  158. package/dist/tools/index.d.ts +6 -0
  159. package/dist/tools/index.d.ts.map +1 -0
  160. package/dist/tools/index.js +6 -0
  161. package/dist/tools/index.js.map +1 -0
  162. package/dist/tools/read.d.ts +4 -0
  163. package/dist/tools/read.d.ts.map +1 -0
  164. package/dist/tools/read.js +39 -0
  165. package/dist/tools/read.js.map +1 -0
  166. package/dist/tools/registry.d.ts +11 -0
  167. package/dist/tools/registry.d.ts.map +1 -0
  168. package/dist/tools/registry.js +31 -0
  169. package/dist/tools/registry.js.map +1 -0
  170. package/dist/tools/search.d.ts +4 -0
  171. package/dist/tools/search.d.ts.map +1 -0
  172. package/dist/tools/search.js +52 -0
  173. package/dist/tools/search.js.map +1 -0
  174. package/dist/tools/types.d.ts +37 -0
  175. package/dist/tools/types.d.ts.map +1 -0
  176. package/dist/tools/types.js +2 -0
  177. package/dist/tools/types.js.map +1 -0
  178. package/dist/tools/utils.d.ts +10 -0
  179. package/dist/tools/utils.d.ts.map +1 -0
  180. package/dist/tools/utils.js +76 -0
  181. package/dist/tools/utils.js.map +1 -0
  182. package/dist/types.d.ts +16 -0
  183. package/dist/types.d.ts.map +1 -0
  184. package/dist/types.js +2 -0
  185. package/dist/types.js.map +1 -0
  186. package/package.json +38 -0
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Language Handler Registry
3
+ * Provides language-specific code generation and validation support
4
+ */
5
+ export class LanguageHandlers {
6
+ handlers;
7
+ constructor() {
8
+ this.handlers = new Map();
9
+ this.registerDefaultHandlers();
10
+ }
11
+ registerDefaultHandlers() {
12
+ // Generic fallback
13
+ this.register({
14
+ name: 'generic',
15
+ extensions: ['.txt'],
16
+ syntaxValidator: () => true,
17
+ dependencyExtractor: () => [],
18
+ linterConfig: {},
19
+ formatter: (code) => code,
20
+ errorHandlingPattern: 'try-catch',
21
+ loggingPattern: 'logger.info/error',
22
+ });
23
+ // TypeScript/JavaScript
24
+ this.register({
25
+ name: 'typescript',
26
+ extensions: ['.ts', '.tsx'],
27
+ syntaxValidator: this.validateTypeScript,
28
+ dependencyExtractor: this.extractTypeScriptDependencies,
29
+ linterConfig: {
30
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'],
31
+ rules: {
32
+ 'no-console': 'warn',
33
+ 'no-unused-vars': 'error',
34
+ 'consistent-return': 'error',
35
+ },
36
+ },
37
+ formatter: (code) => code, // Prettier would handle this
38
+ errorHandlingPattern: 'try-catch',
39
+ loggingPattern: 'logger.log/error/warn',
40
+ });
41
+ this.register({
42
+ name: 'javascript',
43
+ extensions: ['.js', '.jsx'],
44
+ syntaxValidator: this.validateJavaScript,
45
+ dependencyExtractor: this.extractJavaScriptDependencies,
46
+ linterConfig: {
47
+ extends: 'eslint:recommended',
48
+ rules: {
49
+ 'no-unused-vars': 'error',
50
+ 'consistent-return': 'error',
51
+ },
52
+ },
53
+ formatter: (code) => code,
54
+ errorHandlingPattern: 'try-catch',
55
+ loggingPattern: 'console.log/error',
56
+ });
57
+ // Python
58
+ this.register({
59
+ name: 'python',
60
+ extensions: ['.py'],
61
+ syntaxValidator: this.validatePython,
62
+ dependencyExtractor: this.extractPythonDependencies,
63
+ linterConfig: {
64
+ extend: 'pylint:all',
65
+ disable: ['missing-docstring'],
66
+ max_line_length: 100,
67
+ },
68
+ formatter: (code) => code, // Black would handle this
69
+ errorHandlingPattern: 'try-except',
70
+ loggingPattern: 'logging.log/error/warning',
71
+ });
72
+ // Go
73
+ this.register({
74
+ name: 'go',
75
+ extensions: ['.go'],
76
+ syntaxValidator: this.validateGo,
77
+ dependencyExtractor: this.extractGoDependencies,
78
+ linterConfig: {
79
+ golangci_lint: {
80
+ linters: ['vet', 'golint', 'ineffassign'],
81
+ },
82
+ },
83
+ formatter: (code) => code, // gofmt would handle this
84
+ errorHandlingPattern: 'error-return',
85
+ loggingPattern: 'log.Printf/Println',
86
+ });
87
+ // Rust
88
+ this.register({
89
+ name: 'rust',
90
+ extensions: ['.rs'],
91
+ syntaxValidator: this.validateRust,
92
+ dependencyExtractor: this.extractRustDependencies,
93
+ linterConfig: {
94
+ lint: ['clippy'],
95
+ },
96
+ formatter: (code) => code, // rustfmt would handle this
97
+ errorHandlingPattern: 'result-type',
98
+ loggingPattern: 'log::info/error/warn',
99
+ });
100
+ // C#
101
+ this.register({
102
+ name: 'csharp',
103
+ extensions: ['.cs'],
104
+ syntaxValidator: this.validateCsharp,
105
+ dependencyExtractor: this.extractCsharpDependencies,
106
+ linterConfig: {
107
+ roslyn_analyzers: ['enabled'],
108
+ },
109
+ formatter: (code) => code,
110
+ errorHandlingPattern: 'try-catch',
111
+ loggingPattern: 'ILogger.Log/Error',
112
+ });
113
+ // PHP
114
+ this.register({
115
+ name: 'php',
116
+ extensions: ['.php'],
117
+ syntaxValidator: this.validatePhp,
118
+ dependencyExtractor: this.extractPhpDependencies,
119
+ linterConfig: {
120
+ standard: 'PSR12',
121
+ },
122
+ formatter: (code) => code,
123
+ errorHandlingPattern: 'try-catch',
124
+ loggingPattern: 'logger->info/error',
125
+ });
126
+ }
127
+ register(handler) {
128
+ this.handlers.set(handler.name, handler);
129
+ this.handlers.set(handler.extensions[0].slice(1), handler); // Register by extension too
130
+ }
131
+ getHandler(language) {
132
+ const handler = this.handlers.get(language);
133
+ if (handler) {
134
+ return handler;
135
+ }
136
+ return this.handlers.get('generic');
137
+ }
138
+ supportedLanguages() {
139
+ return Array.from(new Set(Array.from(this.handlers.values()).map((h) => h.name)));
140
+ }
141
+ getHandlerByExtension(extension) {
142
+ return this.handlers.get(extension);
143
+ }
144
+ // Validation methods
145
+ validateTypeScript(code) {
146
+ // Basic validation - check for balanced braces and parens
147
+ const openBraces = (code.match(/{/g) || []).length;
148
+ const closeBraces = (code.match(/}/g) || []).length;
149
+ const openParens = (code.match(/\(/g) || []).length;
150
+ const closeParens = (code.match(/\)/g) || []).length;
151
+ return openBraces === closeBraces && openParens === closeParens;
152
+ }
153
+ validateJavaScript(code) {
154
+ return this.validateTypeScript(code);
155
+ }
156
+ validatePython(code) {
157
+ // Python: check indentation and basic syntax
158
+ const lines = code.split('\n');
159
+ let lastIndent = 0;
160
+ for (const line of lines) {
161
+ if (line.trim() === '' || line.trim().startsWith('#'))
162
+ continue;
163
+ const indent = line.length - line.trimStart().length;
164
+ // Allow increase of up to 4 spaces
165
+ if (indent > lastIndent && indent - lastIndent > 4) {
166
+ return false;
167
+ }
168
+ lastIndent = indent;
169
+ }
170
+ return true;
171
+ }
172
+ validateGo(code) {
173
+ // Basic Go validation
174
+ return code.includes('package ') && this.validateTypeScript(code);
175
+ }
176
+ validateRust(code) {
177
+ // Basic Rust validation
178
+ return this.validateTypeScript(code);
179
+ }
180
+ validateCsharp(code) {
181
+ // Basic C# validation
182
+ return this.validateTypeScript(code);
183
+ }
184
+ validatePhp(code) {
185
+ const hasPhpTag = code.includes('<?php');
186
+ const openBraces = (code.match(/{/g) || []).length;
187
+ const closeBraces = (code.match(/}/g) || []).length;
188
+ return hasPhpTag && openBraces === closeBraces;
189
+ }
190
+ // Dependency extraction methods
191
+ extractTypeScriptDependencies(code) {
192
+ const imports = [];
193
+ const importRegex = /(?:import|from)\s+['"]([^'"]+)['"]/g;
194
+ let match;
195
+ while ((match = importRegex.exec(code)) !== null) {
196
+ imports.push(match[1]);
197
+ }
198
+ return [...new Set(imports)];
199
+ }
200
+ extractJavaScriptDependencies(code) {
201
+ return this.extractTypeScriptDependencies(code).concat(...(code.match(/require\(['"]([^'"]+)['"]\)/g) || []).map((m) => m.match(/require\(['"]([^'"]+)['"]\)/)?.[1] || ''));
202
+ }
203
+ extractPythonDependencies(code) {
204
+ const imports = [];
205
+ const fromImportRegex = /from\s+([^\s]+)\s+import/g;
206
+ const importRegex = /import\s+([^\s]+)/g;
207
+ let match;
208
+ while ((match = fromImportRegex.exec(code)) !== null) {
209
+ imports.push(match[1]);
210
+ }
211
+ while ((match = importRegex.exec(code)) !== null) {
212
+ imports.push(match[1]);
213
+ }
214
+ return [...new Set(imports)];
215
+ }
216
+ extractGoDependencies(code) {
217
+ const imports = [];
218
+ const importRegex = /import\s+(?:\(([^)]+)\)|"([^"]+)")/g;
219
+ let match;
220
+ while ((match = importRegex.exec(code)) !== null) {
221
+ const group = match[1] || match[2];
222
+ if (group) {
223
+ group.split('\n').forEach((line) => {
224
+ const pkg = line.match(/"([^"]+)"/)?.[1];
225
+ if (pkg)
226
+ imports.push(pkg);
227
+ });
228
+ }
229
+ }
230
+ return [...new Set(imports)];
231
+ }
232
+ extractRustDependencies(code) {
233
+ const imports = [];
234
+ const useRegex = /use\s+([^;]+);/g;
235
+ let match;
236
+ while ((match = useRegex.exec(code)) !== null) {
237
+ imports.push(match[1].trim());
238
+ }
239
+ return [...new Set(imports)];
240
+ }
241
+ extractCsharpDependencies(code) {
242
+ const imports = [];
243
+ const usingRegex = /using\s+([^\s;]+);/g;
244
+ let match;
245
+ while ((match = usingRegex.exec(code)) !== null) {
246
+ imports.push(match[1]);
247
+ }
248
+ return [...new Set(imports)];
249
+ }
250
+ extractPhpDependencies(code) {
251
+ const dependencies = [];
252
+ const useRegex = /use\s+([^;]+);/g;
253
+ const requireRegex = /(require|include)(_once)?\s*\(?['"]([^'"]+)['"]\)?/g;
254
+ let match;
255
+ while ((match = useRegex.exec(code)) !== null) {
256
+ dependencies.push(match[1].trim());
257
+ }
258
+ while ((match = requireRegex.exec(code)) !== null) {
259
+ dependencies.push(match[3].trim());
260
+ }
261
+ return [...new Set(dependencies)];
262
+ }
263
+ }
264
+ //# sourceMappingURL=language-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-handlers.js","sourceRoot":"","sources":["../../src/coder/language-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Linter Integration
3
+ * Integrates language-specific linters for code quality checking
4
+ */
5
+ import type { CodeFile } from '@omaikit/models';
6
+ export interface LintIssue {
7
+ rule: string;
8
+ severity: 'error' | 'warning' | 'info';
9
+ message: string;
10
+ line?: number;
11
+ column?: number;
12
+ suggestion?: string;
13
+ }
14
+ export interface LintResult {
15
+ file: string;
16
+ issues: LintIssue[];
17
+ score: number;
18
+ }
19
+ export declare class LinterIntegration {
20
+ private languageHandlers;
21
+ constructor();
22
+ init(): Promise<void>;
23
+ /**
24
+ * Lint generated code files
25
+ */
26
+ lint(files: CodeFile[]): Promise<LintResult[]>;
27
+ /**
28
+ * Lint a single file
29
+ */
30
+ private lintFile;
31
+ private lintTypeScript;
32
+ private lintPython;
33
+ private lintGo;
34
+ private lintRust;
35
+ private lintCsharp;
36
+ }
37
+ //# sourceMappingURL=linter-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linter-integration.d.ts","sourceRoot":"","sources":["../../src/coder/linter-integration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGhD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,gBAAgB,CAAmB;;IAMrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B;;OAEG;IACG,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIpD;;OAEG;IACH,OAAO,CAAC,QAAQ;IA+BhB,OAAO,CAAC,cAAc;IA+DtB,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,MAAM;IAsBd,OAAO,CAAC,QAAQ;IAqBhB,OAAO,CAAC,UAAU;CA4BnB"}
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Linter Integration
3
+ * Integrates language-specific linters for code quality checking
4
+ */
5
+ import { LanguageHandlers } from './language-handlers.js';
6
+ export class LinterIntegration {
7
+ languageHandlers;
8
+ constructor() {
9
+ this.languageHandlers = new LanguageHandlers();
10
+ }
11
+ async init() {
12
+ // Initialize linters
13
+ }
14
+ /**
15
+ * Lint generated code files
16
+ */
17
+ async lint(files) {
18
+ return files.map((file) => this.lintFile(file));
19
+ }
20
+ /**
21
+ * Lint a single file
22
+ */
23
+ lintFile(file) {
24
+ const language = file.language || 'unknown';
25
+ const issues = [];
26
+ // Perform language-specific linting
27
+ switch (language) {
28
+ case 'typescript':
29
+ case 'javascript':
30
+ return this.lintTypeScript(file);
31
+ case 'python':
32
+ return this.lintPython(file);
33
+ case 'go':
34
+ return this.lintGo(file);
35
+ case 'rust':
36
+ return this.lintRust(file);
37
+ case 'csharp':
38
+ return this.lintCsharp(file);
39
+ default:
40
+ return {
41
+ file: file.path,
42
+ issues: [],
43
+ score: 100,
44
+ };
45
+ }
46
+ }
47
+ lintTypeScript(file) {
48
+ const issues = [];
49
+ const lines = file.content.split('\n');
50
+ let score = 100;
51
+ lines.forEach((line, idx) => {
52
+ const lineNum = idx + 1;
53
+ // Check for console statements (should use logger)
54
+ if (line.includes('console.log') || line.includes('console.error')) {
55
+ issues.push({
56
+ rule: 'no-console',
57
+ severity: 'warning',
58
+ message: 'Use logger instead of console',
59
+ line: lineNum,
60
+ suggestion: 'Replace with logger.info() or logger.error()',
61
+ });
62
+ score -= 2;
63
+ }
64
+ // Check for var usage (should use const/let)
65
+ if (line.match(/\bvar\b/)) {
66
+ issues.push({
67
+ rule: 'no-var',
68
+ severity: 'error',
69
+ message: 'Use const or let instead of var',
70
+ line: lineNum,
71
+ suggestion: 'Replace var with const',
72
+ });
73
+ score -= 5;
74
+ }
75
+ // Check line length
76
+ if (line.length > 100) {
77
+ issues.push({
78
+ rule: 'max-len',
79
+ severity: 'info',
80
+ message: 'Line exceeds 100 characters',
81
+ line: lineNum,
82
+ suggestion: 'Break line into multiple lines',
83
+ });
84
+ score -= 1;
85
+ }
86
+ // Check for trailing whitespace
87
+ if (line.endsWith(' ') || line.endsWith('\t')) {
88
+ issues.push({
89
+ rule: 'no-trailing-spaces',
90
+ severity: 'info',
91
+ message: 'Trailing whitespace',
92
+ line: lineNum,
93
+ });
94
+ score -= 1;
95
+ }
96
+ });
97
+ return {
98
+ file: file.path,
99
+ issues,
100
+ score: Math.max(0, score),
101
+ };
102
+ }
103
+ lintPython(file) {
104
+ const issues = [];
105
+ let score = 100;
106
+ const lines = file.content.split('\n');
107
+ lines.forEach((line, idx) => {
108
+ const lineNum = idx + 1;
109
+ // Check for print statements (should use logging)
110
+ if (line.includes('print(')) {
111
+ issues.push({
112
+ rule: 'no-print',
113
+ severity: 'warning',
114
+ message: 'Use logging instead of print',
115
+ line: lineNum,
116
+ suggestion: 'Use logger.info() or logger.error()',
117
+ });
118
+ score -= 2;
119
+ }
120
+ // Check line length
121
+ if (line.length > 100) {
122
+ issues.push({
123
+ rule: 'line-too-long',
124
+ severity: 'info',
125
+ message: 'Line exceeds 100 characters',
126
+ line: lineNum,
127
+ });
128
+ score -= 1;
129
+ }
130
+ });
131
+ return {
132
+ file: file.path,
133
+ issues,
134
+ score: Math.max(0, score),
135
+ };
136
+ }
137
+ lintGo(file) {
138
+ const issues = [];
139
+ let score = 100;
140
+ // Check for error handling
141
+ if (!file.content.includes('error')) {
142
+ issues.push({
143
+ rule: 'unhandled-error',
144
+ severity: 'warning',
145
+ message: 'No error handling found',
146
+ suggestion: 'Add error checking for function calls',
147
+ });
148
+ score -= 5;
149
+ }
150
+ return {
151
+ file: file.path,
152
+ issues,
153
+ score: Math.max(0, score),
154
+ };
155
+ }
156
+ lintRust(file) {
157
+ const issues = [];
158
+ let score = 100;
159
+ // Rust compiler is strict, mostly check for style
160
+ if (!file.content.includes('// ') && file.content.length > 100) {
161
+ issues.push({
162
+ rule: 'missing-comments',
163
+ severity: 'info',
164
+ message: 'Code could benefit from more comments',
165
+ });
166
+ score -= 2;
167
+ }
168
+ return {
169
+ file: file.path,
170
+ issues,
171
+ score: Math.max(0, score),
172
+ };
173
+ }
174
+ lintCsharp(file) {
175
+ const issues = [];
176
+ let score = 100;
177
+ const lines = file.content.split('\n');
178
+ lines.forEach((line, idx) => {
179
+ const lineNum = idx + 1;
180
+ // Check for missing XML documentation
181
+ if (line.match(/^\s*(public|protected)\s+(class|interface|struct|enum|async\s)?/)) {
182
+ if (!lines[idx - 1]?.includes('///')) {
183
+ issues.push({
184
+ rule: 'missing-xml-doc',
185
+ severity: 'info',
186
+ message: 'Public member missing XML documentation',
187
+ line: lineNum,
188
+ });
189
+ score -= 2;
190
+ }
191
+ }
192
+ });
193
+ return {
194
+ file: file.path,
195
+ issues,
196
+ score: Math.max(0, score),
197
+ };
198
+ }
199
+ }
200
+ //# sourceMappingURL=linter-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linter-integration.js","sourceRoot":"","sources":["../../src/coder/linter-integration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Code Generation Prompt Templates
3
+ */
4
+ import type { Task } from '@omaikit/models';
5
+ export declare class PromptTemplates {
6
+ /**
7
+ * Generate a prompt for code generation
8
+ */
9
+ generatePrompt(task: Task, projectContext: any, plan: any): Promise<string>;
10
+ private getBasePrompt;
11
+ private formatContextSummary;
12
+ }
13
+ //# sourceMappingURL=prompt-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/coder/prompt-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,eAAe;IAC1B;;OAEG;IACG,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IAuCjF,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,oBAAoB;CA0B7B"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Code Generation Prompt Templates
3
+ */
4
+ export class PromptTemplates {
5
+ /**
6
+ * Generate a prompt for code generation
7
+ */
8
+ async generatePrompt(task, projectContext, plan) {
9
+ const basePrompt = this.getBasePrompt();
10
+ const contextSummary = this.formatContextSummary(projectContext, plan);
11
+ return `
12
+ ${basePrompt}
13
+
14
+ ## Task Details
15
+ Title: ${task.title}
16
+ Description: ${task.description}
17
+ Type: ${task.type}
18
+ Estimated Effort: ${task.estimatedEffort} hours
19
+
20
+ ## Acceptance Criteria
21
+ ${task.acceptanceCriteria.map((c) => `- ${c}`).join('\n')}
22
+
23
+ ## Project Context (from .omaikit/context.json)
24
+ ${contextSummary}
25
+
26
+ ## Standards
27
+ - PSR-12
28
+ - PSR-4
29
+ - SOLID
30
+ - KISS
31
+ - DRY
32
+ - Clean Code principles
33
+
34
+ ## Requirements
35
+ 1. Write production-ready code with proper error handling
36
+ 2. Include logging statements for debugging
37
+ 3. Add clear documentation where needed
38
+ 4. Keep functions small and focused
39
+ 5. Keep the code testable and maintainable
40
+
41
+ ## Output Format
42
+ Provide the generated code as a single response with file paths and content.
43
+ `;
44
+ }
45
+ getBasePrompt() {
46
+ return `You are a senior software engineer generating production-ready code that:
47
+ - Follows PSR-12 and PSR-4
48
+ - Applies SOLID, KISS, DRY, and Clean Code principles
49
+ - Matches the existing project conventions from context
50
+ - Uses structured logging (or the project's logger)`;
51
+ }
52
+ formatContextSummary(projectContext, plan) {
53
+ const project = projectContext?.project ?? projectContext;
54
+ const analysis = projectContext?.analysis ?? {};
55
+ const name = project?.name || 'Unknown project';
56
+ const rootPath = project?.rootPath || 'Unknown root';
57
+ const description = project?.description
58
+ ? `Description: ${project.description}`
59
+ : 'Description: (none)';
60
+ const languages = Array.isArray(analysis.languages) ? analysis.languages.join(', ') : 'unknown';
61
+ const fileCount = typeof analysis.fileCount === 'number' ? analysis.fileCount : 'unknown';
62
+ const totalLOC = typeof analysis.totalLOC === 'number' ? analysis.totalLOC : 'unknown';
63
+ const dependencies = Array.isArray(analysis.dependencies)
64
+ ? analysis.dependencies.slice(0, 12).join(', ')
65
+ : 'unknown';
66
+ const planTitle = plan?.title ? `Plan: ${plan.title}` : 'Plan: (none)';
67
+ return [
68
+ `Project: ${name}`,
69
+ `Root: ${rootPath}`,
70
+ description,
71
+ planTitle,
72
+ `Languages: ${languages}`,
73
+ `Files: ${fileCount}, LOC: ${totalLOC}`,
74
+ `Dependencies (sample): ${dependencies}`,
75
+ ].join('\n');
76
+ }
77
+ }
78
+ //# sourceMappingURL=prompt-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/coder/prompt-templates.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,IAAU,EAAE,cAAmB,EAAE,IAAS;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEvE,OAAO;EACT,UAAU;;;SAGH,IAAI,CAAC,KAAK;eACJ,IAAI,CAAC,WAAW;QACvB,IAAI,CAAC,IAAI;oBACG,IAAI,CAAC,eAAe;;;EAGtC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAGvD,cAAc;;;;;;;;;;;;;;;;;;;CAmBf,CAAC;IACA,CAAC;IAEO,aAAa;QACnB,OAAO;;;;oDAIyC,CAAC;IACnD,CAAC;IAEO,oBAAoB,CAAC,cAAmB,EAAE,IAAS;QACzD,MAAM,OAAO,GAAG,cAAc,EAAE,OAAO,IAAI,cAAc,CAAC;QAC1D,MAAM,QAAQ,GAAG,cAAc,EAAE,QAAQ,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,iBAAiB,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,cAAc,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW;YACtC,CAAC,CAAC,gBAAgB,OAAO,CAAC,WAAW,EAAE;YACvC,CAAC,CAAC,qBAAqB,CAAC;QAC1B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,MAAM,SAAS,GAAG,OAAO,QAAQ,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YACvD,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/C,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,SAAS,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;QAEvE,OAAO;YACL,YAAY,IAAI,EAAE;YAClB,SAAS,QAAQ,EAAE;YACnB,WAAW;YACX,SAAS;YACT,cAAc,SAAS,EAAE;YACzB,UAAU,SAAS,UAAU,QAAQ,EAAE;YACvC,0BAA0B,YAAY,EAAE;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Code Quality Checker
3
+ * Checks code quality standards (error handling, logging, type safety, etc.)
4
+ */
5
+ import type { CodeFile } from '@omaikit/models';
6
+ export interface QualityCheck {
7
+ aspect: string;
8
+ pass: boolean;
9
+ message: string;
10
+ details?: string;
11
+ }
12
+ export declare class QualityChecker {
13
+ /**
14
+ * Check code quality standards
15
+ */
16
+ check(files: CodeFile[]): Promise<QualityCheck[][]>;
17
+ /**
18
+ * Check quality of a single file
19
+ */
20
+ private checkFile;
21
+ private checkErrorHandling;
22
+ private checkLogging;
23
+ private checkDocumentation;
24
+ private checkTypeScript;
25
+ private checkPython;
26
+ private checkGo;
27
+ private checkRust;
28
+ private checkCsharp;
29
+ private checkPhp;
30
+ }
31
+ //# sourceMappingURL=quality-checker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-checker.d.ts","sourceRoot":"","sources":["../../src/coder/quality-checker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,cAAc;IACzB;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;IAIzD;;OAEG;IACH,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,kBAAkB;IA2C1B,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,kBAAkB;IAwC1B,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,WAAW;IA6BnB,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,QAAQ;CAsBjB"}