@barissozen/csns 0.7.4 → 0.7.6

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/README.md CHANGED
@@ -1,64 +1,93 @@
1
- # Project Consciousness
1
+ # CSNS
2
2
 
3
- > Just say what you want. It handles the rest.
3
+ > **C**ode-aware **S**elf-correcting **N**ever-forgetting **S**ystem
4
4
 
5
- AI agents that don't ask you "which framework?" or "JWT or session?" — you describe what you need, the system makes the technical decisions itself.
5
+ Just say what you want. It handles the rest.
6
+ Or point it at existing code — it reverse-engineers, audits, and scores your architecture.
6
7
 
7
- **Multi-model** · **Multi-language** · **Memory-first** · **Self-correcting**
8
+ **Multi-model** · **Multi-language** · **Memory-first** · **Self-correcting** · **Codebase auditor**
9
+
10
+ ```bash
11
+ npm install -g @barissozen/csns
12
+ csns
13
+ ```
8
14
 
9
15
  ---
10
16
 
11
- ## Demo
17
+ ## What It Does
12
18
 
13
19
  ```
14
- $ pc init
15
-
16
- 📋 What do you want to build?
17
- > I want a URL shortener with user registration, redirect on click,
18
- links never expire
19
-
20
- 🔍 Analyzing...
21
- JWT Auth (registration detected)
22
- SQLite (lightweight, sufficient)
23
- ✅ REST API
24
- ✅ TypeScript + Node.js
25
-
26
- A few product questions:
27
-
28
- Are shortened links public or login-only?
29
- 1. Public
30
- 2. Login only
31
- 3. Both (configurable)
32
- > 1
33
-
34
- Can users see each other's links?
35
- 1. Yes, everyone sees all
36
- 2. No, only their own
37
- 3. Optional sharing
38
- > 2
39
-
40
- ╔══════════════════════════════════════════════╗
41
- ║ Plan Summary ║
42
- ╚══════════════════════════════════════════════╝
43
-
44
- ✅ JWT Auth No frontend (API only)
45
- ✅ SQLite ❌ No payment system
46
- REST API
47
-
48
- $ pc run
49
-
50
- 🚀 Orchestration starting...
51
- 📦 Milestone M01: Foundation — DB schema, config
52
- 📦 Milestone M02: Authregister, login, JWT
53
- 📦 Milestone M03: URL Shortener — CRUD, redirect
54
- 🤖 Agent working: M01...
55
- M01 completed (tsc ✅, test ✅)
56
- 🤖 Agent working: M02...
57
- ✅ M02 completed (tsc ✅, test ✅, endpoint ✅)
58
- 🤖 Agent working: M03...
59
- M03 completed (tsc ✅, test ✅, endpoint ✅)
60
-
61
- ✅ Project complete — 3/3 milestones successful
20
+ csns> /new "URL shortener with auth" → builds it from scratch
21
+ csns> /audit → reverse-engineers & scores existing code
22
+ csns> /trace → 4-layer deep analysis
23
+ csns> /health → checks LLM + agent + memory status
24
+ ```
25
+
26
+ **Two modes:**
27
+ 1. **Build** describe what you want, CSNS makes technical decisions, writes code, tests it, audits the result
28
+ 2. **Audit** — point it at any TypeScript project, it classifies layers, traces data flows, checks architectural decisions, scores health 0–100
29
+
30
+ ---
31
+
32
+ ## Demo: Build
33
+
34
+ ```
35
+ $ csns
36
+
37
+ ╔══════════════════════════════════════════════╗
38
+ CSNS v0.7.5 ║
39
+ ║ Code-aware Self-correcting ║
40
+ Never-forgetting System ║
41
+ ╚══════════════════════════════════════════════╝
42
+
43
+ Type /help for commands, /quit to exit.
44
+
45
+ csns> /new
46
+ 📋 What do you want to build?
47
+ > URL shortener with user registration
48
+
49
+ 🔍 Analyzing...
50
+ ✅ JWT Auth · SQLite · ✅ REST API · ✅ TypeScript
51
+
52
+ 🚀 Starting orchestration...
53
+ 📦 M01: Foundation → ✅ (tsc ✅, test ✅)
54
+ 📦 M02: Auth → ✅ (tsc ✅, test ✅, endpoint ✅)
55
+ 📦 M03: Shortener → ✅ (tsc ✅, test ✅, endpoint ✅)
56
+
57
+ 🔍 Post-build audit...
58
+ 💯 Health: 94/1002 minor violations, auto-fixing...
59
+ Re-audit: 100/100
60
+
61
+ csns> /quit
62
+ 👋 Bye.
63
+ ```
64
+
65
+ ## Demo: Audit
66
+
67
+ ```
68
+ csns> /audit
69
+ 🔍 Running reverse engineering audit...
70
+
71
+ ═══════════════════════════════════════════
72
+ 📋 AUDIT REPORT
73
+ ═══════════════════════════════════════════
74
+
75
+ 🏗️ Layer Distribution:
76
+ controller 42 service 37 middleware 17
77
+ repository 239 config 16 schema 10
78
+
79
+ 🔀 Data Flows: 5/68 complete
80
+
81
+ ⚠️ Violations: 43 (43 acknowledged, 0 real)
82
+ ✅ 19x GraphQL resolver-first pattern
83
+ ✅ 30x Inline resolver logic — accepted convention
84
+
85
+ 🧩 Patterns:
86
+ GraphQL Federation · GraphQL Resolvers · Event-Driven
87
+ Circuit Breaker · Service Layer · Middleware Chain
88
+
89
+ 💯 Health Score: 96/100
90
+ ═══════════════════════════════════════════
62
91
  ```
63
92
 
64
93
  ---
@@ -66,11 +95,8 @@ $ pc run
66
95
  ## Install
67
96
 
68
97
  ```bash
69
- npx project-consciousness init # try instantly
70
- # or
71
- npm install -g project-consciousness
72
- pc init
73
- pc run
98
+ npm install -g @barissozen/csns
99
+ csns
74
100
  ```
75
101
 
76
102
  **Requirements:** Node.js 20+, at least one LLM provider
@@ -86,8 +112,6 @@ export OLLAMA_HOST=http://localhost:11434 # Local (Llama, Mistral, etc.)
86
112
 
87
113
  ## Multi-Model Support
88
114
 
89
- Use any LLM provider — switch with a single env variable:
90
-
91
115
  | Provider | Env Variable | Models |
92
116
  |----------|-------------|--------|
93
117
  | **Anthropic** (default) | `ANTHROPIC_API_KEY` | Claude Sonnet, Opus, Haiku |
@@ -96,177 +120,151 @@ Use any LLM provider — switch with a single env variable:
96
120
  | **OpenAI-compatible** | `OPENAI_API_KEY` + `LLM_BASE_URL` | Groq, Together, Azure, etc. |
97
121
 
98
122
  ```bash
99
- # Auto-detect: whichever key exists is used
100
- export ANTHROPIC_API_KEY=sk-ant-...
101
- pc run "Build a todo API"
123
+ # Auto-detect from env
124
+ csns
102
125
 
103
126
  # Explicit override
104
- LLM_PROVIDER=openai OPENAI_API_KEY=sk-... pc run "Build a todo API"
127
+ LLM_PROVIDER=openai OPENAI_API_KEY=sk-... csns
105
128
 
106
- # Local Ollama (no API key needed)
107
- LLM_PROVIDER=ollama pc run "Build a todo API"
129
+ # Local no API key needed
130
+ LLM_PROVIDER=ollama csns
108
131
  ```
109
132
 
110
- ### Programmatic
133
+ ---
111
134
 
112
- ```typescript
113
- import { createProvider } from 'project-consciousness/llm';
135
+ ## CLI Commands
114
136
 
115
- // Auto-detect from env
116
- const provider = createProvider();
137
+ ### Interactive (REPL)
117
138
 
118
- // Or explicit
119
- const claude = createProvider({ provider: 'anthropic', apiKey: 'sk-ant-...' });
120
- const gpt = createProvider({ provider: 'openai', apiKey: 'sk-...', model: 'gpt-4o' });
121
- const local = createProvider({ provider: 'ollama', model: 'llama3' });
139
+ ```
140
+ csns → starts interactive prompt
141
+ csns> /new [brief] → build a new project
142
+ csns> /audit → reverse-engineer & audit codebase
143
+ csns> /trace → full 4-layer analysis
144
+ csns> /status → show STATE.md
145
+ csns> /log → show DECISIONS.md
146
+ csns> /health → check LLM + agent CLI + memory files
147
+ csns> /help → list commands
148
+ csns> /quit → exit
122
149
  ```
123
150
 
124
- ---
125
-
126
- ## Multi-Language (i18n)
127
-
128
- All user-facing messages, prompts, and agent personas support multiple languages:
151
+ ### Non-interactive (CI / scripts)
129
152
 
130
153
  ```bash
131
- PC_LOCALE=en pc run "Build a todo API" # English (default)
132
- PC_LOCALE=tr pc run "Todo API yap" # Türkçe
154
+ csns new "Build a todo API with auth"
155
+ csns audit
156
+ csns trace
157
+ csns status
158
+ csns health
133
159
  ```
134
160
 
135
- Currently supported: **English** (`en`), **Turkish** (`tr`). Adding a new locale is one file — see `src/i18n/`.
136
-
137
161
  ---
138
162
 
139
- ## Agent CLI Abstraction
140
-
141
- The orchestrator spawns coding agents via CLI. Default is Claude Code, but any compatible CLI works:
163
+ ## Audit Engine
142
164
 
143
- ```bash
144
- AGENT_BINARY=claude pc run "..." # Claude Code (default)
145
- AGENT_BINARY=codex pc run "..." # OpenAI Codex CLI
146
- AGENT_BINARY=aider pc run "..." # Aider
147
- ```
165
+ The `/audit` command reverse-engineers any TypeScript project:
148
166
 
149
- The agent receives a prompt via stdin and returns structured output. Any CLI that accepts `--print` mode or stdin prompts can be plugged in.
167
+ ### 4 Layers
150
168
 
151
- ---
169
+ | Layer | What | How |
170
+ |-------|------|-----|
171
+ | **Static** | Import/export graph, dead exports, circular deps, phantom deps | Regex scan of all `.ts` files |
172
+ | **Semantic** | "This service should be injected but isn't" | LLM reasoning over graph + file summaries |
173
+ | **Runtime** | Server started, HTTP probed, handler chain traced | Express middleware + HTTP probing |
174
+ | **Audit** | Architecture recovery, decision archaeology, pattern detection | Layer classification + cross-reference |
152
175
 
153
- ## How It Works
176
+ ### What It Finds
154
177
 
155
- ### The 4-File Memory System
178
+ | Finding | Example |
179
+ |---------|---------|
180
+ | **Layer skip** | Controller → Repository (skipping service layer) |
181
+ | **Wrong direction** | Service imports controller (upward dependency) |
182
+ | **Dead export** | `unusedHelper()` exported but never imported |
183
+ | **Circular dep** | `logger → config → logger` |
184
+ | **Phantom dep** | `winston` imported but not in `package.json` |
185
+ | **Decision contradiction** | ARCHITECTURE says JWT but code uses session |
186
+ | **Pattern inconsistency** | 7 routes use service layer, 52 don't |
156
187
 
157
- Everything runs on 4 markdown files. Agents read them before every task and never forget why they exist.
188
+ ### Smart Acknowledgement
158
189
 
159
- | File | What It Contains | Owned By |
160
- |------|-----------------|----------|
161
- | `MISSION.md` | What to build, what NOT to build, success criteria | You (immutable) |
162
- | `ARCHITECTURE.md` | Technical decisions — auth, DB, API style | System (auto) |
163
- | `DECISIONS.md` | Every decision, why it was made, when | Log (append-only) |
164
- | `STATE.md` | Current phase, what's done, what's left | Live status |
165
-
166
- ### Architecture
190
+ CSNS distinguishes **design decisions** from **real bugs**:
167
191
 
168
192
  ```
169
- You: "I want a URL shortener..."
170
-
171
-
172
- ┌─────────────────────────────────┐
173
- │ SmartBrief │
174
- 1 question → analysis → │
175
- │ product questions only │
176
- │ → MISSION.md + ARCHITECTURE.md │
177
- └──────────┬──────────────────────┘
178
-
179
- ┌─────────────────────────────────┐
180
- │ Orchestrator │
181
- │ Plan → Milestone → Agent → Test │
182
- │ Failed? → 3x retry → ask you │
183
- └──────────┬──────────────────────┘
184
-
185
- ┌─────────────────────────────────┐
186
- │ Memory Layer │
187
- │ Every decision → DECISIONS.md │
188
- │ Every step → STATE.md │
189
- │ Nothing is lost │
190
- └─────────────────────────────────┘
193
+ Violation found
194
+
195
+ ├── GraphQL resolver → DB direct? → ✅ Acknowledged (resolver-first pattern)
196
+ ├── Written in ARCHITECTURE.md? → ✅ Acknowledged (explicit decision)
197
+ ├── >80% routes follow same way? → ✅ Acknowledged (project convention)
198
+
199
+ └── None of the above? → ⚠️ Real issue — counts against health
191
200
  ```
192
201
 
193
- ### What It Asks vs. What It Decides
194
-
195
- | Asks you ✅ | Decides itself ❌ |
196
- |---|---|
197
- | "Are links public or private?" | JWT or session? |
198
- | "Can users see each other's data?" | Which database? |
199
- | "Will there be payments?" | REST or GraphQL? |
200
- | "Do links expire?" | File structure? |
201
-
202
- Technical decisions are inferred from your brief. Only **product decisions** — things you need to know — are asked.
203
-
204
- ### Quality Control Pipeline
205
-
206
- After code is written, it's verified:
207
-
208
- 1. **Type checking** — `tsc --noEmit`
209
- 2. **Test execution** — `vitest run` / `pytest` / `go test`
210
- 3. **HTTP endpoint testing** — server started, real HTTP requests sent
211
- 4. **Anti-scope enforcement** — protected files touched? forbidden deps added?
202
+ ### Tested On Real Projects
212
203
 
213
- Failed? 3x auto-retry with feedback → still failing? → escalation to you.
214
-
215
- ### Tracer Agent — Data Flow Inspector
204
+ ```
205
+ Project Files Violations Health
206
+ ──────────────────────────────────────────────────────────
207
+ Cayman Data 37 0 (0 ack, 0 real) 100.0 💯
208
+ Yieldex 84 1 (0 ack, 1 real) 98.3
209
+ Wallet SDK 26 1 (0 ack, 1 real) 97.8
210
+ Cayman-Hashlock 530 43 (43 ack, 0 real) 96.0
211
+ CSNS (self) 72 6 (2 ack, 4 real) 93.0
212
+ Cayman Mobile 32 5 (0 ack, 5 real) 89.4
213
+ ```
216
214
 
217
- A specialized agent that "walks" through the project, tracking data flow and finding wiring problems:
215
+ ### Programmatic
218
216
 
219
217
  ```typescript
220
- import { TracerAgent } from 'project-consciousness/agent';
218
+ import { ReverseEngineer } from '@barissozen/csns/agent';
221
219
 
222
- const tracer = new TracerAgent({
223
- projectRoot: process.cwd(),
224
- llmProvider: provider, // any LLMProvider
225
- port: 3000,
226
- });
220
+ const auditor = new ReverseEngineer('/path/to/project');
221
+ const report = await auditor.audit();
227
222
 
228
- const report = await tracer.run();
229
- // report.staticIssues → dead exports, circular deps, phantom deps
230
- // report.semanticInsights LLM-detected injection gaps, config mismatches
231
- // report.runtimeTraces → HTTP probe results, handler chains, data flow
223
+ report.classifications // file layer mapping
224
+ report.dataFlows // end-to-end request chains
225
+ report.violations // architectural issues (acknowledged vs real)
226
+ report.decisionAudit // DECISIONS.md cross-check
227
+ report.patterns // detected design patterns
228
+ report.summary.healthScore // 0–100
232
229
  ```
233
230
 
234
- **3-layer analysis:**
235
-
236
- | Layer | What | How |
237
- |-------|------|-----|
238
- | **Static** | Import/export graph, dead code, circular deps, phantom deps | Regex scan of all `.ts` files |
239
- | **Semantic** | "This service should be injected but isn't" | LLM reasoning over graph + file summaries |
240
- | **Runtime** | Server started, HTTP probed, handler chain traced | Express middleware injection + HTTP probing |
241
-
242
231
  ---
243
232
 
244
- ## CLI Commands
245
-
246
- | Command | What It Does |
247
- |---------|-------------|
248
- | `pc init` | Collect brief → create 4 memory files |
249
- | `pc run` | Start the orchestrator |
250
- | `pc run "Build a todo API"` | Start with inline brief |
251
- | `pc status` | Show STATE.md |
252
- | `pc log` | Show DECISIONS.md |
253
- | `pc help` | Help |
233
+ ## Build Engine
254
234
 
255
- ---
235
+ ### The 4-File Memory System
256
236
 
257
- ## Traceability
237
+ | File | What | Who |
238
+ |------|------|-----|
239
+ | `MISSION.md` | What to build, what NOT to build, success criteria | You (immutable) |
240
+ | `ARCHITECTURE.md` | Technical decisions — auth, DB, API style | System (auto) |
241
+ | `DECISIONS.md` | Every decision + rationale (append-only) | Log |
242
+ | `STATE.md` | Current phase, what's done, what's left | Live |
258
243
 
259
- Everything is logged, nothing is deleted:
244
+ ### Build Audit Fix Loop
260
245
 
261
- ```markdown
262
- ## D024 Codebase Context: Pre-Task File Reading
263
- - **Date**: 2026-03-24T02:30:00+03:00
264
- - **Decision**: CodebaseReader scans src/, selects relevant files per task
265
- - **Rationale**: Agent must know existing code, otherwise writes duplicates
266
- - **Status**: active
246
+ ```
247
+ /new "Build a todo API"
248
+
249
+
250
+ SmartBrief Scaffold Orchestrator Agents write code
251
+ │ │
252
+ │ tsc ✅ test ✅
253
+ │ │
254
+ ▼ ▼
255
+ MISSION.md Audit Gate (automatic)
256
+ ARCHITECTURE.md Health < 70? → Fix tasks
257
+ DECISIONS.md Re-audit → ✅ Done
258
+ STATE.md
267
259
  ```
268
260
 
269
- 6 months later: "why did we do it this way?" → `DECISIONS.md`.
261
+ ### What It Asks vs. What It Decides
262
+
263
+ | Asks you ✅ | Decides itself ❌ |
264
+ |---|---|
265
+ | "Are links public or private?" | JWT or session? |
266
+ | "Can users see each other's data?" | Which database? |
267
+ | "Will there be payments?" | REST or GraphQL? |
270
268
 
271
269
  ---
272
270
 
@@ -279,84 +277,76 @@ Everything is logged, nothing is deleted:
279
277
  | `ANTHROPIC_API_KEY` | Anthropic API key | — |
280
278
  | `OPENAI_API_KEY` | OpenAI API key | — |
281
279
  | `OLLAMA_HOST` | Ollama server URL | `http://localhost:11434` |
282
- | `LLM_PROVIDER` | Force provider: `anthropic`, `openai`, `ollama` | auto-detect |
280
+ | `LLM_PROVIDER` | Force: `anthropic` / `openai` / `ollama` | auto-detect |
283
281
  | `LLM_MODEL` | Model name | provider default |
284
- | `LLM_BASE_URL` | Custom API base URL (OpenAI-compatible) | — |
282
+ | `LLM_BASE_URL` | Custom API base URL | — |
285
283
  | `AGENT_BINARY` | Coding agent CLI binary | `claude` |
286
- | `PC_LOCALE` | Language: `en`, `tr` | `en` |
284
+ | `CSNS_LOCALE` | Language: `en` / `tr` | `en` |
287
285
 
288
286
  ### Programmatic
289
287
 
290
288
  ```typescript
291
- import { Orchestrator } from 'project-consciousness/orchestrator';
289
+ import { Orchestrator } from '@barissozen/csns/orchestrator';
290
+ import { createProvider } from '@barissozen/csns/llm';
291
+ import { TracerAgent } from '@barissozen/csns/agent';
292
292
 
293
+ // Build
293
294
  const orchestrator = new Orchestrator({
294
295
  projectRoot: process.cwd(),
295
296
  llmProvider: 'openai',
296
297
  llmApiKey: 'sk-...',
297
- llmModel: 'gpt-4o',
298
- agentBinary: 'claude',
299
298
  locale: 'en',
300
299
  maxRetries: 3,
301
- escalationThreshold: 0.4,
302
- maxParallelAgents: 3,
303
300
  verbose: true,
304
301
  });
302
+ await orchestrator.run('Build a REST API for todos');
305
303
 
306
- const session = await orchestrator.run('Build a REST API for todos');
304
+ // Audit
305
+ const tracer = new TracerAgent({
306
+ projectRoot: '/path/to/project',
307
+ llmProvider: createProvider(),
308
+ });
309
+ const report = await tracer.run();
307
310
  ```
308
311
 
309
312
  ---
310
313
 
311
- ## Developer Notes
312
-
313
- ### Project Structure
314
+ ## Project Structure
314
315
 
315
316
  ```
316
317
  src/
318
+ ├── bin/ CLI — csns (interactive REPL + non-interactive)
317
319
  ├── brief/ SmartBrief + BriefCollector
318
320
  ├── agent/ Agent Runner, Context Builder, Codebase Reader
319
- │ └── tracer/ Tracer Agent (static + semantic + runtime analysis)
320
- ├── orchestrator/ Planner, Evaluator, Escalator, Integration Evaluator
321
+ │ └── tracer/ Static Analyzer, Semantic Analyzer, Runtime Tracer,
322
+ │ Reverse Engineer (audit engine)
323
+ ├── orchestrator/ Planner, Evaluator, Escalator, Scaffold, Audit Gate
321
324
  ├── memory/ 4-file read/write layer
322
- ├── llm/ LLM provider abstraction (Anthropic, OpenAI, Ollama)
325
+ ├── llm/ Provider abstraction (Anthropic, OpenAI, Ollama)
323
326
  ├── i18n/ Internationalization (en, tr)
324
- ├── types/ TypeScript interfaces
325
- └── bin/ CLI (pc init/run/status/log)
327
+ └── types/ TypeScript interfaces
326
328
  ```
327
329
 
328
- ### Test
330
+ ## Tests
329
331
 
330
332
  ```bash
331
- npm test # 229 tests, 19 suites
332
- npx vitest run tests/tracer-agent.test.ts # specific suite
333
- SKIP_E2E=1 npm test # skip real CLI tests
333
+ npm test # 229 tests, 19 suites
334
+ SKIP_E2E=1 npm test # skip real CLI tests
334
335
  ```
335
336
 
336
- TypeScript strict mode, 0 errors. Vitest for testing.
337
-
338
- ### Stack
339
-
340
- - **TypeScript + Node.js** — strict mode, ESM
341
- - **LLM Providers** — Anthropic SDK, OpenAI API, Ollama REST (pluggable)
342
- - **Agent Execution** — Claude Code CLI (configurable)
343
- - **Testing** — Vitest (229 tests)
344
- - **Storage** — File system (markdown, no DB)
345
-
346
- ### Design Principles
337
+ ## Design Principles
347
338
 
348
339
  1. **Memory-First** — Every decision leaves a trace in files
349
340
  2. **Fail-Safe** — When in doubt, ask the human
350
341
  3. **Append-Only** — DECISIONS.md is never edited
351
- 4. **Minimal** — File system is enough, no DB needed
352
- 5. **Human-Readable** — All state is markdown
353
- 6. **Provider-Agnostic** — Works with any LLM, any agent CLI
342
+ 4. **Provider-Agnostic** — Any LLM, any agent CLI
343
+ 5. **Acknowledged vs Real** — Design decisions bugs
354
344
 
355
- ### Contributing
345
+ ## Contributing
356
346
 
357
347
  1. Fork → branch → test → PR
358
348
  2. `npm test` must pass
359
- 3. `npx tsc --noEmit` must show 0 errors
349
+ 3. `npx tsc --noEmit` 0 errors
360
350
  4. Conventional commits (`feat:`, `fix:`, `docs:`)
361
351
 
362
352
  ## License
@@ -11,4 +11,5 @@ export { StaticAnalyzer } from './tracer/index.js';
11
11
  export { SemanticAnalyzer } from './tracer/index.js';
12
12
  export { RuntimeTracer } from './tracer/index.js';
13
13
  export { ReverseEngineer } from './tracer/index.js';
14
+ export { SecurityScanner } from './tracer/index.js';
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -9,4 +9,5 @@ export { StaticAnalyzer } from './tracer/index.js';
9
9
  export { SemanticAnalyzer } from './tracer/index.js';
10
10
  export { RuntimeTracer } from './tracer/index.js';
11
11
  export { ReverseEngineer } from './tracer/index.js';
12
+ export { SecurityScanner } from './tracer/index.js';
12
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -5,4 +5,6 @@ export { SemanticAnalyzer } from './semantic-analyzer.js';
5
5
  export { RuntimeTracer } from './runtime-tracer.js';
6
6
  export { ReverseEngineer } from './reverse-engineer.js';
7
7
  export type { AuditReport, FileClassification, DataFlowChain, ArchitectureViolation, DecisionAuditResult, ArchLayer, } from './reverse-engineer.js';
8
+ export { SecurityScanner } from './security-scanner.js';
9
+ export type { SecurityReport, SecurityFinding } from './security-scanner.js';
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EACV,WAAW,EACX,kBAAkB,EAClB,aAAa,EACb,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -3,4 +3,5 @@ export { StaticAnalyzer } from './static-analyzer.js';
3
3
  export { SemanticAnalyzer } from './semantic-analyzer.js';
4
4
  export { RuntimeTracer } from './runtime-tracer.js';
5
5
  export { ReverseEngineer } from './reverse-engineer.js';
6
+ export { SecurityScanner } from './security-scanner.js';
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/tracer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AASxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"reverse-engineer.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/reverse-engineer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reverse-engineer.d.ts","sourceRoot":"","sources":["../../../src/agent/tracer/reverse-engineer.ts"],"names":[],"mappings":"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"}