@ddse/acm-aicoder 0.5.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 (165) hide show
  1. package/.aicoder/index.json +304 -0
  2. package/AICODER_IMPLEMENTATION_PLAN_PHASE2.md +284 -0
  3. package/LICENSE +21 -0
  4. package/README.md +490 -0
  5. package/bin/interactive.tsx +232 -0
  6. package/dist/bin/interactive.d.ts +3 -0
  7. package/dist/bin/interactive.d.ts.map +1 -0
  8. package/dist/bin/interactive.js +155 -0
  9. package/dist/bin/interactive.js.map +1 -0
  10. package/dist/src/config/providers.d.ts +15 -0
  11. package/dist/src/config/providers.d.ts.map +1 -0
  12. package/dist/src/config/providers.js +142 -0
  13. package/dist/src/config/providers.js.map +1 -0
  14. package/dist/src/config/session.d.ts +25 -0
  15. package/dist/src/config/session.d.ts.map +1 -0
  16. package/dist/src/config/session.js +97 -0
  17. package/dist/src/config/session.js.map +1 -0
  18. package/dist/src/context/bm25.d.ts +68 -0
  19. package/dist/src/context/bm25.d.ts.map +1 -0
  20. package/dist/src/context/bm25.js +131 -0
  21. package/dist/src/context/bm25.js.map +1 -0
  22. package/dist/src/context/code-search.d.ts +30 -0
  23. package/dist/src/context/code-search.d.ts.map +1 -0
  24. package/dist/src/context/code-search.js +150 -0
  25. package/dist/src/context/code-search.js.map +1 -0
  26. package/dist/src/context/context-pack.d.ts +25 -0
  27. package/dist/src/context/context-pack.d.ts.map +1 -0
  28. package/dist/src/context/context-pack.js +92 -0
  29. package/dist/src/context/context-pack.js.map +1 -0
  30. package/dist/src/context/dependency-mapper.d.ts +10 -0
  31. package/dist/src/context/dependency-mapper.d.ts.map +1 -0
  32. package/dist/src/context/dependency-mapper.js +62 -0
  33. package/dist/src/context/dependency-mapper.js.map +1 -0
  34. package/dist/src/context/index.d.ts +8 -0
  35. package/dist/src/context/index.d.ts.map +1 -0
  36. package/dist/src/context/index.js +9 -0
  37. package/dist/src/context/index.js.map +1 -0
  38. package/dist/src/context/symbol-extractor.d.ts +26 -0
  39. package/dist/src/context/symbol-extractor.d.ts.map +1 -0
  40. package/dist/src/context/symbol-extractor.js +129 -0
  41. package/dist/src/context/symbol-extractor.js.map +1 -0
  42. package/dist/src/context/test-mapper.d.ts +16 -0
  43. package/dist/src/context/test-mapper.d.ts.map +1 -0
  44. package/dist/src/context/test-mapper.js +66 -0
  45. package/dist/src/context/test-mapper.js.map +1 -0
  46. package/dist/src/context/types.d.ts +61 -0
  47. package/dist/src/context/types.d.ts.map +1 -0
  48. package/dist/src/context/types.js +3 -0
  49. package/dist/src/context/types.js.map +1 -0
  50. package/dist/src/context/workspace-indexer.d.ts +39 -0
  51. package/dist/src/context/workspace-indexer.d.ts.map +1 -0
  52. package/dist/src/context/workspace-indexer.js +222 -0
  53. package/dist/src/context/workspace-indexer.js.map +1 -0
  54. package/dist/src/index.d.ts +5 -0
  55. package/dist/src/index.d.ts.map +1 -0
  56. package/dist/src/index.js +6 -0
  57. package/dist/src/index.js.map +1 -0
  58. package/dist/src/registries.d.ts +34 -0
  59. package/dist/src/registries.d.ts.map +1 -0
  60. package/dist/src/registries.js +87 -0
  61. package/dist/src/registries.js.map +1 -0
  62. package/dist/src/runtime/budget-manager.d.ts +42 -0
  63. package/dist/src/runtime/budget-manager.d.ts.map +1 -0
  64. package/dist/src/runtime/budget-manager.js +82 -0
  65. package/dist/src/runtime/budget-manager.js.map +1 -0
  66. package/dist/src/runtime/interactive-runtime.d.ts +39 -0
  67. package/dist/src/runtime/interactive-runtime.d.ts.map +1 -0
  68. package/dist/src/runtime/interactive-runtime.js +321 -0
  69. package/dist/src/runtime/interactive-runtime.js.map +1 -0
  70. package/dist/src/tasks-v2/analysis-tasks.d.ts +117 -0
  71. package/dist/src/tasks-v2/analysis-tasks.d.ts.map +1 -0
  72. package/dist/src/tasks-v2/analysis-tasks.js +209 -0
  73. package/dist/src/tasks-v2/analysis-tasks.js.map +1 -0
  74. package/dist/src/tasks-v2/developer-tasks.d.ts +226 -0
  75. package/dist/src/tasks-v2/developer-tasks.d.ts.map +1 -0
  76. package/dist/src/tasks-v2/developer-tasks.js +322 -0
  77. package/dist/src/tasks-v2/developer-tasks.js.map +1 -0
  78. package/dist/src/tasks-v2/index.d.ts +3 -0
  79. package/dist/src/tasks-v2/index.d.ts.map +1 -0
  80. package/dist/src/tasks-v2/index.js +4 -0
  81. package/dist/src/tasks-v2/index.js.map +1 -0
  82. package/dist/src/tools-v2/edit-tools.d.ts +67 -0
  83. package/dist/src/tools-v2/edit-tools.d.ts.map +1 -0
  84. package/dist/src/tools-v2/edit-tools.js +117 -0
  85. package/dist/src/tools-v2/edit-tools.js.map +1 -0
  86. package/dist/src/tools-v2/index.d.ts +6 -0
  87. package/dist/src/tools-v2/index.d.ts.map +1 -0
  88. package/dist/src/tools-v2/index.js +7 -0
  89. package/dist/src/tools-v2/index.js.map +1 -0
  90. package/dist/src/tools-v2/read-tools.d.ts +129 -0
  91. package/dist/src/tools-v2/read-tools.d.ts.map +1 -0
  92. package/dist/src/tools-v2/read-tools.js +216 -0
  93. package/dist/src/tools-v2/read-tools.js.map +1 -0
  94. package/dist/src/tools-v2/search-tools.d.ts +73 -0
  95. package/dist/src/tools-v2/search-tools.d.ts.map +1 -0
  96. package/dist/src/tools-v2/search-tools.js +132 -0
  97. package/dist/src/tools-v2/search-tools.js.map +1 -0
  98. package/dist/src/tools-v2/test-tools.d.ts +59 -0
  99. package/dist/src/tools-v2/test-tools.d.ts.map +1 -0
  100. package/dist/src/tools-v2/test-tools.js +111 -0
  101. package/dist/src/tools-v2/test-tools.js.map +1 -0
  102. package/dist/src/tools-v2/workspace-context.d.ts +65 -0
  103. package/dist/src/tools-v2/workspace-context.d.ts.map +1 -0
  104. package/dist/src/tools-v2/workspace-context.js +336 -0
  105. package/dist/src/tools-v2/workspace-context.js.map +1 -0
  106. package/dist/src/ui/App.d.ts +9 -0
  107. package/dist/src/ui/App.d.ts.map +1 -0
  108. package/dist/src/ui/App.js +257 -0
  109. package/dist/src/ui/App.js.map +1 -0
  110. package/dist/src/ui/components/ChatPane.d.ts +12 -0
  111. package/dist/src/ui/components/ChatPane.d.ts.map +1 -0
  112. package/dist/src/ui/components/ChatPane.js +41 -0
  113. package/dist/src/ui/components/ChatPane.js.map +1 -0
  114. package/dist/src/ui/components/EventsPane.d.ts +12 -0
  115. package/dist/src/ui/components/EventsPane.d.ts.map +1 -0
  116. package/dist/src/ui/components/EventsPane.js +48 -0
  117. package/dist/src/ui/components/EventsPane.js.map +1 -0
  118. package/dist/src/ui/components/GoalsTasksPane.d.ts +18 -0
  119. package/dist/src/ui/components/GoalsTasksPane.d.ts.map +1 -0
  120. package/dist/src/ui/components/GoalsTasksPane.js +83 -0
  121. package/dist/src/ui/components/GoalsTasksPane.js.map +1 -0
  122. package/dist/src/ui/store.d.ts +74 -0
  123. package/dist/src/ui/store.d.ts.map +1 -0
  124. package/dist/src/ui/store.js +260 -0
  125. package/dist/src/ui/store.js.map +1 -0
  126. package/dist/tests/integration.test.d.ts +2 -0
  127. package/dist/tests/integration.test.d.ts.map +1 -0
  128. package/dist/tests/integration.test.js +415 -0
  129. package/dist/tests/integration.test.js.map +1 -0
  130. package/dist/tsconfig.tsbuildinfo +1 -0
  131. package/docs/AICODER.png +0 -0
  132. package/docs/INTERACTIVE_CLI_GUIDE.md +201 -0
  133. package/docs/TUI_MOCKUP.md +180 -0
  134. package/package.json +52 -0
  135. package/src/config/providers.ts +174 -0
  136. package/src/config/session.ts +143 -0
  137. package/src/context/bm25.ts +173 -0
  138. package/src/context/code-search.ts +188 -0
  139. package/src/context/context-pack.ts +133 -0
  140. package/src/context/dependency-mapper.ts +72 -0
  141. package/src/context/index.ts +8 -0
  142. package/src/context/symbol-extractor.ts +149 -0
  143. package/src/context/test-mapper.ts +77 -0
  144. package/src/context/types.ts +69 -0
  145. package/src/context/workspace-indexer.ts +249 -0
  146. package/src/index.ts +5 -0
  147. package/src/registries.ts +118 -0
  148. package/src/runtime/budget-manager.ts +118 -0
  149. package/src/runtime/interactive-runtime.ts +423 -0
  150. package/src/tasks-v2/analysis-tasks.ts +311 -0
  151. package/src/tasks-v2/developer-tasks.ts +437 -0
  152. package/src/tasks-v2/index.ts +3 -0
  153. package/src/tools-v2/edit-tools.ts +153 -0
  154. package/src/tools-v2/index.ts +6 -0
  155. package/src/tools-v2/read-tools.ts +286 -0
  156. package/src/tools-v2/search-tools.ts +175 -0
  157. package/src/tools-v2/test-tools.ts +147 -0
  158. package/src/tools-v2/workspace-context.ts +428 -0
  159. package/src/ui/App.tsx +392 -0
  160. package/src/ui/components/ChatPane.tsx +84 -0
  161. package/src/ui/components/EventsPane.tsx +81 -0
  162. package/src/ui/components/GoalsTasksPane.tsx +149 -0
  163. package/src/ui/store.ts +362 -0
  164. package/tests/integration.test.ts +537 -0
  165. package/tsconfig.json +22 -0
@@ -0,0 +1,129 @@
1
+ // Symbol Extractor - Extract symbols from TypeScript/JavaScript files
2
+ import * as fs from 'fs/promises';
3
+ import * as path from 'path';
4
+ /**
5
+ * Simple symbol extractor using regex patterns
6
+ * For production use, consider ts-morph or @typescript/vfs
7
+ */
8
+ export class SymbolExtractor {
9
+ rootPath;
10
+ constructor(rootPath) {
11
+ this.rootPath = rootPath;
12
+ }
13
+ /**
14
+ * Extract symbols from indexed files
15
+ */
16
+ async extractSymbols(index) {
17
+ const symbols = [];
18
+ // Filter to TS/JS files
19
+ const codeFiles = index.files.filter(f => (f.language === 'typescript' || f.language === 'javascript') &&
20
+ !f.isBinary &&
21
+ f.size < 500_000);
22
+ for (const file of codeFiles) {
23
+ try {
24
+ const fullPath = path.join(this.rootPath, file.path);
25
+ const content = await fs.readFile(fullPath, 'utf-8');
26
+ const fileSymbols = this.parseSymbols(content, file.path);
27
+ symbols.push(...fileSymbols);
28
+ }
29
+ catch {
30
+ // Skip files we can't read
31
+ }
32
+ }
33
+ return symbols;
34
+ }
35
+ /**
36
+ * Parse symbols from file content using regex
37
+ */
38
+ parseSymbols(content, filePath) {
39
+ const symbols = [];
40
+ const lines = content.split('\n');
41
+ // Patterns for different symbol types
42
+ const patterns = {
43
+ function: /(?:export\s+)?(?:async\s+)?function\s+(\w+)/g,
44
+ class: /(?:export\s+)?class\s+(\w+)/g,
45
+ interface: /(?:export\s+)?interface\s+(\w+)/g,
46
+ type: /(?:export\s+)?type\s+(\w+)/g,
47
+ const: /(?:export\s+)?const\s+(\w+)/g,
48
+ let: /(?:export\s+)?let\s+(\w+)/g,
49
+ var: /(?:export\s+)?var\s+(\w+)/g,
50
+ };
51
+ lines.forEach((line, idx) => {
52
+ const lineNum = idx + 1;
53
+ // Extract functions
54
+ const functionMatches = line.matchAll(patterns.function);
55
+ for (const match of functionMatches) {
56
+ symbols.push({
57
+ name: match[1],
58
+ kind: 'function',
59
+ path: filePath,
60
+ line: lineNum,
61
+ signature: line.trim(),
62
+ });
63
+ }
64
+ // Extract classes
65
+ const classMatches = line.matchAll(patterns.class);
66
+ for (const match of classMatches) {
67
+ symbols.push({
68
+ name: match[1],
69
+ kind: 'class',
70
+ path: filePath,
71
+ line: lineNum,
72
+ });
73
+ }
74
+ // Extract interfaces
75
+ const interfaceMatches = line.matchAll(patterns.interface);
76
+ for (const match of interfaceMatches) {
77
+ symbols.push({
78
+ name: match[1],
79
+ kind: 'interface',
80
+ path: filePath,
81
+ line: lineNum,
82
+ });
83
+ }
84
+ // Extract types
85
+ const typeMatches = line.matchAll(patterns.type);
86
+ for (const match of typeMatches) {
87
+ symbols.push({
88
+ name: match[1],
89
+ kind: 'type',
90
+ path: filePath,
91
+ line: lineNum,
92
+ });
93
+ }
94
+ // Extract exports (const/let/var)
95
+ if (line.includes('export')) {
96
+ for (const [pattern, kind] of [
97
+ [patterns.const, 'export'],
98
+ [patterns.let, 'export'],
99
+ [patterns.var, 'export'],
100
+ ]) {
101
+ const matches = line.matchAll(pattern);
102
+ for (const match of matches) {
103
+ symbols.push({
104
+ name: match[1],
105
+ kind,
106
+ path: filePath,
107
+ line: lineNum,
108
+ });
109
+ }
110
+ }
111
+ }
112
+ });
113
+ return symbols;
114
+ }
115
+ /**
116
+ * Find symbol definition by name
117
+ */
118
+ static findSymbol(symbols, name) {
119
+ return symbols.filter(s => s.name === name || s.name.toLowerCase() === name.toLowerCase());
120
+ }
121
+ /**
122
+ * Get symbols by kind
123
+ */
124
+ static filterByKind(symbols, kinds) {
125
+ const kindSet = new Set(kinds);
126
+ return symbols.filter(s => kindSet.has(s.kind));
127
+ }
128
+ }
129
+ //# sourceMappingURL=symbol-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../../src/context/symbol-extractor.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,KAAqB;QACxC,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,wBAAwB;QACxB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvC,CAAC,CAAC,CAAC,QAAQ,KAAK,YAAY,IAAI,CAAC,CAAC,QAAQ,KAAK,YAAY,CAAC;YAC5D,CAAC,CAAC,CAAC,QAAQ;YACX,CAAC,CAAC,IAAI,GAAG,OAAO,CACjB,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACrD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACP,2BAA2B;YAC7B,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAe,EAAE,QAAgB;QACpD,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,sCAAsC;QACtC,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,8CAA8C;YACxD,KAAK,EAAE,8BAA8B;YACrC,SAAS,EAAE,kCAAkC;YAC7C,IAAI,EAAE,6BAA6B;YACnC,KAAK,EAAE,8BAA8B;YACrC,GAAG,EAAE,4BAA4B;YACjC,GAAG,EAAE,4BAA4B;SAClC,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;YAC1B,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC;YAExB,oBAAoB;YACpB,MAAM,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzD,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;gBACpC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;oBACb,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;iBACvB,CAAC,CAAC;YACL,CAAC;YAED,kBAAkB;YAClB,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnD,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC;YACL,CAAC;YAED,qBAAqB;YACrB,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3D,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC;YACL,CAAC;YAED,gBAAgB;YAChB,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;oBACd,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,OAAO;iBACd,CAAC,CAAC;YACL,CAAC;YAED,kCAAkC;YAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI;oBAC5B,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;oBAC1B,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;oBACxB,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;iBAChB,EAAE,CAAC;oBACX,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;4BACd,IAAI;4BACJ,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,OAAO;yBACd,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,OAAqB,EAAE,IAAY;QACnD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACxB,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAC/D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,OAAqB,EAAE,KAA2B;QACpE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;CACF"}
@@ -0,0 +1,16 @@
1
+ import type { TestMapping, WorkspaceIndex } from './types.js';
2
+ export declare class TestMapper {
3
+ /**
4
+ * Map test files to their likely source targets
5
+ */
6
+ static mapTests(index: WorkspaceIndex): TestMapping[];
7
+ /**
8
+ * Infer target source files from test file path
9
+ */
10
+ private static inferTargetFiles;
11
+ /**
12
+ * Detect test framework from file path
13
+ */
14
+ private static detectFramework;
15
+ }
16
+ //# sourceMappingURL=test-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-mapper.d.ts","sourceRoot":"","sources":["../../../src/context/test-mapper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAS9D,qBAAa,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,WAAW,EAAE;IAyBrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAuB/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,eAAe;CAO/B"}
@@ -0,0 +1,66 @@
1
+ // Test Mapper - Identify test files and their targets
2
+ import * as path from 'path';
3
+ const TEST_PATTERNS = [
4
+ /\.test\.(ts|tsx|js|jsx)$/,
5
+ /\.spec\.(ts|tsx|js|jsx)$/,
6
+ /__tests__\//,
7
+ /\.test\..*$/,
8
+ ];
9
+ export class TestMapper {
10
+ /**
11
+ * Map test files to their likely source targets
12
+ */
13
+ static mapTests(index) {
14
+ const mappings = [];
15
+ // Find test files
16
+ const testFiles = index.files.filter(f => TEST_PATTERNS.some(pattern => pattern.test(f.path)));
17
+ for (const testFile of testFiles) {
18
+ // Try to infer source file
19
+ const targetFiles = this.inferTargetFiles(testFile.path, index);
20
+ // Detect test framework
21
+ const framework = this.detectFramework(testFile.path);
22
+ mappings.push({
23
+ testFile: testFile.path,
24
+ targetFiles,
25
+ testFramework: framework,
26
+ });
27
+ }
28
+ return mappings;
29
+ }
30
+ /**
31
+ * Infer target source files from test file path
32
+ */
33
+ static inferTargetFiles(testPath, index) {
34
+ const targets = [];
35
+ // Remove test suffix/prefix patterns
36
+ let basePath = testPath
37
+ .replace(/\.test\.(ts|tsx|js|jsx)$/, '.$1')
38
+ .replace(/\.spec\.(ts|tsx|js|jsx)$/, '.$1')
39
+ .replace(/__tests__\//, '');
40
+ // Check if this file exists
41
+ if (index.files.some(f => f.path === basePath)) {
42
+ targets.push(basePath);
43
+ }
44
+ // Try src/ variant
45
+ const srcPath = path.join('src', path.basename(basePath));
46
+ if (index.files.some(f => f.path === srcPath)) {
47
+ targets.push(srcPath);
48
+ }
49
+ return targets;
50
+ }
51
+ /**
52
+ * Detect test framework from file path
53
+ */
54
+ static detectFramework(testPath) {
55
+ if (testPath.includes('jest'))
56
+ return 'jest';
57
+ if (testPath.includes('mocha'))
58
+ return 'mocha';
59
+ if (testPath.includes('vitest'))
60
+ return 'vitest';
61
+ if (testPath.includes('spec'))
62
+ return 'jasmine';
63
+ return undefined;
64
+ }
65
+ }
66
+ //# sourceMappingURL=test-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-mapper.js","sourceRoot":"","sources":["../../../src/context/test-mapper.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,MAAM,aAAa,GAAG;IACpB,0BAA0B;IAC1B,0BAA0B;IAC1B,aAAa;IACb,aAAa;CACd,CAAC;AAEF,MAAM,OAAO,UAAU;IACrB;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,KAAqB;QACnC,MAAM,QAAQ,GAAkB,EAAE,CAAC;QAEnC,kBAAkB;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACvC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,2BAA2B;YAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEhE,wBAAwB;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEtD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,WAAW;gBACX,aAAa,EAAE,SAAS;aACzB,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,gBAAgB,CAAC,QAAgB,EAAE,KAAqB;QACrE,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,qCAAqC;QACrC,IAAI,QAAQ,GAAG,QAAQ;aACpB,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC;aAC1C,OAAO,CAAC,0BAA0B,EAAE,KAAK,CAAC;aAC1C,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAE9B,4BAA4B;QAC5B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,eAAe,CAAC,QAAgB;QAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC;QAC7C,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,OAAO,OAAO,CAAC;QAC/C,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;QACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -0,0 +1,61 @@
1
+ export interface FileMetadata {
2
+ path: string;
3
+ size: number;
4
+ mtime: number;
5
+ hash: string;
6
+ language: string;
7
+ isBinary: boolean;
8
+ }
9
+ export interface WorkspaceIndex {
10
+ files: FileMetadata[];
11
+ totalFiles: number;
12
+ totalSize: number;
13
+ indexedAt: string;
14
+ rootPath: string;
15
+ }
16
+ export interface SymbolInfo {
17
+ name: string;
18
+ kind: 'function' | 'class' | 'variable' | 'interface' | 'type' | 'export' | 'import';
19
+ path: string;
20
+ line: number;
21
+ column?: number;
22
+ signature?: string;
23
+ }
24
+ export interface DependencyInfo {
25
+ name: string;
26
+ version: string;
27
+ type: 'dependency' | 'devDependency' | 'peerDependency';
28
+ packageJsonPath: string;
29
+ }
30
+ export interface ImportGraph {
31
+ [filePath: string]: {
32
+ imports: string[];
33
+ exportedSymbols: string[];
34
+ };
35
+ }
36
+ export interface TestMapping {
37
+ testFile: string;
38
+ targetFiles: string[];
39
+ testFramework?: string;
40
+ }
41
+ export interface SearchResult {
42
+ path: string;
43
+ score: number;
44
+ snippet: string;
45
+ line: number;
46
+ column?: number;
47
+ }
48
+ export interface ContextPack {
49
+ goal: string;
50
+ files: Array<{
51
+ path: string;
52
+ snippet: string;
53
+ relevance: number;
54
+ }>;
55
+ symbols: SymbolInfo[];
56
+ dependencies: DependencyInfo[];
57
+ testFiles: string[];
58
+ summary: string;
59
+ generatedAt: string;
60
+ }
61
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,GAAG,eAAe,GAAG,gBAAgB,CAAC;IACxD,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,QAAQ,EAAE,MAAM,GAAG;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB"}
@@ -0,0 +1,3 @@
1
+ // Context Engine Types
2
+ export {};
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAAA,uBAAuB"}
@@ -0,0 +1,39 @@
1
+ import type { FileMetadata, WorkspaceIndex } from './types.js';
2
+ export declare class WorkspaceIndexer {
3
+ private rootPath;
4
+ private ignorePatterns;
5
+ private cacheDir;
6
+ constructor(rootPath: string, additionalIgnores?: string[]);
7
+ /**
8
+ * Build or refresh the workspace index
9
+ */
10
+ buildIndex(options?: {
11
+ useCache?: boolean;
12
+ maxFileSize?: number;
13
+ }): Promise<WorkspaceIndex>;
14
+ /**
15
+ * Recursively scan directory for files
16
+ */
17
+ private scanDirectory;
18
+ /**
19
+ * Check if path should be ignored
20
+ */
21
+ private shouldIgnore;
22
+ /**
23
+ * Load index from cache
24
+ */
25
+ private loadCache;
26
+ /**
27
+ * Save index to cache
28
+ */
29
+ private saveCache;
30
+ /**
31
+ * Get files by language
32
+ */
33
+ static filterByLanguage(index: WorkspaceIndex, languages: string[]): FileMetadata[];
34
+ /**
35
+ * Get recently modified files
36
+ */
37
+ static getRecentFiles(index: WorkspaceIndex, count?: number): FileMetadata[];
38
+ }
39
+ //# sourceMappingURL=workspace-indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-indexer.d.ts","sourceRoot":"","sources":["../../../src/context/workspace-indexer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqD/D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM,EAAE,iBAAiB,GAAE,MAAM,EAAO;IAM9D;;OAEG;IACG,UAAU,CAAC,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAgCrG;;OAEG;YACW,aAAa;IA8D3B;;OAEG;IACH,OAAO,CAAC,YAAY;IA2BpB;;OAEG;YACW,SAAS;IAkBvB;;OAEG;YACW,SAAS;IAUvB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE;IAKnF;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;CAKjF"}
@@ -0,0 +1,222 @@
1
+ // Workspace Indexer - Fast file scanning and caching
2
+ import * as fs from 'fs/promises';
3
+ import * as path from 'path';
4
+ import { createHash } from 'crypto';
5
+ const DEFAULT_IGNORES = [
6
+ 'node_modules',
7
+ '.git',
8
+ 'dist',
9
+ 'build',
10
+ '.next',
11
+ '.cache',
12
+ 'coverage',
13
+ '.aicoder',
14
+ '*.lock',
15
+ 'package-lock.json',
16
+ 'pnpm-lock.yaml',
17
+ 'yarn.lock',
18
+ ];
19
+ const BINARY_EXTENSIONS = new Set([
20
+ '.png', '.jpg', '.jpeg', '.gif', '.svg', '.ico',
21
+ '.pdf', '.zip', '.tar', '.gz', '.bz2',
22
+ '.exe', '.dll', '.so', '.dylib',
23
+ '.woff', '.woff2', '.ttf', '.eot',
24
+ '.mp4', '.mp3', '.wav', '.avi',
25
+ ]);
26
+ const LANGUAGE_MAP = {
27
+ '.ts': 'typescript',
28
+ '.tsx': 'typescript',
29
+ '.js': 'javascript',
30
+ '.jsx': 'javascript',
31
+ '.mjs': 'javascript',
32
+ '.cjs': 'javascript',
33
+ '.py': 'python',
34
+ '.go': 'go',
35
+ '.rs': 'rust',
36
+ '.java': 'java',
37
+ '.c': 'c',
38
+ '.cpp': 'cpp',
39
+ '.h': 'c',
40
+ '.hpp': 'cpp',
41
+ '.md': 'markdown',
42
+ '.json': 'json',
43
+ '.yaml': 'yaml',
44
+ '.yml': 'yaml',
45
+ '.toml': 'toml',
46
+ '.xml': 'xml',
47
+ '.html': 'html',
48
+ '.css': 'css',
49
+ '.scss': 'scss',
50
+ '.sql': 'sql',
51
+ '.sh': 'shell',
52
+ };
53
+ export class WorkspaceIndexer {
54
+ rootPath;
55
+ ignorePatterns;
56
+ cacheDir;
57
+ constructor(rootPath, additionalIgnores = []) {
58
+ this.rootPath = path.resolve(rootPath);
59
+ this.ignorePatterns = new Set([...DEFAULT_IGNORES, ...additionalIgnores]);
60
+ this.cacheDir = path.join(this.rootPath, '.aicoder');
61
+ }
62
+ /**
63
+ * Build or refresh the workspace index
64
+ */
65
+ async buildIndex(options = {}) {
66
+ const useCache = options.useCache ?? true;
67
+ const maxFileSize = options.maxFileSize ?? 1_000_000; // 1MB default
68
+ // Try to load from cache
69
+ if (useCache) {
70
+ const cached = await this.loadCache();
71
+ if (cached) {
72
+ return cached;
73
+ }
74
+ }
75
+ // Scan workspace
76
+ const files = [];
77
+ await this.scanDirectory(this.rootPath, files, maxFileSize);
78
+ const index = {
79
+ files,
80
+ totalFiles: files.length,
81
+ totalSize: files.reduce((sum, f) => sum + f.size, 0),
82
+ indexedAt: new Date().toISOString(),
83
+ rootPath: this.rootPath,
84
+ };
85
+ // Save to cache
86
+ if (useCache) {
87
+ await this.saveCache(index);
88
+ }
89
+ return index;
90
+ }
91
+ /**
92
+ * Recursively scan directory for files
93
+ */
94
+ async scanDirectory(dirPath, files, maxFileSize) {
95
+ try {
96
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
97
+ for (const entry of entries) {
98
+ const fullPath = path.join(dirPath, entry.name);
99
+ const relativePath = path.relative(this.rootPath, fullPath);
100
+ // Skip ignored patterns
101
+ if (this.shouldIgnore(relativePath, entry.name)) {
102
+ continue;
103
+ }
104
+ if (entry.isDirectory()) {
105
+ await this.scanDirectory(fullPath, files, maxFileSize);
106
+ }
107
+ else if (entry.isFile()) {
108
+ try {
109
+ const stats = await fs.stat(fullPath);
110
+ // Skip files that are too large
111
+ if (stats.size > maxFileSize) {
112
+ continue;
113
+ }
114
+ const ext = path.extname(entry.name);
115
+ const isBinary = BINARY_EXTENSIONS.has(ext);
116
+ // Compute hash for non-binary files
117
+ let hash = '';
118
+ if (!isBinary && stats.size < 100_000) { // Hash only small text files
119
+ try {
120
+ const content = await fs.readFile(fullPath, 'utf-8');
121
+ hash = createHash('sha256').update(content).digest('hex').substring(0, 16);
122
+ }
123
+ catch {
124
+ // Skip files that can't be read
125
+ continue;
126
+ }
127
+ }
128
+ files.push({
129
+ path: relativePath,
130
+ size: stats.size,
131
+ mtime: stats.mtimeMs,
132
+ hash,
133
+ language: LANGUAGE_MAP[ext] || 'unknown',
134
+ isBinary,
135
+ });
136
+ }
137
+ catch (error) {
138
+ // Skip files we can't stat
139
+ continue;
140
+ }
141
+ }
142
+ }
143
+ }
144
+ catch (error) {
145
+ // Skip directories we can't read
146
+ }
147
+ }
148
+ /**
149
+ * Check if path should be ignored
150
+ */
151
+ shouldIgnore(relativePath, name) {
152
+ // Check exact matches
153
+ if (this.ignorePatterns.has(name)) {
154
+ return true;
155
+ }
156
+ // Check if any part of the path matches ignore patterns
157
+ const parts = relativePath.split(path.sep);
158
+ for (const part of parts) {
159
+ if (this.ignorePatterns.has(part)) {
160
+ return true;
161
+ }
162
+ }
163
+ // Check wildcard patterns
164
+ for (const pattern of this.ignorePatterns) {
165
+ if (pattern.includes('*')) {
166
+ const regex = new RegExp('^' + pattern.replace(/\*/g, '.*') + '$');
167
+ if (regex.test(name)) {
168
+ return true;
169
+ }
170
+ }
171
+ }
172
+ return false;
173
+ }
174
+ /**
175
+ * Load index from cache
176
+ */
177
+ async loadCache() {
178
+ try {
179
+ const cachePath = path.join(this.cacheDir, 'index.json');
180
+ const content = await fs.readFile(cachePath, 'utf-8');
181
+ const index = JSON.parse(content);
182
+ // Validate cache is recent (within 1 hour)
183
+ const cacheAge = Date.now() - new Date(index.indexedAt).getTime();
184
+ if (cacheAge > 3600_000) {
185
+ return null;
186
+ }
187
+ return index;
188
+ }
189
+ catch {
190
+ return null;
191
+ }
192
+ }
193
+ /**
194
+ * Save index to cache
195
+ */
196
+ async saveCache(index) {
197
+ try {
198
+ await fs.mkdir(this.cacheDir, { recursive: true });
199
+ const cachePath = path.join(this.cacheDir, 'index.json');
200
+ await fs.writeFile(cachePath, JSON.stringify(index, null, 2), 'utf-8');
201
+ }
202
+ catch {
203
+ // Cache save is best-effort
204
+ }
205
+ }
206
+ /**
207
+ * Get files by language
208
+ */
209
+ static filterByLanguage(index, languages) {
210
+ const langSet = new Set(languages);
211
+ return index.files.filter(f => langSet.has(f.language));
212
+ }
213
+ /**
214
+ * Get recently modified files
215
+ */
216
+ static getRecentFiles(index, count = 10) {
217
+ return [...index.files]
218
+ .sort((a, b) => b.mtime - a.mtime)
219
+ .slice(0, count);
220
+ }
221
+ }
222
+ //# sourceMappingURL=workspace-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-indexer.js","sourceRoot":"","sources":["../../../src/context/workspace-indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './tools-v2/index.js';
2
+ export * from './tasks-v2/index.js';
3
+ export * from './registries.js';
4
+ export * from './context/index.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // ACM AI Coder - Phase 2 exports
2
+ export * from './tools-v2/index.js';
3
+ export * from './tasks-v2/index.js';
4
+ export * from './registries.js';
5
+ export * from './context/index.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { CapabilityRegistry, ToolRegistry, PolicyEngine, type Capability, type Tool, type Task, type PolicyDecision } from '@ddse/acm-sdk';
2
+ /**
3
+ * Simple Capability Registry
4
+ */
5
+ export declare class SimpleCapabilityRegistry extends CapabilityRegistry {
6
+ private tasks;
7
+ private capabilities;
8
+ register(capability: Capability, task: Task): void;
9
+ list(): Capability[];
10
+ has(name: string): boolean;
11
+ resolve(name: string): Task | undefined;
12
+ inputSchema(name: string): unknown | undefined;
13
+ outputSchema(name: string): unknown | undefined;
14
+ }
15
+ /**
16
+ * Simple Tool Registry
17
+ */
18
+ export declare class SimpleToolRegistry extends ToolRegistry {
19
+ private tools;
20
+ register(tool: Tool): void;
21
+ get(name: string): Tool | undefined;
22
+ list(): string[];
23
+ }
24
+ /**
25
+ * Simple Policy Engine with safety rules for code modifications
26
+ */
27
+ export declare class SimplePolicyEngine implements PolicyEngine {
28
+ private allowedPaths;
29
+ private blockedActions;
30
+ setAllowedPaths(paths: string[]): void;
31
+ setBlockedActions(actions: string[]): void;
32
+ evaluate(action: 'plan.admit' | 'task.pre' | 'task.post', payload: any): Promise<PolicyDecision>;
33
+ }
34
+ //# sourceMappingURL=registries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registries.d.ts","sourceRoot":"","sources":["../../src/registries.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,IAAI,EACT,KAAK,IAAI,EACT,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,kBAAkB;IAC9D,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,YAAY,CAAiC;IAErD,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAKlD,IAAI,IAAI,UAAU,EAAE;IAIpB,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAIvC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI9C,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;CAGhD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,KAAK,CAA2B;IAExC,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAInC,IAAI,IAAI,MAAM,EAAE;CAGjB;AAED;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,cAAc,CAAgB;IAEtC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAItC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI;IAIpC,QAAQ,CACZ,MAAM,EAAE,YAAY,GAAG,UAAU,GAAG,WAAW,EAC/C,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,cAAc,CAAC;CAoC3B"}