@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.
- package/.env.example +8 -0
- package/LICENSE +21 -0
- package/README.md +364 -0
- package/dist/agent/agent-runner.d.ts +48 -0
- package/dist/agent/agent-runner.d.ts.map +1 -0
- package/dist/agent/agent-runner.js +180 -0
- package/dist/agent/agent-runner.js.map +1 -0
- package/dist/agent/architect.d.ts +34 -0
- package/dist/agent/architect.d.ts.map +1 -0
- package/dist/agent/architect.js +156 -0
- package/dist/agent/architect.js.map +1 -0
- package/dist/agent/codebase-reader.d.ts +35 -0
- package/dist/agent/codebase-reader.d.ts.map +1 -0
- package/dist/agent/codebase-reader.js +305 -0
- package/dist/agent/codebase-reader.js.map +1 -0
- package/dist/agent/context-builder.d.ts +39 -0
- package/dist/agent/context-builder.d.ts.map +1 -0
- package/dist/agent/context-builder.js +163 -0
- package/dist/agent/context-builder.js.map +1 -0
- package/dist/agent/index.d.ts +14 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +12 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/output-parser.d.ts +27 -0
- package/dist/agent/output-parser.d.ts.map +1 -0
- package/dist/agent/output-parser.js +154 -0
- package/dist/agent/output-parser.js.map +1 -0
- package/dist/agent/process-spawner.d.ts +56 -0
- package/dist/agent/process-spawner.d.ts.map +1 -0
- package/dist/agent/process-spawner.js +153 -0
- package/dist/agent/process-spawner.js.map +1 -0
- package/dist/agent/tracer/index.d.ts +8 -0
- package/dist/agent/tracer/index.d.ts.map +1 -0
- package/dist/agent/tracer/index.js +6 -0
- package/dist/agent/tracer/index.js.map +1 -0
- package/dist/agent/tracer/reverse-engineer.d.ts +113 -0
- package/dist/agent/tracer/reverse-engineer.d.ts.map +1 -0
- package/dist/agent/tracer/reverse-engineer.js +695 -0
- package/dist/agent/tracer/reverse-engineer.js.map +1 -0
- package/dist/agent/tracer/runtime-tracer.d.ts +61 -0
- package/dist/agent/tracer/runtime-tracer.d.ts.map +1 -0
- package/dist/agent/tracer/runtime-tracer.js +484 -0
- package/dist/agent/tracer/runtime-tracer.js.map +1 -0
- package/dist/agent/tracer/semantic-analyzer.d.ts +24 -0
- package/dist/agent/tracer/semantic-analyzer.d.ts.map +1 -0
- package/dist/agent/tracer/semantic-analyzer.js +132 -0
- package/dist/agent/tracer/semantic-analyzer.js.map +1 -0
- package/dist/agent/tracer/static-analyzer.d.ts +44 -0
- package/dist/agent/tracer/static-analyzer.d.ts.map +1 -0
- package/dist/agent/tracer/static-analyzer.js +453 -0
- package/dist/agent/tracer/static-analyzer.js.map +1 -0
- package/dist/agent/tracer/tracer-agent.d.ts +61 -0
- package/dist/agent/tracer/tracer-agent.d.ts.map +1 -0
- package/dist/agent/tracer/tracer-agent.js +252 -0
- package/dist/agent/tracer/tracer-agent.js.map +1 -0
- package/dist/bin/csns.d.ts +24 -0
- package/dist/bin/csns.d.ts.map +1 -0
- package/dist/bin/csns.js +389 -0
- package/dist/bin/csns.js.map +1 -0
- package/dist/bin/pc.d.ts +13 -0
- package/dist/bin/pc.d.ts.map +1 -0
- package/dist/bin/pc.js +212 -0
- package/dist/bin/pc.js.map +1 -0
- package/dist/brief/brief-collector.d.ts +42 -0
- package/dist/brief/brief-collector.d.ts.map +1 -0
- package/dist/brief/brief-collector.js +228 -0
- package/dist/brief/brief-collector.js.map +1 -0
- package/dist/brief/index.d.ts +3 -0
- package/dist/brief/index.d.ts.map +1 -0
- package/dist/brief/index.js +3 -0
- package/dist/brief/index.js.map +1 -0
- package/dist/brief/smart-brief.d.ts +52 -0
- package/dist/brief/smart-brief.d.ts.map +1 -0
- package/dist/brief/smart-brief.js +440 -0
- package/dist/brief/smart-brief.js.map +1 -0
- package/dist/calculator/calculator.d.ts +7 -0
- package/dist/calculator/calculator.d.ts.map +1 -0
- package/dist/calculator/calculator.js +18 -0
- package/dist/calculator/calculator.js.map +1 -0
- package/dist/calculator/index.d.ts +2 -0
- package/dist/calculator/index.d.ts.map +1 -0
- package/dist/calculator/index.js +2 -0
- package/dist/calculator/index.js.map +1 -0
- package/dist/i18n/en.d.ts +6 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/en.js +136 -0
- package/dist/i18n/en.js.map +1 -0
- package/dist/i18n/index.d.ts +31 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +44 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/tr.d.ts +6 -0
- package/dist/i18n/tr.d.ts.map +1 -0
- package/dist/i18n/tr.js +136 -0
- package/dist/i18n/tr.js.map +1 -0
- package/dist/i18n/types.d.ts +86 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/types.js +9 -0
- package/dist/i18n/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +72 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/anthropic-provider.d.ts +18 -0
- package/dist/llm/anthropic-provider.d.ts.map +1 -0
- package/dist/llm/anthropic-provider.js +55 -0
- package/dist/llm/anthropic-provider.js.map +1 -0
- package/dist/llm/factory.d.ts +21 -0
- package/dist/llm/factory.d.ts.map +1 -0
- package/dist/llm/factory.js +59 -0
- package/dist/llm/factory.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +5 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/ollama-provider.d.ts +20 -0
- package/dist/llm/ollama-provider.d.ts.map +1 -0
- package/dist/llm/ollama-provider.js +62 -0
- package/dist/llm/ollama-provider.js.map +1 -0
- package/dist/llm/openai-provider.d.ts +20 -0
- package/dist/llm/openai-provider.d.ts.map +1 -0
- package/dist/llm/openai-provider.js +65 -0
- package/dist/llm/openai-provider.js.map +1 -0
- package/dist/llm/resolve.d.ts +10 -0
- package/dist/llm/resolve.d.ts.map +1 -0
- package/dist/llm/resolve.js +21 -0
- package/dist/llm/resolve.js.map +1 -0
- package/dist/llm/types.d.ts +45 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +11 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/memory/index.d.ts +2 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +2 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/memory-layer.d.ts +54 -0
- package/dist/memory/memory-layer.d.ts.map +1 -0
- package/dist/memory/memory-layer.js +297 -0
- package/dist/memory/memory-layer.js.map +1 -0
- package/dist/orchestrator/dependency-graph.d.ts +39 -0
- package/dist/orchestrator/dependency-graph.d.ts.map +1 -0
- package/dist/orchestrator/dependency-graph.js +134 -0
- package/dist/orchestrator/dependency-graph.js.map +1 -0
- package/dist/orchestrator/escalator.d.ts +42 -0
- package/dist/orchestrator/escalator.d.ts.map +1 -0
- package/dist/orchestrator/escalator.js +163 -0
- package/dist/orchestrator/escalator.js.map +1 -0
- package/dist/orchestrator/evaluator.d.ts +34 -0
- package/dist/orchestrator/evaluator.d.ts.map +1 -0
- package/dist/orchestrator/evaluator.js +335 -0
- package/dist/orchestrator/evaluator.js.map +1 -0
- package/dist/orchestrator/index.d.ts +9 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +9 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/integration-evaluator.d.ts +59 -0
- package/dist/orchestrator/integration-evaluator.d.ts.map +1 -0
- package/dist/orchestrator/integration-evaluator.js +405 -0
- package/dist/orchestrator/integration-evaluator.js.map +1 -0
- package/dist/orchestrator/milestone-manager.d.ts +28 -0
- package/dist/orchestrator/milestone-manager.d.ts.map +1 -0
- package/dist/orchestrator/milestone-manager.js +208 -0
- package/dist/orchestrator/milestone-manager.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +35 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +338 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/planner.d.ts +15 -0
- package/dist/orchestrator/planner.d.ts.map +1 -0
- package/dist/orchestrator/planner.js +87 -0
- package/dist/orchestrator/planner.js.map +1 -0
- package/dist/orchestrator/recovery.d.ts +45 -0
- package/dist/orchestrator/recovery.d.ts.map +1 -0
- package/dist/orchestrator/recovery.js +98 -0
- package/dist/orchestrator/recovery.js.map +1 -0
- package/dist/run-calculator-test.d.ts +11 -0
- package/dist/run-calculator-test.d.ts.map +1 -0
- package/dist/run-calculator-test.js +212 -0
- package/dist/run-calculator-test.js.map +1 -0
- package/dist/run-real-task.d.ts +14 -0
- package/dist/run-real-task.d.ts.map +1 -0
- package/dist/run-real-task.js +185 -0
- package/dist/run-real-task.js.map +1 -0
- package/dist/run-todo-test.d.ts +6 -0
- package/dist/run-todo-test.d.ts.map +1 -0
- package/dist/run-todo-test.js +149 -0
- package/dist/run-todo-test.js.map +1 -0
- package/dist/todo/index.d.ts +2 -0
- package/dist/todo/index.d.ts.map +1 -0
- package/dist/todo/index.js +2 -0
- package/dist/todo/index.js.map +1 -0
- package/dist/todo/server.d.ts +2 -0
- package/dist/todo/server.d.ts.map +1 -0
- package/dist/todo/server.js +32 -0
- package/dist/todo/server.js.map +1 -0
- package/dist/types/index.d.ts +412 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +100 -0
package/dist/bin/csns.js
ADDED
|
@@ -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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"}
|
package/dist/bin/pc.d.ts
ADDED
|
@@ -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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"}
|