Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
7ff9095
Add unit tests for various components and utilities
Feb 24, 2026
364b690
fix(arch-engine,stdio): N3 + N7 — stdio tool gap and arch_validate wo…
Feb 24, 2026
d5c2c1f
fix(builder,community,bm25): SX3 .js import resolution, SX5 community…
Feb 24, 2026
bc0b1fa
fix(health): SX8 drift false-positive — compare cachedNodes to indexa…
Feb 24, 2026
e452e4c
fix(test-tools): SX4 — use process.execPath + local vitest bin to avo…
Feb 24, 2026
995e0c2
fix(server): align tool schema and index registration
Feb 24, 2026
df5666d
fix(stdio): replace all console.log with console.error in runtime files
Feb 24, 2026
ea1d181
feat(audit): add comprehensive audit scripts for lxRAG-MCP
Feb 24, 2026
5b2c203
fix: outdated packages, fix minor bugs
Feb 25, 2026
14e4768
feat(coordination): introduce coordination engine with Cypher queries…
Feb 25, 2026
7d4f0ae
Merge pull request #1 from lexCoder2/test/refactor
lexCoder2 Feb 25, 2026
b54c06e
test: reorganize test files into __tests__ directories
Feb 25, 2026
8c51df8
refactor(tools): split registry into focused handler modules
Feb 25, 2026
13e375a
docs(code): standardize module headers across engines and graph
Feb 25, 2026
9b422c6
docs: add comment standard and consolidated project summaries
Feb 25, 2026
a44064f
Remove outdated lxRAG tool issues documentation, add new templates fo…
Feb 25, 2026
078bc4a
Merge pull request #2 from lexCoder2/test/refactor
lexCoder2 Feb 25, 2026
b7062cb
chore(tooling): add project configuration files
Feb 28, 2026
2279ab3
feat(logger): add structured JSON logger writing to stderr
Feb 28, 2026
e9652d4
feat(contract): add Zod-based tool schema validator
Feb 28, 2026
1941dd3
chore: remove dead code test harness files
Feb 28, 2026
e17c8e3
refactor: type hardening in server bootstrap and shared types
Feb 28, 2026
fd4ecc9
refactor(graph): type hardening across graph layer
Feb 28, 2026
0298c1c
refactor(engines): type hardening across engine layer
Feb 28, 2026
fda7f96
refactor(parsers/response/vector): type hardening in supporting layers
Feb 28, 2026
a9e6982
refactor(tools): type hardening across tool handler layer
Feb 28, 2026
00c241d
refactor(cli): type hardening in CLI commands
Feb 28, 2026
4587ed7
test(engines): add and expand engine unit tests
Feb 28, 2026
acdac5f
test(graph/parsers): add PPR and regex-language-parser tests
Feb 28, 2026
783070a
test(tools): add integration tests and update unit test suites
Feb 28, 2026
c05daa4
docs+scripts: add roadmap, audit report, integration test script
Feb 28, 2026
119d9d8
chore(coverage): update coverage reports and file-hash cache
Feb 28, 2026
fd60b9a
feat(graph): add workspace fingerprint for stale-graph detection
Feb 28, 2026
d0844ee
rebrand: lxRAG → lxDIG (Dynamic Intelligence Graph)
Feb 28, 2026
4a568f9
style: remove dash from brand name — lxDIG-MCP → lxDIG MCP in prose
Feb 28, 2026
f1171ee
Merge pull request #3 from lexCoder2/test/refactor
lexCoder2 Feb 28, 2026
fd10411
Test/refactor (#4)
lexCoder2 Feb 28, 2026
161a7ea
Test/refactor (#5)
lexCoder2 Feb 28, 2026
0309a54
refactor: streamline tsconfig.json creation in Dockerfile
Feb 28, 2026
565c1fe
feat: Introduce new tools for element resolution, embedding managemen…
Mar 1, 2026
31d3bac
fix: unused var error
Mar 1, 2026
6f7b14f
Add initial schema definition for lxDIG Graph v2
Mar 1, 2026
0c615e8
refactor: restructure GraphBuilder to return separate nodes and edges…
Mar 1, 2026
e0638ed
refactor: update copilot instructions and add detailed agent guide ge…
Mar 1, 2026
46184e4
feat: enhance embedding management and Qdrant synchronization
Mar 1, 2026
0f75eb7
chore: remove coverage from git history
Mar 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# EditorConfig: https://editorconfig.org
root = true

[*]
charset = utf-8
end_of_line = lf
indent_style = space
indent_size = 2
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

[*.json]
indent_size = 2

[*.{yml,yaml}]
indent_size = 2

[Makefile]
indent_style = tab
44 changes: 44 additions & 0 deletions .github/agents/code.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
name: Code
description: Expert TypeScript developer for lxDIG-MCP. Implements features, fixes bugs, and refactors code following the two-phase builder pattern.
tools: [edit, execute, read, search, vscode, todo]
model: Claude Sonnet 4.6 (copilot)
argument-hint: Describe what to implement, the bug to fix, or the refactor to perform
handoffs:
- label: Run tests
agent: test
prompt: Run the tests for the code I just changed and report any failures.
send: true
- label: Review changes
agent: review
prompt: Review the code changes I just made for correctness, patterns, and architecture compliance.
send: true
---

# Code Agent — lxDIG-MCP

Expert TypeScript developer for lxDIG-MCP. Implements features, fixes bugs, and refactors code.

## Rules

- Run `npx tsc --noEmit` after every code change
- Run `npx vitest run` after test changes — all 506 tests must pass
- Never modify Cypher query strings without explicit instruction
- Use `nodeStmts.push()` for node MERGEs, `edgeStmts.push()` for edges in builder.ts
- ESM imports in source use NO `.js` extension — the build script adds them
- Always use absolute paths for FILE node `path` property

## Key Files

- `src/graph/builder.ts` — translates parsed code → `BuildResult { nodes, edges }`
- `src/graph/orchestrator.ts` — parse → build → execute → index pipeline
- `src/graph/client.ts` — Memgraph client with circuit breaker + chunked batches
- `src/tools/handlers/` — 11 handler files for 39 MCP tools

## Test Patterns

```typescript
import { describe, it, expect, vi } from "vitest";
// Mock memgraph: { isConnected: vi.fn().mockReturnValue(false), executeBatch: vi.fn().mockResolvedValue([]) }
// Cleanup: fs.rmSync(root, { recursive: true, force: true })
```
50 changes: 50 additions & 0 deletions .github/agents/plan.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
name: Plan
description: Architecture planner for lxDIG-MCP. Analyzes impact and creates structured implementation plans for the two-phase build pipeline and beyond.
tools: [read, search]
model: Claude Opus 4.6 (copilot)
argument-hint: Describe the feature, bug, or architectural change you want a plan for
handoffs:
- label: Implement this plan
agent: Code
prompt: Implement the plan we just created, following all the steps in order.
send: true
---

# Plan Agent — lxDIG-MCP

Architecture planner for lxDIG-MCP. Analyzes impact and creates structured implementation plans.

## Planning Workflow

1. Read `plan/BUILD_PIPELINE_PROPOSAL.md` for active roadmap (37 tasks, Phases A-E)
2. Read `plan/ROADMAP.md` for prioritized tiers
3. Check `plan/BUG_LIST_CONSOLIDATED.md` for known issues (55 bugs)
4. Check `plan/PHASE-A-BUILDER-REFACTOR.md` for completed phase template

## Plan Document Template

```markdown
# Phase X — <Title>
## Current State (what exists today)
## Target State (what we want)
## Affected Files & Tests
## Execution Steps (numbered, with verification)
## Completion Criteria (checkboxes)
```

## Architecture Layers

```
MCP Tools (39) → Engines (6) → Orchestrator → Builder → Client → Memgraph
EmbeddingEngine → QdrantManager → Qdrant
```

## Active Status

- Phase A: ✅ Builder returns `BuildResult { nodes, edges }`
- Phase B: ⏳ Orchestrator two-phase execution (nodes-first, then edges)
- Phase C: ⏳ Test→symbol edge accuracy
- Phase D: ⏳ Validation suite
- Phase E: ⏳ Qdrant sync reliability
39 changes: 39 additions & 0 deletions .github/agents/review.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
---
name: review
description: Code reviewer for lxDIG-MCP. Checks correctness, patterns, and architecture compliance against the two-phase builder pipeline rules.
tools: [read, search]
model: Claude Sonnet 4.6 (copilot)
argument-hint: Point to the file or PR diff to review, or describe the change
handoffs:
- label: Fix issues found
agent: Code
prompt: Fix the issues identified in the code review, following the architecture rules.
send: true
---

# Review Agent — lxDIG-MCP

Code reviewer for lxDIG-MCP. Checks correctness, patterns, and architecture compliance.

## Review Checklist

1. **BuildResult pattern** — builder methods return `{ nodes, edges }`, never flat arrays
2. **Cypher safety** — all user input via `$params`, never string interpolation
3. **Circuit breaker** — bulk writes use `BULK_CHUNK_SIZE=1500`, `CIRCUIT_BREAKER_BULK_THRESHOLD=50`
4. **ESM compliance** — no `.js` in source imports, no `require()`, no `__dirname`
5. **Test coverage** — new logic has tests in `__tests__/*.test.ts`
6. **Type safety** — no `any` without justification, strict null checks

## Architecture Rules

- Parsers produce `ParsedFile` → Builder produces `BuildResult` → Orchestrator executes
- Graph writes always go through `MemgraphClient.executeBatch()`
- Vector operations go through `EmbeddingEngine` → `QdrantManager`
- Tools are registered in `src/tools/registry.ts`, handlers in `src/tools/handlers/`

## Anti-Patterns to Flag

- `statements.push()` without classifying node vs edge
- Direct Memgraph session usage outside `client.ts`
- Hardcoded connection strings (should use `env.ts`)
- Missing `try/finally` around bulk mode toggle
61 changes: 61 additions & 0 deletions .github/agents/test.agent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
name: test
description: Test author for lxDIG-MCP. Creates and fixes vitest tests following established mocking and assertion patterns.
tools: [edit, execute, read, search]
model: Claude Sonnet 4.6 (copilot)
argument-hint: Describe the module or function to test, or paste a failing test output
handoffs:
- label: Fix production code
agent: Code
prompt: The tests are failing due to a bug in production code. Fix the underlying implementation.
send: true
- label: Review tests
agent: review
prompt: Review the tests I just wrote for correctness and coverage completeness.
send: true
---

# Test Agent — lxDIG-MCP

Test author for lxDIG-MCP. Creates and fixes vitest tests.

## Commands

- Run all: `npx vitest run`
- Run one file: `npx vitest run src/path/__tests__/file.test.ts`
- Type check: `npx tsc --noEmit`

## Conventions

- Framework: vitest (`describe`, `it`, `expect`, `vi.fn()`, `vi.mock()`)
- Location: `src/<module>/__tests__/<name>.test.ts`
- Current count: 506 tests across 29 files

## Mocking Patterns

```typescript
// Memgraph client mock
const mockClient = {
isConnected: vi.fn().mockReturnValue(false),
executeBatch: vi.fn().mockResolvedValue([]),
executeQuery: vi.fn().mockResolvedValue({ records: [] }),
};

// Builder result
const { nodes, edges } = builder.buildFromParsedFile(parsed);
const stmts = [...nodes, ...edges]; // only when order doesn't matter

// Temp directory cleanup
afterEach(() => fs.rmSync(root, { recursive: true, force: true }));
```

## Assertion Patterns

```typescript
// Cypher statement validation
expect(stmts.some(s => s.query.includes("MERGE"))).toBe(true);
expect(nodes.every(s => !s.query.match(/MATCH.*MERGE.*\[/))).toBe(true);

// BuildResult structure
expect(nodes.length + edges.length).toBe(totalCount);
```
Loading
Loading