| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 0 | 6 | 13 | 0% |
| Commands | 0 | 1 | 0 | 0% |
| Section tags | 0 | 1 | 8 | 0% |
What each file covers
Sections
0 shared · 6 only in A · 13 only in B- − @second-brain/collectors — Agent Instructions
- − Entry Point
- − Collectors (6)
- − Providers (5)
- − Adding a New Collector
- − Other Directories
- + Second Brain — Windsurf Rules
- + Project Overview
- + Tech Stack
- + Monorepo
- + Commands
- + Coding Rules
- + Always
- + Never
- + Backend Patterns
- + Frontend Patterns
- + Testing
- + Data Model
- + Documentation
Commands
0 shared · 1 only in A · 0 only in B- − git
Section tags
0 shared · 1 only in A · 8 only in B- − agent-behaviour
- + setup
- + test
- + code-style
- + architecture
- + types
- + monorepo
- + do-not
- + docs
Line diff
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
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
@@ −1 +1 @@
1−# @second-brain/collectors — Agent Instructions
1+# Second Brain — Windsurf Rules
22
3−Data collectors and streaming providers that feed the knowledge graph.
3+## Project Overview
44
5−## Entry Point
5+Developer knowledge graph — pnpm monorepo with Turborepo. Node.js 22+, TypeScript 5.8+ strict mode, ESM only.
66
7−`src/pipeline/runner.ts` → `PipelineRunner` with `register()` and `run()`.
7+For full architecture: see docs/architecture.md
8+For agent instructions: see AGENTS.md
89
9−## Collectors (6)
10+## Tech Stack
1011
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.) |
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
1923
20−## Providers (5)
24+## Monorepo
2125
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 |
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)
2936
30−## Adding a New Collector
37+## Commands
3138
32−1. Implement the `Collector` interface in a new `src/<name>/` directory
33−2. Register in `src/pipeline/runner.ts`
39+pnpm install, pnpm build, pnpm test, pnpm check-types, pnpm dev
3440
35−## Other Directories
41+## Coding Rules
3642
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
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
41103
