@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reverse-engineer.js","sourceRoot":"","sources":["../../../src/agent/tracer/reverse-engineer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Tracer — Çalışma Zamanı Data Flow İzleme
|
|
3
|
+
*
|
|
4
|
+
* 1. Server başlat (npm run dev / node dist/index.js)
|
|
5
|
+
* 2. Test HTTP request'leri at
|
|
6
|
+
* 3. Request → response arasındaki handler zincirini izle
|
|
7
|
+
* 4. Data flow adımlarını kaydet
|
|
8
|
+
* 5. Gap'leri tespit et (middleware atlanmış, handler bağlanmamış, vs.)
|
|
9
|
+
*
|
|
10
|
+
* İzleme yöntemi:
|
|
11
|
+
* - Instrumented server: dinamik olarak require hook / loader inject
|
|
12
|
+
* - VEYA çıktı analizi: server loglarından flow çıkar
|
|
13
|
+
* - VEYA HTTP probe: request/response pattern'lerinden infer
|
|
14
|
+
*
|
|
15
|
+
* Bu implementasyon HTTP probe + log analizi kullanır (en az invasive).
|
|
16
|
+
*/
|
|
17
|
+
import type { RequestTrace, WiringIssue } from '../../types/index.js';
|
|
18
|
+
interface ProbeEndpoint {
|
|
19
|
+
method: string;
|
|
20
|
+
path: string;
|
|
21
|
+
body?: Record<string, unknown>;
|
|
22
|
+
headers?: Record<string, string>;
|
|
23
|
+
description: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class RuntimeTracer {
|
|
26
|
+
private projectRoot;
|
|
27
|
+
private port;
|
|
28
|
+
private serverProcess;
|
|
29
|
+
private serverLogs;
|
|
30
|
+
constructor(projectRoot: string, port?: number);
|
|
31
|
+
/**
|
|
32
|
+
* Server başlat, probe'la, trace topla, server'ı kapat
|
|
33
|
+
*/
|
|
34
|
+
trace(customEndpoints?: ProbeEndpoint[]): Promise<{
|
|
35
|
+
traces: RequestTrace[];
|
|
36
|
+
issues: WiringIssue[];
|
|
37
|
+
serverLog: string;
|
|
38
|
+
}>;
|
|
39
|
+
private startServer;
|
|
40
|
+
private stopServer;
|
|
41
|
+
private probeEndpoint;
|
|
42
|
+
private makeRequest;
|
|
43
|
+
private inferDataFlow;
|
|
44
|
+
private analyzeTrace;
|
|
45
|
+
private analyzeServerLogs;
|
|
46
|
+
private detectStartCommand;
|
|
47
|
+
private discoverEndpoints;
|
|
48
|
+
private checkPort;
|
|
49
|
+
private extractCallsFromLogs;
|
|
50
|
+
private extractHandlerChain;
|
|
51
|
+
private guessFileForPath;
|
|
52
|
+
private inferLayer;
|
|
53
|
+
/**
|
|
54
|
+
* Geçici bir trace middleware dosyası oluştur.
|
|
55
|
+
* Server başlatıldığında bu middleware her request'i loglar.
|
|
56
|
+
*/
|
|
57
|
+
private injectInstrumentation;
|
|
58
|
+
private removeInstrumentation;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=runtime-tracer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-tracer.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/runtime-tracer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAGV,YAAY,EAEZ,WAAW,EACZ,MAAM,sBAAsB,CAAC;AAiB9B,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,UAAU,CAAgB;gBAEtB,WAAW,EAAE,MAAM,EAAE,IAAI,SAAO;IAO5C;;OAEG;IACG,KAAK,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;QACtD,MAAM,EAAE,YAAY,EAAE,CAAC;QACvB,MAAM,EAAE,WAAW,EAAE,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;YA0DY,WAAW;YAiDX,UAAU;YAkBV,aAAa;IA+B3B,OAAO,CAAC,WAAW;IAoDnB,OAAO,CAAC,aAAa;IAyDrB,OAAO,CAAC,YAAY;IAgEpB,OAAO,CAAC,iBAAiB;YAkCX,kBAAkB;YAmBlB,iBAAiB;YAiBjB,SAAS;IAQvB,OAAO,CAAC,oBAAoB;IAsB5B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,UAAU;IAalB;;;OAGG;YACW,qBAAqB;YA2BrB,qBAAqB;CAOpC"}
|
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime Tracer — Çalışma Zamanı Data Flow İzleme
|
|
3
|
+
*
|
|
4
|
+
* 1. Server başlat (npm run dev / node dist/index.js)
|
|
5
|
+
* 2. Test HTTP request'leri at
|
|
6
|
+
* 3. Request → response arasındaki handler zincirini izle
|
|
7
|
+
* 4. Data flow adımlarını kaydet
|
|
8
|
+
* 5. Gap'leri tespit et (middleware atlanmış, handler bağlanmamış, vs.)
|
|
9
|
+
*
|
|
10
|
+
* İzleme yöntemi:
|
|
11
|
+
* - Instrumented server: dinamik olarak require hook / loader inject
|
|
12
|
+
* - VEYA çıktı analizi: server loglarından flow çıkar
|
|
13
|
+
* - VEYA HTTP probe: request/response pattern'lerinden infer
|
|
14
|
+
*
|
|
15
|
+
* Bu implementasyon HTTP probe + log analizi kullanır (en az invasive).
|
|
16
|
+
*/
|
|
17
|
+
import { spawn } from 'node:child_process';
|
|
18
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
19
|
+
import { join } from 'node:path';
|
|
20
|
+
import http from 'node:http';
|
|
21
|
+
/** Server başlatma timeout (ms) */
|
|
22
|
+
const SERVER_START_TIMEOUT = 15_000;
|
|
23
|
+
/** Her request timeout (ms) */
|
|
24
|
+
const REQUEST_TIMEOUT = 10_000;
|
|
25
|
+
/** Trace edilecek default endpoint'ler */
|
|
26
|
+
const PROBE_ENDPOINTS = [
|
|
27
|
+
{ method: 'GET', path: '/', description: 'Root / health check' },
|
|
28
|
+
{ method: 'GET', path: '/api', description: 'API root' },
|
|
29
|
+
{ method: 'GET', path: '/health', description: 'Health endpoint' },
|
|
30
|
+
{ method: 'GET', path: '/todos', description: 'List resource' },
|
|
31
|
+
{ method: 'GET', path: '/users', description: 'Users endpoint' },
|
|
32
|
+
{ method: 'POST', path: '/auth/register', body: { email: 'trace@test.com', password: 'Test123!', name: 'Tracer' }, description: 'Auth register' },
|
|
33
|
+
{ method: 'POST', path: '/auth/login', body: { email: 'trace@test.com', password: 'Test123!' }, description: 'Auth login' },
|
|
34
|
+
];
|
|
35
|
+
export class RuntimeTracer {
|
|
36
|
+
projectRoot;
|
|
37
|
+
port;
|
|
38
|
+
serverProcess = null;
|
|
39
|
+
serverLogs = [];
|
|
40
|
+
constructor(projectRoot, port = 3000) {
|
|
41
|
+
this.projectRoot = projectRoot;
|
|
42
|
+
this.port = port;
|
|
43
|
+
}
|
|
44
|
+
// ── Public API ─────────────────────────────────────────────
|
|
45
|
+
/**
|
|
46
|
+
* Server başlat, probe'la, trace topla, server'ı kapat
|
|
47
|
+
*/
|
|
48
|
+
async trace(customEndpoints) {
|
|
49
|
+
const endpoints = customEndpoints ?? await this.discoverEndpoints();
|
|
50
|
+
const traces = [];
|
|
51
|
+
const issues = [];
|
|
52
|
+
// 1. Instrumentation inject et (opsiyonel — Express middleware)
|
|
53
|
+
const instrumented = await this.injectInstrumentation();
|
|
54
|
+
// 2. Server başlat
|
|
55
|
+
const started = await this.startServer();
|
|
56
|
+
if (!started) {
|
|
57
|
+
issues.push({
|
|
58
|
+
type: 'runtime-gap',
|
|
59
|
+
severity: 'critical',
|
|
60
|
+
file: 'package.json',
|
|
61
|
+
detail: 'Server başlatılamadı — runtime trace yapılamıyor',
|
|
62
|
+
suggestion: 'npm run dev veya npm start komutunun çalıştığını doğrula',
|
|
63
|
+
});
|
|
64
|
+
return { traces, issues, serverLog: this.serverLogs.join('\n') };
|
|
65
|
+
}
|
|
66
|
+
// 3. Her endpoint'i probe et
|
|
67
|
+
for (const endpoint of endpoints) {
|
|
68
|
+
try {
|
|
69
|
+
const trace = await this.probeEndpoint(endpoint);
|
|
70
|
+
traces.push(trace);
|
|
71
|
+
// Gap analizi — bu trace'de sorun var mı?
|
|
72
|
+
const gapIssues = this.analyzeTrace(trace);
|
|
73
|
+
trace.gaps = gapIssues;
|
|
74
|
+
issues.push(...gapIssues);
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
const msg = error instanceof Error ? error.message : 'Unknown error';
|
|
78
|
+
issues.push({
|
|
79
|
+
type: 'runtime-gap',
|
|
80
|
+
severity: 'warning',
|
|
81
|
+
file: endpoint.path,
|
|
82
|
+
detail: `Endpoint probe başarısız: ${endpoint.method} ${endpoint.path} — ${msg}`,
|
|
83
|
+
suggestion: `Route tanımlı mı? Handler bağlı mı?`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// 4. Server loglarından ek flow bilgisi çıkar
|
|
88
|
+
const logInsights = this.analyzeServerLogs();
|
|
89
|
+
issues.push(...logInsights);
|
|
90
|
+
// 5. Server'ı kapat ve temizle
|
|
91
|
+
await this.stopServer();
|
|
92
|
+
if (instrumented) {
|
|
93
|
+
await this.removeInstrumentation();
|
|
94
|
+
}
|
|
95
|
+
return { traces, issues, serverLog: this.serverLogs.join('\n') };
|
|
96
|
+
}
|
|
97
|
+
// ── Server Management ──────────────────────────────────────
|
|
98
|
+
async startServer() {
|
|
99
|
+
// Hangi komutla başlatılacağını belirle
|
|
100
|
+
const startCommand = await this.detectStartCommand();
|
|
101
|
+
if (!startCommand)
|
|
102
|
+
return false;
|
|
103
|
+
return new Promise((resolve) => {
|
|
104
|
+
const [cmd, ...args] = startCommand.split(' ');
|
|
105
|
+
this.serverProcess = spawn(cmd, args, {
|
|
106
|
+
cwd: this.projectRoot,
|
|
107
|
+
env: { ...process.env, PORT: String(this.port), NODE_ENV: 'development' },
|
|
108
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
109
|
+
shell: process.platform === 'win32',
|
|
110
|
+
});
|
|
111
|
+
const timer = setTimeout(() => {
|
|
112
|
+
// Timeout — ama belki server yine de ayakta, port kontrol et
|
|
113
|
+
this.checkPort().then(resolve);
|
|
114
|
+
}, SERVER_START_TIMEOUT);
|
|
115
|
+
this.serverProcess.stdout?.on('data', (data) => {
|
|
116
|
+
const line = data.toString();
|
|
117
|
+
this.serverLogs.push(line);
|
|
118
|
+
// "listening on port" gibi pattern'ler
|
|
119
|
+
if (/listen|ready|started|running/i.test(line)) {
|
|
120
|
+
clearTimeout(timer);
|
|
121
|
+
// Kısa bekle, port açılsın
|
|
122
|
+
setTimeout(() => resolve(true), 500);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
this.serverProcess.stderr?.on('data', (data) => {
|
|
126
|
+
this.serverLogs.push(`[stderr] ${data.toString()}`);
|
|
127
|
+
});
|
|
128
|
+
this.serverProcess.on('error', () => {
|
|
129
|
+
clearTimeout(timer);
|
|
130
|
+
resolve(false);
|
|
131
|
+
});
|
|
132
|
+
this.serverProcess.on('close', (code) => {
|
|
133
|
+
if (code !== 0 && code !== null) {
|
|
134
|
+
clearTimeout(timer);
|
|
135
|
+
resolve(false);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
async stopServer() {
|
|
141
|
+
if (!this.serverProcess)
|
|
142
|
+
return;
|
|
143
|
+
this.serverProcess.kill('SIGTERM');
|
|
144
|
+
await new Promise((resolve) => {
|
|
145
|
+
const timer = setTimeout(() => {
|
|
146
|
+
this.serverProcess?.kill('SIGKILL');
|
|
147
|
+
resolve();
|
|
148
|
+
}, 5000);
|
|
149
|
+
this.serverProcess.on('close', () => {
|
|
150
|
+
clearTimeout(timer);
|
|
151
|
+
resolve();
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
this.serverProcess = null;
|
|
155
|
+
}
|
|
156
|
+
// ── Endpoint Probing ───────────────────────────────────────
|
|
157
|
+
async probeEndpoint(endpoint) {
|
|
158
|
+
const startTime = Date.now();
|
|
159
|
+
const traceId = `trace-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
160
|
+
// Özel trace header ekle — instrumented server bunu loglar
|
|
161
|
+
const headers = {
|
|
162
|
+
'X-Trace-Id': traceId,
|
|
163
|
+
'Content-Type': 'application/json',
|
|
164
|
+
...(endpoint.headers ?? {}),
|
|
165
|
+
};
|
|
166
|
+
const httpEvent = await this.makeRequest(endpoint.method, endpoint.path, endpoint.body, headers);
|
|
167
|
+
// Server loglarından bu request'in handler zincirini çıkar
|
|
168
|
+
const calls = this.extractCallsFromLogs(traceId, startTime);
|
|
169
|
+
const dataFlow = this.inferDataFlow(endpoint, httpEvent, calls);
|
|
170
|
+
return {
|
|
171
|
+
id: traceId,
|
|
172
|
+
httpEvent,
|
|
173
|
+
calls,
|
|
174
|
+
dataFlow,
|
|
175
|
+
gaps: [], // analyze sonra doldurulacak
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
makeRequest(method, path, body, headers) {
|
|
179
|
+
const start = Date.now();
|
|
180
|
+
return new Promise((resolve, reject) => {
|
|
181
|
+
const bodyStr = body ? JSON.stringify(body) : undefined;
|
|
182
|
+
const options = {
|
|
183
|
+
hostname: 'localhost',
|
|
184
|
+
port: this.port,
|
|
185
|
+
path,
|
|
186
|
+
method,
|
|
187
|
+
headers: {
|
|
188
|
+
...headers,
|
|
189
|
+
...(bodyStr ? { 'Content-Length': Buffer.byteLength(bodyStr) } : {}),
|
|
190
|
+
},
|
|
191
|
+
timeout: REQUEST_TIMEOUT,
|
|
192
|
+
};
|
|
193
|
+
const req = http.request(options, (res) => {
|
|
194
|
+
let data = '';
|
|
195
|
+
res.on('data', (chunk) => { data += chunk; });
|
|
196
|
+
res.on('end', () => {
|
|
197
|
+
resolve({
|
|
198
|
+
timestamp: start,
|
|
199
|
+
method,
|
|
200
|
+
path,
|
|
201
|
+
status: res.statusCode ?? 0,
|
|
202
|
+
requestBody: bodyStr?.slice(0, 500),
|
|
203
|
+
responseBody: data.slice(0, 1000),
|
|
204
|
+
duration: Date.now() - start,
|
|
205
|
+
handlerChain: this.extractHandlerChain(path),
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
req.on('error', (err) => reject(err));
|
|
210
|
+
req.on('timeout', () => {
|
|
211
|
+
req.destroy();
|
|
212
|
+
reject(new Error(`Request timeout: ${method} ${path}`));
|
|
213
|
+
});
|
|
214
|
+
if (bodyStr)
|
|
215
|
+
req.write(bodyStr);
|
|
216
|
+
req.end();
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
// ── Flow Analysis ──────────────────────────────────────────
|
|
220
|
+
inferDataFlow(endpoint, httpEvent, calls) {
|
|
221
|
+
const steps = [];
|
|
222
|
+
let order = 0;
|
|
223
|
+
// Adım 1: HTTP giriş (controller/route)
|
|
224
|
+
steps.push({
|
|
225
|
+
order: order++,
|
|
226
|
+
layer: 'controller',
|
|
227
|
+
file: this.guessFileForPath(endpoint.path),
|
|
228
|
+
function: `${endpoint.method} ${endpoint.path}`,
|
|
229
|
+
dataIn: endpoint.body ? `JSON(${Object.keys(endpoint.body).join(', ')})` : 'none',
|
|
230
|
+
dataOut: `status ${httpEvent.status}`,
|
|
231
|
+
});
|
|
232
|
+
// Adım 2: Middleware (auth, validation, vs.)
|
|
233
|
+
if (httpEvent.status === 401 || httpEvent.status === 403) {
|
|
234
|
+
steps.push({
|
|
235
|
+
order: order++,
|
|
236
|
+
layer: 'middleware',
|
|
237
|
+
file: 'middleware/auth',
|
|
238
|
+
function: 'authMiddleware',
|
|
239
|
+
dataIn: 'request headers',
|
|
240
|
+
dataOut: `${httpEvent.status} — auth rejected`,
|
|
241
|
+
transform: 'JWT/session verification',
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
// Adım 3: Runtime call'lardan flow çıkar
|
|
245
|
+
for (const call of calls) {
|
|
246
|
+
steps.push({
|
|
247
|
+
order: order++,
|
|
248
|
+
layer: this.inferLayer(call.file, call.function),
|
|
249
|
+
file: call.file,
|
|
250
|
+
function: call.function,
|
|
251
|
+
dataIn: call.args?.slice(0, 100),
|
|
252
|
+
dataOut: call.returnType,
|
|
253
|
+
transform: undefined,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
// Son adım: HTTP response
|
|
257
|
+
steps.push({
|
|
258
|
+
order: order++,
|
|
259
|
+
layer: 'controller',
|
|
260
|
+
file: this.guessFileForPath(endpoint.path),
|
|
261
|
+
function: 'response',
|
|
262
|
+
dataIn: 'service result',
|
|
263
|
+
dataOut: `HTTP ${httpEvent.status}, body: ${(httpEvent.responseBody ?? '').slice(0, 100)}`,
|
|
264
|
+
});
|
|
265
|
+
return steps;
|
|
266
|
+
}
|
|
267
|
+
analyzeTrace(trace) {
|
|
268
|
+
const issues = [];
|
|
269
|
+
// 404 → route tanımlı değil
|
|
270
|
+
if (trace.httpEvent.status === 404) {
|
|
271
|
+
issues.push({
|
|
272
|
+
type: 'runtime-gap',
|
|
273
|
+
severity: 'warning',
|
|
274
|
+
file: trace.httpEvent.path,
|
|
275
|
+
detail: `Route bulunamadı: ${trace.httpEvent.method} ${trace.httpEvent.path} → 404`,
|
|
276
|
+
suggestion: 'Route tanımını kontrol et, router middleware\'ini app\'e bağladığından emin ol',
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
// 500 → handler patlamış
|
|
280
|
+
if (trace.httpEvent.status >= 500) {
|
|
281
|
+
issues.push({
|
|
282
|
+
type: 'runtime-gap',
|
|
283
|
+
severity: 'critical',
|
|
284
|
+
file: trace.httpEvent.path,
|
|
285
|
+
detail: `Server error: ${trace.httpEvent.method} ${trace.httpEvent.path} → ${trace.httpEvent.status}`,
|
|
286
|
+
suggestion: 'Error handler ve handler fonksiyonunu kontrol et, server loglarını incele',
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
// Çok yavaş response (>5s) → muhtemelen beklenen service bağlanmamış
|
|
290
|
+
if (trace.httpEvent.duration > 5000) {
|
|
291
|
+
issues.push({
|
|
292
|
+
type: 'runtime-gap',
|
|
293
|
+
severity: 'warning',
|
|
294
|
+
file: trace.httpEvent.path,
|
|
295
|
+
detail: `Yavaş response: ${trace.httpEvent.method} ${trace.httpEvent.path} → ${trace.httpEvent.duration}ms`,
|
|
296
|
+
suggestion: 'DB bağlantısı, external service veya unresolved promise olabilir',
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
// Boş response body (beklenmedik)
|
|
300
|
+
if (trace.httpEvent.status === 200 && !trace.httpEvent.responseBody?.trim()) {
|
|
301
|
+
issues.push({
|
|
302
|
+
type: 'runtime-gap',
|
|
303
|
+
severity: 'info',
|
|
304
|
+
file: trace.httpEvent.path,
|
|
305
|
+
detail: `Boş response body: ${trace.httpEvent.method} ${trace.httpEvent.path}`,
|
|
306
|
+
suggestion: 'Handler response gönderiyor mu? res.json() veya res.send() çağrılmış mı?',
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
// Data flow gap: controller var ama service yok
|
|
310
|
+
const layers = new Set(trace.dataFlow.map(s => s.layer));
|
|
311
|
+
if (layers.has('controller') && !layers.has('service') && trace.httpEvent.status < 400) {
|
|
312
|
+
issues.push({
|
|
313
|
+
type: 'runtime-gap',
|
|
314
|
+
severity: 'info',
|
|
315
|
+
file: trace.httpEvent.path,
|
|
316
|
+
detail: `Controller direkt response dönüyor, service katmanı yok: ${trace.httpEvent.method} ${trace.httpEvent.path}`,
|
|
317
|
+
suggestion: 'Business logic\'i bir service\'e ayırmak ileride test edilebilirliği artırır',
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
return issues;
|
|
321
|
+
}
|
|
322
|
+
// ── Server Log Analysis ────────────────────────────────────
|
|
323
|
+
analyzeServerLogs() {
|
|
324
|
+
const issues = [];
|
|
325
|
+
const logText = this.serverLogs.join('\n').toLowerCase();
|
|
326
|
+
// Tipik hata pattern'leri
|
|
327
|
+
const errorPatterns = [
|
|
328
|
+
{ pattern: /cannot find module ['"]([^'"]+)['"]/i, detail: 'Module bulunamadı: $1', severity: 'critical' },
|
|
329
|
+
{ pattern: /is not a function/i, detail: 'Fonksiyon bulunamadı — yanlış import veya undefined inject', severity: 'critical' },
|
|
330
|
+
{ pattern: /is not defined/i, detail: 'Tanımsız değişken — wiring eksik olabilir', severity: 'critical' },
|
|
331
|
+
{ pattern: /eaddrinuse/i, detail: 'Port zaten kullanımda', severity: 'warning' },
|
|
332
|
+
{ pattern: /econnrefused/i, detail: 'Bağlantı reddedildi — external service ayakta mı?', severity: 'warning' },
|
|
333
|
+
{ pattern: /unhandled.*rejection/i, detail: 'Yakalanmamış async hata — promise chain kırık', severity: 'warning' },
|
|
334
|
+
{ pattern: /deprecat/i, detail: 'Deprecated API kullanımı tespit edildi', severity: 'info' },
|
|
335
|
+
];
|
|
336
|
+
for (const { pattern, detail, severity } of errorPatterns) {
|
|
337
|
+
const match = logText.match(pattern);
|
|
338
|
+
if (match) {
|
|
339
|
+
const resolvedDetail = detail.replace('$1', match[1] ?? '');
|
|
340
|
+
issues.push({
|
|
341
|
+
type: 'runtime-gap',
|
|
342
|
+
severity,
|
|
343
|
+
file: 'server-log',
|
|
344
|
+
detail: `[Runtime] ${resolvedDetail}`,
|
|
345
|
+
suggestion: 'Server loglarını incele ve ilgili modülün doğru bağlandığından emin ol',
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return issues;
|
|
350
|
+
}
|
|
351
|
+
// ── Helpers ────────────────────────────────────────────────
|
|
352
|
+
async detectStartCommand() {
|
|
353
|
+
try {
|
|
354
|
+
const pkg = JSON.parse(await readFile(join(this.projectRoot, 'package.json'), 'utf-8'));
|
|
355
|
+
const scripts = pkg.scripts ?? {};
|
|
356
|
+
// Öncelik: dev → start → custom
|
|
357
|
+
if (scripts.dev)
|
|
358
|
+
return `npm run dev`;
|
|
359
|
+
if (scripts.start)
|
|
360
|
+
return `npm start`;
|
|
361
|
+
if (scripts['serve'])
|
|
362
|
+
return `npm run serve`;
|
|
363
|
+
// Fallback: main field
|
|
364
|
+
if (pkg.main)
|
|
365
|
+
return `node ${pkg.main}`;
|
|
366
|
+
return null;
|
|
367
|
+
}
|
|
368
|
+
catch {
|
|
369
|
+
return null;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
async discoverEndpoints() {
|
|
373
|
+
// Route dosyalarından endpoint keşfi
|
|
374
|
+
const endpoints = [...PROBE_ENDPOINTS];
|
|
375
|
+
try {
|
|
376
|
+
const pkg = JSON.parse(await readFile(join(this.projectRoot, 'package.json'), 'utf-8'));
|
|
377
|
+
const hasExpress = !!(pkg.dependencies?.express || pkg.devDependencies?.express);
|
|
378
|
+
if (hasExpress) {
|
|
379
|
+
// Express projesi — src/routes/ veya src/api/ altında route dosyaları ara
|
|
380
|
+
// TODO: daha akıllı route discovery
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
catch { /* ignore */ }
|
|
384
|
+
return endpoints;
|
|
385
|
+
}
|
|
386
|
+
async checkPort() {
|
|
387
|
+
return new Promise((resolve) => {
|
|
388
|
+
const req = http.get(`http://localhost:${this.port}/`, () => resolve(true));
|
|
389
|
+
req.on('error', () => resolve(false));
|
|
390
|
+
req.setTimeout(2000, () => { req.destroy(); resolve(false); });
|
|
391
|
+
});
|
|
392
|
+
}
|
|
393
|
+
extractCallsFromLogs(traceId, startTime) {
|
|
394
|
+
const calls = [];
|
|
395
|
+
// X-Trace-Id header'ını loglayan instrumented middleware varsa
|
|
396
|
+
for (const log of this.serverLogs) {
|
|
397
|
+
if (log.includes(traceId)) {
|
|
398
|
+
// [trace-xxx] handler: functionName (file.ts) 10ms
|
|
399
|
+
const match = log.match(/\[.*\]\s*(\w+):\s*(\w+)\s*\(([^)]+)\)\s*(\d+)ms/);
|
|
400
|
+
if (match) {
|
|
401
|
+
calls.push({
|
|
402
|
+
timestamp: startTime,
|
|
403
|
+
file: match[3],
|
|
404
|
+
function: match[2],
|
|
405
|
+
duration: parseInt(match[4], 10),
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return calls;
|
|
411
|
+
}
|
|
412
|
+
extractHandlerChain(path) {
|
|
413
|
+
// Server loglarından bu path'e hangi handler'ların yanıt verdiğini çıkar
|
|
414
|
+
const chain = [];
|
|
415
|
+
for (const log of this.serverLogs) {
|
|
416
|
+
if (log.includes(path) && /handler|middleware|route/i.test(log)) {
|
|
417
|
+
const match = log.match(/(\w+(?:Handler|Middleware|Router))/);
|
|
418
|
+
if (match)
|
|
419
|
+
chain.push(match[1]);
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
return chain.length > 0 ? chain : ['unknown-handler'];
|
|
423
|
+
}
|
|
424
|
+
guessFileForPath(urlPath) {
|
|
425
|
+
// /auth/login → src/routes/auth.ts veya src/controllers/auth.ts
|
|
426
|
+
const segment = urlPath.split('/').filter(s => s.length > 0)[0] ?? 'index';
|
|
427
|
+
return `src/routes/${segment}.ts`;
|
|
428
|
+
}
|
|
429
|
+
inferLayer(file, fn) {
|
|
430
|
+
const lower = (file + fn).toLowerCase();
|
|
431
|
+
if (lower.includes('controller') || lower.includes('route') || lower.includes('handler'))
|
|
432
|
+
return 'controller';
|
|
433
|
+
if (lower.includes('middleware') || lower.includes('guard') || lower.includes('auth'))
|
|
434
|
+
return 'middleware';
|
|
435
|
+
if (lower.includes('service') || lower.includes('usecase'))
|
|
436
|
+
return 'service';
|
|
437
|
+
if (lower.includes('repo') || lower.includes('dal') || lower.includes('db'))
|
|
438
|
+
return 'repository';
|
|
439
|
+
if (lower.includes('model') || lower.includes('entity') || lower.includes('schema'))
|
|
440
|
+
return 'model';
|
|
441
|
+
if (lower.includes('util') || lower.includes('helper') || lower.includes('lib'))
|
|
442
|
+
return 'util';
|
|
443
|
+
return 'service';
|
|
444
|
+
}
|
|
445
|
+
// ── Instrumentation (Express middleware injection) ──────────
|
|
446
|
+
/**
|
|
447
|
+
* Geçici bir trace middleware dosyası oluştur.
|
|
448
|
+
* Server başlatıldığında bu middleware her request'i loglar.
|
|
449
|
+
*/
|
|
450
|
+
async injectInstrumentation() {
|
|
451
|
+
const instrumentPath = join(this.projectRoot, '__pc_trace_middleware.js');
|
|
452
|
+
const middleware = `
|
|
453
|
+
// Auto-generated by Project Consciousness Tracer — silmek güvenlidir
|
|
454
|
+
const TRACE_HEADER = 'x-trace-id';
|
|
455
|
+
module.exports = function pcTraceMiddleware(req, res, next) {
|
|
456
|
+
const traceId = req.headers[TRACE_HEADER] || 'no-trace';
|
|
457
|
+
const start = Date.now();
|
|
458
|
+
const originalEnd = res.end;
|
|
459
|
+
res.end = function(...args) {
|
|
460
|
+
const duration = Date.now() - start;
|
|
461
|
+
console.log('[' + traceId + '] ' + req.method + ' ' + req.path + ' → ' + res.statusCode + ' (' + duration + 'ms)');
|
|
462
|
+
return originalEnd.apply(this, args);
|
|
463
|
+
};
|
|
464
|
+
next();
|
|
465
|
+
};
|
|
466
|
+
`;
|
|
467
|
+
try {
|
|
468
|
+
await writeFile(instrumentPath, middleware, 'utf-8');
|
|
469
|
+
return true;
|
|
470
|
+
}
|
|
471
|
+
catch {
|
|
472
|
+
return false;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
async removeInstrumentation() {
|
|
476
|
+
const instrumentPath = join(this.projectRoot, '__pc_trace_middleware.js');
|
|
477
|
+
try {
|
|
478
|
+
const { rm } = await import('node:fs/promises');
|
|
479
|
+
await rm(instrumentPath, { force: true });
|
|
480
|
+
}
|
|
481
|
+
catch { /* sessizce geç */ }
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
//# sourceMappingURL=runtime-tracer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-tracer.js","sourceRoot":"","sources":["../../../src/agent/tracer/runtime-tracer.ts"],"names":[],"mappings":"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"}
|