@proxysoul/soulforge 2.13.2 → 2.14.1

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 CHANGED
@@ -41,139 +41,162 @@
41
41
 
42
42
  <img src="assets/separator.svg" width="100%" height="8" />
43
43
 
44
- ## The agent that already knows your codebase
44
+ ## The agent that treats code as code
45
45
 
46
- Every AI coding tool starts blind. It reads files, greps around, slowly builds a mental model of your codebase. You wait. You pay. The agent is doing orientation work, not real work.
46
+ <table>
47
+ <tr>
48
+ <td align="center" width="33%"><h3>~5 tokens</h3><sub>to change a function return type<br/>(AST edit vs ~100 lines of <code>oldString</code>)</sub></td>
49
+ <td align="center" width="33%"><h3>~$0</h3><sub>average compaction cost<br/>(V2 extracts as you go)</sub></td>
50
+ <td align="center" width="33%"><h3>34 → 5</h3><sub>messages after compaction<br/>with 0 LLM tokens spent</sub></td>
51
+ </tr>
52
+ </table>
47
53
 
48
- SoulForge already knows. It builds a **live dependency graph** on startup and keeps it updated as you work. The agent knows which files matter, what depends on what, and how far an edit will ripple before it writes a single line.
54
+ Every other AI coding tool treats your codebase as text. It `grep`s, it pastes 500-line files into context, it builds `oldString`/`newString` blobs and prays the whitespace matches. Half the turn is orientation. The other half is string-matching roulette.
49
55
 
50
- **Result: ~2x fewer steps, ~2x lower cost on the same tasks.** The agent spends time on real work, not figuring out where things are.
56
+ SoulForge treats code as code. On startup it parses your project into a **live Soul Map** — every file, symbol, import edge — ranked by PageRank and git co-change. Forge opens every turn oriented: it reads single symbols by name (not whole files), edits TS/JS through the AST (symbol kind + name, 65+ ops, zero text matching), and rewrites the rest with line-anchored edits that never drift.
57
+
58
+ **What that means in practice:**
59
+
60
+ - `ast_edit` changes a return type with `value: "Promise<User>"` — no `oldString`, no whitespace failures, no line-offset math.
61
+ - Reads pull one function by name, not an 800-line dump. Context stays lean.
62
+ - V2 compaction serializes structured state as the conversation happens — when context fills, it compacts for free.
63
+ - Sub-agents share a read cache, so 3 parallel explorers don't re-open the same file 3 times.
64
+
65
+ Same work, a fraction of the tokens, a fraction of the seconds.
51
66
 
52
67
  <img src="assets/separator.svg" width="100%" height="8" />
53
68
 
54
- ## What makes it different
69
+ ## Not your average CLI
55
70
 
56
71
  <table>
57
72
  <tr>
58
73
  <td width="50%" valign="top">
59
- <h4>⚡ Live Soul Map</h4>
60
- <p>Graph of every file, symbol, and import, ranked by importance, enriched with git history, updated in real-time. The agent never wastes a turn orienting itself. <a href="docs/repo-map.md">Learn more</a></p>
74
+ <h4>🧠 Live Soul Map</h4>
75
+ <p>SQLite graph of every file, symbol, and import — PageRank-ranked, git-co-change-aware, personalized per turn. Renders into the system prompt with <strong>blast radius</strong> tags so the agent knows which edits ripple. <a href="https://soulforge.proxysoul.com/concepts/repo-map">Learn more</a></p>
61
76
  </td>
62
77
  <td width="50%" valign="top">
63
- <h4>🔪 Surgical reads</h4>
64
- <p>Extracts exactly the function or class it needs by name. A 500-line file becomes a 20-line extraction. 33 languages supported. <a href="docs/architecture.md">Learn more</a></p>
78
+ <h4>🔪 Surgical reads across 33 languages</h4>
79
+ <p>Read a single function by name. A 500-line file becomes a 20-line extraction. TypeScript, Python, Rust, Go, Java, Ruby, C/C++, Swift, Kotlin, Elixir, Zig, Solidity, and more. <a href="https://soulforge.proxysoul.com/concepts/intelligence">Learn more</a></p>
65
80
  </td>
66
81
  </tr>
67
82
  <tr>
68
83
  <td valign="top">
69
- <h4>🤖 Multi-agent dispatch</h4>
70
- <p>Parallel explore, code, and web search agents with shared cache. One agent's discovery reaches others instantly. <a href="docs/agent-bus.md">Learn more</a></p>
84
+ <h4>🤖 Parallel agents with shared cache</h4>
85
+ <p>Forge dispatches explore, code, and web-search agents in parallel. Files one reads are cached for the others — 3 agents don't re-read 3x. Real-time findings propagate between them. <a href="https://soulforge.proxysoul.com/agents/dispatch">Learn more</a></p>
71
86
  </td>
72
87
  <td valign="top">
73
- <h4>💰 Instant compaction</h4>
74
- <p>Context state is tracked as the conversation happens. When it gets long, compaction fires instantly, often with zero LLM cost. <a href="docs/compaction.md">Learn more</a></p>
88
+ <h4>💰 Free compaction</h4>
89
+ <p>V2 compaction tracks structured state as the conversation happens — files touched, decisions, failures, tool results. When context fills up, serialization is instant and typically costs <strong>zero LLM tokens</strong>. <a href="https://soulforge.proxysoul.com/context/compaction">Learn more</a></p>
75
90
  </td>
76
91
  </tr>
77
92
  <tr>
78
93
  <td valign="top">
79
- <h4>🧠 4-tier code intelligence</h4>
80
- <p>LSP, ts-morph, tree-sitter, regex fallback chain. Dual LSP backend, works with or without the editor open. <a href="docs/architecture.md">Learn more</a></p>
94
+ <h4>🎯 One call, complete job</h4>
95
+ <p><code>rename_symbol</code> runs LSP rename, verifies zero dangling refs, reports back. <code>move_symbol</code> moves a symbol and updates every import across TS/JS, Python, and Rust. <code>project</code> auto-detects your toolchain across <strong>23 ecosystems</strong>. <a href="https://soulforge.proxysoul.com/concepts/compound-tools">Learn more</a></p>
81
96
  </td>
82
97
  <td valign="top">
83
- <h4>🔧 Compound tools</h4>
84
- <p><code>rename_symbol</code>, <code>move_symbol</code>, <code>refactor</code>, <code>project</code>. Compiler-guaranteed, one call does the complete job. <a href="docs/compound-tools.md">Learn more</a></p>
98
+ <h4>🔬 AST-native editing</h4>
99
+ <p><code>ast_edit</code> addresses TS/JS symbols by name, not text. 65+ operations. Changing a return type costs <strong>~5 tokens</strong> instead of 100 lines of <code>oldString</code>. Atomic batches, auto-rollback. <a href="https://soulforge.proxysoul.com/tools/ast-edit">Learn more</a></p>
85
100
  </td>
86
101
  </tr>
87
102
  <tr>
88
103
  <td valign="top">
89
- <h4>🎯 Mix-and-match models</h4>
90
- <p>Opus for planning, Sonnet for coding, Haiku for cleanup. 20 providers built-in. Task router gives full control.</p>
104
+ <h4>📝 Your Neovim, embedded</h4>
105
+ <p>Real Neovim in a PTY — your config, your plugins, your LSP servers. Agent edits route through the same editor you use. Over SSH, in tmux, wherever.</p>
91
106
  </td>
92
107
  <td valign="top">
93
- <h4>📝 Embedded Neovim</h4>
94
- <p>Your config, your plugins, your LSP servers. The AI edits through the same editor you use.</p>
108
+ <h4>🎚️ Mix-and-match models</h4>
109
+ <p>Haiku for exploration. Sonnet for code. Flash for compaction. The task router wires a different model to each job — cheap work goes to cheap models. <strong>21 providers</strong> + any OpenAI-compatible API.</p>
95
110
  </td>
96
111
  </tr>
97
- </table>
98
-
99
- <table>
100
112
  <tr>
101
- <td width="50%" valign="top">
102
- <h4>🔌 MCP servers</h4>
103
- <p>Connect to any <a href="https://modelcontextprotocol.io">Model Context Protocol</a> server. stdio, HTTP, SSE transports. Auto-reconnect, namespaced tools. <a href="docs/mcp.md">Learn more</a></p>
113
+ <td valign="top">
114
+ <h4>📱 Reach your forge from anywhere</h4>
115
+ <p><strong>Hearth</strong> turns a running SoulForge into a remote agent. Telegram or Discord. Tap-to-approve for destructive ops, auto-redaction of secrets. Your code never leaves your host. <a href="https://soulforge.proxysoul.com/tools/hearth">Learn more</a></p>
104
116
  </td>
105
- <td width="50%" valign="top">
106
- <h4>🪝 Lifecycle hooks</h4>
107
- <p>13 hook events (PreToolUse, PostToolUse, SessionStart, etc.). Claude Code compatible, drop in your existing <code>.claude/settings.json</code> hooks. <a href="docs/hooks.md">Learn more</a></p>
117
+ <td valign="top">
118
+ <h4>↶ Undo any turn</h4>
119
+ <p>Every prompt is a checkpoint. <code>Ctrl+B</code> / <code>Ctrl+F</code> walks history. Branching from any point rewrites the conversation AND restores files on disk. <a href="https://soulforge.proxysoul.com/tools/checkpoints">Learn more</a></p>
108
120
  </td>
109
121
  </tr>
110
122
  <tr>
111
123
  <td valign="top">
112
- <h4>🧩 Skills</h4>
113
- <p>Installable domain-specific capabilities with approval gates. Browse and install from the community registry with <code>Ctrl+S</code>.</p>
124
+ <h4>📑 Tab-aware file claims</h4>
125
+ <p>Up to 5 tabs per project with independent model, mode, session, and checkpoints. Tabs see each other's claimed files and active agents. Git hard-blocks during cross-tab dispatch, partial commits are impossible. <a href="https://soulforge.proxysoul.com/agents/cross-tab">Learn more</a></p>
114
126
  </td>
115
127
  <td valign="top">
116
- <h4>📑 Multi-tab</h4>
117
- <p>Up to 5 concurrent sessions with per-tab models, file claims, and git coordination. <a href="docs/cross-tab-coordination.md">Learn more</a></p>
128
+ <h4>🪝 Drop-in Claude Code hooks</h4>
129
+ <p>13 lifecycle events (PreToolUse, PostToolUse, compaction, subagents). Reads your existing <code>.claude/settings.json</code> no rewrites. <a href="https://soulforge.proxysoul.com/tools/hooks">Learn more</a></p>
130
+ </td>
131
+ </tr>
132
+ <tr>
133
+ <td valign="top">
134
+ <h4>🔌 MCP-compatible</h4>
135
+ <p>Any <a href="https://modelcontextprotocol.io">Model Context Protocol</a> server works out of the box. stdio, HTTP, SSE. Auto-reconnect, namespaced tools. <a href="https://soulforge.proxysoul.com/tools/mcp">Learn more</a></p>
136
+ </td>
137
+ <td valign="top">
138
+ <h4>🧩 Skills</h4>
139
+ <p>Install domain-specific skills with <code>Ctrl+S</code>. Bun development, Three.js fundamentals, product marketing, whatever. Approval-gated, scoped per session.</p>
118
140
  </td>
119
141
  </tr>
120
142
  </table>
121
143
 
122
144
  <details>
123
- <summary><strong>Even more</strong></summary>
145
+ <summary><strong>And a lot more</strong></summary>
124
146
  <br/>
125
147
 
126
- - **User steering** type while the agent works, messages inject mid-stream. [More](docs/steering.md)
127
- - **Lock-in mode** hides narration, shows only tool activity and final answer
128
- - **Inline images** pixel-perfect images and animated GIFs in chat via Kitty graphics protocol
129
- - **24 themes** Catppuccin, Dracula, Gruvbox, Nord, Tokyo Night, and more. Custom themes with hot reload. [More](docs/themes.md)
130
- - **Code execution** sandboxed Python for data processing and calculations
131
- - **100 slash commands** [Full reference](docs/commands-reference.md)
148
+ - **Steering** type while the agent works, messages inject mid-stream. [More](https://soulforge.proxysoul.com/agents/steering)
149
+ - **Lock-in mode** hide narration, show only tool activity and final answer
150
+ - **Inline images** pixel-perfect images and animated GIFs via Kitty graphics protocol
151
+ - **24 themes** Catppuccin, Dracula, Gruvbox, Nord, Tokyo Night, Rose Pine, and more. Hot-reload custom themes. [More](https://soulforge.proxysoul.com/tools/themes)
152
+ - **Floating terminals** Ghostty-powered PTYs next to the chat
153
+ - **Plan mode** — research, write a structured plan, you approve, then execute. [More](https://soulforge.proxysoul.com/recipes/plan-mode)
154
+ - **Memory** — persistent SQLite memory across sessions, scoped per project or global
155
+ - **Pre-commit enforcement** — `git commit` auto-runs lint + typecheck; fails block the commit
156
+ - **100 slash commands** — [full reference](https://soulforge.proxysoul.com/reference/commands)
132
157
 
133
158
  </details>
134
159
 
135
160
  <br/>
136
161
  <img src="assets/separator.svg" width="100%" height="8" />
137
162
 
138
-
139
- ## Get started
140
-
141
- macOS and Linux. First launch offers to install Neovim and Nerd Fonts if missing.
163
+ ## Install
142
164
 
143
165
  ```bash
144
166
  brew tap proxysoul/tap && brew install soulforge
145
167
  ```
146
168
 
169
+ macOS and Linux. Neovim and a Nerd Font auto-install on first launch.
170
+
147
171
  <details>
148
172
  <summary><strong>Other install methods</strong></summary>
149
173
  <br/>
150
174
 
151
- **Bun (global):**
152
175
  ```bash
176
+ # Bun (global)
153
177
  bun install -g @proxysoul/soulforge
154
- ```
155
178
 
156
- **Prebuilt binary:**
157
- ```bash
158
- # Download from https://github.com/ProxySoul/soulforge/releases/latest
179
+ # Prebuilt binary
180
+ # download from https://github.com/ProxySoul/soulforge/releases/latest
159
181
  tar xzf soulforge-*.tar.gz && cd soulforge-*/ && ./install.sh
160
- ```
161
182
 
162
- **Build from source:**
163
- ```bash
164
- git clone https://github.com/ProxySoul/soulforge.git && cd soulforge && bun install
165
- bun run dev
183
+ # Source
184
+ git clone https://github.com/ProxySoul/soulforge.git && cd soulforge && bun install && bun run dev
166
185
  ```
167
186
 
168
187
  </details>
169
188
 
189
+ ## Get a key
190
+
191
+ Pick any one.
192
+
170
193
  ```bash
171
- soulforge # launch, pick a model with Ctrl+L
172
- soulforge --set-key anthropic sk-ant-... # save a key
173
- soulforge --headless "your prompt here" # non-interactive
194
+ soulforge --set-key llmgateway sk-... # one key for every major model, up to 30% off frontier
195
+ soulforge --set-key anthropic sk-ant-... # or any individual provider you already have
196
+ soulforge # launch, Ctrl+L to pick a model
174
197
  ```
175
198
 
176
- See [GETTING_STARTED.md](GETTING_STARTED.md) for a full walkthrough, or the [full docs](docs/README.md) for everything.
199
+ [All providers](https://soulforge.proxysoul.com/providers) · [Custom providers](https://soulforge.proxysoul.com/providers/custom)
177
200
 
178
201
  <img src="assets/separator.svg" width="100%" height="8" />
179
202
 
@@ -182,93 +205,129 @@ See [GETTING_STARTED.md](GETTING_STARTED.md) for a full walkthrough, or the [ful
182
205
  <table>
183
206
  <thead>
184
207
  <tr>
185
- <th width="160"></th>
208
+ <th width="170"></th>
186
209
  <th>SoulForge</th>
187
210
  <th>Claude Code</th>
188
211
  <th>Codex CLI</th>
189
- <th>Aider</th>
212
+ <th>OpenCode</th>
190
213
  </tr>
191
214
  </thead>
192
215
  <tbody>
193
216
  <tr>
194
217
  <td><strong>Codebase awareness</strong></td>
195
- <td>Live dependency graph with ranking</td>
218
+ <td>Live SQLite graph PageRank + git co-change, blast-radius tags, per-turn personalization</td>
219
+ <td>File reads + grep</td>
220
+ <td>File reads + grep</td>
196
221
  <td>File reads + grep</td>
197
- <td>MCP plugins</td>
198
- <td>Tree-sitter + PageRank</td>
199
222
  </tr>
200
223
  <tr>
201
- <td><strong>Cost optimization</strong></td>
202
- <td>Surgical reads + instant compaction + shared cache + model mixing</td>
224
+ <td><strong>Cost tactics</strong></td>
225
+ <td>Surgical reads, parallel shared cache, free V2 compaction, model-per-task router</td>
203
226
  <td>Auto-compaction</td>
204
227
  <td>Server-side compaction</td>
205
- <td>-</td>
228
+ <td>Auto-compaction</td>
206
229
  </tr>
207
230
  <tr>
208
231
  <td><strong>Code intelligence</strong></td>
209
- <td>4-tier fallback, dual LSP, 33 languages</td>
232
+ <td>LSP → ts-morph tree-sitter → regex, 33 languages, Mason installer (576+ servers)</td>
210
233
  <td>LSP via plugins</td>
211
- <td>MCP-based LSP</td>
212
- <td>Tree-sitter AST</td>
234
+ <td>—</td>
235
+ <td>LSP auto-load</td>
236
+ </tr>
237
+ <tr>
238
+ <td><strong>Editor</strong></td>
239
+ <td>Embedded Neovim — your config</td>
240
+ <td>—</td>
241
+ <td>—</td>
242
+ <td>—</td>
243
+ </tr>
244
+ <tr>
245
+ <td><strong>Remote control</strong></td>
246
+ <td>Hearth: Telegram, Discord</td>
247
+ <td>—</td>
248
+ <td>—</td>
249
+ <td>—</td>
213
250
  </tr>
214
251
  <tr>
215
252
  <td><strong>Multi-agent</strong></td>
216
- <td>Parallel dispatch with shared cache</td>
253
+ <td>Parallel dispatch + shared cache + edit coordination</td>
217
254
  <td>Subagents + Teams</td>
218
255
  <td>Multi-agent v2</td>
219
- <td>Single</td>
256
+ <td>Multi-session subagents</td>
220
257
  </tr>
221
258
  <tr>
222
- <td><strong>Editor</strong></td>
223
- <td>Embedded Neovim (your config)</td>
224
- <td>No</td>
225
- <td>No</td>
226
- <td>No</td>
259
+ <td><strong>Hooks</strong></td>
260
+ <td>13 events, Claude Code drop-in compatible</td>
261
+ <td>Hooks (PreToolUse, etc.)</td>
262
+ <td>—</td>
263
+ <td>—</td>
227
264
  </tr>
228
265
  <tr>
229
266
  <td><strong>Providers</strong></td>
230
- <td>20 + custom</td>
267
+ <td>21 + any OpenAI-compatible</td>
231
268
  <td>Anthropic only</td>
232
269
  <td>OpenAI only</td>
233
- <td>100+ LLMs</td>
270
+ <td>75+ via Models.dev</td>
234
271
  </tr>
235
272
  <tr>
236
273
  <td><strong>License</strong></td>
237
- <td>BSL 1.1</td>
274
+ <td>BSL 1.1 (converts to Apache 2.0 in 2030)</td>
238
275
  <td>Proprietary</td>
239
276
  <td>Apache 2.0</td>
240
- <td>Apache 2.0</td>
277
+ <td>MIT</td>
241
278
  </tr>
242
279
  </tbody>
243
280
  </table>
244
281
 
245
282
  <sub>Verified April 2026. <a href="https://github.com/ProxySoul/soulforge/issues">Report inaccuracies.</a></sub>
246
283
 
247
-
248
284
  <img src="assets/separator.svg" width="100%" height="8" />
249
285
 
250
- ## 20 providers
286
+ ## Real numbers
251
287
 
252
- Anthropic · OpenAI · Google · xAI · Groq · DeepSeek · Mistral · Bedrock · Fireworks · MiniMax · Codex · Copilot · GitHub Models · Ollama · LM Studio · OpenRouter · LLM Gateway · Vercel AI Gateway · Proxy · **any OpenAI-compatible API**
288
+ All from SoulForge's own codebase, on Claude Sonnet 4.6:
253
289
 
254
- Set a key and go: `soulforge --set-key anthropic sk-ant-...` or `export ANTHROPIC_API_KEY=sk-ant-...`
290
+ <table>
291
+ <tr>
292
+ <td><strong>Rename a class across 8 files</strong></td>
293
+ <td>19 steps, $0.228 (text edits) → <strong>3 steps, $0.036</strong> (<code>rename_symbol</code>)</td>
294
+ </tr>
295
+ <tr>
296
+ <td><strong>Change a function return type</strong></td>
297
+ <td>~100 lines of <code>oldString</code>/<code>newString</code> → <strong>~5 tokens</strong> with <code>ast_edit</code></td>
298
+ </tr>
299
+ <tr>
300
+ <td><strong>Compact a 34-message session</strong></td>
301
+ <td>V1 LLM summary: ~8k output tokens, 5-15s → V2: <strong>0 tokens, instant</strong></td>
302
+ </tr>
303
+ <tr>
304
+ <td><strong>Post-compaction conversation</strong></td>
305
+ <td>4.5M prompt tokens → <strong>7.5k tokens</strong> (context utilization 6% → 4%)</td>
306
+ </tr>
307
+ </table>
255
308
 
256
- [Provider setup guide](docs/headless.md#provider-management) · [Custom providers](docs/headless.md#custom-providers)
309
+ Claude Code's Explore subagent averages ~$0.70 per 5-minute research run with Haiku. SoulForge matches it when you route `spark` to Haiku via the task router — with the added benefit of full repo-map context.
257
310
 
258
311
  <img src="assets/separator.svg" width="100%" height="8" />
259
312
 
260
- ## Documentation
261
-
262
- | | |
263
- |---|---|
264
- | **[Architecture](docs/architecture.md)** | System overview, agent tiers, intelligence router |
265
- | **[Repo Map](docs/repo-map.md)** | Graph ranking, co-change analysis, blast radius |
266
- | **[Commands](docs/commands-reference.md)** | All 100 slash commands |
267
- | **[Headless Mode](docs/headless.md)** | CLI flags, JSON output, CI/CD |
268
- | **[Configuration](docs/README.md)** | Config files, task router, custom providers |
269
- | **[Themes](docs/themes.md)** | 24 themes, custom themes, hot reload |
270
- | **[MCP Servers](docs/mcp.md)** | Model Context Protocol integration |
271
- | **[Copilot Provider](docs/copilot-provider.md)** | Setup and legal review |
313
+ ## Try it
314
+
315
+ ```bash
316
+ brew tap proxysoul/tap && brew install soulforge
317
+ cd your-project
318
+ soulforge
319
+ ```
320
+
321
+ Then:
322
+
323
+ ```
324
+ > rename AgentBus to CoordinationBus across the project
325
+ > run tests and commit
326
+ ```
327
+
328
+ Pair a Telegram/Discord bot once with `/hearth pair`, then keep chatting from your phone — the session auto-syncs both ways.
329
+
330
+ Full docs at **[soulforge.proxysoul.com](https://soulforge.proxysoul.com/introduction)**.
272
331
 
273
332
  <img src="assets/separator.svg" width="100%" height="8" />
274
333