rekipedia 0.16.0 → 0.17.17
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 +53 -370
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,421 +4,107 @@
|
|
|
4
4
|
|
|
5
5
|
> Your AI tech lead — always available, always up to date.
|
|
6
6
|
|
|
7
|
-
rekipedia scans any repository into a portable SQLite knowledge store and gives every developer
|
|
7
|
+
rekipedia scans any repository into a portable SQLite knowledge store and gives every developer an LLM-powered tech lead they can ask anything.
|
|
8
8
|
|
|
9
|
-
No hallucinations
|
|
9
|
+
No hallucinations — every answer is grounded in your actual codebase.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
- **Relationship confidence scoring**: every extracted relationship tagged as EXTRACTED/INFERRED/AMBIGUOUS with confidence score
|
|
13
|
-
- **Design rationale extraction**: `# NOTE:`, `# HACK:`, `# WHY:` comments extracted as knowledge nodes
|
|
14
|
-
- **God nodes**: highest-degree symbols surfaced in index.md and highlighted in the graph UI
|
|
15
|
-
- **Interactive dependency graph**: `rekipedia serve` now includes a `/graph` route with D3.js force-directed visualization
|
|
16
|
-
- **Git hooks**: `rekipedia hook install` triggers auto-rebuild on every commit
|
|
17
|
-
- **Agentic wiki orchestration**: `PlannerAgent` designs the wiki structure dynamically based on your repo
|
|
18
|
-
- **Page importance scoring**: planner assigns each page an importance score (0–100); nav sidebar sorts by priority
|
|
19
|
-
- **DeepWiki-style sections**: pages grouped into logical sections (`getting-started`, `architecture`, `core-components`, etc.)
|
|
20
|
-
- **Wiki sidebar categories**: `reki serve` sidebar groups pages by `section` field with collapsible headers
|
|
21
|
-
- **Live search**: type in the sidebar search box to filter wiki pages by title or category instantly
|
|
22
|
-
- **Refactor analysis**: `reki refactor` detects code smells (god class, circular deps, dead code, high coupling) with LLM-enriched suggestions — outputs `REFACTOR.md` + `refactor_report.json`
|
|
23
|
-
- **Context slicing**: each page only receives the data it needs (~40–60% token reduction vs fixed-layout approach)
|
|
24
|
-
- **Hybrid RAG Q&A**: FAISS-indexed code chunks + wiki pages give the LLM full codebase context when answering questions
|
|
25
|
-
- **Embed provider choice**: `--embed-provider openai|ollama|azure|...` — any litellm-compatible embedding model
|
|
26
|
-
- **Wiki export**: bundle to a single Markdown file, ZIP archive, or structured JSON (`rekipedia export`)
|
|
27
|
-
- **Incremental updates**: only re-processes changed files after the first scan
|
|
28
|
-
- **Grounded Q&A**: answers cite real file paths and line numbers — no hallucinations
|
|
29
|
-
- **Codebase tree index** — every scan builds a hierarchical directory/file tree in SQLite, enabling structured navigation and future reasoning-based retrieval.
|
|
30
|
-
- **Rust full symbol extraction** — `RustExtractor` (tree-sitter) now extracts enums, type aliases, `const`/`static`, `macro_rules!`, `mod`, and intra-file call-graph edges — on par with Go, TypeScript, and Python extractors.
|
|
31
|
-
- **`--doc-type` flag for `reki scan`** — shape wiki generation style with `api-ref`, `tutorial`, `runbook`, `adr`, or `changelog`. Each type injects a specialist prompt preamble before the standard system prompt. Also readable from env var `REKIPEDIA_DOC_TYPE`.
|
|
32
|
-
- **GitHub Actions official action** — use `uses: unrealandychan/rekipedia@v1` in any workflow to scan, generate wiki pages, export HTML, and upload artifacts. Auto-detects LLM provider from model name. Supports `focus` glob filtering and optional GitHub Pages deployment.
|
|
33
|
-
- **Interactive HTML export** — `reki export --format html` produces a single self-contained `.html` file with dark/light theme, instant search, sidebar navigation, syntax highlighting (highlight.js), Mermaid diagram rendering, and clickable heading anchors. No server required — open in any browser.
|
|
34
|
-
- **OSC-8 clickable citations** — `reki ask` answers now print source citations as terminal hyperlinks (iTerm2, WezTerm, Kitty, Windows Terminal, VSCode). Click `src/auth.py:42` to jump directly to the file and line in your editor. Auto-detects terminal support; disable with `REKIPEDIA_OSC8=0`.
|
|
35
|
-
- **`--focus` flag for targeted deep scans** — `reki scan --focus src/auth/** --focus src/payment/**` limits extraction and wiki generation to the matched files/directories, dramatically reducing scan time when you only need docs for a sub-system.
|
|
11
|
+
---
|
|
36
12
|
|
|
37
13
|
## Quick start
|
|
38
14
|
|
|
39
|
-
### via npm / npx (no install required)
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
npx rekipedia init .
|
|
43
|
-
npx rekipedia scan .
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### via uv / uvx (no install required)
|
|
47
|
-
|
|
48
|
-
```bash
|
|
49
|
-
uvx rekipedia init .
|
|
50
|
-
uvx rekipedia scan .
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Permanent install
|
|
54
|
-
|
|
55
15
|
```bash
|
|
56
|
-
#
|
|
57
|
-
|
|
16
|
+
# No install required
|
|
17
|
+
npx rekipedia init . && npx rekipedia scan .
|
|
58
18
|
# or
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
# With RAG support (semantic embed + search — needs faiss-cpu + numpy ~100MB)
|
|
62
|
-
pip install "rekipedia[rag]"
|
|
63
|
-
|
|
64
|
-
# Homebrew (Go single binary — no Python needed)
|
|
65
|
-
brew tap unrealandychan/tap
|
|
66
|
-
brew install rekipedia
|
|
19
|
+
uvx rekipedia init . && uvx rekipedia scan .
|
|
67
20
|
```
|
|
68
21
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
Use rekipedia programmatically inside Jupyter notebooks, CI pipelines, or any Python application:
|
|
74
|
-
|
|
75
|
-
```python
|
|
76
|
-
import rekipedia
|
|
77
|
-
|
|
78
|
-
# Scan a local repo
|
|
79
|
-
result = rekipedia.scan("/path/to/repo")
|
|
80
|
-
print(result.page_count) # number of wiki pages generated
|
|
81
|
-
print(result.symbol_count) # number of code symbols extracted
|
|
82
|
-
print(result.token_count) # estimated token count of the wiki
|
|
83
|
-
|
|
84
|
-
# Ask a question — grounded answer with file:line citations
|
|
85
|
-
answer = rekipedia.ask("/path/to/repo", "How does the auth flow work?")
|
|
86
|
-
print(answer.text)
|
|
87
|
-
for citation in answer.citations:
|
|
88
|
-
print(f" {citation.file}:{citation.line}")
|
|
89
|
-
|
|
90
|
-
# Async variants (Jupyter-friendly)
|
|
91
|
-
result = await rekipedia.scan_async("/path/to/repo")
|
|
92
|
-
answer = await rekipedia.ask_async("/path/to/repo", "What is the entry point?")
|
|
22
|
+
```bash
|
|
23
|
+
# Permanent install
|
|
24
|
+
pip install rekipedia # core
|
|
25
|
+
pip install "rekipedia[rag]" # + semantic search (FAISS)
|
|
93
26
|
```
|
|
94
27
|
|
|
95
|
-
**Return types:**
|
|
96
|
-
|
|
97
|
-
| Type | Key fields |
|
|
98
|
-
|---|---|
|
|
99
|
-
| `ScanResult` | `page_count`, `symbol_count`, `token_count`, `wiki_pages`, `db_path`, `wiki_dir` |
|
|
100
|
-
| `AskResult` | `text`, `citations: list[Citation]`, `model_used` |
|
|
101
|
-
| `Citation` | `file`, `line`, `snippet` |
|
|
102
|
-
|
|
103
28
|
---
|
|
104
29
|
|
|
105
|
-
##
|
|
30
|
+
## Core commands
|
|
106
31
|
|
|
107
|
-
| Command |
|
|
32
|
+
| Command | What it does |
|
|
108
33
|
|---|---|
|
|
109
|
-
| `
|
|
110
|
-
| `
|
|
111
|
-
| `
|
|
112
|
-
| `
|
|
113
|
-
| `
|
|
114
|
-
| `
|
|
115
|
-
| `
|
|
116
|
-
| `
|
|
117
|
-
| `
|
|
118
|
-
| `
|
|
119
|
-
| `
|
|
120
|
-
| `
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
124
|
-
| `
|
|
125
|
-
| `rekipedia review` | LLM-powered PR diff review grounded in the wiki — `--staged`, `--branch`, `--pr`, `--diff` |
|
|
34
|
+
| `reki init .` | Scaffold config |
|
|
35
|
+
| `reki scan .` | Full analysis → wiki + knowledge store |
|
|
36
|
+
| `reki update .` | Incremental refresh (changed files only) |
|
|
37
|
+
| `reki serve .` | Local web UI — browse, search, ask AI |
|
|
38
|
+
| `reki ask` | Interactive Q&A REPL (streamed) |
|
|
39
|
+
| `reki embed .` | Build FAISS semantic index for hybrid RAG |
|
|
40
|
+
| `reki export .` | Bundle wiki → `--format md\|zip\|json\|html` |
|
|
41
|
+
| `reki diff` | Uncommitted-change impact analysis |
|
|
42
|
+
| `reki domain .` | Map codebase to business layers (API/Service/Data/UI) |
|
|
43
|
+
| `reki tour .` | Guided learning walkthrough by dependency depth |
|
|
44
|
+
| `reki onboard .` | Static onboarding guide for new developers |
|
|
45
|
+
| `reki review` | LLM PR review grounded in wiki context |
|
|
46
|
+
| `reki refactor .` | Detect code smells → `REFACTOR.md` |
|
|
47
|
+
| `reki watch .` | Auto-index on file change (OS watcher) |
|
|
48
|
+
| `reki hook install` | Git post-commit auto-rebuild |
|
|
49
|
+
| `reki mcp` | MCP stdio server for AI coding assistants |
|
|
126
50
|
|
|
127
51
|
---
|
|
128
52
|
|
|
129
53
|
## LLM configuration
|
|
130
54
|
|
|
131
|
-
After
|
|
55
|
+
After `reki init`, edit `.rekipedia/config.yml`:
|
|
132
56
|
|
|
133
57
|
```yaml
|
|
134
|
-
version: 1
|
|
135
|
-
ignore:
|
|
136
|
-
- .git
|
|
137
|
-
- node_modules
|
|
138
|
-
- __pycache__
|
|
139
|
-
- .rekipedia
|
|
140
|
-
languages:
|
|
141
|
-
- python
|
|
142
|
-
- typescript
|
|
143
58
|
llm:
|
|
144
59
|
model: ollama/llama4 # any litellm model string
|
|
145
|
-
api_key: "" # or
|
|
60
|
+
api_key: "" # or REKIPEDIA_API_KEY env var
|
|
146
61
|
base_url: "" # for local / self-hosted endpoints
|
|
147
62
|
temperature: 0.2
|
|
148
63
|
```
|
|
149
64
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
| Provider | Example model string |
|
|
153
|
-
|---|---|
|
|
154
|
-
| Ollama (local, free) | `ollama/llama4` |
|
|
155
|
-
| OpenAI | `gpt-5.5` |
|
|
156
|
-
| Anthropic | `claude-opus-4-6` |
|
|
157
|
-
| Google Gemini | `gemini/gemini-3.0-pro` |
|
|
158
|
-
| Any OpenAI-compatible | set `base_url` in config |
|
|
159
|
-
|
|
160
|
-
### Runtime overrides (env vars)
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
export REKIPEDIA_MODEL=gpt-5.5
|
|
164
|
-
export REKIPEDIA_API_KEY=sk-...
|
|
165
|
-
export REKIPEDIA_BASE_URL=https://my-proxy/v1
|
|
166
|
-
export REKIPEDIA_SHARD_TOKEN_BUDGET=40000
|
|
167
|
-
```
|
|
65
|
+
Supported providers: Ollama, OpenAI, Anthropic, Gemini, any OpenAI-compatible endpoint.
|
|
168
66
|
|
|
169
|
-
|
|
170
|
-
|---|---|
|
|
171
|
-
| `REKIPEDIA_MODEL` | LLM model name to use |
|
|
172
|
-
| `REKIPEDIA_API_KEY` | API key for the LLM provider |
|
|
173
|
-
| `REKIPEDIA_BASE_URL` | Base URL for OpenAI-compatible endpoints |
|
|
174
|
-
| `REKIPEDIA_SHARD_TOKEN_BUDGET` | Max tokens per shard group (default: 40000) |
|
|
175
|
-
| `REKIPEDIA_AGENT_ASK` | Set to `1` to enable agentic ReAct ask loop (default: `0` — single-shot) |
|
|
176
|
-
| `REKIPEDIA_ASK_MAX_ITER` | Max tool-call iterations for agentic ask (default: `5`) |
|
|
177
|
-
| `REKIPEDIA_STREAM` | Set to `0` to disable streaming output for `reki ask` (default: `1` — streaming on) |
|
|
178
|
-
| `REKIPEDIA_AGENT_PLANNER` | Set to `1` to enable tool-calling wiki planner (default: `0`) |
|
|
67
|
+
Key env vars: `REKIPEDIA_MODEL`, `REKIPEDIA_API_KEY`, `REKIPEDIA_BASE_URL`
|
|
179
68
|
|
|
180
69
|
---
|
|
181
70
|
|
|
182
|
-
## Output
|
|
183
|
-
|
|
184
|
-
`rekipedia scan` writes everything to `.rekipedia/` inside your repo:
|
|
71
|
+
## Output layout
|
|
185
72
|
|
|
186
73
|
```
|
|
187
74
|
.rekipedia/
|
|
188
|
-
├── config.yml
|
|
189
|
-
├── store.db
|
|
190
|
-
├──
|
|
191
|
-
├──
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
│ ├── repository-structure.md
|
|
195
|
-
│ └── ... (pages vary by repo)
|
|
196
|
-
├── rag/ # RAG index (git-ignored)
|
|
197
|
-
│ ├── index.faiss # FAISS flat L2 index
|
|
198
|
-
│ └── chunks.json # source code chunks + metadata
|
|
199
|
-
├── diagrams/ # Mermaid diagram files
|
|
200
|
-
│ ├── module-graph.md
|
|
201
|
-
│ └── class-hierarchy.md
|
|
202
|
-
└── exports/ # JSON exports
|
|
203
|
-
├── symbols.json
|
|
204
|
-
├── relationships.json
|
|
205
|
-
└── manifest.json # run summary + metadata + page importance scores
|
|
75
|
+
├── config.yml # settings (committed)
|
|
76
|
+
├── store.db # SQLite knowledge store (git-ignored)
|
|
77
|
+
├── wiki/ # generated Markdown pages
|
|
78
|
+
├── rag/ # FAISS index + chunks (git-ignored)
|
|
79
|
+
├── diagrams/ # Mermaid diagrams
|
|
80
|
+
└── exports/ # JSON exports + manifest
|
|
206
81
|
```
|
|
207
82
|
|
|
208
|
-
Dynamically generates 3–15 wiki pages based on repo complexity (powered by PlannerAgent).
|
|
209
|
-
|
|
210
|
-
The wiki structure is designed dynamically by `PlannerAgent` based on what's actually present in your repo:
|
|
211
|
-
|
|
212
|
-
| Section | Example pages | When generated |
|
|
213
|
-
|---|---|---|
|
|
214
|
-
| Getting Started | index, installation, quick-start | Always |
|
|
215
|
-
| Architecture | architecture-overview, data-flow, repository-structure | ≥3 modules |
|
|
216
|
-
| Core Components | One page per major module | ≥2 modules |
|
|
217
|
-
| API Reference | cli-reference, python-api, rest-api | CLI/HTTP handlers found |
|
|
218
|
-
| Development | testing, contributing, ci-cd | Test files found |
|
|
219
|
-
| Ecosystem | integrations, deployment | ≥3 external deps |
|
|
220
|
-
|
|
221
|
-
### Scan options
|
|
222
|
-
|
|
223
|
-
```bash
|
|
224
|
-
# Use a specific LLM model
|
|
225
|
-
rekipedia scan . --model gpt-5.5
|
|
226
|
-
|
|
227
|
-
# Skip Docker (run extractors in-process)
|
|
228
|
-
rekipedia scan . --no-docker
|
|
229
|
-
|
|
230
|
-
# Write output to a custom directory
|
|
231
|
-
rekipedia scan . --output-dir /tmp/wiki-output
|
|
232
|
-
|
|
233
|
-
# Enable debug logging (litellm, HTTP, full tracebacks)
|
|
234
|
-
rekipedia scan . --verbose
|
|
235
|
-
|
|
236
|
-
# Auto-embed for RAG after scan
|
|
237
|
-
rekipedia scan . --embed-model text-embedding-3-small --embed-provider openai
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### RAG / semantic search
|
|
241
|
-
|
|
242
|
-
`rekipedia ask` uses **hybrid retrieval** — wiki pages + FAISS-indexed code chunks — to answer questions with full codebase context.
|
|
243
|
-
|
|
244
|
-
```bash
|
|
245
|
-
# Build or rebuild the FAISS index
|
|
246
|
-
rekipedia embed .
|
|
247
|
-
|
|
248
|
-
# Custom embedding model + provider
|
|
249
|
-
rekipedia embed . --model text-embedding-3-small --provider openai
|
|
250
|
-
rekipedia embed . --model nomic-embed-text --provider ollama
|
|
251
|
-
|
|
252
|
-
# If your embed provider uses a DIFFERENT API key from your main LLM:
|
|
253
|
-
rekipedia embed . --model text-embedding-3-small --provider openai
|
|
254
|
-
# set embed_api_key in config.yml, or:
|
|
255
|
-
export REKIPEDIA_EMBED_API_KEY=sk-your-openai-key
|
|
256
|
-
|
|
257
|
-
# Or configure everything in .rekipedia/config.yml:
|
|
258
|
-
# llm:
|
|
259
|
-
# model: ollama/llama4 # main LLM (local)
|
|
260
|
-
# embed_model: text-embedding-3-small
|
|
261
|
-
# embed_provider: openai
|
|
262
|
-
# embed_api_key: sk-xxx # separate key for embed provider
|
|
263
|
-
# embed_base_url: "" # optional: custom endpoint
|
|
264
|
-
|
|
265
|
-
# Env var overrides (all optional):
|
|
266
|
-
export REKIPEDIA_EMBED_MODEL=nomic-embed-text
|
|
267
|
-
export REKIPEDIA_EMBED_PROVIDER=ollama
|
|
268
|
-
export REKIPEDIA_EMBED_API_KEY=sk-xxx
|
|
269
|
-
export REKIPEDIA_EMBED_BASE_URL=https://my-proxy.example.com/v1
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
The FAISS index is saved to `.rekipedia/rag/index.faiss` and chunked source code to `.rekipedia/rag/chunks.json`.
|
|
273
|
-
|
|
274
|
-
### Export the wiki
|
|
275
|
-
|
|
276
|
-
```bash
|
|
277
|
-
# Single combined Markdown file (default)
|
|
278
|
-
rekipedia export . --format md --output ./wiki-export.md
|
|
279
|
-
|
|
280
|
-
# ZIP archive (one .md per page + manifest.json)
|
|
281
|
-
rekipedia export . --format zip --output ./wiki.zip
|
|
282
|
-
|
|
283
|
-
# Structured JSON (all pages + metadata)
|
|
284
|
-
rekipedia export . --format json --output ./wiki.json
|
|
285
|
-
```
|
|
286
|
-
|
|
287
|
-
### Incremental update
|
|
288
|
-
|
|
289
|
-
After the first scan, `rekipedia update` only re-processes files whose SHA-256 has changed. Unchanged symbols and relationships are carried forward from the previous run — the wiki is refreshed in seconds.
|
|
290
|
-
|
|
291
|
-
```bash
|
|
292
|
-
rekipedia update . # auto-detect changed files
|
|
293
|
-
rekipedia update . --no-docker # skip Docker
|
|
294
|
-
```
|
|
295
|
-
|
|
296
|
-
If no previous scan is found, `update` automatically falls back to a full scan.
|
|
297
|
-
|
|
298
|
-
### Ask the wiki
|
|
299
|
-
|
|
300
|
-
```bash
|
|
301
|
-
# Start interactive Q&A session (streams answers token-by-token, Ctrl+C to quit)
|
|
302
|
-
rekipedia ask
|
|
303
|
-
rekipedia ask --repo ./my-project
|
|
304
|
-
rekipedia ask --model gpt-4o
|
|
305
|
-
|
|
306
|
-
# Single-shot mode (backward compat)
|
|
307
|
-
rekipedia ask -q "How does the auth flow work?"
|
|
308
|
-
|
|
309
|
-
# Disable streaming — wait for the full response before printing
|
|
310
|
-
rekipedia ask --no-stream
|
|
311
|
-
rekipedia ask -q "Explain the architecture" --no-stream
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
Answers are grounded **entirely** in your wiki pages and symbol index — the LLM cannot hallucinate details that aren't in the scanned knowledge store. Answers are streamed token-by-token using **rich Markdown rendering** — headers, code blocks, and bullet points render live as the model writes them. Set `REKIPEDIA_STREAM=0` or pass `--no-stream` to disable streaming and wait for the full response first.
|
|
315
|
-
|
|
316
|
-
Not happy with a generated page? See **[docs/customizing.md](docs/customizing.md)** — you can pin pages, override prompts, change the writing style, or add your own pages that scans will never touch.
|
|
317
|
-
|
|
318
|
-
### Serve the wiki
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
rekipedia serve . # opens browser at http://127.0.0.1:7070
|
|
322
|
-
rekipedia serve . --port 8080 # custom port
|
|
323
|
-
rekipedia serve . --no-browser # don't auto-open browser
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
- Browse generated wiki pages in a dark-themed web UI
|
|
327
|
-
- Ask questions with the same grounded Q&A (answers streamed via the web)
|
|
328
|
-
- Q&A history stored in SQLite
|
|
329
|
-
|
|
330
|
-
### Review a PR or diff
|
|
331
|
-
|
|
332
|
-
`reki review` produces a structured LLM code review grounded in the repository's wiki pages and symbol index — it knows your architecture, naming conventions, and known risks:
|
|
333
|
-
|
|
334
|
-
```bash
|
|
335
|
-
reki review # auto-detect: review git diff HEAD
|
|
336
|
-
reki review --staged # review staged changes
|
|
337
|
-
reki review --branch main # diff current branch vs main
|
|
338
|
-
reki review --diff changes.patch # review from a patch file
|
|
339
|
-
git diff HEAD~1 | reki review # pipe diff from stdin
|
|
340
|
-
reki review --pr 42 # fetch & review a GitHub PR (requires GH_TOKEN)
|
|
341
|
-
reki review --out review.md # save review to a markdown file
|
|
342
|
-
reki review --no-stream # wait for full response before printing
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
The review includes: **summary**, **per-file analysis**, **issues rated by severity** (🔴 Critical → 🔵 Nit), **suggestions**, and a **verdict** (✅ LGTM / ⚠️ LGTM with comments / ❌ Needs changes). If no knowledge store is found, the review still works — it just lacks codebase context.
|
|
346
|
-
|
|
347
|
-
---
|
|
348
|
-
|
|
349
|
-
## Prerequisites
|
|
350
|
-
|
|
351
|
-
- **Python ≥ 3.11** (or `uv` which manages its own Python)
|
|
352
|
-
- **Docker** — optional; used for isolated extraction. Falls back to in-process runner automatically if Docker is not available (`--no-docker` forces in-process mode)
|
|
353
|
-
|
|
354
83
|
---
|
|
355
84
|
|
|
356
|
-
##
|
|
357
|
-
|
|
358
|
-
rekipedia ships a **Hermes agent skill** (`rekipedia-agent-skill.md`) that teaches AI assistants (Copilot, Claude Code, Codex) to use rekipedia as their codebase intelligence layer:
|
|
359
|
-
|
|
360
|
-
1. Copy `rekipedia-agent-skill.md` into your Hermes skills directory
|
|
361
|
-
2. Any agent with the skill loaded will automatically scan + query rekipedia before diving into source files
|
|
362
|
-
3. Dramatically reduces context window usage for large codebases
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
|
|
366
|
-
## Agentic Mode
|
|
367
|
-
|
|
368
|
-
rekipedia supports an experimental agentic mode where LLM calls use tool-calling (ReAct) instead of single large context dumps.
|
|
369
|
-
|
|
370
|
-
### Agentic Ask
|
|
85
|
+
## Python API
|
|
371
86
|
|
|
372
|
-
|
|
87
|
+
```python
|
|
88
|
+
import rekipedia
|
|
373
89
|
|
|
374
|
-
|
|
375
|
-
|
|
90
|
+
result = rekipedia.scan("/path/to/repo")
|
|
91
|
+
answer = rekipedia.ask("/path/to/repo", "How does the auth flow work?")
|
|
92
|
+
print(answer.text)
|
|
93
|
+
for c in answer.citations:
|
|
94
|
+
print(f" {c.file}:{c.line}")
|
|
376
95
|
```
|
|
377
96
|
|
|
378
|
-
|
|
379
|
-
- `search_code(query)` — semantic search over source code
|
|
380
|
-
- `get_symbol(name)` — look up symbol location and signature
|
|
381
|
-
- `get_page(slug)` — fetch a wiki page on demand
|
|
382
|
-
- `get_relationships(target)` — dependency graph for a symbol/file
|
|
383
|
-
- `finish(answer)` — provide final answer
|
|
384
|
-
|
|
385
|
-
Max iterations can be configured with `REKIPEDIA_ASK_MAX_ITER` (default: 5).
|
|
97
|
+
Async variants: `rekipedia.scan_async()`, `rekipedia.ask_async()`
|
|
386
98
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
Set `REKIPEDIA_AGENT_PLANNER=1` to enable tool-calling wiki structure planning:
|
|
390
|
-
|
|
391
|
-
```bash
|
|
392
|
-
REKIPEDIA_AGENT_PLANNER=1 reki scan .
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
The planner builds the wiki structure incrementally using tool calls instead of generating a single large JSON response.
|
|
99
|
+
---
|
|
396
100
|
|
|
397
101
|
## Development
|
|
398
102
|
|
|
399
103
|
```bash
|
|
400
|
-
#
|
|
401
|
-
make
|
|
402
|
-
|
|
403
|
-
#
|
|
404
|
-
make test
|
|
405
|
-
|
|
406
|
-
# Lint
|
|
407
|
-
make lint
|
|
408
|
-
|
|
409
|
-
# Build wheel + npm tarball
|
|
410
|
-
make build
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
### Release
|
|
414
|
-
|
|
415
|
-
```bash
|
|
416
|
-
PYPI_TOKEN=*** NPM_TOKEN=*** make release
|
|
417
|
-
|
|
418
|
-
# Full release: build + tag + push + PyPI + npm
|
|
419
|
-
make release-all PYPI_TOKEN=*** NPM_TOKEN=***
|
|
420
|
-
# With version bump
|
|
421
|
-
make release-all PYPI_TOKEN=*** NPM_TOKEN=*** VERSION=0.5.0
|
|
104
|
+
make dev # install deps
|
|
105
|
+
make test # run tests
|
|
106
|
+
make lint # lint
|
|
107
|
+
make build # wheel + npm tarball
|
|
422
108
|
```
|
|
423
109
|
|
|
424
110
|
---
|
|
@@ -426,6 +112,3 @@ make release-all PYPI_TOKEN=*** NPM_TOKEN=*** VERSION=0.5.0
|
|
|
426
112
|
## License
|
|
427
113
|
|
|
428
114
|
Proprietary and Confidential — Copyright © 2026 Eddie Chan. All Rights Reserved.
|
|
429
|
-
|
|
430
|
-
Unauthorized copying, distribution, or modification of this software is strictly prohibited.
|
|
431
|
-
See [LICENSE](LICENSE) for details.
|
package/package.json
CHANGED