codehere 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 (159) hide show
  1. package/ARCHITECTURE.md +240 -0
  2. package/CHANGELOG.md +44 -0
  3. package/CONTRIBUTING.md +171 -0
  4. package/LICENSE +22 -0
  5. package/README.md +203 -0
  6. package/dist/ast-parser.d.ts +55 -0
  7. package/dist/ast-parser.d.ts.map +1 -0
  8. package/dist/ast-parser.js +331 -0
  9. package/dist/ast-parser.js.map +1 -0
  10. package/dist/benchmark.d.ts +39 -0
  11. package/dist/benchmark.d.ts.map +1 -0
  12. package/dist/benchmark.js +195 -0
  13. package/dist/benchmark.js.map +1 -0
  14. package/dist/cache.d.ts +45 -0
  15. package/dist/cache.d.ts.map +1 -0
  16. package/dist/cache.js +182 -0
  17. package/dist/cache.js.map +1 -0
  18. package/dist/chat.d.ts +4 -0
  19. package/dist/chat.d.ts.map +1 -0
  20. package/dist/chat.js +132 -0
  21. package/dist/chat.js.map +1 -0
  22. package/dist/code-analysis.d.ts +50 -0
  23. package/dist/code-analysis.d.ts.map +1 -0
  24. package/dist/code-analysis.js +327 -0
  25. package/dist/code-analysis.js.map +1 -0
  26. package/dist/context.d.ts +44 -0
  27. package/dist/context.d.ts.map +1 -0
  28. package/dist/context.js +187 -0
  29. package/dist/context.js.map +1 -0
  30. package/dist/docs.d.ts +21 -0
  31. package/dist/docs.d.ts.map +1 -0
  32. package/dist/docs.js +147 -0
  33. package/dist/docs.js.map +1 -0
  34. package/dist/edit.d.ts +38 -0
  35. package/dist/edit.d.ts.map +1 -0
  36. package/dist/edit.js +594 -0
  37. package/dist/edit.js.map +1 -0
  38. package/dist/embed.d.ts +18 -0
  39. package/dist/embed.d.ts.map +1 -0
  40. package/dist/embed.js +479 -0
  41. package/dist/embed.js.map +1 -0
  42. package/dist/error-handler.d.ts +76 -0
  43. package/dist/error-handler.d.ts.map +1 -0
  44. package/dist/error-handler.js +213 -0
  45. package/dist/error-handler.js.map +1 -0
  46. package/dist/formatter.d.ts +25 -0
  47. package/dist/formatter.d.ts.map +1 -0
  48. package/dist/formatter.js +148 -0
  49. package/dist/formatter.js.map +1 -0
  50. package/dist/git.d.ts +55 -0
  51. package/dist/git.d.ts.map +1 -0
  52. package/dist/git.js +198 -0
  53. package/dist/git.js.map +1 -0
  54. package/dist/index.d.ts +3 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +964 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/intelligent-retrieval.d.ts +41 -0
  59. package/dist/intelligent-retrieval.d.ts.map +1 -0
  60. package/dist/intelligent-retrieval.js +265 -0
  61. package/dist/intelligent-retrieval.js.map +1 -0
  62. package/dist/iterative-refinement.d.ts +31 -0
  63. package/dist/iterative-refinement.d.ts.map +1 -0
  64. package/dist/iterative-refinement.js +172 -0
  65. package/dist/iterative-refinement.js.map +1 -0
  66. package/dist/learning.d.ts +69 -0
  67. package/dist/learning.d.ts.map +1 -0
  68. package/dist/learning.js +233 -0
  69. package/dist/learning.js.map +1 -0
  70. package/dist/log.d.ts +4 -0
  71. package/dist/log.d.ts.map +1 -0
  72. package/dist/log.js +31 -0
  73. package/dist/log.js.map +1 -0
  74. package/dist/migrate.d.ts +33 -0
  75. package/dist/migrate.d.ts.map +1 -0
  76. package/dist/migrate.js +133 -0
  77. package/dist/migrate.js.map +1 -0
  78. package/dist/monitoring.d.ts +75 -0
  79. package/dist/monitoring.d.ts.map +1 -0
  80. package/dist/monitoring.js +248 -0
  81. package/dist/monitoring.js.map +1 -0
  82. package/dist/parallel-processor.d.ts +43 -0
  83. package/dist/parallel-processor.d.ts.map +1 -0
  84. package/dist/parallel-processor.js +308 -0
  85. package/dist/parallel-processor.js.map +1 -0
  86. package/dist/planner.d.ts +47 -0
  87. package/dist/planner.d.ts.map +1 -0
  88. package/dist/planner.js +198 -0
  89. package/dist/planner.js.map +1 -0
  90. package/dist/policy.d.ts +3 -0
  91. package/dist/policy.d.ts.map +1 -0
  92. package/dist/policy.js +26 -0
  93. package/dist/policy.js.map +1 -0
  94. package/dist/query-optimizer.d.ts +32 -0
  95. package/dist/query-optimizer.d.ts.map +1 -0
  96. package/dist/query-optimizer.js +205 -0
  97. package/dist/query-optimizer.js.map +1 -0
  98. package/dist/refactor.d.ts +27 -0
  99. package/dist/refactor.d.ts.map +1 -0
  100. package/dist/refactor.js +118 -0
  101. package/dist/refactor.js.map +1 -0
  102. package/dist/review.d.ts +31 -0
  103. package/dist/review.d.ts.map +1 -0
  104. package/dist/review.js +206 -0
  105. package/dist/review.js.map +1 -0
  106. package/dist/scaffold.d.ts +14 -0
  107. package/dist/scaffold.d.ts.map +1 -0
  108. package/dist/scaffold.js +85 -0
  109. package/dist/scaffold.js.map +1 -0
  110. package/dist/search.d.ts +19 -0
  111. package/dist/search.d.ts.map +1 -0
  112. package/dist/search.js +198 -0
  113. package/dist/search.js.map +1 -0
  114. package/dist/session.d.ts +17 -0
  115. package/dist/session.d.ts.map +1 -0
  116. package/dist/session.js +301 -0
  117. package/dist/session.js.map +1 -0
  118. package/dist/task-verification.d.ts +39 -0
  119. package/dist/task-verification.d.ts.map +1 -0
  120. package/dist/task-verification.js +336 -0
  121. package/dist/task-verification.js.map +1 -0
  122. package/dist/test_cohere.d.ts +2 -0
  123. package/dist/test_cohere.d.ts.map +1 -0
  124. package/dist/test_cohere.js +68 -0
  125. package/dist/test_cohere.js.map +1 -0
  126. package/dist/test_env.d.ts +2 -0
  127. package/dist/test_env.d.ts.map +1 -0
  128. package/dist/test_env.js +24 -0
  129. package/dist/test_env.js.map +1 -0
  130. package/dist/test_retrieval.d.ts +2 -0
  131. package/dist/test_retrieval.d.ts.map +1 -0
  132. package/dist/test_retrieval.js +84 -0
  133. package/dist/test_retrieval.js.map +1 -0
  134. package/dist/testgen.d.ts +24 -0
  135. package/dist/testgen.d.ts.map +1 -0
  136. package/dist/testgen.js +167 -0
  137. package/dist/testgen.js.map +1 -0
  138. package/dist/token-optimizer.d.ts +20 -0
  139. package/dist/token-optimizer.d.ts.map +1 -0
  140. package/dist/token-optimizer.js +277 -0
  141. package/dist/token-optimizer.js.map +1 -0
  142. package/dist/types.d.ts +36 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +2 -0
  145. package/dist/types.js.map +1 -0
  146. package/dist/ui.d.ts +54 -0
  147. package/dist/ui.d.ts.map +1 -0
  148. package/dist/ui.js +295 -0
  149. package/dist/ui.js.map +1 -0
  150. package/dist/verify_db.d.ts +2 -0
  151. package/dist/verify_db.d.ts.map +1 -0
  152. package/dist/verify_db.js +52 -0
  153. package/dist/verify_db.js.map +1 -0
  154. package/package.json +71 -0
  155. package/templates/next-page/app/layout.tsx +19 -0
  156. package/templates/next-page/app/page.tsx +10 -0
  157. package/templates/next-page/package.json +22 -0
  158. package/templates/node-api/index.js +57 -0
  159. package/templates/node-api/package.json +13 -0
package/dist/docs.js ADDED
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Documentation Generator
3
+ * Auto-generate and maintain documentation
4
+ */
5
+ import { readFileSync, writeFileSync, existsSync } from 'fs';
6
+ import { join, dirname } from 'path';
7
+ import { chatWithContext } from './chat.js';
8
+ import { getEnhancedContext } from './context.js';
9
+ /**
10
+ * Generate documentation for a file
11
+ */
12
+ export async function generateFileDocs(filepath) {
13
+ const fullPath = join(process.cwd(), filepath);
14
+ if (!existsSync(fullPath)) {
15
+ throw new Error(`File not found: ${filepath}`);
16
+ }
17
+ const content = readFileSync(fullPath, 'utf-8');
18
+ const ext = filepath.split('.').pop()?.toLowerCase() || '';
19
+ // Get context
20
+ const context = await getEnhancedContext(`Generate documentation for ${filepath}`, {
21
+ primaryChunks: 10,
22
+ includeRelationships: true,
23
+ });
24
+ // Create documentation prompt
25
+ const docPrompt = `Generate comprehensive documentation for this code file:
26
+
27
+ File: ${filepath}
28
+ Code:
29
+ \`\`\`${ext}
30
+ ${content}
31
+ \`\`\`
32
+
33
+ Provide:
34
+ 1. File overview and purpose
35
+ 2. Main functions/classes and their purposes
36
+ 3. Parameters and return values
37
+ 4. Usage examples
38
+ 5. Important notes or warnings
39
+
40
+ Format as clear markdown documentation.`;
41
+ const contextResults = [{
42
+ filepath,
43
+ content,
44
+ score: 1.0,
45
+ }, ...context.primaryChunks];
46
+ const docs = await chatWithContext(docPrompt, contextResults);
47
+ return docs;
48
+ }
49
+ /**
50
+ * Generate README for a project
51
+ */
52
+ export async function generateREADME(files) {
53
+ // Get project context
54
+ const context = await getEnhancedContext('Generate project README documentation', {
55
+ primaryChunks: 30,
56
+ includeRelationships: true,
57
+ });
58
+ const fileList = files || context.primaryChunks.map(c => c.filepath);
59
+ const fileContents = fileList
60
+ .slice(0, 10)
61
+ .map(f => {
62
+ try {
63
+ const content = readFileSync(join(process.cwd(), f), 'utf-8');
64
+ return `\n### ${f}\n\`\`\`\n${content.substring(0, 200)}...\n\`\`\``;
65
+ }
66
+ catch {
67
+ return '';
68
+ }
69
+ })
70
+ .join('\n');
71
+ const readmePrompt = `Generate a comprehensive README.md for this project:
72
+
73
+ Key files:
74
+ ${fileList.slice(0, 20).map(f => `- ${f}`).join('\n')}
75
+
76
+ ${fileContents}
77
+
78
+ Create a professional README with:
79
+ 1. Project title and description
80
+ 2. Features
81
+ 3. Installation instructions
82
+ 4. Usage examples
83
+ 5. Project structure
84
+ 6. Contributing guidelines
85
+ 7. License information
86
+
87
+ Format as markdown.`;
88
+ const contextResults = context.primaryChunks;
89
+ const readme = await chatWithContext(readmePrompt, contextResults);
90
+ return readme;
91
+ }
92
+ /**
93
+ * Update existing documentation
94
+ */
95
+ export async function updateDocs(filepath) {
96
+ const fullPath = join(process.cwd(), filepath);
97
+ if (!existsSync(fullPath)) {
98
+ throw new Error(`File not found: ${filepath}`);
99
+ }
100
+ const currentContent = readFileSync(fullPath, 'utf-8');
101
+ const codePath = filepath.replace(/\.md$/, '').replace(/docs\//, '');
102
+ // Get current code
103
+ let codeContent = '';
104
+ try {
105
+ const codeFile = join(process.cwd(), codePath);
106
+ if (existsSync(codeFile)) {
107
+ codeContent = readFileSync(codeFile, 'utf-8');
108
+ }
109
+ }
110
+ catch {
111
+ // Code file might not exist
112
+ }
113
+ const updatePrompt = `Update this documentation to match the current code:
114
+
115
+ Documentation file: ${filepath}
116
+ Current docs:
117
+ \`\`\`
118
+ ${currentContent}
119
+ \`\`\`
120
+
121
+ Current code:
122
+ \`\`\`
123
+ ${codeContent.substring(0, 1000)}
124
+ \`\`\`
125
+
126
+ Update the documentation to accurately reflect the current code implementation.`;
127
+ const contextResults = [{
128
+ filepath,
129
+ content: currentContent,
130
+ score: 1.0,
131
+ }];
132
+ const updatedDocs = await chatWithContext(updatePrompt, contextResults);
133
+ return updatedDocs;
134
+ }
135
+ /**
136
+ * Save documentation to file
137
+ */
138
+ export function saveDocs(filepath, content) {
139
+ const fullPath = join(process.cwd(), filepath);
140
+ const dir = dirname(fullPath);
141
+ if (!existsSync(dir)) {
142
+ const { mkdirSync } = require('fs');
143
+ mkdirSync(dir, { recursive: true });
144
+ }
145
+ writeFileSync(fullPath, content, 'utf-8');
146
+ }
147
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../src/docs.ts"],"names":[],"mappings":"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"}
package/dist/edit.d.ts ADDED
@@ -0,0 +1,38 @@
1
+ import type { DiffStats, PolicyResult } from './types.js';
2
+ export declare function parseDiffStats(diffText: string): DiffStats;
3
+ export declare function applyUnifiedDiff(originalContent: string, diffText: string): string;
4
+ /**
5
+ * Generate and validate diff without applying (for dry-run)
6
+ */
7
+ export declare function generateEditDryRun(filepath: string, instruction: string): Promise<{
8
+ success: boolean;
9
+ diffText?: string;
10
+ diffStats?: DiffStats;
11
+ policyResult?: PolicyResult;
12
+ error?: string;
13
+ newContent?: string;
14
+ syntaxValid?: boolean;
15
+ }>;
16
+ /**
17
+ * Legacy function - kept for backward compatibility
18
+ * Use generateAndApplyEditWithVerification() for new code
19
+ */
20
+ export declare function generateAndApplyEdit(filepath: string, instruction: string): Promise<{
21
+ success: boolean;
22
+ diffStats?: DiffStats;
23
+ policyResult?: PolicyResult;
24
+ error?: string;
25
+ }>;
26
+ /**
27
+ * NEW: Generate and apply edit with verification and iterative refinement
28
+ */
29
+ export declare function generateAndApplyEditWithVerification(filepath: string, instruction: string, requirements?: string[]): Promise<{
30
+ success: boolean;
31
+ verified: boolean;
32
+ iterations: number;
33
+ diffStats?: DiffStats;
34
+ policyResult?: PolicyResult;
35
+ error?: string;
36
+ verificationErrors?: string[];
37
+ }>;
38
+ //# sourceMappingURL=edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../src/edit.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1D,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkC1D;AAED,wBAAgB,gBAAgB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAsClF;AAwSD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC,CAyFD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,SAAS,CAAC;IAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAwFnG;AAED;;GAEG;AACH,wBAAsB,oCAAoC,CACxD,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC,CAyFD"}