@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,440 @@
1
+ /**
2
+ * Smart Brief — Tek Soru → Analiz → Ürün Soruları → Otomatik Kararlar
3
+ *
4
+ * 5 adımlı akış:
5
+ * 1. "Ne yapmak istiyorsun?" — serbest metin
6
+ * 2. Brief analizi — teknik kararları otomatik al, belirsizlikleri tespit et
7
+ * 3. Sadece belirsiz ürün soruları sor (max 3-4, hepsi opsiyonel)
8
+ * 4. Anti-scope otomatik çıkar
9
+ * 5. Özet göster, onay al
10
+ *
11
+ * D012: SCOPE / ANTI-SCOPE yapısı (backward compatible)
12
+ * D020: ArchitectAgent kararları (artık otomatik)
13
+ */
14
+ const TECH_PATTERNS = [
15
+ // Auth
16
+ { keywords: ['kayıt', 'register', 'signup', 'giriş', 'login', 'auth', 'kullanıcı', 'user', 'oturum'], key: 'auth', value: 'jwt', reason: 'Kullanıcı kaydı/girişi gerekiyor' },
17
+ { keywords: ['api key', 'api-key', 'token based'], key: 'auth', value: 'api-key', reason: 'API key tabanlı erişim' },
18
+ { keywords: ['oauth', 'google login', 'github login', 'social login'], key: 'auth', value: 'oauth', reason: 'Social login gerekiyor' },
19
+ // Database
20
+ { keywords: ['postgresql', 'postgres', 'büyük veri', 'production db'], key: 'database', value: 'postgresql', reason: 'Production-grade DB' },
21
+ { keywords: ['mongodb', 'nosql', 'document db'], key: 'database', value: 'mongodb', reason: 'NoSQL gerekiyor' },
22
+ { keywords: ['sqlite', 'hafif db', 'local db', 'basit'], key: 'database', value: 'sqlite', reason: 'Hafif, dosya tabanlı DB' },
23
+ { keywords: ['in-memory', 'bellekte', 'db yok'], key: 'database', value: 'in-memory', reason: 'DB gereksiz' },
24
+ // API Style
25
+ { keywords: ['graphql', 'query language'], key: 'apiStyle', value: 'graphql', reason: 'GraphQL API' },
26
+ { keywords: ['trpc', 'type-safe rpc'], key: 'apiStyle', value: 'trpc', reason: 'tRPC' },
27
+ { keywords: ['rest', 'api', 'endpoint', 'crud'], key: 'apiStyle', value: 'rest', reason: 'REST API' },
28
+ // Frontend
29
+ { keywords: ['react', 'jsx', 'component'], key: 'frontend', value: 'react', reason: 'React frontend' },
30
+ { keywords: ['vue', 'vuejs'], key: 'frontend', value: 'vue', reason: 'Vue frontend' },
31
+ { keywords: ['next', 'nextjs', 'next.js', 'ssr'], key: 'frontend', value: 'nextjs', reason: 'Next.js' },
32
+ { keywords: ['api only', 'sadece api', 'backend', 'api-only', 'frontend yok'], key: 'frontend', value: 'api-only', reason: 'Sadece backend' },
33
+ // Deploy
34
+ { keywords: ['docker', 'container'], key: 'deployment', value: 'docker', reason: 'Docker deployment' },
35
+ { keywords: ['vercel', 'aws', 'gcp', 'cloud', 'deploy'], key: 'deployment', value: 'cloud', reason: 'Cloud deployment' },
36
+ ];
37
+ const QUESTION_GENERATORS = [
38
+ {
39
+ trigger: ['link', 'url', 'shortener', 'kısalt', 'redirect'],
40
+ generate: () => [
41
+ {
42
+ id: 'link-access',
43
+ question: 'Kısaltılmış linkler herkese açık mı, sadece giriş yapanlara mı?',
44
+ options: ['Herkese açık', 'Sadece giriş yapanlar', 'İkisi de (seçilebilir)'],
45
+ defaultAnswer: 'Herkese açık',
46
+ category: 'access',
47
+ },
48
+ {
49
+ id: 'link-expiry',
50
+ question: 'Linkler süresi dolar mı?',
51
+ options: ['Süresiz', 'Opsiyonel süre limiti', 'Her zaman süreli'],
52
+ defaultAnswer: 'Süresiz',
53
+ category: 'lifecycle',
54
+ },
55
+ ],
56
+ },
57
+ {
58
+ trigger: ['kullanıcı', 'user', 'kayıt', 'register', 'profil', 'account'],
59
+ generate: () => [
60
+ {
61
+ id: 'user-visibility',
62
+ question: 'Kullanıcılar birbirinin içeriklerini görebilir mi?',
63
+ options: ['Evet, herkes görür', 'Hayır, sadece kendi', 'Opsiyonel paylaşım'],
64
+ defaultAnswer: 'Hayır, sadece kendi',
65
+ category: 'visibility',
66
+ },
67
+ ],
68
+ },
69
+ {
70
+ trigger: ['ödeme', 'payment', 'premium', 'plan', 'abonelik', 'subscription', 'ücret', 'para'],
71
+ generate: () => [
72
+ {
73
+ id: 'monetization',
74
+ question: 'Ödeme/abonelik sistemi olacak mı?',
75
+ options: ['Hayır, tamamen ücretsiz', 'Evet, premium plan', 'İleride eklenebilir'],
76
+ defaultAnswer: 'Hayır, tamamen ücretsiz',
77
+ category: 'monetization',
78
+ },
79
+ ],
80
+ },
81
+ {
82
+ trigger: ['api', 'endpoint', 'backend', 'server'],
83
+ generate: (brief) => {
84
+ const hasFrontendHint = /react|vue|next|frontend|sayfa|page|ui|arayüz/i.test(brief);
85
+ if (hasFrontendHint)
86
+ return [];
87
+ return [
88
+ {
89
+ id: 'api-scope',
90
+ question: 'Sadece API mı yoksa frontend de olacak mı?',
91
+ options: ['Sadece API', 'API + basit frontend', 'Full-stack uygulama'],
92
+ defaultAnswer: 'Sadece API',
93
+ category: 'scope',
94
+ },
95
+ ];
96
+ },
97
+ },
98
+ {
99
+ trigger: ['dosya', 'file', 'upload', 'yükle', 'resim', 'image', 'media'],
100
+ generate: () => [
101
+ {
102
+ id: 'file-storage',
103
+ question: 'Dosya yükleme nereye yapılacak?',
104
+ options: ['Local disk', 'S3/Cloud storage', 'Dosya yükleme yok'],
105
+ defaultAnswer: 'Dosya yükleme yok',
106
+ category: 'scope',
107
+ },
108
+ ],
109
+ },
110
+ ];
111
+ // ── Stack Detection ─────────────────────────────────────────
112
+ function detectStack(brief) {
113
+ const lower = brief.toLowerCase();
114
+ if (/react|jsx|next\.?js/.test(lower))
115
+ return 'react';
116
+ if (/python|django|flask|fastapi/.test(lower))
117
+ return 'python';
118
+ if (/\bgo\b|golang|gin|fiber/.test(lower))
119
+ return 'go';
120
+ // Default: TypeScript/Node
121
+ return 'typescript-node';
122
+ }
123
+ // ── SmartBrief Class ────────────────────────────────────────
124
+ export class SmartBrief {
125
+ _askFn = null;
126
+ /** Test injection */
127
+ setAskFn(fn) {
128
+ this._askFn = fn;
129
+ }
130
+ /**
131
+ * ADIM 1: Kullanıcıdan serbest metin al
132
+ */
133
+ async askBrief(askFn) {
134
+ const fn = this._askFn ?? askFn;
135
+ if (!fn)
136
+ throw new Error('askFn required for interactive mode');
137
+ return fn('📋 Ne yapmak istiyorsun?\n> ');
138
+ }
139
+ /**
140
+ * ADIM 2: Brief'i analiz et — teknik kararları otomatik al, belirsizlikleri bul
141
+ */
142
+ analyzeBrief(rawInput) {
143
+ const lower = rawInput.toLowerCase();
144
+ // Teknik kararları otomatik çıkar
145
+ const autoDecisions = [];
146
+ const decided = new Set();
147
+ for (const pattern of TECH_PATTERNS) {
148
+ if (decided.has(pattern.key))
149
+ continue;
150
+ const match = pattern.keywords.some(kw => lower.includes(kw));
151
+ if (match) {
152
+ autoDecisions.push({
153
+ key: pattern.key,
154
+ value: pattern.value,
155
+ reason: pattern.reason,
156
+ });
157
+ decided.add(pattern.key);
158
+ }
159
+ }
160
+ // Default'ları ekle (karar verilmeyenler için)
161
+ if (!decided.has('auth')) {
162
+ // Auth gerekiyor mu anlamaya çalış
163
+ const needsAuth = /kayıt|register|login|giriş|kullanıcı|user|auth|oturum/i.test(rawInput);
164
+ autoDecisions.push({
165
+ key: 'auth',
166
+ value: needsAuth ? 'jwt' : 'none',
167
+ reason: needsAuth ? 'Kullanıcı yönetimi gerekiyor' : 'Auth gerekmiyor',
168
+ });
169
+ decided.add('auth');
170
+ }
171
+ if (!decided.has('database')) {
172
+ autoDecisions.push({ key: 'database', value: 'sqlite', reason: 'Default: hafif SQLite' });
173
+ decided.add('database');
174
+ }
175
+ if (!decided.has('apiStyle')) {
176
+ autoDecisions.push({ key: 'apiStyle', value: 'rest', reason: 'Default: REST API' });
177
+ decided.add('apiStyle');
178
+ }
179
+ if (!decided.has('frontend')) {
180
+ autoDecisions.push({ key: 'frontend', value: 'api-only', reason: 'Default: sadece API' });
181
+ decided.add('frontend');
182
+ }
183
+ if (!decided.has('deployment')) {
184
+ autoDecisions.push({ key: 'deployment', value: 'local', reason: 'Default: local' });
185
+ decided.add('deployment');
186
+ }
187
+ // Belirsiz ürün soruları
188
+ const questions = [];
189
+ const questionIds = new Set();
190
+ for (const gen of QUESTION_GENERATORS) {
191
+ const triggered = gen.trigger.some(t => lower.includes(t));
192
+ if (triggered) {
193
+ const newQuestions = gen.generate(rawInput);
194
+ for (const q of newQuestions) {
195
+ if (!questionIds.has(q.id)) {
196
+ questions.push(q);
197
+ questionIds.add(q.id);
198
+ }
199
+ }
200
+ }
201
+ }
202
+ // Max 4 soru
203
+ const limitedQuestions = questions.slice(0, 4);
204
+ // Başarı kriterlerini brief'ten çıkar
205
+ const inferredCriteria = this.inferCriteria(rawInput, autoDecisions);
206
+ return {
207
+ autoDecisions,
208
+ uncertainQuestions: limitedQuestions,
209
+ inferredCriteria,
210
+ };
211
+ }
212
+ /**
213
+ * ADIM 3: Sadece belirsiz ürün soruları sor (opsiyonel — enter ile geç)
214
+ */
215
+ async askClarifications(questions, askFn) {
216
+ const fn = this._askFn ?? askFn;
217
+ if (!fn)
218
+ return questions.map(q => ({ questionId: q.id, answer: q.defaultAnswer }));
219
+ if (questions.length === 0)
220
+ return [];
221
+ const answers = [];
222
+ for (const q of questions) {
223
+ const optionList = q.options
224
+ .map((o, i) => ` ${i + 1}. ${o}`)
225
+ .join('\n');
226
+ const answer = await fn(`\n❓ ${q.question}\n${optionList}\n (Enter = ${q.defaultAnswer})\n> `);
227
+ const trimmed = answer.trim();
228
+ if (trimmed === '') {
229
+ answers.push({ questionId: q.id, answer: q.defaultAnswer });
230
+ }
231
+ else {
232
+ const num = parseInt(trimmed, 10);
233
+ const selected = (num >= 1 && num <= q.options.length)
234
+ ? q.options[num - 1]
235
+ : trimmed; // freeform cevap
236
+ answers.push({ questionId: q.id, answer: selected });
237
+ }
238
+ }
239
+ return answers;
240
+ }
241
+ /**
242
+ * ADIM 4: Anti-scope otomatik çıkar
243
+ */
244
+ buildAntiScope(rawInput, analysis, answers) {
245
+ const protectedFiles = ['MISSION.md'];
246
+ const forbiddenDeps = [];
247
+ const lockedDecisions = [];
248
+ const breakingChanges = ['Mevcut testler kırılmasın'];
249
+ // Cevaplardan anti-scope çıkar
250
+ for (const a of answers) {
251
+ const ansLower = a.answer.toLowerCase();
252
+ if (a.questionId === 'monetization') {
253
+ if (ansLower.includes('hayır') || ansLower.includes('ücretsiz')) {
254
+ forbiddenDeps.push('stripe', 'paddle', 'lemonsqueezy');
255
+ lockedDecisions.push('Ödeme sistemi yok');
256
+ }
257
+ }
258
+ if (a.questionId === 'api-scope') {
259
+ if (ansLower.includes('sadece api') || ansLower === 'sadece api') {
260
+ forbiddenDeps.push('react', 'vue', 'svelte', 'next');
261
+ lockedDecisions.push('Frontend yok, sadece API');
262
+ }
263
+ }
264
+ if (a.questionId === 'file-storage') {
265
+ if (ansLower.includes('yok')) {
266
+ forbiddenDeps.push('multer', 'formidable');
267
+ lockedDecisions.push('Dosya yükleme yok');
268
+ }
269
+ }
270
+ }
271
+ // Brief'ten çıkar — açıkça bahsedilmeyen yasaklar
272
+ const lower = rawInput.toLowerCase();
273
+ if (!lower.includes('frontend') && !lower.includes('react') && !lower.includes('vue') && !lower.includes('next')) {
274
+ const frontendDecision = analysis.autoDecisions.find(d => d.key === 'frontend');
275
+ if (frontendDecision?.value === 'api-only') {
276
+ if (!forbiddenDeps.includes('react')) {
277
+ forbiddenDeps.push('react', 'vue', 'svelte');
278
+ }
279
+ }
280
+ }
281
+ return {
282
+ protectedFiles,
283
+ lockedDecisions,
284
+ forbiddenDeps: [...new Set(forbiddenDeps)],
285
+ breakingChanges,
286
+ };
287
+ }
288
+ /**
289
+ * ADIM 5: Özet oluştur (onay için)
290
+ */
291
+ buildSummary(decisions, antiScope, criteria) {
292
+ const lines = [];
293
+ lines.push('╔══════════════════════════════════════════════╗');
294
+ lines.push('║ Plan Özeti ║');
295
+ lines.push('╚══════════════════════════════════════════════╝');
296
+ lines.push('');
297
+ // Yapılacaklar
298
+ const decisionLabels = {
299
+ auth: { jwt: '🔐 JWT Auth', session: '🔐 Session Auth', oauth: '🔐 OAuth', 'api-key': '🔑 API Key', none: '' },
300
+ database: { postgresql: '🗄️ PostgreSQL', mongodb: '🗄️ MongoDB', sqlite: '🗄️ SQLite', 'in-memory': '🗄️ In-memory' },
301
+ apiStyle: { rest: '🌐 REST API', graphql: '🌐 GraphQL', trpc: '🌐 tRPC' },
302
+ frontend: { react: '🖥️ React', vue: '🖥️ Vue', nextjs: '🖥️ Next.js', 'api-only': '' },
303
+ deployment: { local: '📦 Local', docker: '🐳 Docker', cloud: '☁️ Cloud' },
304
+ };
305
+ for (const [key, value] of Object.entries(decisions)) {
306
+ if (key === 'extras')
307
+ continue;
308
+ const label = decisionLabels[key]?.[value];
309
+ if (label) {
310
+ lines.push(` ✅ ${label}`);
311
+ }
312
+ }
313
+ // Yapılmayacaklar
314
+ if (decisions.auth === 'none')
315
+ lines.push(' ❌ Auth yok');
316
+ if (decisions.frontend === 'api-only')
317
+ lines.push(' ❌ Frontend yok');
318
+ for (const locked of antiScope.lockedDecisions) {
319
+ if (!locked.includes('yok'))
320
+ continue;
321
+ lines.push(` ❌ ${locked}`);
322
+ }
323
+ lines.push('');
324
+ lines.push('📋 Başarı Kriterleri:');
325
+ for (const c of criteria) {
326
+ lines.push(` • ${c}`);
327
+ }
328
+ return lines.join('\n');
329
+ }
330
+ /**
331
+ * Tam akış: 5 adım birden — interaktif veya programmatic
332
+ */
333
+ async run(askFn) {
334
+ const fn = this._askFn ?? askFn;
335
+ // ADIM 1: Brief al
336
+ const rawInput = await this.askBrief(fn);
337
+ // ADIM 2: Analiz et
338
+ const analysis = this.analyzeBrief(rawInput);
339
+ // ADIM 3: Belirsiz soruları sor
340
+ const answers = await this.askClarifications(analysis.uncertainQuestions, fn);
341
+ // ADIM 4: Kararları ve anti-scope'u oluştur
342
+ const decisions = this.buildDecisions(analysis, answers);
343
+ const antiScope = this.buildAntiScope(rawInput, analysis, answers);
344
+ const stack = detectStack(rawInput);
345
+ const scope = {
346
+ whatToBuild: rawInput,
347
+ stack,
348
+ successCriteria: analysis.inferredCriteria,
349
+ };
350
+ // ADIM 5: Özet oluştur (caller loglayabilir)
351
+ this.buildSummary(decisions, antiScope, analysis.inferredCriteria);
352
+ return {
353
+ rawInput,
354
+ analysis,
355
+ clarifications: answers,
356
+ decisions,
357
+ scope,
358
+ antiScope,
359
+ collectedAt: new Date().toISOString(),
360
+ };
361
+ }
362
+ /**
363
+ * Programmatic — test / CI için (soru sormadan analiz + karar)
364
+ */
365
+ runNonInteractive(rawInput, answers = []) {
366
+ const analysis = this.analyzeBrief(rawInput);
367
+ // Cevap verilmeyen sorular için default
368
+ const allAnswers = analysis.uncertainQuestions.map(q => {
369
+ const given = answers.find(a => a.questionId === q.id);
370
+ return given ?? { questionId: q.id, answer: q.defaultAnswer };
371
+ });
372
+ const decisions = this.buildDecisions(analysis, allAnswers);
373
+ const antiScope = this.buildAntiScope(rawInput, analysis, allAnswers);
374
+ const stack = detectStack(rawInput);
375
+ return {
376
+ rawInput,
377
+ analysis,
378
+ clarifications: allAnswers,
379
+ decisions,
380
+ scope: {
381
+ whatToBuild: rawInput,
382
+ stack,
383
+ successCriteria: analysis.inferredCriteria,
384
+ },
385
+ antiScope,
386
+ collectedAt: new Date().toISOString(),
387
+ };
388
+ }
389
+ // ── Private ─────────────────────────────────────────────
390
+ /** Analysis'ten ArchitectureDecisions oluştur */
391
+ buildDecisions(analysis, _answers) {
392
+ const decisions = {};
393
+ for (const d of analysis.autoDecisions) {
394
+ decisions[d.key] = d.value;
395
+ }
396
+ // Cevaplardan override (api-scope sorusu frontend kararını etkiler)
397
+ for (const a of _answers) {
398
+ const ansLower = a.answer.toLowerCase();
399
+ if (a.questionId === 'api-scope') {
400
+ if (ansLower.includes('full-stack') || ansLower.includes('full stack')) {
401
+ decisions['frontend'] = 'react';
402
+ }
403
+ else if (ansLower.includes('basit frontend')) {
404
+ decisions['frontend'] = 'react';
405
+ }
406
+ }
407
+ }
408
+ return {
409
+ auth: (decisions['auth'] ?? 'none'),
410
+ database: (decisions['database'] ?? 'sqlite'),
411
+ apiStyle: (decisions['apiStyle'] ?? 'rest'),
412
+ frontend: (decisions['frontend'] ?? 'api-only'),
413
+ deployment: (decisions['deployment'] ?? 'local'),
414
+ };
415
+ }
416
+ /** Brief'ten başarı kriterlerini çıkar */
417
+ inferCriteria(rawInput, autoDecisions) {
418
+ const criteria = [];
419
+ // Her zaman
420
+ criteria.push('npm test geçmeli');
421
+ criteria.push('TypeScript strict, 0 error');
422
+ // Brief'teki fiilleri kriter yap
423
+ const actionPhrases = rawInput.match(/([^,.]+(?:olsun|çalışsın|yapılsın|redirect|kısalt|kayıt|login|giriş|listele|sil|ekle|göster)(?:[^,.]*)?)/gi);
424
+ if (actionPhrases) {
425
+ for (const phrase of actionPhrases.slice(0, 5)) {
426
+ const clean = phrase.trim();
427
+ if (clean.length > 5 && clean.length < 100) {
428
+ criteria.push(clean);
429
+ }
430
+ }
431
+ }
432
+ // Teknik kararlardan çıkar
433
+ const authDecision = autoDecisions.find(d => d.key === 'auth');
434
+ if (authDecision && authDecision.value !== 'none') {
435
+ criteria.push('Auth endpoint çalışmalı');
436
+ }
437
+ return [...new Set(criteria)];
438
+ }
439
+ }
440
+ //# sourceMappingURL=smart-brief.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smart-brief.js","sourceRoot":"","sources":["../../src/brief/smart-brief.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare class Calculator {
2
+ add(a: number, b: number): number;
3
+ subtract(a: number, b: number): number;
4
+ multiply(a: number, b: number): number;
5
+ divide(a: number, b: number): number;
6
+ }
7
+ //# sourceMappingURL=calculator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/calculator/calculator.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACrB,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIjC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAItC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAItC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;CAMrC"}
@@ -0,0 +1,18 @@
1
+ export class Calculator {
2
+ add(a, b) {
3
+ return a + b;
4
+ }
5
+ subtract(a, b) {
6
+ return a - b;
7
+ }
8
+ multiply(a, b) {
9
+ return a * b;
10
+ }
11
+ divide(a, b) {
12
+ if (b === 0) {
13
+ throw new Error('Division by zero');
14
+ }
15
+ return a / b;
16
+ }
17
+ }
18
+ //# sourceMappingURL=calculator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/calculator/calculator.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACrB,GAAG,CAAC,CAAS,EAAE,CAAS;QACtB,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,CAAS,EAAE,CAAS;QAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ export { Calculator } from './calculator.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/calculator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { Calculator } from './calculator.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/calculator/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * English locale strings
3
+ */
4
+ import type { LocaleStrings } from './types.js';
5
+ export declare const en: LocaleStrings;
6
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,eAAO,MAAM,EAAE,EAAE,aAkJhB,CAAC"}