@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,389 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CSNS CLI — Code-aware Self-correcting Never-forgetting System
4
+ *
5
+ * Interactive command-based interface. Waits for user input.
6
+ *
7
+ * Commands:
8
+ * /new [brief] → Start a new project (SmartBrief → Orchestrator)
9
+ * /audit → Reverse-engineer & audit current codebase
10
+ * /trace → Run Tracer Agent (static + semantic + runtime + audit)
11
+ * /status → Show STATE.md
12
+ * /log → Show DECISIONS.md
13
+ * /health → Quick health check (LLM + agent CLI)
14
+ * /help → List commands
15
+ * /quit → Exit
16
+ *
17
+ * Non-interactive:
18
+ * csns new "Build a todo API"
19
+ * csns audit
20
+ * csns trace
21
+ * csns status
22
+ */
23
+ import { createInterface } from 'node:readline';
24
+ import { readFile } from 'node:fs/promises';
25
+ import { join } from 'node:path';
26
+ import { setLocale } from '../i18n/index.js';
27
+ import { createProvider } from '../llm/factory.js';
28
+ const VERSION = '0.6.0';
29
+ const PROJECT_ROOT = process.cwd();
30
+ // ── Config ────────────────────────────────────────────────
31
+ function buildConfig() {
32
+ const locale = (process.env['PC_LOCALE'] ?? process.env['CSNS_LOCALE'] ?? 'en');
33
+ setLocale(locale);
34
+ return {
35
+ projectRoot: PROJECT_ROOT,
36
+ llmApiKey: process.env['ANTHROPIC_API_KEY'] ?? process.env['OPENAI_API_KEY'] ?? '',
37
+ llmModel: process.env['LLM_MODEL'] ?? process.env['CLAUDE_MODEL'],
38
+ llmProvider: process.env['LLM_PROVIDER'] ?? undefined,
39
+ llmBaseUrl: process.env['LLM_BASE_URL'],
40
+ agentBinary: process.env['AGENT_BINARY'] ?? 'claude',
41
+ locale,
42
+ maxRetries: 3,
43
+ escalationThreshold: 0.4,
44
+ maxParallelAgents: 3,
45
+ verbose: true,
46
+ // backward compat
47
+ claudeApiKey: process.env['ANTHROPIC_API_KEY'] ?? '',
48
+ model: process.env['CLAUDE_MODEL'] ?? process.env['LLM_MODEL'],
49
+ };
50
+ }
51
+ function getProvider(config) {
52
+ try {
53
+ return createProvider({
54
+ provider: config.llmProvider ?? 'anthropic',
55
+ apiKey: config.llmApiKey ?? config.claudeApiKey,
56
+ model: config.llmModel ?? config.model,
57
+ baseUrl: config.llmBaseUrl,
58
+ });
59
+ }
60
+ catch {
61
+ return null;
62
+ }
63
+ }
64
+ // ── Command Handlers ──────────────────────────────────────
65
+ async function cmdNew(brief, config) {
66
+ if (!config.llmApiKey && !process.env['OLLAMA_HOST']) {
67
+ console.error(' ❌ LLM API key required. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, or OLLAMA_HOST');
68
+ return;
69
+ }
70
+ // If no brief given, collect interactively
71
+ let resolvedBrief = brief.trim();
72
+ if (!resolvedBrief) {
73
+ const { BriefCollector } = await import('../brief/index.js');
74
+ const collector = new BriefCollector();
75
+ const collected = await collector.collect();
76
+ const missionPath = join(PROJECT_ROOT, 'MISSION.md');
77
+ await collector.writeMission(collected, missionPath);
78
+ // Create other memory files
79
+ await ensureMemoryFiles(collected.scope.stack);
80
+ try {
81
+ resolvedBrief = await readFile(missionPath, 'utf-8');
82
+ }
83
+ catch {
84
+ console.error(' ❌ Failed to read MISSION.md after init');
85
+ return;
86
+ }
87
+ console.log('\n ✅ Project initialized — 4 memory files created');
88
+ console.log(' 📄 MISSION.md / ARCHITECTURE.md / DECISIONS.md / STATE.md\n');
89
+ }
90
+ // Run orchestrator
91
+ console.log(' 🚀 Starting orchestration...\n');
92
+ const { Orchestrator } = await import('../orchestrator/index.js');
93
+ const orchestrator = new Orchestrator(config);
94
+ const session = await orchestrator.run(resolvedBrief);
95
+ console.log(`\n ✅ Session: ${session.sessionId}`);
96
+ console.log(` 📊 Steps: ${session.steps.length}`);
97
+ console.log(` 📌 Phase: ${session.finalState?.phase ?? 'unknown'}`);
98
+ }
99
+ async function cmdAudit(config) {
100
+ console.log(' 🔍 Running reverse engineering audit...\n');
101
+ const { ReverseEngineer } = await import('../agent/tracer/reverse-engineer.js');
102
+ const { StaticAnalyzer } = await import('../agent/tracer/static-analyzer.js');
103
+ const provider = getProvider(config);
104
+ const analyzer = new StaticAnalyzer(PROJECT_ROOT);
105
+ const { imports, exports, edges } = await analyzer.buildGraph();
106
+ // Read memory files
107
+ const memoryFiles = await readMemoryFiles();
108
+ const auditor = new ReverseEngineer(PROJECT_ROOT, provider);
109
+ const report = await auditor.audit(imports, exports, edges, memoryFiles);
110
+ // Print report
111
+ console.log(' ═══════════════════════════════════════════');
112
+ console.log(' 📋 AUDIT REPORT');
113
+ console.log(' ═══════════════════════════════════════════\n');
114
+ // Layer distribution
115
+ console.log(' 🏗️ Layer Distribution:');
116
+ for (const [layer, count] of Object.entries(report.summary.layerDistribution)) {
117
+ if (count > 0)
118
+ console.log(` ${layer}: ${count} files`);
119
+ }
120
+ // Data flows
121
+ console.log(`\n 🔀 Data Flows: ${report.summary.completeFlows}/${report.summary.totalFlows} complete`);
122
+ for (const flow of report.dataFlows) {
123
+ const icon = flow.complete ? '✅' : '⚠️';
124
+ const chain = flow.steps.map(s => s.layer).join(' → ');
125
+ console.log(` ${icon} ${flow.trigger}: ${chain}`);
126
+ }
127
+ // Violations
128
+ if (report.violations.length > 0) {
129
+ console.log(`\n ⚠️ Violations: ${report.violations.length}`);
130
+ for (const v of report.violations) {
131
+ const icon = v.severity === 'critical' ? '🚨' : v.severity === 'warning' ? '⚠️' : 'ℹ️';
132
+ console.log(` ${icon} [${v.type}] ${v.description}`);
133
+ }
134
+ }
135
+ // Decision audit
136
+ if (report.decisionAudit.length > 0) {
137
+ console.log(`\n 📜 Decision Audit: ${report.summary.decisionsImplemented}/${report.summary.decisionsTotal} implemented`);
138
+ for (const d of report.decisionAudit) {
139
+ const icon = d.status === 'implemented' ? '✅' :
140
+ d.status === 'contradicted' ? '🚨' :
141
+ d.status === 'partially-implemented' ? '⚠️' : '❌';
142
+ console.log(` ${icon} ${d.decisionId}: ${d.title} → ${d.status}`);
143
+ }
144
+ }
145
+ // Patterns
146
+ if (report.patterns.length > 0) {
147
+ console.log(`\n 🧩 Patterns: ${report.patterns.map(p => p.name).join(', ')}`);
148
+ }
149
+ console.log(`\n 💯 Health Score: ${report.summary.healthScore}/100`);
150
+ console.log(' ═══════════════════════════════════════════\n');
151
+ }
152
+ async function cmdTrace(config) {
153
+ console.log(' 🔍 Running full trace (4 layers)...\n');
154
+ const { TracerAgent } = await import('../agent/tracer/tracer-agent.js');
155
+ const provider = getProvider(config);
156
+ const tracer = new TracerAgent({
157
+ projectRoot: PROJECT_ROOT,
158
+ llmProvider: provider,
159
+ port: parseInt(process.env['PORT'] ?? '3000', 10),
160
+ log: (msg) => console.log(` ${msg}`),
161
+ });
162
+ const report = await tracer.run();
163
+ console.log(`\n 📊 Total issues: ${report.summary.totalIssues}`);
164
+ console.log(` 🚨 Critical: ${report.summary.criticalCount}`);
165
+ console.log(` ⚠️ Warning: ${report.summary.warningCount}`);
166
+ }
167
+ async function cmdStatus() {
168
+ try {
169
+ const content = await readFile(join(PROJECT_ROOT, 'STATE.md'), 'utf-8');
170
+ console.log(`\n${content}`);
171
+ }
172
+ catch {
173
+ console.error(' ❌ STATE.md not found. Run /new first.');
174
+ }
175
+ }
176
+ async function cmdLog() {
177
+ try {
178
+ const content = await readFile(join(PROJECT_ROOT, 'DECISIONS.md'), 'utf-8');
179
+ console.log(`\n${content}`);
180
+ }
181
+ catch {
182
+ console.error(' ❌ DECISIONS.md not found. Run /new first.');
183
+ }
184
+ }
185
+ async function cmdHealth(config) {
186
+ console.log(' Checking...\n');
187
+ // LLM provider
188
+ const provider = getProvider(config);
189
+ if (provider) {
190
+ const health = await provider.healthCheck();
191
+ console.log(` 🧠 LLM (${provider.name}): ${health.ok ? '✅' : '❌'} ${health.detail}`);
192
+ }
193
+ else {
194
+ console.log(' 🧠 LLM: ❌ No provider configured');
195
+ }
196
+ // Agent CLI
197
+ const { ProcessSpawner } = await import('../agent/process-spawner.js');
198
+ const spawner = new ProcessSpawner(config.agentBinary ?? 'claude');
199
+ const agentHealth = await spawner.healthCheck();
200
+ console.log(` 🤖 Agent CLI (${config.agentBinary ?? 'claude'}): ${agentHealth.available ? '✅' : '❌'} ${agentHealth.version ?? agentHealth.error ?? ''}`);
201
+ // Memory files
202
+ const files = ['MISSION.md', 'ARCHITECTURE.md', 'DECISIONS.md', 'STATE.md'];
203
+ for (const f of files) {
204
+ try {
205
+ await readFile(join(PROJECT_ROOT, f), 'utf-8');
206
+ console.log(` 📄 ${f}: ✅`);
207
+ }
208
+ catch {
209
+ console.log(` 📄 ${f}: ❌ not found`);
210
+ }
211
+ }
212
+ console.log();
213
+ }
214
+ function printHelp() {
215
+ console.log(`
216
+ Commands:
217
+ /new [brief] Start a new project (interactive if no brief given)
218
+ /audit Reverse-engineer & audit current codebase
219
+ /trace Full 4-layer trace (static + semantic + runtime + audit)
220
+ /status Show STATE.md
221
+ /log Show DECISIONS.md
222
+ /health Check LLM, agent CLI, and memory files
223
+ /help This message
224
+ /quit Exit
225
+
226
+ Environment:
227
+ ANTHROPIC_API_KEY / OPENAI_API_KEY / OLLAMA_HOST LLM provider
228
+ LLM_PROVIDER Force: anthropic | openai | ollama
229
+ LLM_MODEL Model name
230
+ AGENT_BINARY Coding agent CLI (default: claude)
231
+ CSNS_LOCALE Language: en | tr (default: en)
232
+ `);
233
+ }
234
+ function printBanner() {
235
+ console.log(`
236
+ ╔══════════════════════════════════════════════╗
237
+ ║ CSNS v${VERSION} ║
238
+ ║ Code-aware Self-correcting ║
239
+ ║ Never-forgetting System ║
240
+ ╚══════════════════════════════════════════════╝
241
+
242
+ Type /help for commands, /quit to exit.
243
+ `);
244
+ }
245
+ // ── Interactive REPL ──────────────────────────────────────
246
+ async function repl(config) {
247
+ printBanner();
248
+ const rl = createInterface({
249
+ input: process.stdin,
250
+ output: process.stdout,
251
+ prompt: ' csns> ',
252
+ });
253
+ rl.prompt();
254
+ rl.on('line', async (line) => {
255
+ const input = line.trim();
256
+ if (!input) {
257
+ rl.prompt();
258
+ return;
259
+ }
260
+ try {
261
+ if (input.startsWith('/new')) {
262
+ await cmdNew(input.slice(4).trim(), config);
263
+ }
264
+ else if (input === '/audit') {
265
+ await cmdAudit(config);
266
+ }
267
+ else if (input === '/trace') {
268
+ await cmdTrace(config);
269
+ }
270
+ else if (input === '/status') {
271
+ await cmdStatus();
272
+ }
273
+ else if (input === '/log') {
274
+ await cmdLog();
275
+ }
276
+ else if (input === '/health') {
277
+ await cmdHealth(config);
278
+ }
279
+ else if (input === '/help' || input === '/?') {
280
+ printHelp();
281
+ }
282
+ else if (input === '/quit' || input === '/exit' || input === '/q') {
283
+ console.log('\n 👋 Bye.\n');
284
+ process.exit(0);
285
+ }
286
+ else if (input.startsWith('/')) {
287
+ console.log(` ❓ Unknown command: ${input.split(' ')[0]}. Type /help for commands.\n`);
288
+ }
289
+ else {
290
+ // Bare text → treat as /new with inline brief
291
+ console.log(' 💡 Tip: use /new to start a project, /audit to analyze existing code.\n');
292
+ }
293
+ }
294
+ catch (error) {
295
+ const msg = error instanceof Error ? error.message : 'Unknown error';
296
+ console.error(` 💥 Error: ${msg}\n`);
297
+ }
298
+ rl.prompt();
299
+ });
300
+ rl.on('close', () => {
301
+ console.log('\n 👋 Bye.\n');
302
+ process.exit(0);
303
+ });
304
+ }
305
+ // ── Non-interactive Mode ──────────────────────────────────
306
+ async function nonInteractive(command, args, config) {
307
+ switch (command) {
308
+ case 'new':
309
+ await cmdNew(args, config);
310
+ break;
311
+ case 'audit':
312
+ await cmdAudit(config);
313
+ break;
314
+ case 'trace':
315
+ await cmdTrace(config);
316
+ break;
317
+ case 'status':
318
+ await cmdStatus();
319
+ break;
320
+ case 'log':
321
+ await cmdLog();
322
+ break;
323
+ case 'health':
324
+ await cmdHealth(config);
325
+ break;
326
+ case 'version':
327
+ case '--version':
328
+ case '-v':
329
+ console.log(`csns v${VERSION}`);
330
+ break;
331
+ case 'help':
332
+ case '--help':
333
+ case '-h':
334
+ printBanner();
335
+ printHelp();
336
+ break;
337
+ default:
338
+ console.error(` ❓ Unknown command: ${command}. Run 'csns help' for usage.`);
339
+ process.exit(1);
340
+ }
341
+ }
342
+ // ── Helpers ───────────────────────────────────────────────
343
+ async function readMemoryFiles() {
344
+ const read = async (name) => {
345
+ try {
346
+ return await readFile(join(PROJECT_ROOT, name), 'utf-8');
347
+ }
348
+ catch {
349
+ return undefined;
350
+ }
351
+ };
352
+ return {
353
+ mission: await read('MISSION.md'),
354
+ architecture: await read('ARCHITECTURE.md'),
355
+ decisions: await read('DECISIONS.md'),
356
+ };
357
+ }
358
+ async function ensureMemoryFiles(stack) {
359
+ const { writeFile: wf } = await import('node:fs/promises');
360
+ const ensure = async (name, content) => {
361
+ try {
362
+ await readFile(join(PROJECT_ROOT, name), 'utf-8');
363
+ }
364
+ catch {
365
+ await wf(join(PROJECT_ROOT, name), content, 'utf-8');
366
+ }
367
+ };
368
+ await ensure('ARCHITECTURE.md', `# ARCHITECTURE\n\n## Stack\n${stack ?? 'Not specified'}\n`);
369
+ await ensure('DECISIONS.md', `# DECISIONS\n\n> Append-only log. Decisions are never deleted.\n`);
370
+ await ensure('STATE.md', `# STATE\n\n## Current Phase: \`initialization\`\n\n## Iteration: 0\n\n## Active Tasks\n_none_\n\n## Completed Tasks\n_none yet_\n\n## Blocked\n_none_\n\n## Last Updated: ${new Date().toISOString()}\n`);
371
+ }
372
+ // ── Main ──────────────────────────────────────────────────
373
+ async function main() {
374
+ const config = buildConfig();
375
+ const [command, ...rest] = process.argv.slice(2);
376
+ if (command) {
377
+ // Non-interactive: csns new "Build a todo API"
378
+ await nonInteractive(command, rest.join(' '), config);
379
+ }
380
+ else {
381
+ // Interactive REPL
382
+ await repl(config);
383
+ }
384
+ }
385
+ main().catch((error) => {
386
+ console.error('💥 Fatal:', error);
387
+ process.exit(1);
388
+ });
389
+ //# sourceMappingURL=csns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csns.js","sourceRoot":"","sources":["../../src/bin/csns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Project Consciousness CLI
4
+ *
5
+ * Komutlar:
6
+ * pc init → BriefCollector çalışır, MISSION.md oluşur
7
+ * pc run → Orchestrator başlar
8
+ * pc status → STATE.md gösterir
9
+ * pc log → DECISIONS.md gösterir
10
+ * pc version → Versiyon bilgisi
11
+ */
12
+ export {};
13
+ //# sourceMappingURL=pc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pc.d.ts","sourceRoot":"","sources":["../../src/bin/pc.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
package/dist/bin/pc.js ADDED
@@ -0,0 +1,212 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Project Consciousness CLI
4
+ *
5
+ * Komutlar:
6
+ * pc init → BriefCollector çalışır, MISSION.md oluşur
7
+ * pc run → Orchestrator başlar
8
+ * pc status → STATE.md gösterir
9
+ * pc log → DECISIONS.md gösterir
10
+ * pc version → Versiyon bilgisi
11
+ */
12
+ import { readFile } from 'node:fs/promises';
13
+ import { join } from 'node:path';
14
+ import { BriefCollector } from '../brief/index.js';
15
+ import { Orchestrator } from '../orchestrator/index.js';
16
+ const PROJECT_ROOT = process.cwd();
17
+ const VERSION = '0.1.0';
18
+ // ── Command Router ──────────────────────────────────────
19
+ async function main() {
20
+ const [command, ...args] = process.argv.slice(2);
21
+ switch (command) {
22
+ case 'init':
23
+ await cmdInit();
24
+ break;
25
+ case 'run':
26
+ await cmdRun(args.join(' '));
27
+ break;
28
+ case 'status':
29
+ await cmdStatus();
30
+ break;
31
+ case 'log':
32
+ await cmdLog();
33
+ break;
34
+ case 'version':
35
+ case '--version':
36
+ case '-v':
37
+ console.log(`project-consciousness v${VERSION}`);
38
+ break;
39
+ case 'help':
40
+ case '--help':
41
+ case '-h':
42
+ case undefined:
43
+ printHelp();
44
+ break;
45
+ default:
46
+ // Komut yoksa, tüm args'ı brief olarak al → doğrudan run
47
+ await cmdRun([command, ...args].join(' '));
48
+ break;
49
+ }
50
+ }
51
+ // ── pc init ─────────────────────────────────────────────
52
+ async function cmdInit() {
53
+ console.log('╔══════════════════════════════════════════════╗');
54
+ console.log('║ PROJECT CONSCIOUSNESS — Init ║');
55
+ console.log('╚══════════════════════════════════════════════╝\n');
56
+ const collector = new BriefCollector();
57
+ const brief = await collector.collect();
58
+ const missionPath = join(PROJECT_ROOT, 'MISSION.md');
59
+ await collector.writeMission(brief, missionPath);
60
+ // Diğer hafıza dosyalarını oluştur (yoksa)
61
+ await ensureFile(join(PROJECT_ROOT, 'ARCHITECTURE.md'), `# ARCHITECTURE
62
+
63
+ > Bu dosya teknik mimari kararları içerir.
64
+
65
+ ## Stack
66
+ ${brief.scope.stack === 'typescript-node' ? 'TypeScript + Node.js' :
67
+ brief.scope.stack === 'react' ? 'React (TypeScript)' :
68
+ brief.scope.stack === 'python' ? 'Python' :
69
+ brief.scope.stack === 'go' ? 'Go' : brief.scope.stackDetails ?? 'Belirtilmemiş'}
70
+
71
+ ## Tasarım İlkeleri
72
+ 1. Memory-First — her karar hafızada iz bırakır
73
+ 2. Fail-Safe — şüphe durumunda insana sor
74
+ 3. Append-Only Log — DECISIONS.md asla düzenlenmez
75
+ `);
76
+ await ensureFile(join(PROJECT_ROOT, 'DECISIONS.md'), `# DECISIONS
77
+
78
+ > Append-only log. Kararlar asla silinmez, sadece superseded olabilir.
79
+ `);
80
+ await ensureFile(join(PROJECT_ROOT, 'STATE.md'), `# STATE
81
+
82
+ ## Current Phase: \`initialization\`
83
+
84
+ ## Iteration: 0
85
+
86
+ ## Active Tasks
87
+ _yok_
88
+
89
+ ## Completed Tasks
90
+ _henüz yok_
91
+
92
+ ## Blocked
93
+ _henüz yok_
94
+
95
+ ## Last Updated: ${new Date().toISOString()}
96
+ `);
97
+ console.log('\n✅ Proje başlatıldı!');
98
+ console.log(' MISSION.md ← brief yazıldı');
99
+ console.log(' ARCHITECTURE.md ← oluşturuldu');
100
+ console.log(' DECISIONS.md ← oluşturuldu');
101
+ console.log(' STATE.md ← oluşturuldu');
102
+ console.log('\n🚀 Sonraki adım: pc run');
103
+ }
104
+ // ── pc run ──────────────────────────────────────────────
105
+ async function cmdRun(brief) {
106
+ const config = getConfig();
107
+ if (!config.claudeApiKey) {
108
+ console.error('❌ ANTHROPIC_API_KEY environment variable gerekli.');
109
+ console.error(' export ANTHROPIC_API_KEY=sk-ant-...');
110
+ process.exit(1);
111
+ }
112
+ // Brief: argument'tan veya MISSION.md'den
113
+ let resolvedBrief = brief;
114
+ if (!resolvedBrief) {
115
+ try {
116
+ const mission = await readFile(join(PROJECT_ROOT, 'MISSION.md'), 'utf-8');
117
+ resolvedBrief = mission;
118
+ console.log('📄 Brief: MISSION.md\'den okundu');
119
+ }
120
+ catch {
121
+ console.error('❌ Brief gerekli. Kullanım:');
122
+ console.error(' pc run "Brief metni"');
123
+ console.error(' veya önce: pc init');
124
+ process.exit(1);
125
+ }
126
+ }
127
+ console.log('╔══════════════════════════════════════════════╗');
128
+ console.log(`║ PROJECT CONSCIOUSNESS v${VERSION} ║`);
129
+ console.log('║ Multi-Agent Orchestration with Memory ║');
130
+ console.log('╚══════════════════════════════════════════════╝\n');
131
+ const orchestrator = new Orchestrator(config);
132
+ const session = await orchestrator.run(resolvedBrief);
133
+ console.log('\n═══════════════════════════════════════════════');
134
+ console.log(`✅ Session: ${session.sessionId}`);
135
+ console.log(`📊 Adımlar: ${session.steps.length}`);
136
+ console.log(`📌 Durum: ${session.finalState?.phase ?? 'unknown'}`);
137
+ console.log('═══════════════════════════════════════════════');
138
+ }
139
+ // ── pc status ───────────────────────────────────────────
140
+ async function cmdStatus() {
141
+ try {
142
+ const content = await readFile(join(PROJECT_ROOT, 'STATE.md'), 'utf-8');
143
+ console.log(content);
144
+ }
145
+ catch {
146
+ console.error('❌ STATE.md bulunamadı. Önce: pc init');
147
+ process.exit(1);
148
+ }
149
+ }
150
+ // ── pc log ──────────────────────────────────────────────
151
+ async function cmdLog() {
152
+ try {
153
+ const content = await readFile(join(PROJECT_ROOT, 'DECISIONS.md'), 'utf-8');
154
+ console.log(content);
155
+ }
156
+ catch {
157
+ console.error('❌ DECISIONS.md bulunamadı. Önce: pc init');
158
+ process.exit(1);
159
+ }
160
+ }
161
+ // ── Help ────────────────────────────────────────────────
162
+ function printHelp() {
163
+ console.log(`
164
+ project-consciousness v${VERSION}
165
+ Multi-agent orchestration with persistent memory
166
+
167
+ KULLANIM:
168
+ pc init Proje başlat (interaktif brief toplama)
169
+ pc run [brief] Orchestrator'ı çalıştır
170
+ pc status STATE.md göster
171
+ pc log DECISIONS.md göster
172
+ pc version Versiyon bilgisi
173
+ pc help Bu mesaj
174
+
175
+ ÖRNEKLER:
176
+ pc init
177
+ pc run "Build a TODO API with express"
178
+ pc run # MISSION.md'den brief okur
179
+ pc status
180
+
181
+ ENVIRONMENT:
182
+ ANTHROPIC_API_KEY Claude API key (zorunlu: pc run için)
183
+ CLAUDE_MODEL Model adı (varsayılan: claude-sonnet-4-20250514)
184
+ `);
185
+ }
186
+ // ── Helpers ─────────────────────────────────────────────
187
+ function getConfig() {
188
+ return {
189
+ projectRoot: PROJECT_ROOT,
190
+ claudeApiKey: process.env['ANTHROPIC_API_KEY'] ?? '',
191
+ model: process.env['CLAUDE_MODEL'] ?? 'claude-sonnet-4-20250514',
192
+ maxRetries: 3,
193
+ escalationThreshold: 0.4,
194
+ maxParallelAgents: 3,
195
+ verbose: true,
196
+ };
197
+ }
198
+ async function ensureFile(path, content) {
199
+ try {
200
+ await readFile(path, 'utf-8');
201
+ // Dosya var, dokunma
202
+ }
203
+ catch {
204
+ const { writeFile } = await import('node:fs/promises');
205
+ await writeFile(path, content, 'utf-8');
206
+ }
207
+ }
208
+ main().catch((error) => {
209
+ console.error('💥 Fatal:', error);
210
+ process.exit(1);
211
+ });
212
+ //# sourceMappingURL=pc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pc.js","sourceRoot":"","sources":["../../src/bin/pc.ts"],"names":[],"mappings":"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"}