| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 0 | 13 | 6 | 0% |
| Commands | 0 | 0 | 1 | 0% |
| Section tags | 0 | 8 | 1 | 0% |
What each file covers
Sections
0 shared · 13 only in A · 6 only in B- − Second Brain — Windsurf Rules
- − Project Overview
- − Tech Stack
- − Monorepo
- − Commands
- − Coding Rules
- − Always
- − Never
- − Backend Patterns
- − Frontend Patterns
- − Testing
- − Data Model
- − Documentation
- + @second-brain/collectors — Agent Instructions
- + Entry Point
- + Collectors (6)
- + Providers (5)
- + Adding a New Collector
- + Other Directories
Commands
0 shared · 0 only in A · 1 only in B- + git
Section tags
0 shared · 8 only in A · 1 only in B- − setup
- − test
- − code-style
- − architecture
- − types
- − monorepo
- − do-not
- − docs
- + agent-behaviour
Line diff
thangaram611/second-brain · .windsurfrules
@@ −1 @@
1# Second Brain — Windsurf Rules
2
3## Project Overview
4
5Developer knowledge graph — pnpm monorepo with Turborepo. Node.js 22+, TypeScript 5.8+ strict mode, ESM only.
6
7For full architecture: see docs/architecture.md
8For agent instructions: see AGENTS.md
9
10## Tech Stack
11
12- Runtime: Node.js 22+, ESM only ("type": "module")
13- Language: TypeScript 5.8+ strict mode
14- Database: SQLite (better-sqlite3) + Drizzle ORM, WAL mode
15- Search: FTS5 (BM25) + sqlite-vec (cosine KNN), Reciprocal Rank Fusion
16- Validation: Zod v4
17- Testing: Vitest, in-memory SQLite
18- Build: tsdown (ESM), tsc (type-check)
19- Frontend: React 19, Zustand, Cytoscape.js, Tailwind CSS, Radix UI
20- Sync: Yjs CRDTs via Hocuspocus relay
21- IDs: ULIDs (ulidx). Never UUID
22- Timestamps: ISO 8601 strings. Never unix timestamps
23
24## Monorepo
25
26packages/types — Shared TypeScript types
27packages/core — Knowledge graph engine (Brain class in src/brain.ts)
28packages/collectors — Data collectors + streaming providers
29packages/ingestion — LLM extraction + embedding pipeline
30packages/sync — Yjs CRDT sync bridge
31packages/mcp-server — MCP tools (32 tools, stdio + HTTP)
32apps/server — Express 5 REST API + WebSocket (port 7430)
33apps/ui — React 19 + Cytoscape.js (port 5173)
34apps/relay — Hocuspocus CRDT relay (port 7421)
35tools/cli — brain CLI (Commander.js)
36
37## Commands
38
39pnpm install, pnpm build, pnpm test, pnpm check-types, pnpm dev
40
41## Coding Rules
42
43### Always
44- ESM only. Named exports. Re-export from index.ts
45- Use workspace imports: @second-brain/core, @second-brain/types
46- Zod schemas for all external input validation
47- ULIDs for IDs (via ulidx)
48- ISO 8601 for timestamps
49- Namespace field on all entities/relations
50- In-memory SQLite for tests
51- Try-catch with descriptive errors
52- batchUpsert for bulk operations
53
54### Never
55- Use `any` type
56- Use path aliases
57- Use UUIDs
58- Use unix timestamps or Date objects in storage
59- Write to entities_fts directly (auto-maintained via triggers)
60- Mutate stored confidence (decay is read-side only)
61- Sync 'personal' namespace
62- Import from package internals (use public API)
63
64## Backend Patterns
65
66- Drizzle ORM for queries (schema in packages/core/src/schema/)
67- Brain class is main facade (packages/core/src/brain.ts)
68- Relations: unique constraint on (sourceId, targetId, type)
69- Use createOrGet for idempotent relations
70- WebSocket broadcast after mutations
71- MCP tools: packages/mcp-server/src/tools/
72
73## Frontend Patterns
74
75- React 19 functional components
76- Zustand stores (one per feature in apps/ui/src/store/)
77- Cytoscape.js with diff-based rendering
78- Tailwind dark theme (zinc-950 bg)
79- REST client: apps/ui/src/lib/api.ts
80- WebSocket: apps/ui/src/lib/ws.ts (auto-reconnect)
81- HashRouter (React Router 7)
82
83## Testing
84
85- Vitest with globals (no imports for describe/it/expect)
86- In-memory SQLite for all DB tests
87- Co-located: __tests__/*.test.ts
88- Use Brain class directly (not HTTP)
89- Test happy path + error cases
90
91## Data Model
92
93Entity types (15): concept, decision, pattern, person, file, symbol, event, tool, fact, conversation, reference, implementation, pull_request, merge_request, branch
94
95Relation types (20): relates_to, depends_on, implements, supersedes, contradicts, derived_from, authored_by, decided_in, uses, tests, contains, co_changes_with, preceded_by, blocks, reviewed_by, merged_in_mr, merged_in_pr, touches_file, owns, parallel_with
96
97## Documentation
98
99- docs/architecture.md — Full technical architecture
100- docs/getting-started.md — Usage guide
101- docs/api-reference.md — REST API + MCP + CLI reference
102- AGENTS.md — Detailed agent instructions
103
thangaram611/second-brain · packages/collectors/AGENTS.md
@@ +1 @@
1# @second-brain/collectors — Agent Instructions
2
3Data collectors and streaming providers that feed the knowledge graph.
4
5## Entry Point
6
7`src/pipeline/runner.ts` → `PipelineRunner` with `register()` and `run()`.
8
9## Collectors (6)
10
11| Collector | Directory | What it collects |
12|-----------|-----------|-----------------|
13| `git` | `src/git/` | Commits, branches, file history |
14| `ast` | `src/ast/` | Code symbols, dependencies, structure |
15| `github` | `src/github/` | Issues, PRs, reviews, comments |
16| `gitlab` | `src/gitlab/` | MRs, issues, pipelines |
17| `conversation` | `src/conversation/` | Chat/conversation transcripts |
18| `docs` | `src/docs/` | Documentation files (markdown, etc.) |
19
20## Providers (5)
21
22| Provider | Directory | Transport |
23|----------|-----------|-----------|
24| `custom` | `src/providers/` | Programmatic API |
25| `git` | `src/providers/` | Git hooks / polling |
26| `github` | `src/providers/` | GitHub webhooks |
27| `gitlab` | `src/providers/` | GitLab webhooks |
28| `webhook-relay` | `src/providers/` | Generic webhook relay |
29
30## Adding a New Collector
31
321. Implement the `Collector` interface in a new `src/<name>/` directory
332. Register in `src/pipeline/runner.ts`
34
35## Other Directories
36
37- `src/extraction/` — LLM-based entity extraction helpers
38- `src/git-context/` — Git context resolution
39- `src/realtime/` — Real-time event streaming
40- `src/watch/` — File system watchers
41
@@ −1 +1 @@
1−# Second Brain — Windsurf Rules
1+# @second-brain/collectors — Agent Instructions
22
3−## Project Overview
3+Data collectors and streaming providers that feed the knowledge graph.
44
5−Developer knowledge graph — pnpm monorepo with Turborepo. Node.js 22+, TypeScript 5.8+ strict mode, ESM only.
5+## Entry Point
66
7−For full architecture: see docs/architecture.md
8−For agent instructions: see AGENTS.md
7+`src/pipeline/runner.ts` → `PipelineRunner` with `register()` and `run()`.
98
10−## Tech Stack
9+## Collectors (6)
1110
12−- Runtime: Node.js 22+, ESM only ("type": "module")
13−- Language: TypeScript 5.8+ strict mode
14−- Database: SQLite (better-sqlite3) + Drizzle ORM, WAL mode
15−- Search: FTS5 (BM25) + sqlite-vec (cosine KNN), Reciprocal Rank Fusion
16−- Validation: Zod v4
17−- Testing: Vitest, in-memory SQLite
18−- Build: tsdown (ESM), tsc (type-check)
19−- Frontend: React 19, Zustand, Cytoscape.js, Tailwind CSS, Radix UI
20−- Sync: Yjs CRDTs via Hocuspocus relay
21−- IDs: ULIDs (ulidx). Never UUID
22−- Timestamps: ISO 8601 strings. Never unix timestamps
11+| Collector | Directory | What it collects |
12+|-----------|-----------|-----------------|
13+| `git` | `src/git/` | Commits, branches, file history |
14+| `ast` | `src/ast/` | Code symbols, dependencies, structure |
15+| `github` | `src/github/` | Issues, PRs, reviews, comments |
16+| `gitlab` | `src/gitlab/` | MRs, issues, pipelines |
17+| `conversation` | `src/conversation/` | Chat/conversation transcripts |
18+| `docs` | `src/docs/` | Documentation files (markdown, etc.) |
2319
24−## Monorepo
20+## Providers (5)
2521
26−packages/types — Shared TypeScript types
27−packages/core — Knowledge graph engine (Brain class in src/brain.ts)
28−packages/collectors — Data collectors + streaming providers
29−packages/ingestion — LLM extraction + embedding pipeline
30−packages/sync — Yjs CRDT sync bridge
31−packages/mcp-server — MCP tools (32 tools, stdio + HTTP)
32−apps/server — Express 5 REST API + WebSocket (port 7430)
33−apps/ui — React 19 + Cytoscape.js (port 5173)
34−apps/relay — Hocuspocus CRDT relay (port 7421)
35−tools/cli — brain CLI (Commander.js)
22+| Provider | Directory | Transport |
23+|----------|-----------|-----------|
24+| `custom` | `src/providers/` | Programmatic API |
25+| `git` | `src/providers/` | Git hooks / polling |
26+| `github` | `src/providers/` | GitHub webhooks |
27+| `gitlab` | `src/providers/` | GitLab webhooks |
28+| `webhook-relay` | `src/providers/` | Generic webhook relay |
3629
37−## Commands
30+## Adding a New Collector
3831
39−pnpm install, pnpm build, pnpm test, pnpm check-types, pnpm dev
32+1. Implement the `Collector` interface in a new `src/<name>/` directory
33+2. Register in `src/pipeline/runner.ts`
4034
41−## Coding Rules
35+## Other Directories
4236
43−### Always
44−- ESM only. Named exports. Re-export from index.ts
45−- Use workspace imports: @second-brain/core, @second-brain/types
46−- Zod schemas for all external input validation
47−- ULIDs for IDs (via ulidx)
48−- ISO 8601 for timestamps
49−- Namespace field on all entities/relations
50−- In-memory SQLite for tests
51−- Try-catch with descriptive errors
52−- batchUpsert for bulk operations
53−
54−### Never
55−- Use `any` type
56−- Use path aliases
57−- Use UUIDs
58−- Use unix timestamps or Date objects in storage
59−- Write to entities_fts directly (auto-maintained via triggers)
60−- Mutate stored confidence (decay is read-side only)
61−- Sync 'personal' namespace
62−- Import from package internals (use public API)
63−
64−## Backend Patterns
65−
66−- Drizzle ORM for queries (schema in packages/core/src/schema/)
67−- Brain class is main facade (packages/core/src/brain.ts)
68−- Relations: unique constraint on (sourceId, targetId, type)
69−- Use createOrGet for idempotent relations
70−- WebSocket broadcast after mutations
71−- MCP tools: packages/mcp-server/src/tools/
72−
73−## Frontend Patterns
74−
75−- React 19 functional components
76−- Zustand stores (one per feature in apps/ui/src/store/)
77−- Cytoscape.js with diff-based rendering
78−- Tailwind dark theme (zinc-950 bg)
79−- REST client: apps/ui/src/lib/api.ts
80−- WebSocket: apps/ui/src/lib/ws.ts (auto-reconnect)
81−- HashRouter (React Router 7)
82−
83−## Testing
84−
85−- Vitest with globals (no imports for describe/it/expect)
86−- In-memory SQLite for all DB tests
87−- Co-located: __tests__/*.test.ts
88−- Use Brain class directly (not HTTP)
89−- Test happy path + error cases
90−
91−## Data Model
92−
93−Entity types (15): concept, decision, pattern, person, file, symbol, event, tool, fact, conversation, reference, implementation, pull_request, merge_request, branch
94−
95−Relation types (20): relates_to, depends_on, implements, supersedes, contradicts, derived_from, authored_by, decided_in, uses, tests, contains, co_changes_with, preceded_by, blocks, reviewed_by, merged_in_mr, merged_in_pr, touches_file, owns, parallel_with
96−
97−## Documentation
98−
99−- docs/architecture.md — Full technical architecture
100−- docs/getting-started.md — Usage guide
101−- docs/api-reference.md — REST API + MCP + CLI reference
102−- AGENTS.md — Detailed agent instructions
37+- `src/extraction/` — LLM-based entity extraction helpers
38+- `src/git-context/` — Git context resolution
39+- `src/realtime/` — Real-time event streaming
40+- `src/watch/` — File system watchers
10341
