@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,297 @@
1
+ /**
2
+ * Memory Layer — Dört Dosyanın Guardianı
3
+ *
4
+ * MISSION.md: salt okunur (sadece validasyon)
5
+ * ARCHITECTURE.md: okunur, değişiklik önerisi üretir
6
+ * DECISIONS.md: append-only log
7
+ * STATE.md: her task sonrası güncellenir
8
+ */
9
+ import { readFile, writeFile } from 'node:fs/promises';
10
+ import { join } from 'node:path';
11
+ import { createHash } from 'node:crypto';
12
+ export class MemoryLayer {
13
+ paths;
14
+ constructor(projectRoot) {
15
+ this.paths = {
16
+ mission: join(projectRoot, 'MISSION.md'),
17
+ architecture: join(projectRoot, 'ARCHITECTURE.md'),
18
+ decisions: join(projectRoot, 'DECISIONS.md'),
19
+ state: join(projectRoot, 'STATE.md'),
20
+ };
21
+ }
22
+ // ── Snapshot: Tüm hafızayı tek seferde oku ──────────────
23
+ async snapshot() {
24
+ const files = await this.readAll();
25
+ const hash = this.computeHash(files);
26
+ return {
27
+ files,
28
+ timestamp: new Date().toISOString(),
29
+ hash,
30
+ };
31
+ }
32
+ /**
33
+ * Optimize edilmiş snapshot — context window'u korumak için
34
+ * DECISIONS.md ve STATE.md otomatik sıkıştırılır.
35
+ *
36
+ * @param recentDecisionCount Tam gösterilecek son karar sayısı (default: 10)
37
+ * @param maxCompletedTasks Tam gösterilecek max tamamlanan task (default: 5)
38
+ */
39
+ async optimizedSnapshot(recentDecisionCount = 10, maxCompletedTasks = 5) {
40
+ const [mission, architecture, decisionsRaw, stateRaw] = await Promise.all([
41
+ this.readFile('mission'),
42
+ this.readFile('architecture'),
43
+ this.readFile('decisions'),
44
+ this.readFile('state'),
45
+ ]);
46
+ const decisions = this.summarizeDecisions(decisionsRaw, recentDecisionCount);
47
+ const state = this.compressState(stateRaw, maxCompletedTasks);
48
+ const files = { mission, architecture, decisions, state };
49
+ return {
50
+ files,
51
+ timestamp: new Date().toISOString(),
52
+ hash: this.computeHash(files),
53
+ };
54
+ }
55
+ async readAll() {
56
+ const [mission, architecture, decisions, state] = await Promise.all([
57
+ this.readFile('mission'),
58
+ this.readFile('architecture'),
59
+ this.readFile('decisions'),
60
+ this.readFile('state'),
61
+ ]);
62
+ return { mission, architecture, decisions, state };
63
+ }
64
+ // ── Individual File Operations ──────────────────────────
65
+ async readMission() {
66
+ return this.readFile('mission');
67
+ }
68
+ async readArchitecture() {
69
+ return this.readFile('architecture');
70
+ }
71
+ async readDecisions() {
72
+ return this.readFile('decisions');
73
+ }
74
+ async readState() {
75
+ return this.readFile('state');
76
+ }
77
+ // ── DECISIONS.md: Append-Only ───────────────────────────
78
+ async appendDecision(decision) {
79
+ const current = await this.readDecisions();
80
+ const entry = `
81
+ ---
82
+
83
+ ## ${decision.id} — ${decision.title}
84
+
85
+ - **Tarih**: ${decision.date}
86
+ - **Bağlam**: ${decision.context}
87
+ - **Karar**: ${decision.decision}
88
+ - **Gerekçe**: ${decision.rationale}
89
+ - **Alternatifler**: ${decision.alternatives}
90
+ - **Durum**: ${decision.status}
91
+ `;
92
+ await writeFile(this.paths.decisions, current + entry, 'utf-8');
93
+ }
94
+ // ── STATE.md: Full Rewrite ──────────────────────────────
95
+ async updateState(state) {
96
+ const content = this.renderState(state);
97
+ await writeFile(this.paths.state, content, 'utf-8');
98
+ }
99
+ async parseState() {
100
+ const content = await this.readState();
101
+ return this.parseStateContent(content);
102
+ }
103
+ // ── Validation ──────────────────────────────────────────
104
+ async validateMissionIntegrity() {
105
+ const mission = await this.readMission();
106
+ // Mission dosyası boş olmamalı ve temel bölümleri içermeli
107
+ return (mission.includes('## Neden Varız') &&
108
+ mission.includes('## Ne İnşa Ediyoruz') &&
109
+ mission.includes('## Başarı Tanımı'));
110
+ }
111
+ async getDecisionCount() {
112
+ const content = await this.readDecisions();
113
+ const matches = content.match(/^## D\d+/gm);
114
+ return matches?.length ?? 0;
115
+ }
116
+ async getNextDecisionId() {
117
+ const count = await this.getDecisionCount();
118
+ return `D${String(count + 1).padStart(3, '0')}`;
119
+ }
120
+ // ── Memory Optimization ─────────────────────────────────
121
+ /**
122
+ * DECISIONS.md özetleme:
123
+ * - Son N karar tam gösterilir
124
+ * - Eskiler tek satır özete indirilir
125
+ *
126
+ * Örnek: "D001-D006: dosya tabanlı hafıza, TypeScript stack, Claude API kararları"
127
+ */
128
+ summarizeDecisions(raw, recentCount = 10) {
129
+ // Header'ı ayır
130
+ const headerMatch = raw.match(/^([\s\S]*?)(?=\n---\n|\n## D\d)/);
131
+ const header = headerMatch?.[1]?.trim() ?? '# DECISIONS';
132
+ // Kararları parse et
133
+ const decisionBlocks = raw.split(/(?=\n---\n\s*\n## D\d)/).filter(b => /## D\d/.test(b));
134
+ if (decisionBlocks.length <= recentCount) {
135
+ return raw; // sıkıştırma gereksiz
136
+ }
137
+ const oldCount = decisionBlocks.length - recentCount;
138
+ const oldBlocks = decisionBlocks.slice(0, oldCount);
139
+ const recentBlocks = decisionBlocks.slice(oldCount);
140
+ // Eski kararları özetle
141
+ const oldSummaries = oldBlocks.map(block => {
142
+ const idMatch = block.match(/## (D\d+)\s*—\s*(.+)/);
143
+ const id = idMatch?.[1] ?? '?';
144
+ const title = idMatch?.[2]?.trim() ?? 'untitled';
145
+ return `${id}: ${title}`;
146
+ });
147
+ // Grup halinde özetle (max 5 per line)
148
+ const summaryLines = [];
149
+ for (let i = 0; i < oldSummaries.length; i += 5) {
150
+ const chunk = oldSummaries.slice(i, i + 5);
151
+ const firstId = chunk[0]?.split(':')[0] ?? '';
152
+ const lastId = chunk[chunk.length - 1]?.split(':')[0] ?? '';
153
+ const titles = chunk.map(s => s.split(': ').slice(1).join(': ')).join(', ');
154
+ summaryLines.push(`**${firstId}-${lastId}**: ${titles}`);
155
+ }
156
+ const summary = `${header}
157
+
158
+ > ℹ️ ${oldCount} eski karar özetlendi, son ${recentCount} tam gösteriliyor.
159
+
160
+ ### Özetlenen Kararlar
161
+ ${summaryLines.map(l => `- ${l}`).join('\n')}
162
+ ${recentBlocks.join('')}`;
163
+ return summary;
164
+ }
165
+ /**
166
+ * STATE.md sıkıştırma:
167
+ * - Completed tasks 5'ten fazlaysa özete indir
168
+ * - Active tasks ve blocked tam kalır
169
+ */
170
+ compressState(raw, maxCompleted = 5) {
171
+ const state = this.parseStateContent(raw);
172
+ if (state.completedTasks.length <= maxCompleted) {
173
+ return raw; // sıkıştırma gereksiz
174
+ }
175
+ const totalCompleted = state.completedTasks.length;
176
+ const recent = state.completedTasks.slice(-maxCompleted);
177
+ // Sıkıştırılmış render
178
+ const activeTasks = state.activeTasks
179
+ .map(t => `- [ ] ${t.taskId} — ${t.title} — status: ${t.status}`)
180
+ .join('\n');
181
+ const recentTasks = recent
182
+ .map(t => `- [x] ${t.taskId} — ${t.title}`)
183
+ .join('\n');
184
+ const blockedTasks = state.blockedTasks
185
+ .map(t => `- ${t.taskId} — ${t.reason} — ${t.escalationStatus}`)
186
+ .join('\n');
187
+ return `# STATE — Project Consciousness
188
+
189
+ ## Current Phase: \`${state.phase}\`
190
+
191
+ ## Iteration: ${state.iteration}
192
+
193
+ ## Active Tasks
194
+ ${activeTasks || '_yok_'}
195
+
196
+ ## Completed Tasks
197
+ > ${totalCompleted} task tamamlandı (son ${maxCompleted} gösteriliyor, detay: git log)
198
+
199
+ ${recentTasks}
200
+
201
+ ## Blocked
202
+ ${blockedTasks || '_yok_'}
203
+
204
+ ## Last Updated: ${state.lastUpdated}
205
+ `;
206
+ }
207
+ // ── Private Helpers ─────────────────────────────────────
208
+ async readFile(key) {
209
+ try {
210
+ return await readFile(this.paths[key], 'utf-8');
211
+ }
212
+ catch {
213
+ throw new Error(`Memory file not found: ${this.paths[key]}`);
214
+ }
215
+ }
216
+ computeHash(files) {
217
+ const content = Object.values(files).join('\n---\n');
218
+ return createHash('sha256').update(content).digest('hex').slice(0, 12);
219
+ }
220
+ renderState(state) {
221
+ const activeTasks = state.activeTasks
222
+ .map(t => `- [ ] ${t.taskId} — ${t.title} — agent: ${t.assignedAgent ?? 'unassigned'} — status: ${t.status}`)
223
+ .join('\n');
224
+ const completedTasks = state.completedTasks
225
+ .map(t => `- [x] ${t.taskId} — ${t.title} — ${t.output ?? 'done'}`)
226
+ .join('\n');
227
+ const blockedTasks = state.blockedTasks
228
+ .map(t => `- ${t.taskId} — ${t.reason} — ${t.escalationStatus}`)
229
+ .join('\n');
230
+ return `# STATE — Project Consciousness
231
+
232
+ ## Current Phase: \`${state.phase}\`
233
+
234
+ ## Iteration: ${state.iteration}
235
+
236
+ ## Active Tasks
237
+ ${activeTasks || '_yok_'}
238
+
239
+ ## Completed Tasks
240
+ ${completedTasks || '_henüz yok_'}
241
+
242
+ ## Blocked
243
+ ${blockedTasks || '_henüz yok_'}
244
+
245
+ ## Last Updated: ${state.lastUpdated}
246
+ `;
247
+ }
248
+ parseStateContent(content) {
249
+ const phaseMatch = content.match(/## Current Phase: `(\w+)`/);
250
+ const iterationMatch = content.match(/## Iteration: (\d+)/);
251
+ const phase = (phaseMatch?.[1] ?? 'initialization');
252
+ const iteration = parseInt(iterationMatch?.[1] ?? '0', 10);
253
+ // Parse active tasks
254
+ const activeTasks = this.parseTaskLines(content, 'Active Tasks', false);
255
+ const completedTasks = this.parseTaskLines(content, 'Completed Tasks', true);
256
+ const blockedTasks = this.parseBlockedLines(content);
257
+ return {
258
+ phase,
259
+ iteration,
260
+ activeTasks,
261
+ completedTasks,
262
+ blockedTasks,
263
+ lastUpdated: new Date().toISOString(),
264
+ };
265
+ }
266
+ parseTaskLines(content, section, completed) {
267
+ const sectionRegex = new RegExp(`## ${section}\\n([\\s\\S]*?)(?=\\n## |$)`);
268
+ const match = content.match(sectionRegex);
269
+ if (!match?.[1])
270
+ return [];
271
+ const lines = match[1].trim().split('\n').filter(l => l.startsWith('- ['));
272
+ return lines.map(line => {
273
+ const parts = line.replace(/^- \[[ x]\] /, '').split(' — ');
274
+ return {
275
+ taskId: parts[0]?.trim() ?? '',
276
+ title: parts[1]?.trim() ?? '',
277
+ status: completed ? 'done' : 'pending',
278
+ assignedAgent: undefined,
279
+ };
280
+ });
281
+ }
282
+ parseBlockedLines(content) {
283
+ const match = content.match(/## Blocked\n([\s\S]*?)(?=\n## |$)/);
284
+ if (!match?.[1] || match[1].includes('_henüz yok_'))
285
+ return [];
286
+ const lines = match[1].trim().split('\n').filter(l => l.startsWith('- '));
287
+ return lines.map(line => {
288
+ const parts = line.replace(/^- /, '').split(' — ');
289
+ return {
290
+ taskId: parts[0]?.trim() ?? '',
291
+ reason: parts[1]?.trim() ?? '',
292
+ escalationStatus: 'pending',
293
+ };
294
+ });
295
+ }
296
+ }
297
+ //# sourceMappingURL=memory-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-layer.js","sourceRoot":"","sources":["../../src/memory/memory-layer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Dependency Graph — Topological Sort ile Task Sıralama
3
+ *
4
+ * Task'lar arası bağımlılıkları yönetir.
5
+ * Kahn's algorithm ile topological sort yapar.
6
+ * Paralel çalışabilecek task'ları gruplayarak döndürür.
7
+ */
8
+ import type { TaskDefinition } from '../types/index.js';
9
+ export declare class DependencyGraph {
10
+ private tasks;
11
+ private edges;
12
+ private reverseEdges;
13
+ addTask(task: TaskDefinition): void;
14
+ addDependency(taskId: string, dependsOnId: string): void;
15
+ /**
16
+ * Topological sort → paralel gruplar.
17
+ * [[T01, T02], [T03], [T04, T05]]
18
+ * → T01+T02 paralel, sonra T03, sonra T04+T05 paralel
19
+ */
20
+ getExecutionOrder(): string[][];
21
+ /**
22
+ * Döngü tespiti (DFS-based)
23
+ */
24
+ hasCycle(): boolean;
25
+ /**
26
+ * Bağımlılıkları tamamlanmış, çalışmaya hazır task'lar
27
+ */
28
+ getReadyTasks(completedTaskIds: Set<string>): string[];
29
+ /**
30
+ * Bir task'ın doğrudan bağımlılıkları
31
+ */
32
+ getDependencies(taskId: string): string[];
33
+ /**
34
+ * Bir task'a bağımlı olan task'lar
35
+ */
36
+ getDependents(taskId: string): string[];
37
+ get size(): number;
38
+ }
39
+ //# sourceMappingURL=dependency-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.d.ts","sourceRoot":"","sources":["../../src/orchestrator/dependency-graph.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,qBAAa,eAAe;IAC1B,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,YAAY,CAAuC;IAI3D,OAAO,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAenC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAYxD;;;;OAIG;IACH,iBAAiB,IAAI,MAAM,EAAE,EAAE;IAyC/B;;OAEG;IACH,QAAQ,IAAI,OAAO;IA0BnB;;OAEG;IACH,aAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE;IAYtD;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAIzC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAIvC,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Dependency Graph — Topological Sort ile Task Sıralama
3
+ *
4
+ * Task'lar arası bağımlılıkları yönetir.
5
+ * Kahn's algorithm ile topological sort yapar.
6
+ * Paralel çalışabilecek task'ları gruplayarak döndürür.
7
+ */
8
+ export class DependencyGraph {
9
+ tasks = new Map();
10
+ edges = new Map(); // taskId → depends on
11
+ reverseEdges = new Map(); // taskId → depended by
12
+ // ── Build ───────────────────────────────────────────────
13
+ addTask(task) {
14
+ this.tasks.set(task.id, task);
15
+ if (!this.edges.has(task.id)) {
16
+ this.edges.set(task.id, new Set());
17
+ }
18
+ if (!this.reverseEdges.has(task.id)) {
19
+ this.reverseEdges.set(task.id, new Set());
20
+ }
21
+ // Task'ın kendi dependency'lerini ekle
22
+ for (const dep of task.dependencies) {
23
+ this.addDependency(task.id, dep);
24
+ }
25
+ }
26
+ addDependency(taskId, dependsOnId) {
27
+ if (!this.edges.has(taskId))
28
+ this.edges.set(taskId, new Set());
29
+ if (!this.edges.has(dependsOnId))
30
+ this.edges.set(dependsOnId, new Set());
31
+ if (!this.reverseEdges.has(taskId))
32
+ this.reverseEdges.set(taskId, new Set());
33
+ if (!this.reverseEdges.has(dependsOnId))
34
+ this.reverseEdges.set(dependsOnId, new Set());
35
+ this.edges.get(taskId).add(dependsOnId);
36
+ this.reverseEdges.get(dependsOnId).add(taskId);
37
+ }
38
+ // ── Query ───────────────────────────────────────────────
39
+ /**
40
+ * Topological sort → paralel gruplar.
41
+ * [[T01, T02], [T03], [T04, T05]]
42
+ * → T01+T02 paralel, sonra T03, sonra T04+T05 paralel
43
+ */
44
+ getExecutionOrder() {
45
+ if (this.hasCycle()) {
46
+ throw new Error('Dependency graph has a cycle — cannot determine execution order');
47
+ }
48
+ const inDegree = new Map();
49
+ for (const id of this.edges.keys()) {
50
+ inDegree.set(id, this.edges.get(id).size);
51
+ }
52
+ const groups = [];
53
+ const completed = new Set();
54
+ while (completed.size < this.edges.size) {
55
+ // Bu turda çalışabilecek task'lar (in-degree = 0, henüz tamamlanmamış)
56
+ const ready = [];
57
+ for (const [id, degree] of inDegree) {
58
+ if (degree === 0 && !completed.has(id)) {
59
+ ready.push(id);
60
+ }
61
+ }
62
+ if (ready.length === 0) {
63
+ break; // döngü olmamalı (hasCycle kontrol edildi) ama safety
64
+ }
65
+ groups.push(ready.sort()); // deterministic sıra
66
+ // Tamamlanan task'ların bağımlılarının in-degree'sini düşür
67
+ for (const id of ready) {
68
+ completed.add(id);
69
+ for (const dependent of this.reverseEdges.get(id) ?? []) {
70
+ const current = inDegree.get(dependent) ?? 0;
71
+ inDegree.set(dependent, current - 1);
72
+ }
73
+ }
74
+ }
75
+ return groups;
76
+ }
77
+ /**
78
+ * Döngü tespiti (DFS-based)
79
+ */
80
+ hasCycle() {
81
+ const visited = new Set();
82
+ const inStack = new Set();
83
+ const dfs = (node) => {
84
+ if (inStack.has(node))
85
+ return true;
86
+ if (visited.has(node))
87
+ return false;
88
+ visited.add(node);
89
+ inStack.add(node);
90
+ for (const dep of this.edges.get(node) ?? []) {
91
+ if (dfs(dep))
92
+ return true;
93
+ }
94
+ inStack.delete(node);
95
+ return false;
96
+ };
97
+ for (const id of this.edges.keys()) {
98
+ if (dfs(id))
99
+ return true;
100
+ }
101
+ return false;
102
+ }
103
+ /**
104
+ * Bağımlılıkları tamamlanmış, çalışmaya hazır task'lar
105
+ */
106
+ getReadyTasks(completedTaskIds) {
107
+ const ready = [];
108
+ for (const [id, deps] of this.edges) {
109
+ if (completedTaskIds.has(id))
110
+ continue;
111
+ const allDepsMet = [...deps].every(d => completedTaskIds.has(d));
112
+ if (allDepsMet) {
113
+ ready.push(id);
114
+ }
115
+ }
116
+ return ready.sort();
117
+ }
118
+ /**
119
+ * Bir task'ın doğrudan bağımlılıkları
120
+ */
121
+ getDependencies(taskId) {
122
+ return [...(this.edges.get(taskId) ?? [])];
123
+ }
124
+ /**
125
+ * Bir task'a bağımlı olan task'lar
126
+ */
127
+ getDependents(taskId) {
128
+ return [...(this.reverseEdges.get(taskId) ?? [])];
129
+ }
130
+ get size() {
131
+ return this.tasks.size;
132
+ }
133
+ }
134
+ //# sourceMappingURL=dependency-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../src/orchestrator/dependency-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Orchestrator — Escalator
3
+ *
4
+ * İnsan müdahalesi gereken durumları yönetir.
5
+ * Terminal'den gerçek readline ile kullanıcı yanıtı alır.
6
+ *
7
+ * Tasarım ilkesi #2: Fail-Safe — şüphe durumunda insana sor
8
+ */
9
+ import type { EscalationRequest, EscalationResponse, EvaluationResult } from '../types/index.js';
10
+ export declare class Escalator {
11
+ /** Readline override (test injection) */
12
+ private _askFn;
13
+ /**
14
+ * Test'ler için readline'ı override et
15
+ */
16
+ setAskFn(fn: (prompt: string) => Promise<string>): void;
17
+ /**
18
+ * Değerlendirme sonucuna göre eskalasyon gerekip gerekmediğine karar verir
19
+ */
20
+ shouldEscalate(evaluation: EvaluationResult): boolean;
21
+ /**
22
+ * Eskalasyon request'i oluşturur
23
+ */
24
+ createEscalation(evaluation: EvaluationResult, retryCount?: number): EscalationRequest;
25
+ /**
26
+ * Eskalasyonu terminal'e yaz ve kullanıcıdan yanıt al
27
+ */
28
+ promptUser(escalation: EscalationRequest): Promise<EscalationResponse>;
29
+ /**
30
+ * Eskalasyonu insan tarafından okunabilir formatta render eder
31
+ */
32
+ formatForHuman(escalation: EscalationRequest): string;
33
+ /**
34
+ * Kullanıcı yanıtını parse et
35
+ */
36
+ parseResponse(input: string): EscalationResponse;
37
+ private formatReason;
38
+ private formatContext;
39
+ private generateOptions;
40
+ private ask;
41
+ }
42
+ //# sourceMappingURL=escalator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"escalator.d.ts","sourceRoot":"","sources":["../../src/orchestrator/escalator.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAE3B,qBAAa,SAAS;IACpB,yCAAyC;IACzC,OAAO,CAAC,MAAM,CAAsD;IAEpE;;OAEG;IACH,QAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAIvD;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO;IAIrD;;OAEG;IACH,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB;IAmBtF;;OAEG;IACG,UAAU,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS5E;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,MAAM;IA4BrD;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB;IAuBhD,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,eAAe;IAoBvB,OAAO,CAAC,GAAG;CAkBZ"}