@barissozen/csns 0.6.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 (200) hide show
  1. package/.env.example +8 -0
  2. package/LICENSE +21 -0
  3. package/README.md +364 -0
  4. package/dist/agent/agent-runner.d.ts +48 -0
  5. package/dist/agent/agent-runner.d.ts.map +1 -0
  6. package/dist/agent/agent-runner.js +180 -0
  7. package/dist/agent/agent-runner.js.map +1 -0
  8. package/dist/agent/architect.d.ts +34 -0
  9. package/dist/agent/architect.d.ts.map +1 -0
  10. package/dist/agent/architect.js +156 -0
  11. package/dist/agent/architect.js.map +1 -0
  12. package/dist/agent/codebase-reader.d.ts +35 -0
  13. package/dist/agent/codebase-reader.d.ts.map +1 -0
  14. package/dist/agent/codebase-reader.js +305 -0
  15. package/dist/agent/codebase-reader.js.map +1 -0
  16. package/dist/agent/context-builder.d.ts +39 -0
  17. package/dist/agent/context-builder.d.ts.map +1 -0
  18. package/dist/agent/context-builder.js +163 -0
  19. package/dist/agent/context-builder.js.map +1 -0
  20. package/dist/agent/index.d.ts +14 -0
  21. package/dist/agent/index.d.ts.map +1 -0
  22. package/dist/agent/index.js +12 -0
  23. package/dist/agent/index.js.map +1 -0
  24. package/dist/agent/output-parser.d.ts +27 -0
  25. package/dist/agent/output-parser.d.ts.map +1 -0
  26. package/dist/agent/output-parser.js +154 -0
  27. package/dist/agent/output-parser.js.map +1 -0
  28. package/dist/agent/process-spawner.d.ts +56 -0
  29. package/dist/agent/process-spawner.d.ts.map +1 -0
  30. package/dist/agent/process-spawner.js +153 -0
  31. package/dist/agent/process-spawner.js.map +1 -0
  32. package/dist/agent/tracer/index.d.ts +8 -0
  33. package/dist/agent/tracer/index.d.ts.map +1 -0
  34. package/dist/agent/tracer/index.js +6 -0
  35. package/dist/agent/tracer/index.js.map +1 -0
  36. package/dist/agent/tracer/reverse-engineer.d.ts +113 -0
  37. package/dist/agent/tracer/reverse-engineer.d.ts.map +1 -0
  38. package/dist/agent/tracer/reverse-engineer.js +695 -0
  39. package/dist/agent/tracer/reverse-engineer.js.map +1 -0
  40. package/dist/agent/tracer/runtime-tracer.d.ts +61 -0
  41. package/dist/agent/tracer/runtime-tracer.d.ts.map +1 -0
  42. package/dist/agent/tracer/runtime-tracer.js +484 -0
  43. package/dist/agent/tracer/runtime-tracer.js.map +1 -0
  44. package/dist/agent/tracer/semantic-analyzer.d.ts +24 -0
  45. package/dist/agent/tracer/semantic-analyzer.d.ts.map +1 -0
  46. package/dist/agent/tracer/semantic-analyzer.js +132 -0
  47. package/dist/agent/tracer/semantic-analyzer.js.map +1 -0
  48. package/dist/agent/tracer/static-analyzer.d.ts +44 -0
  49. package/dist/agent/tracer/static-analyzer.d.ts.map +1 -0
  50. package/dist/agent/tracer/static-analyzer.js +453 -0
  51. package/dist/agent/tracer/static-analyzer.js.map +1 -0
  52. package/dist/agent/tracer/tracer-agent.d.ts +61 -0
  53. package/dist/agent/tracer/tracer-agent.d.ts.map +1 -0
  54. package/dist/agent/tracer/tracer-agent.js +252 -0
  55. package/dist/agent/tracer/tracer-agent.js.map +1 -0
  56. package/dist/bin/csns.d.ts +24 -0
  57. package/dist/bin/csns.d.ts.map +1 -0
  58. package/dist/bin/csns.js +389 -0
  59. package/dist/bin/csns.js.map +1 -0
  60. package/dist/bin/pc.d.ts +13 -0
  61. package/dist/bin/pc.d.ts.map +1 -0
  62. package/dist/bin/pc.js +212 -0
  63. package/dist/bin/pc.js.map +1 -0
  64. package/dist/brief/brief-collector.d.ts +42 -0
  65. package/dist/brief/brief-collector.d.ts.map +1 -0
  66. package/dist/brief/brief-collector.js +228 -0
  67. package/dist/brief/brief-collector.js.map +1 -0
  68. package/dist/brief/index.d.ts +3 -0
  69. package/dist/brief/index.d.ts.map +1 -0
  70. package/dist/brief/index.js +3 -0
  71. package/dist/brief/index.js.map +1 -0
  72. package/dist/brief/smart-brief.d.ts +52 -0
  73. package/dist/brief/smart-brief.d.ts.map +1 -0
  74. package/dist/brief/smart-brief.js +440 -0
  75. package/dist/brief/smart-brief.js.map +1 -0
  76. package/dist/calculator/calculator.d.ts +7 -0
  77. package/dist/calculator/calculator.d.ts.map +1 -0
  78. package/dist/calculator/calculator.js +18 -0
  79. package/dist/calculator/calculator.js.map +1 -0
  80. package/dist/calculator/index.d.ts +2 -0
  81. package/dist/calculator/index.d.ts.map +1 -0
  82. package/dist/calculator/index.js +2 -0
  83. package/dist/calculator/index.js.map +1 -0
  84. package/dist/i18n/en.d.ts +6 -0
  85. package/dist/i18n/en.d.ts.map +1 -0
  86. package/dist/i18n/en.js +136 -0
  87. package/dist/i18n/en.js.map +1 -0
  88. package/dist/i18n/index.d.ts +31 -0
  89. package/dist/i18n/index.d.ts.map +1 -0
  90. package/dist/i18n/index.js +44 -0
  91. package/dist/i18n/index.js.map +1 -0
  92. package/dist/i18n/tr.d.ts +6 -0
  93. package/dist/i18n/tr.d.ts.map +1 -0
  94. package/dist/i18n/tr.js +136 -0
  95. package/dist/i18n/tr.js.map +1 -0
  96. package/dist/i18n/types.d.ts +86 -0
  97. package/dist/i18n/types.d.ts.map +1 -0
  98. package/dist/i18n/types.js +9 -0
  99. package/dist/i18n/types.js.map +1 -0
  100. package/dist/index.d.ts +7 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +72 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/llm/anthropic-provider.d.ts +18 -0
  105. package/dist/llm/anthropic-provider.d.ts.map +1 -0
  106. package/dist/llm/anthropic-provider.js +55 -0
  107. package/dist/llm/anthropic-provider.js.map +1 -0
  108. package/dist/llm/factory.d.ts +21 -0
  109. package/dist/llm/factory.d.ts.map +1 -0
  110. package/dist/llm/factory.js +59 -0
  111. package/dist/llm/factory.js.map +1 -0
  112. package/dist/llm/index.d.ts +7 -0
  113. package/dist/llm/index.d.ts.map +1 -0
  114. package/dist/llm/index.js +5 -0
  115. package/dist/llm/index.js.map +1 -0
  116. package/dist/llm/ollama-provider.d.ts +20 -0
  117. package/dist/llm/ollama-provider.d.ts.map +1 -0
  118. package/dist/llm/ollama-provider.js +62 -0
  119. package/dist/llm/ollama-provider.js.map +1 -0
  120. package/dist/llm/openai-provider.d.ts +20 -0
  121. package/dist/llm/openai-provider.d.ts.map +1 -0
  122. package/dist/llm/openai-provider.js +65 -0
  123. package/dist/llm/openai-provider.js.map +1 -0
  124. package/dist/llm/resolve.d.ts +10 -0
  125. package/dist/llm/resolve.d.ts.map +1 -0
  126. package/dist/llm/resolve.js +21 -0
  127. package/dist/llm/resolve.js.map +1 -0
  128. package/dist/llm/types.d.ts +45 -0
  129. package/dist/llm/types.d.ts.map +1 -0
  130. package/dist/llm/types.js +11 -0
  131. package/dist/llm/types.js.map +1 -0
  132. package/dist/memory/index.d.ts +2 -0
  133. package/dist/memory/index.d.ts.map +1 -0
  134. package/dist/memory/index.js +2 -0
  135. package/dist/memory/index.js.map +1 -0
  136. package/dist/memory/memory-layer.d.ts +54 -0
  137. package/dist/memory/memory-layer.d.ts.map +1 -0
  138. package/dist/memory/memory-layer.js +297 -0
  139. package/dist/memory/memory-layer.js.map +1 -0
  140. package/dist/orchestrator/dependency-graph.d.ts +39 -0
  141. package/dist/orchestrator/dependency-graph.d.ts.map +1 -0
  142. package/dist/orchestrator/dependency-graph.js +134 -0
  143. package/dist/orchestrator/dependency-graph.js.map +1 -0
  144. package/dist/orchestrator/escalator.d.ts +42 -0
  145. package/dist/orchestrator/escalator.d.ts.map +1 -0
  146. package/dist/orchestrator/escalator.js +163 -0
  147. package/dist/orchestrator/escalator.js.map +1 -0
  148. package/dist/orchestrator/evaluator.d.ts +34 -0
  149. package/dist/orchestrator/evaluator.d.ts.map +1 -0
  150. package/dist/orchestrator/evaluator.js +335 -0
  151. package/dist/orchestrator/evaluator.js.map +1 -0
  152. package/dist/orchestrator/index.d.ts +9 -0
  153. package/dist/orchestrator/index.d.ts.map +1 -0
  154. package/dist/orchestrator/index.js +9 -0
  155. package/dist/orchestrator/index.js.map +1 -0
  156. package/dist/orchestrator/integration-evaluator.d.ts +59 -0
  157. package/dist/orchestrator/integration-evaluator.d.ts.map +1 -0
  158. package/dist/orchestrator/integration-evaluator.js +405 -0
  159. package/dist/orchestrator/integration-evaluator.js.map +1 -0
  160. package/dist/orchestrator/milestone-manager.d.ts +28 -0
  161. package/dist/orchestrator/milestone-manager.d.ts.map +1 -0
  162. package/dist/orchestrator/milestone-manager.js +208 -0
  163. package/dist/orchestrator/milestone-manager.js.map +1 -0
  164. package/dist/orchestrator/orchestrator.d.ts +35 -0
  165. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  166. package/dist/orchestrator/orchestrator.js +338 -0
  167. package/dist/orchestrator/orchestrator.js.map +1 -0
  168. package/dist/orchestrator/planner.d.ts +15 -0
  169. package/dist/orchestrator/planner.d.ts.map +1 -0
  170. package/dist/orchestrator/planner.js +87 -0
  171. package/dist/orchestrator/planner.js.map +1 -0
  172. package/dist/orchestrator/recovery.d.ts +45 -0
  173. package/dist/orchestrator/recovery.d.ts.map +1 -0
  174. package/dist/orchestrator/recovery.js +98 -0
  175. package/dist/orchestrator/recovery.js.map +1 -0
  176. package/dist/run-calculator-test.d.ts +11 -0
  177. package/dist/run-calculator-test.d.ts.map +1 -0
  178. package/dist/run-calculator-test.js +212 -0
  179. package/dist/run-calculator-test.js.map +1 -0
  180. package/dist/run-real-task.d.ts +14 -0
  181. package/dist/run-real-task.d.ts.map +1 -0
  182. package/dist/run-real-task.js +185 -0
  183. package/dist/run-real-task.js.map +1 -0
  184. package/dist/run-todo-test.d.ts +6 -0
  185. package/dist/run-todo-test.d.ts.map +1 -0
  186. package/dist/run-todo-test.js +149 -0
  187. package/dist/run-todo-test.js.map +1 -0
  188. package/dist/todo/index.d.ts +2 -0
  189. package/dist/todo/index.d.ts.map +1 -0
  190. package/dist/todo/index.js +2 -0
  191. package/dist/todo/index.js.map +1 -0
  192. package/dist/todo/server.d.ts +2 -0
  193. package/dist/todo/server.d.ts.map +1 -0
  194. package/dist/todo/server.js +32 -0
  195. package/dist/todo/server.js.map +1 -0
  196. package/dist/types/index.d.ts +412 -0
  197. package/dist/types/index.d.ts.map +1 -0
  198. package/dist/types/index.js +5 -0
  199. package/dist/types/index.js.map +1 -0
  200. package/package.json +100 -0
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Architect Agent — Kodlamaya Başlamadan Önce Mimari Kararlar
3
+ *
4
+ * Brief geldikten sonra kullanıcıya mimari sorular sorar.
5
+ * Cevapları ARCHITECTURE.md'ye yazar.
6
+ * Sonraki agent'lar bu kararları okur, tekrar sormaz.
7
+ *
8
+ * Tasarım ilkesi #1: Memory-First — her karar hafızada iz bırakır
9
+ */
10
+ import { createInterface } from 'node:readline';
11
+ import { readFile, writeFile } from 'node:fs/promises';
12
+ const QUESTIONS = [
13
+ {
14
+ key: 'auth',
15
+ question: '🔐 Auth stratejisi?',
16
+ options: [
17
+ { key: 'jwt', label: 'JWT (stateless tokens)' },
18
+ { key: 'session', label: 'Session (server-side)' },
19
+ { key: 'oauth', label: 'OAuth (Google/GitHub)' },
20
+ { key: 'api-key', label: 'API Key (simple)' },
21
+ { key: 'none', label: 'Auth yok' },
22
+ ],
23
+ },
24
+ {
25
+ key: 'database',
26
+ question: '🗄️ Database?',
27
+ options: [
28
+ { key: 'postgresql', label: 'PostgreSQL' },
29
+ { key: 'mongodb', label: 'MongoDB' },
30
+ { key: 'sqlite', label: 'SQLite' },
31
+ { key: 'in-memory', label: 'In-memory (DB yok)' },
32
+ ],
33
+ },
34
+ {
35
+ key: 'apiStyle',
36
+ question: '🌐 API stili?',
37
+ options: [
38
+ { key: 'rest', label: 'REST' },
39
+ { key: 'graphql', label: 'GraphQL' },
40
+ { key: 'trpc', label: 'tRPC' },
41
+ ],
42
+ },
43
+ {
44
+ key: 'frontend',
45
+ question: '🖥️ Frontend?',
46
+ options: [
47
+ { key: 'react', label: 'React' },
48
+ { key: 'vue', label: 'Vue' },
49
+ { key: 'nextjs', label: 'Next.js' },
50
+ { key: 'api-only', label: 'Sadece API (frontend yok)' },
51
+ ],
52
+ },
53
+ {
54
+ key: 'deployment',
55
+ question: '🚀 Deployment hedefi?',
56
+ options: [
57
+ { key: 'local', label: 'Local development' },
58
+ { key: 'docker', label: 'Docker / Docker Compose' },
59
+ { key: 'cloud', label: 'Cloud (AWS/GCP/Vercel)' },
60
+ ],
61
+ },
62
+ ];
63
+ export class ArchitectAgent {
64
+ _askFn = null;
65
+ /** Test injection */
66
+ setAskFn(fn) {
67
+ this._askFn = fn;
68
+ }
69
+ /**
70
+ * İnteraktif CLI ile kullanıcıdan mimari kararları topla
71
+ */
72
+ async runInteractive() {
73
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
74
+ const askFn = (prompt) => new Promise((resolve) => rl.question(prompt, resolve));
75
+ console.log('\n╔══════════════════════════════════════════════╗');
76
+ console.log('║ ARCHITECT — Mimari Kararlar ║');
77
+ console.log('╚══════════════════════════════════════════════╝\n');
78
+ try {
79
+ return await this.collectAnswers(askFn);
80
+ }
81
+ finally {
82
+ rl.close();
83
+ }
84
+ }
85
+ /**
86
+ * Test/CI için direkt cevap ver
87
+ */
88
+ runWithDefaults(answers) {
89
+ return { ...answers };
90
+ }
91
+ /**
92
+ * Kararları ARCHITECTURE.md'ye yaz
93
+ */
94
+ async writeToArchitecture(decisions, archPath) {
95
+ let content;
96
+ try {
97
+ content = await readFile(archPath, 'utf-8');
98
+ }
99
+ catch {
100
+ content = '# ARCHITECTURE\n';
101
+ }
102
+ // Mevcut "## Kararlar" bölümünü kaldır
103
+ content = content.replace(/\n## Kararlar[\s\S]*?(?=\n## [A-Z]|$)/, '');
104
+ const section = this.renderDecisions(decisions);
105
+ const updated = content.trimEnd() + '\n\n' + section + '\n';
106
+ await writeFile(archPath, updated, 'utf-8');
107
+ }
108
+ /**
109
+ * ARCHITECTURE.md'den kararları parse et
110
+ */
111
+ static parseDecisions(content) {
112
+ const section = content.match(/## Kararlar\s*\n([\s\S]*?)(?=\n## [A-Z]|$)/);
113
+ if (!section?.[1])
114
+ return null;
115
+ const get = (label) => {
116
+ const match = section[1].match(new RegExp(`\\*\\*${label}\\*\\*:\\s*(.+)`));
117
+ return match?.[1]?.trim().split(' ')[0]?.toLowerCase();
118
+ };
119
+ return {
120
+ auth: (get('Auth') ?? 'none'),
121
+ database: (get('Database') ?? 'in-memory'),
122
+ apiStyle: (get('API') ?? 'rest'),
123
+ frontend: (get('Frontend') ?? 'api-only'),
124
+ deployment: (get('Deployment') ?? 'local'),
125
+ };
126
+ }
127
+ // ── Private ─────────────────────────────────────────────
128
+ async collectAnswers(askFn) {
129
+ const fn = this._askFn ?? askFn;
130
+ const result = {};
131
+ for (const q of QUESTIONS) {
132
+ const optionList = q.options
133
+ .map((o, i) => ` ${i + 1}. ${o.label}`)
134
+ .join('\n');
135
+ const answer = await fn(`${q.question}\n${optionList}\n> `);
136
+ const num = parseInt(answer.trim(), 10);
137
+ const selected = (num >= 1 && num <= q.options.length)
138
+ ? q.options[num - 1].key
139
+ : q.options[0].key; // default: ilk seçenek
140
+ result[q.key] = selected;
141
+ }
142
+ return result;
143
+ }
144
+ renderDecisions(d) {
145
+ return `## Kararlar
146
+
147
+ **Auth**: ${d.auth}
148
+ **Database**: ${d.database}
149
+ **API**: ${d.apiStyle}
150
+ **Frontend**: ${d.frontend}
151
+ **Deployment**: ${d.deployment}
152
+ ${d.extras ? Object.entries(d.extras).map(([k, v]) => `**${k}**: ${v}`).join('\n') : ''}
153
+ > Karar tarihi: ${new Date().toISOString()}`;
154
+ }
155
+ }
156
+ //# sourceMappingURL=architect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agent/architect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Codebase Reader — Proje Dosyalarını Otomatik Okuyan Modül
3
+ *
4
+ * Her agent task başlamadan önce ilgili dosyaları otomatik okur.
5
+ * Task açıklamasına göre hangi dosyaların gerektiğine karar verir.
6
+ *
7
+ * D007: Memory-Aware Context Injection — codebase context eklenir
8
+ * D018: Hafıza optimizasyonu — max 8000 token limiti
9
+ */
10
+ import type { FileInfo, ProjectStructure, CodebaseContext } from '../types/index.js';
11
+ export declare class CodebaseReader {
12
+ /**
13
+ * Proje dizinini tara, tüm kaynak dosyaları ve dizin yapısını çıkar.
14
+ */
15
+ scanProject(projectRoot: string): Promise<ProjectStructure>;
16
+ /**
17
+ * Task açıklamasına göre hangi dosyaların okunması gerektiğine karar ver.
18
+ * Architecture bilgisini de kullanarak daha akıllı seçim yapar.
19
+ */
20
+ getRelevantFiles(task: string, structure: ProjectStructure, architecture?: string): FileInfo[];
21
+ /**
22
+ * Dosya listesinden context özeti oluştur.
23
+ * Her dosya: path + ilk 50 satır + export'lar.
24
+ * Max 8000 token limiti.
25
+ */
26
+ buildContextSummary(files: FileInfo[], projectRoot: string): Promise<CodebaseContext>;
27
+ private walkDirectory;
28
+ /** Export statement'ları çıkar */
29
+ private extractExports;
30
+ /** Temel proje dosyası mı? */
31
+ private isCoreFile;
32
+ /** Context'i okunabilir metin olarak render et */
33
+ private renderSummary;
34
+ }
35
+ //# sourceMappingURL=codebase-reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebase-reader.d.ts","sourceRoot":"","sources":["../../src/agent/codebase-reader.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,QAAQ,EACR,gBAAgB,EAEhB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAmE3B,qBAAa,cAAc;IACzB;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAejE;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,gBAAgB,EAC3B,YAAY,CAAC,EAAE,MAAM,GACpB,QAAQ,EAAE;IA+Db;;;;OAIG;IACG,mBAAmB,CACvB,KAAK,EAAE,QAAQ,EAAE,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC;YAmEb,aAAa;IA0C3B,kCAAkC;IAClC,OAAO,CAAC,cAAc;IAuCtB,8BAA8B;IAC9B,OAAO,CAAC,UAAU;IAQlB,kDAAkD;IAClD,OAAO,CAAC,aAAa;CAoBtB"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Codebase Reader — Proje Dosyalarını Otomatik Okuyan Modül
3
+ *
4
+ * Her agent task başlamadan önce ilgili dosyaları otomatik okur.
5
+ * Task açıklamasına göre hangi dosyaların gerektiğine karar verir.
6
+ *
7
+ * D007: Memory-Aware Context Injection — codebase context eklenir
8
+ * D018: Hafıza optimizasyonu — max 8000 token limiti
9
+ */
10
+ import { readdir, readFile, stat } from 'node:fs/promises';
11
+ import { join, relative, extname } from 'node:path';
12
+ /** Token yaklaşık hesabı: 1 token ≈ 4 karakter */
13
+ const CHARS_PER_TOKEN = 4;
14
+ const MAX_TOKENS = 8000;
15
+ const MAX_CHARS = MAX_TOKENS * CHARS_PER_TOKEN;
16
+ const FIRST_LINES_COUNT = 50;
17
+ /** Taranması gereken kaynak dosya uzantıları */
18
+ const SOURCE_EXTENSIONS = new Set([
19
+ '.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs',
20
+ '.py', '.go', '.rs', '.java', '.rb',
21
+ '.json', '.yaml', '.yml', '.toml',
22
+ '.md', '.sql', '.graphql', '.gql',
23
+ '.css', '.scss', '.html', '.vue', '.svelte',
24
+ ]);
25
+ /** Her zaman atlanacak dizinler */
26
+ const SKIP_DIRS = new Set([
27
+ 'node_modules', '.git', 'dist', 'build', 'coverage',
28
+ '.next', '.nuxt', '.output', '__pycache__', '.cache',
29
+ 'vendor', 'target', '.turbo', '.vercel',
30
+ ]);
31
+ /** Task pattern → ilgili dosya anahtar kelimeleri eşleştirmesi */
32
+ const TASK_FILE_PATTERNS = [
33
+ {
34
+ keywords: ['auth', 'authentication', 'login', 'register', 'jwt', 'session', 'token'],
35
+ filePatterns: ['auth', 'user', 'session', 'token', 'middleware', 'guard', 'login', 'register', 'schema', 'config'],
36
+ priority: 10,
37
+ },
38
+ {
39
+ keywords: ['database', 'db', 'schema', 'migration', 'model', 'entity'],
40
+ filePatterns: ['schema', 'model', 'entity', 'migration', 'db', 'database', 'prisma', 'drizzle', 'knex'],
41
+ priority: 9,
42
+ },
43
+ {
44
+ keywords: ['api', 'endpoint', 'route', 'controller', 'handler', 'rest', 'graphql'],
45
+ filePatterns: ['route', 'controller', 'handler', 'api', 'endpoint', 'server', 'app', 'middleware', 'schema'],
46
+ priority: 8,
47
+ },
48
+ {
49
+ keywords: ['frontend', 'component', 'page', 'ui', 'view', 'layout', 'style'],
50
+ filePatterns: ['component', 'page', 'view', 'layout', 'style', 'hook', 'context', 'store', 'api', 'types'],
51
+ priority: 7,
52
+ },
53
+ {
54
+ keywords: ['test', 'testing', 'spec', 'unit', 'integration', 'e2e'],
55
+ filePatterns: ['test', 'spec', '__tests__', 'fixture', 'mock', 'helper'],
56
+ priority: 6,
57
+ },
58
+ {
59
+ keywords: ['config', 'setup', 'env', 'environment', 'settings'],
60
+ filePatterns: ['config', 'env', 'settings', 'constants', '.env', 'tsconfig', 'package'],
61
+ priority: 5,
62
+ },
63
+ {
64
+ keywords: ['deploy', 'docker', 'ci', 'cd', 'pipeline', 'build'],
65
+ filePatterns: ['docker', 'ci', 'deploy', 'pipeline', 'workflow', 'Makefile', 'Dockerfile'],
66
+ priority: 4,
67
+ },
68
+ ];
69
+ export class CodebaseReader {
70
+ /**
71
+ * Proje dizinini tara, tüm kaynak dosyaları ve dizin yapısını çıkar.
72
+ */
73
+ async scanProject(projectRoot) {
74
+ const files = [];
75
+ const directories = [];
76
+ await this.walkDirectory(projectRoot, projectRoot, files, directories);
77
+ return {
78
+ root: projectRoot,
79
+ files: files.sort((a, b) => a.relativePath.localeCompare(b.relativePath)),
80
+ directories: directories.sort(),
81
+ totalFiles: files.length,
82
+ totalSize: files.reduce((sum, f) => sum + f.size, 0),
83
+ };
84
+ }
85
+ /**
86
+ * Task açıklamasına göre hangi dosyaların okunması gerektiğine karar ver.
87
+ * Architecture bilgisini de kullanarak daha akıllı seçim yapar.
88
+ */
89
+ getRelevantFiles(task, structure, architecture) {
90
+ const taskLower = task.toLowerCase();
91
+ const scored = [];
92
+ for (const file of structure.files) {
93
+ let score = 0;
94
+ // 1. Task pattern eşleştirmesi
95
+ for (const pattern of TASK_FILE_PATTERNS) {
96
+ const taskMatch = pattern.keywords.some(kw => taskLower.includes(kw));
97
+ if (taskMatch) {
98
+ const fileMatch = pattern.filePatterns.some(fp => file.relativePath.toLowerCase().includes(fp));
99
+ if (fileMatch) {
100
+ score += pattern.priority;
101
+ }
102
+ }
103
+ }
104
+ // 2. Doğrudan dosya adı eşleşmesi (task'ta geçen kelimeler)
105
+ const taskWords = taskLower
106
+ .split(/[\s,.;:!?/\\-]+/)
107
+ .filter(w => w.length > 2);
108
+ for (const word of taskWords) {
109
+ if (file.relativePath.toLowerCase().includes(word)) {
110
+ score += 3;
111
+ }
112
+ }
113
+ // 3. Architecture'da bahsedilen dosya/dizin eşleşmesi
114
+ if (architecture) {
115
+ const archLower = architecture.toLowerCase();
116
+ const pathParts = file.relativePath.split('/');
117
+ for (const part of pathParts) {
118
+ if (part.length > 2 && archLower.includes(part.toLowerCase())) {
119
+ score += 2;
120
+ }
121
+ }
122
+ }
123
+ // 4. Temel dosyalar her zaman biraz puan alır
124
+ if (this.isCoreFile(file.relativePath)) {
125
+ score += 1;
126
+ }
127
+ // 5. Index/types dosyaları ek puan
128
+ const baseName = file.relativePath.split('/').pop()?.toLowerCase() ?? '';
129
+ if (baseName.startsWith('index.') || baseName.includes('types')) {
130
+ score += 1;
131
+ }
132
+ if (score > 0) {
133
+ scored.push({ file, score });
134
+ }
135
+ }
136
+ // Skora göre sırala, en yüksek önce
137
+ scored.sort((a, b) => b.score - a.score);
138
+ return scored.map(s => s.file);
139
+ }
140
+ /**
141
+ * Dosya listesinden context özeti oluştur.
142
+ * Her dosya: path + ilk 50 satır + export'lar.
143
+ * Max 8000 token limiti.
144
+ */
145
+ async buildContextSummary(files, projectRoot) {
146
+ const contexts = [];
147
+ let totalChars = 0;
148
+ let truncated = false;
149
+ for (const file of files) {
150
+ if (totalChars >= MAX_CHARS) {
151
+ truncated = true;
152
+ break;
153
+ }
154
+ try {
155
+ const fullPath = join(projectRoot, file.relativePath);
156
+ const content = await readFile(fullPath, 'utf-8');
157
+ const lines = content.split('\n');
158
+ // İlk N satır
159
+ const firstLines = lines.slice(0, FIRST_LINES_COUNT).join('\n');
160
+ // Export'ları çıkar
161
+ const exports = this.extractExports(content, file.extension);
162
+ const contextEntry = {
163
+ path: file.relativePath,
164
+ firstLines,
165
+ exports,
166
+ relevanceScore: 0, // dışarıdan set edilir
167
+ };
168
+ // Bu entry'nin tahmini karakter maliyeti
169
+ const entryCost = file.relativePath.length +
170
+ firstLines.length +
171
+ exports.join(', ').length +
172
+ 50; // overhead
173
+ if (totalChars + entryCost > MAX_CHARS) {
174
+ // Bu dosya sığmıyor — sadece path + exports ekle
175
+ contextEntry.firstLines = `[truncated — ${lines.length} lines, ${file.size} bytes]`;
176
+ const reducedCost = file.relativePath.length + exports.join(', ').length + 80;
177
+ if (totalChars + reducedCost > MAX_CHARS) {
178
+ truncated = true;
179
+ break;
180
+ }
181
+ totalChars += reducedCost;
182
+ }
183
+ else {
184
+ totalChars += entryCost;
185
+ }
186
+ contexts.push(contextEntry);
187
+ }
188
+ catch {
189
+ // Dosya okunamadı, atla
190
+ }
191
+ }
192
+ const summary = this.renderSummary(contexts);
193
+ return {
194
+ files: contexts,
195
+ totalTokens: Math.ceil(totalChars / CHARS_PER_TOKEN),
196
+ truncated,
197
+ summary,
198
+ };
199
+ }
200
+ // ── Private Helpers ─────────────────────────────────────
201
+ async walkDirectory(dir, root, files, directories) {
202
+ let entries;
203
+ try {
204
+ entries = await readdir(dir, { withFileTypes: true });
205
+ }
206
+ catch {
207
+ return; // Erişilemeyen dizin, atla
208
+ }
209
+ for (const entry of entries) {
210
+ const fullPath = join(dir, entry.name);
211
+ const relPath = relative(root, fullPath).replace(/\\/g, '/');
212
+ if (entry.isDirectory()) {
213
+ if (SKIP_DIRS.has(entry.name) || entry.name.startsWith('.')) {
214
+ continue;
215
+ }
216
+ directories.push(relPath);
217
+ await this.walkDirectory(fullPath, root, files, directories);
218
+ }
219
+ else if (entry.isFile()) {
220
+ const ext = extname(entry.name).toLowerCase();
221
+ if (!SOURCE_EXTENSIONS.has(ext))
222
+ continue;
223
+ try {
224
+ const fileStat = await stat(fullPath);
225
+ files.push({
226
+ path: fullPath,
227
+ relativePath: relPath,
228
+ size: fileStat.size,
229
+ extension: ext,
230
+ });
231
+ }
232
+ catch {
233
+ // stat başarısız, atla
234
+ }
235
+ }
236
+ }
237
+ }
238
+ /** Export statement'ları çıkar */
239
+ extractExports(content, extension) {
240
+ const exports = [];
241
+ if (['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'].includes(extension)) {
242
+ // TypeScript/JavaScript exports
243
+ const exportRegex = /export\s+(?:default\s+)?(?:class|function|const|let|var|type|interface|enum)\s+(\w+)/g;
244
+ let match;
245
+ while ((match = exportRegex.exec(content)) !== null) {
246
+ if (match[1])
247
+ exports.push(match[1]);
248
+ }
249
+ // Re-exports: export { X, Y } from '...'
250
+ const reExportRegex = /export\s*\{([^}]+)\}/g;
251
+ while ((match = reExportRegex.exec(content)) !== null) {
252
+ if (match[1]) {
253
+ const names = match[1].split(',').map(n => n.trim().split(/\s+as\s+/)[0]?.trim() ?? '');
254
+ exports.push(...names.filter(n => n.length > 0));
255
+ }
256
+ }
257
+ }
258
+ else if (extension === '.py') {
259
+ // Python: def/class at top level
260
+ const pyRegex = /^(?:def|class)\s+(\w+)/gm;
261
+ let match;
262
+ while ((match = pyRegex.exec(content)) !== null) {
263
+ if (match[1])
264
+ exports.push(match[1]);
265
+ }
266
+ }
267
+ else if (extension === '.go') {
268
+ // Go: Exported = capitalized
269
+ const goRegex = /^(?:func|type|var|const)\s+([A-Z]\w+)/gm;
270
+ let match;
271
+ while ((match = goRegex.exec(content)) !== null) {
272
+ if (match[1])
273
+ exports.push(match[1]);
274
+ }
275
+ }
276
+ // Deduplicate
277
+ return [...new Set(exports)];
278
+ }
279
+ /** Temel proje dosyası mı? */
280
+ isCoreFile(relativePath) {
281
+ const corePaths = [
282
+ 'package.json', 'tsconfig.json', 'pyproject.toml', 'go.mod',
283
+ 'Cargo.toml', 'pom.xml', 'build.gradle',
284
+ ];
285
+ return corePaths.some(cp => relativePath.endsWith(cp));
286
+ }
287
+ /** Context'i okunabilir metin olarak render et */
288
+ renderSummary(contexts) {
289
+ if (contexts.length === 0) {
290
+ return '_Codebase context bulunamadı._';
291
+ }
292
+ const parts = [];
293
+ for (const ctx of contexts) {
294
+ const exportStr = ctx.exports.length > 0
295
+ ? `\nExports: ${ctx.exports.join(', ')}`
296
+ : '';
297
+ parts.push(`### ${ctx.path}${exportStr}
298
+ \`\`\`
299
+ ${ctx.firstLines}
300
+ \`\`\``);
301
+ }
302
+ return parts.join('\n\n');
303
+ }
304
+ }
305
+ //# sourceMappingURL=codebase-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codebase-reader.js","sourceRoot":"","sources":["../../src/agent/codebase-reader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Context Builder — Memory-Aware Prompt Oluşturma
3
+ *
4
+ * Her agent'a gönderilen prompt, 4 hafıza dosyasının tam bağlamını içerir.
5
+ * Agent tipi ve task'a göre prompt özelleştirilir.
6
+ *
7
+ * Tasarım İlkesi #1: Memory-First — her karar hafızada iz bırakır.
8
+ */
9
+ import type { TaskDefinition, MemorySnapshot, AgentConfig, CodebaseContext } from '../types/index.js';
10
+ export declare class ContextBuilder {
11
+ private codebaseReader;
12
+ constructor();
13
+ /**
14
+ * Agent için tam prompt oluştur.
15
+ * Yapı: Persona + Memory Context + Codebase Context + Task Detail + Output Format
16
+ */
17
+ buildPrompt(task: TaskDefinition, memory: MemorySnapshot, agent: AgentConfig, codebaseContext?: CodebaseContext): string;
18
+ /**
19
+ * Codebase context oluştur — task'a göre ilgili dosyaları bul ve özetle.
20
+ * AgentRunner veya Orchestrator tarafından çağrılır, sonuç buildPrompt'a geçirilir.
21
+ */
22
+ buildCodebaseContext(projectRoot: string, taskDescription: string, architecture?: string): Promise<CodebaseContext>;
23
+ /**
24
+ * Hafıza bağlamını oluştur.
25
+ * Otomatik: 20K altı → tam, üstü → compact.
26
+ * MemoryLayer.optimizedSnapshot() ile geliyorsa zaten sıkıştırılmış.
27
+ */
28
+ buildMemoryContext(memory: MemorySnapshot): string;
29
+ /**
30
+ * Kompakt hafıza — çok büyük projeler için özet versiyonu
31
+ */
32
+ private buildCompactMemoryContext;
33
+ private buildTaskDetail;
34
+ private buildOutputFormat;
35
+ private section;
36
+ private extractSection;
37
+ private extractRecentDecisions;
38
+ }
39
+ //# sourceMappingURL=context-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../src/agent/context-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAgB3B,qBAAa,cAAc;IACzB,OAAO,CAAC,cAAc,CAAiB;;IAMvC;;;OAGG;IACH,WAAW,CACT,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,WAAW,EAClB,eAAe,CAAC,EAAE,eAAe,GAChC,MAAM;IAyCT;;;OAGG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC;IAU3B;;;;OAIG;IACH,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM;IAmBlD;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkBjC,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,sBAAsB;CAK/B"}