dsh-codebase-chat 0.22.0 → 0.23.0
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 +185 -200
- package/dist/cli.js +114 -13
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +24 -2
- package/dist/index.js +62 -11
- package/dist/index.js.map +1 -1
- package/lib/index.js +41 -13
- package/package.json +9 -10
package/README.md
CHANGED
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<h1 align="center">dsh-codebase-chat</h1>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<strong>Local-first codebase intelligence — chat, audit, refactor, and report on any repository.</strong><br>
|
|
9
|
-
DeepSeek Harness plugin · standalone MCP server · CLI
|
|
2
|
+
<a href="https://shinzarou-eng.github.io/dsh-codebase-chat">
|
|
3
|
+
<img src="https://raw.githubusercontent.com/shinzarou-eng/dsh-codebase-chat/main/docs/assets/social-preview.png" alt="dsh-codebase-chat — Your codebase, fully understood" width="100%">
|
|
4
|
+
</a>
|
|
10
5
|
</p>
|
|
11
6
|
|
|
12
7
|
<p align="center">
|
|
13
|
-
<a href="https://www.npmjs.com/package/dsh-codebase-chat"><img src="https://img.shields.io/npm/v/dsh-codebase-chat?logo=npm&label=plugin&color=
|
|
14
|
-
<a href="https://www.npmjs.com/package/dsh-codebase-chat-mcp"><img src="https://img.shields.io/npm/v/dsh-codebase-chat-mcp?logo=npm&label=mcp&color=
|
|
15
|
-
<a href="https://github.com/shinzarou-eng/dsh-codebase-chat/blob/main/LICENSE"><img src="https://img.shields.io/github/license/shinzarou-eng/dsh-codebase-chat?color=
|
|
16
|
-
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-
|
|
17
|
-
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-
|
|
18
|
-
<a href="https://github.com/shinzarou-eng/dsh-codebase-chat/stargazers"><img src="https://img.shields.io/github/stars/shinzarou-eng/dsh-codebase-chat?style=social" alt="stars"></a>
|
|
8
|
+
<a href="https://www.npmjs.com/package/dsh-codebase-chat"><img src="https://img.shields.io/npm/v/dsh-codebase-chat?logo=npm&label=plugin&color=6ec2ff" alt="npm plugin"></a>
|
|
9
|
+
<a href="https://www.npmjs.com/package/dsh-codebase-chat-mcp"><img src="https://img.shields.io/npm/v/dsh-codebase-chat-mcp?logo=npm&label=mcp&color=a78bfa" alt="npm mcp"></a>
|
|
10
|
+
<a href="https://github.com/shinzarou-eng/dsh-codebase-chat/blob/main/LICENSE"><img src="https://img.shields.io/github/license/shinzarou-eng/dsh-codebase-chat?color=93a1b5" alt="license"></a>
|
|
11
|
+
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D20-4ade80?logo=nodedotjs" alt="node >= 20"></a>
|
|
12
|
+
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-22d3ee" alt="MCP compatible"></a>
|
|
19
13
|
</p>
|
|
20
14
|
|
|
21
15
|
<p align="center">
|
|
22
16
|
<a href="https://shinzarou-eng.github.io/dsh-codebase-chat"><strong>Website</strong></a> ·
|
|
23
|
-
<a href="
|
|
24
|
-
<a href="#tool-suite">Tools</a> ·
|
|
17
|
+
<a href="mcp/README.md">MCP docs</a> ·
|
|
25
18
|
<a href="ROADMAP.md">Roadmap</a> ·
|
|
26
19
|
<a href="CHANGELOG.md">Changelog</a> ·
|
|
27
20
|
<a href="CONTRIBUTING.md">Contributing</a>
|
|
@@ -29,75 +22,133 @@
|
|
|
29
22
|
|
|
30
23
|
<br>
|
|
31
24
|
|
|
25
|
+
## Get started
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npx dsh-codebase-chat-mcp setup
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
The wizard detects **Claude, Cursor, Windsurf and VS Code**, writes the MCP config, done.
|
|
32
|
+
No JSON to edit — and **no API key**: in `promptOnly` mode your host model does the thinking.
|
|
33
|
+
|
|
34
|
+
Other paths — DeepSeek Harness plugin · CLI · from source · manual config: **[Reference](#reference)**.
|
|
35
|
+
|
|
32
36
|
<p align="center">
|
|
33
|
-
<img src="docs/assets/demo.gif" alt="dsh-codebase-chat CLI demo" width="
|
|
34
|
-
<em>
|
|
37
|
+
<img src="docs/assets/demo.gif" alt="dsh-codebase-chat CLI demo" width="840"><br>
|
|
38
|
+
<em>Live terminal capture — <a href="docs/assets/demo-mcp.gif">MCP session</a> · <a href="docs/assets/demo-fr.gif">French mode</a></em>
|
|
35
39
|
</p>
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
## What a real session looks like
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
Run on this repository — the exact text the tools return:
|
|
40
44
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
> I fix first?"* — in French or English. Every answer cites the exact file and line it
|
|
44
|
-
> came from, so you can verify it in seconds. Nothing is uploaded anywhere.
|
|
45
|
+
```console
|
|
46
|
+
$ npx dsh-codebase-chat --project . --health
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
| **MCP server** | A plug format that lets AI assistants (Claude, Cursor…) use extra tools. Install once, your IDE can "see" your code. |
|
|
49
|
-
| **Index** | Like the index at the back of a book — a map of every function and file, so answers are instant. |
|
|
50
|
-
| **Prompt-only mode** | The tool prepares the context; your existing AI writes the answer. No extra API key, no extra cost. |
|
|
51
|
-
| **Deterministic analysis** | Checks computed directly from your code — same input, same result, every time. No guessing. |
|
|
48
|
+
== STATIC ANALYSIS — dsh-codebase-chat ==
|
|
49
|
+
Health score: 52/100 (D) · 33 files analyzed · 65 local imports
|
|
52
50
|
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
● Circular dependencies (0)
|
|
52
|
+
none
|
|
55
53
|
|
|
56
|
-
|
|
54
|
+
● Unused files (candidates) (1)
|
|
55
|
+
lib/client.js
|
|
57
56
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
● Unused exports (candidates) (45)
|
|
58
|
+
lib/cache.js:21 — cachePath
|
|
59
|
+
lib/index.js:2952 — normalizeLabels
|
|
60
|
+
lib/index.js:2952 — getProjectName
|
|
61
|
+
…
|
|
63
62
|
|
|
64
|
-
|
|
63
|
+
● Duplicate code blocks (2)
|
|
64
|
+
12 lines × 2 files — lib/index.js, src/project.ts
|
|
65
|
+
6 lines × 2 files — src/indexer.ts, src/retriever.ts
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
● Complexity hotspots (13)
|
|
68
|
+
lib/index.js — score 418
|
|
69
|
+
src/analysis.ts — score 81
|
|
70
|
+
lib/client.js — score 55
|
|
71
|
+
…
|
|
72
|
+
```
|
|
67
73
|
|
|
68
|
-
|
|
74
|
+
```console
|
|
75
|
+
$ npx dsh-codebase-chat --project . --search "health score computation"
|
|
69
76
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
`[source: file:line]` citations, confidence scores, and severity labels.
|
|
77
|
+
--- src/analysis.ts :: formatHealthReportMd (FUNCTION) [source: src/analysis.ts:285-353] ---
|
|
78
|
+
--- src/analysis.ts :: analyzeProject (FUNCTION) [source: src/analysis.ts:149-232] ---
|
|
79
|
+
--- src/analysis.ts :: HealthReport (TYPE) [source: src/analysis.ts:15-26] ---
|
|
74
80
|
|
|
75
|
-
|
|
76
|
-
- **Bilingual** — every prompt, report, and UI string in French and English.
|
|
77
|
-
- **Everywhere** — DeepSeek Harness plugin, standalone MCP server (Cursor, Claude, Windsurf…), and a plain CLI.
|
|
78
|
-
- **Decision-grade output** — not just answers: CTO briefs, audits, TASKS.md plans, board reports.
|
|
81
|
+
$ npx dsh-codebase-chat --project . --ask "how is the index cached?"
|
|
79
82
|
|
|
80
|
-
|
|
83
|
+
> dsh-codebase-chat · prompt-only mode (no API key)
|
|
84
|
+
> Chunks: 81 · Tokens: 59,934 → handed to the host model
|
|
85
|
+
> Cite every technical claim with [source: relative/path:line].
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`codebase_health` runs fully offline — deterministic, no LLM, same input → same score.
|
|
89
|
+
Every answer from `codebase_chat` arrives with `[source: file:line]` receipts you can verify in seconds.
|
|
90
|
+
|
|
91
|
+
## Why it wins
|
|
92
|
+
|
|
93
|
+
| | Paste into a chat | Hosted assistant | **dsh-codebase-chat** |
|
|
94
|
+
| --- | :-: | :-: | :-: |
|
|
95
|
+
| Sees your **whole** repo, not one file | ❌ | ✅ | ✅ |
|
|
96
|
+
| `[source: file:line]` citations | ❌ | ~ | ✅ |
|
|
97
|
+
| Code stays on your machine | ❌ | ❌ | ✅ |
|
|
98
|
+
| Inside Claude / Cursor / Windsurf | ❌ | ~ | ✅ |
|
|
99
|
+
| Deterministic health score, no LLM | ❌ | ❌ | ✅ |
|
|
100
|
+
| Free — no API key, no account | ~ | ❌ | ✅ |
|
|
101
|
+
|
|
102
|
+
## How it works
|
|
103
|
+
|
|
104
|
+
<p align="center">
|
|
105
|
+
<img src="docs/assets/how-it-works.png" alt="Pipeline: source → AST index → retrieval → briefing → host model → cited answer, all local-first" width="100%">
|
|
106
|
+
</p>
|
|
107
|
+
|
|
108
|
+
`/codebase-apply` writes safely — **dry-run** · **`.dsh-backups/`** before overwrite · **protected paths** · never outside the project.
|
|
109
|
+
|
|
110
|
+
## The 12 tools
|
|
111
|
+
|
|
112
|
+
| Understand | Decide | Act | Explore |
|
|
113
|
+
| --- | --- | --- | --- |
|
|
114
|
+
| `codebase_chat` | `codebase_intelligence` | `codebase_refactor` | `codebase_player` |
|
|
115
|
+
| `codebase_search` | `codebase_audit` | `codebase_tasks` | `codebase_crea` |
|
|
116
|
+
| `codebase_explain` | `codebase_report` | | |
|
|
117
|
+
| `codebase_health` | `codebase_ceo` | | |
|
|
81
118
|
|
|
82
|
-
|
|
119
|
+
Same engine, three surfaces: **MCP tools** in your IDE, **slash commands** in DeepSeek Harness, **CLI flags** anywhere. Every tool takes `lang` (`fr`/`en`), `embed`, `promptOnly`, `maxTokens`.
|
|
83
120
|
|
|
84
|
-
|
|
121
|
+
## Reference
|
|
122
|
+
|
|
123
|
+
<details>
|
|
124
|
+
<summary><strong>Install — all paths</strong></summary>
|
|
125
|
+
<br>
|
|
126
|
+
|
|
127
|
+
**DeepSeek Harness plugin**
|
|
85
128
|
|
|
86
129
|
```bash
|
|
87
130
|
dsh plugin --profile web add dsh-codebase-chat
|
|
88
|
-
# without a global dsh install:
|
|
89
|
-
npx -p @deepseek-ai/dsh dsh plugin --profile web add dsh-codebase-chat
|
|
90
131
|
```
|
|
91
132
|
|
|
92
|
-
Then restart `dsh web
|
|
133
|
+
Then restart `dsh web` → `http://127.0.0.1:3080` → **Codebase Pro** button.
|
|
93
134
|
|
|
94
|
-
|
|
135
|
+
**CLI**
|
|
95
136
|
|
|
96
137
|
```bash
|
|
97
|
-
npx dsh-codebase-chat
|
|
138
|
+
npx dsh-codebase-chat --project C:\my-app --ask "how is auth handled?"
|
|
139
|
+
npx dsh-codebase-chat --project C:\my-app --health # offline, no LLM
|
|
140
|
+
npx dsh-codebase-chat --project C:\my-app --health --diff main # only what changed
|
|
141
|
+
npx dsh-codebase-chat --project C:\my-app --watch # index stays hot while you code
|
|
98
142
|
```
|
|
99
143
|
|
|
100
|
-
|
|
144
|
+
**From source**
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
git clone https://github.com/shinzarou-eng/dsh-codebase-chat.git
|
|
148
|
+
cd dsh-codebase-chat && pnpm install && pnpm build
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Manual MCP config**
|
|
101
152
|
|
|
102
153
|
```json
|
|
103
154
|
{
|
|
@@ -110,58 +161,13 @@ Or configure manually:
|
|
|
110
161
|
}
|
|
111
162
|
```
|
|
112
163
|
|
|
113
|
-
|
|
114
|
-
> `promptOnly` mode and hands the assembled context to your host model. See
|
|
115
|
-
> [`mcp/README.md`](mcp/README.md) for direct-LLM configuration.
|
|
116
|
-
|
|
117
|
-
### Option C — CLI
|
|
118
|
-
|
|
119
|
-
```bash
|
|
120
|
-
npx dsh-codebase-chat --project C:\my-app --ask "how is auth handled?"
|
|
121
|
-
npx dsh-codebase-chat --project C:\my-app --search "rate limiting"
|
|
122
|
-
npx dsh-codebase-chat --project C:\my-app --file src/auth.ts
|
|
123
|
-
npx dsh-codebase-chat --project C:\my-app --stats
|
|
124
|
-
npx dsh-codebase-chat --project C:\my-app --health # deterministic static analysis, no LLM
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`--health` runs entirely offline: circular dependencies, unused files/exports, duplicated
|
|
128
|
-
blocks, complexity hotspots, and a health score — handy as a quick quality gate.
|
|
129
|
-
|
|
130
|
-
The first run builds a cached index under `CODEBASE_CACHE_DIR`; subsequent runs are incremental.
|
|
131
|
-
|
|
132
|
-
### From source
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
git clone https://github.com/shinzarou-eng/dsh-codebase-chat.git
|
|
136
|
-
cd dsh-codebase-chat
|
|
137
|
-
pnpm install && pnpm build
|
|
138
|
-
```
|
|
164
|
+
Without `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` the server runs `promptOnly`. Set either key for direct-LLM calls — see [`mcp/README.md`](mcp/README.md).
|
|
139
165
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
## Tool suite
|
|
143
|
-
|
|
144
|
-
Every capability is exposed as a DSH tool, a slash command, and an MCP tool.
|
|
166
|
+
</details>
|
|
145
167
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
| `codebase_search` | Find symbols, terms, and usages across the repo |
|
|
150
|
-
| `codebase_explain` | Explain a file or symbol — fallback symbol search included |
|
|
151
|
-
| `codebase_refactor` | Propose a concrete refactor with Before/After diff |
|
|
152
|
-
| `codebase_intelligence` | Full CTO brief: architecture, debt, security, roadmap |
|
|
153
|
-
| `codebase_audit` | Tech-debt and non-conformity scan with severity |
|
|
154
|
-
| `codebase_report` | Strategic board report — SWOT, risks, opportunities |
|
|
155
|
-
| `codebase_ceo` | One-page executive brief |
|
|
156
|
-
| `codebase_tasks` | Generate a sprinted `TASKS.md` action plan |
|
|
157
|
-
| `codebase_player` | UX / playthrough brief from a user's point of view |
|
|
158
|
-
| `codebase_crea` | Creative and marketing angles extracted from the code |
|
|
159
|
-
| `codebase_health` | **Deterministic** static analysis — circular deps, dead code, duplication, complexity, health score. No LLM needed |
|
|
160
|
-
|
|
161
|
-
Common parameters: `projectPath`, `lang` (`fr`/`en`), `embed` (local semantic embeddings),
|
|
162
|
-
`promptOnly` (MCP), `style` (reports).
|
|
163
|
-
|
|
164
|
-
### Slash commands (DeepSeek Harness)
|
|
168
|
+
<details>
|
|
169
|
+
<summary><strong>Slash commands (DeepSeek Harness)</strong></summary>
|
|
170
|
+
<br>
|
|
165
171
|
|
|
166
172
|
```powershell
|
|
167
173
|
dsh --profile headless '/codebase "how is auth handled?" --project C:\my-app'
|
|
@@ -176,38 +182,11 @@ dsh --profile headless '/codebase-build --project C:\my-app'
|
|
|
176
182
|
dsh --profile headless '/codebase-git --project C:\my-app'
|
|
177
183
|
```
|
|
178
184
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
## How it works
|
|
182
|
-
|
|
183
|
-
```mermaid
|
|
184
|
-
graph LR
|
|
185
|
-
A[Query] --> B[Index]
|
|
186
|
-
B --> C[Retrieve]
|
|
187
|
-
C --> D[Prompt]
|
|
188
|
-
D --> E[LLM]
|
|
189
|
-
E --> F[Cited answer]
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
1. **Index** — real AST extraction (Babel for JS/TS, tree-sitter WASM for Python, Go, Rust, Java, C# and PHP, regex fallback elsewhere) builds a symbol-level index, cached on disk and refreshed incrementally (mtime/size based — no full re-reads).
|
|
193
|
-
2. **Retrieve** — lexical scoring plus optional local multilingual embeddings (`Xenova/paraphrase-multilingual-MiniLM-L12-v2`) select the most relevant chunks inside a token budget.
|
|
194
|
-
3. **Prompt** — a language-aware prompt is assembled with module graphs, metrics, debt signals, and file excerpts.
|
|
195
|
-
4. **Answer** — the model responds with `[source: file:line]` citations, `[Confidence: X%]`, and `[Severity: …]` labels.
|
|
196
|
-
|
|
197
|
-
### Safe apply pipeline
|
|
198
|
-
|
|
199
|
-
`/codebase-apply` and `/codebase-apply-tasks` support dry-run, create `.dsh-backups/` copies
|
|
200
|
-
before overwriting, enforce protected paths, and never write outside the selected project.
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## Configuration
|
|
205
|
-
|
|
206
|
-
### `.codebase-chat.json` — per-project settings
|
|
185
|
+
</details>
|
|
207
186
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
187
|
+
<details>
|
|
188
|
+
<summary><strong><code>.codebase-chat.json</code> — per-project settings</strong></summary>
|
|
189
|
+
<br>
|
|
211
190
|
|
|
212
191
|
```json
|
|
213
192
|
{
|
|
@@ -222,28 +201,49 @@ missing or malformed file falls back to built-in defaults.
|
|
|
222
201
|
|
|
223
202
|
| Key | Effect |
|
|
224
203
|
| --- | --- |
|
|
225
|
-
| `lang` | Default prompt language (`en
|
|
226
|
-
| `maxTokens` |
|
|
227
|
-
| `ignoreDirs` | Extra
|
|
228
|
-
| `
|
|
229
|
-
| `
|
|
230
|
-
|
|
204
|
+
| `lang` | Default prompt language (`en`/`fr`) — CLI, MCP tools, slash commands |
|
|
205
|
+
| `maxTokens` | Context budget when the caller passes none |
|
|
206
|
+
| `ignoreDirs` / `ignoreFiles` | Extra names skipped by indexing, `codebase_health`, file tree |
|
|
207
|
+
| `ignoreGlobs` | Globs on project-relative paths — `**` spans dirs, `*` one segment |
|
|
208
|
+
| `protectedPaths` | Paths the apply pipeline can never patch |
|
|
209
|
+
|
|
210
|
+
</details>
|
|
231
211
|
|
|
232
|
-
|
|
212
|
+
<details>
|
|
213
|
+
<summary><strong>Environment variables</strong></summary>
|
|
214
|
+
<br>
|
|
233
215
|
|
|
234
216
|
| Variable | Default | Purpose |
|
|
235
217
|
| --- | --- | --- |
|
|
236
218
|
| `CODEBASE_CACHE_DIR` | OS cache dir | Where the index cache lives |
|
|
237
|
-
| `DSH_PROJECT_ALIASES` | — | Extra `name=path`
|
|
238
|
-
| `DSH_DAKO_PROJECT` | — | Override the built-in `dako` alias
|
|
219
|
+
| `DSH_PROJECT_ALIASES` | — | Extra `name=path` aliases (`;`-separated) |
|
|
220
|
+
| `DSH_DAKO_PROJECT` | — | Override the built-in `dako` alias |
|
|
239
221
|
| `DSH_PROTECTED_PATHS` | built-in list | Extra paths that can never be patched |
|
|
240
|
-
| `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` | — |
|
|
222
|
+
| `DEEPSEEK_API_KEY` / `OPENAI_API_KEY` | — | Direct-LLM mode only |
|
|
241
223
|
| `DEEPSEEK_BASE_URL` / `OPENAI_BASE_URL` | `https://api.deepseek.com/v1` | Custom endpoint |
|
|
242
224
|
| `CODEBASE_MODEL` | `deepseek-chat` | Model for direct-LLM mode |
|
|
243
225
|
|
|
244
|
-
|
|
226
|
+
</details>
|
|
227
|
+
|
|
228
|
+
<details>
|
|
229
|
+
<summary><strong>Plain words — 🇫🇷 inside</strong></summary>
|
|
230
|
+
<br>
|
|
231
|
+
|
|
232
|
+
Point it at a folder of code. Ask questions like a human — *"How does login work?"*, *"What should I fix first?"* — in French or English. Every answer cites the exact file and line it came from. **Nothing is uploaded anywhere.**
|
|
233
|
+
|
|
234
|
+
*Pointez-le vers un dossier de code. Posez vos questions en langage clair. Chaque réponse cite le fichier et la ligne exacts. **Rien n'est envoyé sur internet.***
|
|
235
|
+
|
|
236
|
+
| Term | Meaning |
|
|
237
|
+
| --- | --- |
|
|
238
|
+
| **MCP server** | A plug format that lets AI assistants use extra tools. Install once — your IDE can "see" your code. |
|
|
239
|
+
| **Prompt-only** | The tool prepares the context; your existing AI writes the answer. No extra key, no extra cost. |
|
|
240
|
+
| **Deterministic** | Computed directly from your code — same input, same result, every time. |
|
|
241
|
+
|
|
242
|
+
</details>
|
|
245
243
|
|
|
246
|
-
|
|
244
|
+
<details>
|
|
245
|
+
<summary><strong>Project layout & dev</strong></summary>
|
|
246
|
+
<br>
|
|
247
247
|
|
|
248
248
|
```
|
|
249
249
|
├── lib/ DeepSeek Harness plugin (index.js) + Codebase Pro UI (client.js)
|
|
@@ -254,75 +254,60 @@ missing or malformed file falls back to built-in defaults.
|
|
|
254
254
|
└── dist/ Build output (tsup)
|
|
255
255
|
```
|
|
256
256
|
|
|
257
|
-
### Development
|
|
258
|
-
|
|
259
257
|
```bash
|
|
260
|
-
pnpm install
|
|
261
|
-
pnpm build # tsup → dist/
|
|
262
|
-
pnpm test # vitest run
|
|
263
|
-
pnpm typecheck # tsc --noEmit
|
|
258
|
+
pnpm install && pnpm build && pnpm test && pnpm typecheck
|
|
264
259
|
```
|
|
265
260
|
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## FAQ
|
|
269
|
-
|
|
270
|
-
<details>
|
|
271
|
-
<summary><strong>Does it send my code to the cloud?</strong></summary>
|
|
272
|
-
<br>
|
|
273
|
-
No. Indexing, retrieval, and prompt building run on your machine. In MCP prompt-only mode, nothing leaves your machine at all — the host model reads the assembled context directly.
|
|
274
261
|
</details>
|
|
275
262
|
|
|
276
263
|
<details>
|
|
277
|
-
<summary><strong>
|
|
264
|
+
<summary><strong>FAQ</strong></summary>
|
|
278
265
|
<br>
|
|
279
|
-
Not for the MCP server — without a key it returns the built prompt to the host model. A <code>DEEPSEEK_API_KEY</code> or <code>OPENAI_API_KEY</code> is only needed for direct LLM calls. Inside DeepSeek Harness, the plugin uses your configured model.
|
|
280
|
-
</details>
|
|
281
266
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
<br>
|
|
285
|
-
French and English out of the box via the <code>lang</code> parameter on every tool and command. The prompt builders are designed to be extended.
|
|
286
|
-
</details>
|
|
267
|
+
**Does it send my code to the cloud?**
|
|
268
|
+
No. Indexing, retrieval, and prompt building run on your machine. In prompt-only mode, nothing leaves it at all.
|
|
287
269
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
<br>
|
|
291
|
-
Yes. Apply workflows support dry-run, create backups before overwriting, enforce protected paths, and keep all writes inside the selected project.
|
|
292
|
-
</details>
|
|
270
|
+
**Do I need an API key?**
|
|
271
|
+
Not for the MCP server — without a key it returns the built prompt to the host model. A key is only needed for direct LLM calls. Inside DeepSeek Harness, the plugin uses your configured model.
|
|
293
272
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
<br>
|
|
273
|
+
**Which languages are supported?**
|
|
274
|
+
French and English via `lang` on every tool. Source-side, AST covers JS/TS, Python, Go, Rust, Java, C#, PHP — the rest is indexed line by line.
|
|
297
275
|
|
|
276
|
+
**Is applying patches safe?**
|
|
277
|
+
Yes. Dry-run, backups before overwrite, protected paths, writes stay inside the project.
|
|
278
|
+
|
|
279
|
+
**EADDRINUSE on port 3080?**
|
|
298
280
|
```powershell
|
|
299
281
|
Get-NetTCPConnection -LocalPort 3080 | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
|
|
300
282
|
```
|
|
283
|
+
Then restart `dsh --profile web`.
|
|
301
284
|
|
|
302
|
-
Then restart <code>dsh --profile web</code>.
|
|
303
285
|
</details>
|
|
304
286
|
|
|
305
|
-
|
|
287
|
+
<details>
|
|
288
|
+
<summary><strong>Roadmap</strong></summary>
|
|
289
|
+
<br>
|
|
306
290
|
|
|
307
|
-
|
|
291
|
+
| | |
|
|
292
|
+
| --- | --- |
|
|
293
|
+
| **Shipped** | tree-sitter AST (7 languages), deterministic health score, MCP setup wizard, `.codebase-chat.json`, `--diff` scoping, `--watch` mode |
|
|
294
|
+
| **Next** | GitHub Issues export from TASKS.md, prompt language packs (ES/DE/PT) |
|
|
295
|
+
| **Planned** | VS Code extension, HTTP/SSE transport, PR review mode, report export |
|
|
296
|
+
| **Exploring** | multi-repo workspaces, shared team index cache, CI bot |
|
|
308
297
|
|
|
309
|
-
|
|
298
|
+
<sub>Full detail: <a href="ROADMAP.md">ROADMAP.md</a></sub>
|
|
310
299
|
|
|
311
|
-
|
|
312
|
-
- **Planned**: VS Code extension, HTTP/SSE transport, PR review mode, report export (HTML/PDF)
|
|
313
|
-
- **Exploring**: multi-repo workspaces, shared team index cache, CI bot
|
|
300
|
+
</details>
|
|
314
301
|
|
|
315
302
|
---
|
|
316
303
|
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
[MIT](LICENSE) — Built and maintained by [shinzarou-eng](https://github.com/shinzarou-eng).
|
|
304
|
+
<p align="center">
|
|
305
|
+
<strong>If this project helps you — <a href="https://github.com/shinzarou-eng/dsh-codebase-chat">star it on GitHub</a> ⭐</strong>
|
|
306
|
+
<br><br>
|
|
307
|
+
<a href="https://shinzarou-eng.github.io/dsh-codebase-chat">Website</a> ·
|
|
308
|
+
<a href="https://github.com/shinzarou-eng/dsh-codebase-chat/issues">Issues</a> ·
|
|
309
|
+
<a href="SUPPORT.md">Support</a> ·
|
|
310
|
+
<a href="SECURITY.md">Security</a>
|
|
311
|
+
<br><br>
|
|
312
|
+
<sub><a href="LICENSE">MIT License</a> — built and maintained by <a href="https://github.com/shinzarou-eng">shinzarou-eng</a></sub>
|
|
313
|
+
</p>
|