helixmind 0.1.2 → 0.2.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.
Files changed (101) hide show
  1. package/README.md +346 -207
  2. package/dist/cli/agent/loop.d.ts +4 -0
  3. package/dist/cli/agent/loop.d.ts.map +1 -1
  4. package/dist/cli/agent/loop.js +9 -1
  5. package/dist/cli/agent/loop.js.map +1 -1
  6. package/dist/cli/agent/permissions.d.ts.map +1 -1
  7. package/dist/cli/agent/permissions.js +7 -0
  8. package/dist/cli/agent/permissions.js.map +1 -1
  9. package/dist/cli/agent/tools/browser-click.d.ts +2 -0
  10. package/dist/cli/agent/tools/browser-click.d.ts.map +1 -0
  11. package/dist/cli/agent/tools/browser-click.js +35 -0
  12. package/dist/cli/agent/tools/browser-click.js.map +1 -0
  13. package/dist/cli/agent/tools/browser-close.d.ts +2 -0
  14. package/dist/cli/agent/tools/browser-close.d.ts.map +1 -0
  15. package/dist/cli/agent/tools/browser-close.js +27 -0
  16. package/dist/cli/agent/tools/browser-close.js.map +1 -0
  17. package/dist/cli/agent/tools/browser-navigate.d.ts +2 -0
  18. package/dist/cli/agent/tools/browser-navigate.d.ts.map +1 -0
  19. package/dist/cli/agent/tools/browser-navigate.js +27 -0
  20. package/dist/cli/agent/tools/browser-navigate.js.map +1 -0
  21. package/dist/cli/agent/tools/browser-open.d.ts +2 -0
  22. package/dist/cli/agent/tools/browser-open.d.ts.map +1 -0
  23. package/dist/cli/agent/tools/browser-open.js +38 -0
  24. package/dist/cli/agent/tools/browser-open.js.map +1 -0
  25. package/dist/cli/agent/tools/browser-screenshot.d.ts +2 -0
  26. package/dist/cli/agent/tools/browser-screenshot.d.ts.map +1 -0
  27. package/dist/cli/agent/tools/browser-screenshot.js +68 -0
  28. package/dist/cli/agent/tools/browser-screenshot.js.map +1 -0
  29. package/dist/cli/agent/tools/browser-type.d.ts +2 -0
  30. package/dist/cli/agent/tools/browser-type.d.ts.map +1 -0
  31. package/dist/cli/agent/tools/browser-type.js +33 -0
  32. package/dist/cli/agent/tools/browser-type.js.map +1 -0
  33. package/dist/cli/agent/tools/registry.d.ts +10 -0
  34. package/dist/cli/agent/tools/registry.d.ts.map +1 -1
  35. package/dist/cli/agent/tools/registry.js +12 -0
  36. package/dist/cli/agent/tools/registry.js.map +1 -1
  37. package/dist/cli/brain/control-protocol.d.ts +83 -2
  38. package/dist/cli/brain/control-protocol.d.ts.map +1 -1
  39. package/dist/cli/brain/control-protocol.js.map +1 -1
  40. package/dist/cli/brain/generator.d.ts +9 -1
  41. package/dist/cli/brain/generator.d.ts.map +1 -1
  42. package/dist/cli/brain/generator.js +36 -0
  43. package/dist/cli/brain/generator.js.map +1 -1
  44. package/dist/cli/brain/relay-client.d.ts.map +1 -1
  45. package/dist/cli/brain/relay-client.js +8 -2
  46. package/dist/cli/brain/relay-client.js.map +1 -1
  47. package/dist/cli/brain/server.d.ts.map +1 -1
  48. package/dist/cli/brain/server.js +5 -0
  49. package/dist/cli/brain/server.js.map +1 -1
  50. package/dist/cli/brain/web-chat-handler.d.ts +26 -0
  51. package/dist/cli/brain/web-chat-handler.d.ts.map +1 -0
  52. package/dist/cli/brain/web-chat-handler.js +130 -0
  53. package/dist/cli/brain/web-chat-handler.js.map +1 -0
  54. package/dist/cli/browser/chrome-finder.d.ts +12 -0
  55. package/dist/cli/browser/chrome-finder.d.ts.map +1 -0
  56. package/dist/cli/browser/chrome-finder.js +74 -0
  57. package/dist/cli/browser/chrome-finder.js.map +1 -0
  58. package/dist/cli/browser/controller.d.ts +51 -0
  59. package/dist/cli/browser/controller.d.ts.map +1 -0
  60. package/dist/cli/browser/controller.js +152 -0
  61. package/dist/cli/browser/controller.js.map +1 -0
  62. package/dist/cli/browser/vision.d.ts +38 -0
  63. package/dist/cli/browser/vision.d.ts.map +1 -0
  64. package/dist/cli/browser/vision.js +123 -0
  65. package/dist/cli/browser/vision.js.map +1 -0
  66. package/dist/cli/bugs/journal.d.ts +2 -0
  67. package/dist/cli/bugs/journal.d.ts.map +1 -1
  68. package/dist/cli/bugs/journal.js +4 -0
  69. package/dist/cli/bugs/journal.js.map +1 -1
  70. package/dist/cli/checkpoints/store.d.ts.map +1 -1
  71. package/dist/cli/checkpoints/store.js +6 -0
  72. package/dist/cli/checkpoints/store.js.map +1 -1
  73. package/dist/cli/commands/chat.d.ts.map +1 -1
  74. package/dist/cli/commands/chat.js +273 -83
  75. package/dist/cli/commands/chat.js.map +1 -1
  76. package/dist/cli/context/session-buffer.d.ts.map +1 -1
  77. package/dist/cli/context/session-buffer.js +6 -0
  78. package/dist/cli/context/session-buffer.js.map +1 -1
  79. package/dist/cli/providers/openai.d.ts.map +1 -1
  80. package/dist/cli/providers/openai.js +36 -7
  81. package/dist/cli/providers/openai.js.map +1 -1
  82. package/dist/cli/providers/types.d.ts +10 -1
  83. package/dist/cli/providers/types.d.ts.map +1 -1
  84. package/dist/cli/ui/activity.d.ts +9 -32
  85. package/dist/cli/ui/activity.d.ts.map +1 -1
  86. package/dist/cli/ui/activity.js +40 -119
  87. package/dist/cli/ui/activity.js.map +1 -1
  88. package/dist/cli/ui/bottom-chrome.d.ts +73 -0
  89. package/dist/cli/ui/bottom-chrome.d.ts.map +1 -0
  90. package/dist/cli/ui/bottom-chrome.js +213 -0
  91. package/dist/cli/ui/bottom-chrome.js.map +1 -0
  92. package/dist/cli/ui/command-suggest.d.ts +5 -3
  93. package/dist/cli/ui/command-suggest.d.ts.map +1 -1
  94. package/dist/cli/ui/command-suggest.js +8 -6
  95. package/dist/cli/ui/command-suggest.js.map +1 -1
  96. package/dist/spiral/injection.d.ts.map +1 -1
  97. package/dist/spiral/injection.js +16 -5
  98. package/dist/spiral/injection.js.map +1 -1
  99. package/dist/utils/tokens.d.ts +1 -1
  100. package/dist/utils/tokens.js +1 -1
  101. package/package.json +4 -1
package/README.md CHANGED
@@ -1,207 +1,346 @@
1
- <div align="center">
2
-
3
- # 🧠 HelixMind
4
-
5
- **AI Coding Assistant with Persistent Spiral Memory**
6
-
7
- [![npm version](https://img.shields.io/npm/v/helixmind?color=blue&logo=npm)](https://www.npmjs.com/package/helixmind)
8
- [![License](https://img.shields.io/badge/License-AGPL_3.0-blue?logo=gnu)](LICENSE)
9
- [![Node](https://img.shields.io/badge/Node-18%2B-green?logo=node.js)](https://nodejs.org)
10
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.0%2B-blue?logo=typescript)](https://www.typescriptlang.org/)
11
-
12
- *Remembers context across sessions. Learns from every interaction.*
13
-
14
- [Installation](#-installation) • [Features](#-features) • [Quick Start](#-quick-start) • [Documentation](#-documentation)
15
-
16
- </div>
17
-
18
- ---
19
-
20
- ## ✨ Features
21
-
22
- <table>
23
- <tr>
24
- <td width="50%">
25
-
26
- ### 🔄 Spiral Memory
27
- **5-level hierarchical memory** that persists across sessions. Context flows between levels based on relevance and recency.
28
-
29
- </td>
30
- <td width="50%">
31
-
32
- ### 🤖 Multi-Provider
33
- **Claude, GPT-4, Ollama** and more. Switch seamlessly between AI providers.
34
-
35
- </td>
36
- </tr>
37
- <tr>
38
- <td width="50%">
39
-
40
- ### ⚡ Autonomous Mode
41
- AI can **edit files, run commands, and commit changes** — fully autonomous when needed.
42
-
43
- </td>
44
- <td width="50%">
45
-
46
- ### 🎯 Smart Context
47
- **Auto-assembles relevant code** from your project. Understands dependencies and patterns.
48
-
49
- </td>
50
- </tr>
51
- </table>
52
-
53
- ---
54
-
55
- ## 🚀 Installation
56
-
57
- ```bash
58
- # Run directly (no install needed)
59
- npx helixmind
60
-
61
- # Or install globally
62
- npm install -g helixmind
63
- helixmind
64
- ```
65
-
66
- ---
67
-
68
- ## 🎮 Quick Start
69
-
70
- ```bash
71
- # Start interactive chat
72
- npx helixmind
73
-
74
- # Initialize in current project
75
- npx helixmind init
76
-
77
- # Run autonomous task
78
- npx helixmind "fix all lint errors in src/"
79
-
80
- # Continue last session
81
- npx helixmind --continue
82
-
83
- # Use specific model
84
- npx helixmind --model claude-sonnet-4-20250514
85
- ```
86
-
87
- ---
88
-
89
- ## 📋 Commands
90
-
91
- | Command | Description |
92
- |:--------|:------------|
93
- | `helixmind` | 🎯 Start interactive chat |
94
- | `helixmind init` | ⚙️ Initialize HelixMind in project |
95
- | `helixmind --continue` | ▶️ Resume last session |
96
- | `helixmind --model <name>` | 🤖 Use specific model |
97
- | `helixmind --help` | Show all options |
98
-
99
- ### ⌨️ Keyboard Shortcuts
100
-
101
- | Key | Action |
102
- |:----|:-------|
103
- | `Ctrl+C` | 🛑 Exit |
104
- | `Ctrl+L` | 🧹 Clear screen |
105
- | `Ctrl+D` | 🐛 Toggle debug mode |
106
- | `Tab` | ✨ Autocomplete command |
107
-
108
- ---
109
-
110
- ## 🧠 Memory Architecture
111
-
112
- ```
113
- ┌─────────────────────────────────────────────────────┐
114
- │ Level 1 🔍 Focus │
115
- │ Most relevant, recent context │
116
- ├─────────────────────────────────────────────────────┤
117
- │ Level 2 ⚡ Active │
118
- │ Related files, dependencies │
119
- ├─────────────────────────────────────────────────────┤
120
- │ Level 3 — 📚 Reference │
121
- │ Decisions, patterns, code structure │
122
- ├─────────────────────────────────────────────────────┤
123
- │ Level 4 — 📦 Archive │
124
- │ Compressed summaries, old sessions │
125
- ├─────────────────────────────────────────────────────┤
126
- │ Level 5 — 🗄️ Deep Archive │
127
- │ Long-term knowledge, project history │
128
- └─────────────────────────────────────────────────────┘
129
- ```
130
-
131
- Context automatically flows between levels based on relevance and recency.
132
-
133
- ---
134
-
135
- ## ⚙️ Configuration
136
-
137
- Create `.helixmind/config.json` in your project:
138
-
139
- ```json
140
- {
141
- "provider": "anthropic",
142
- "model": "claude-sonnet-4-20250514",
143
- "brainEnabled": true,
144
- "permissions": {
145
- "writeFiles": true,
146
- "runCommands": true,
147
- "gitCommit": true
148
- }
149
- }
150
- ```
151
-
152
- ### 🔑 Environment Variables
153
-
154
- ```bash
155
- ANTHROPIC_API_KEY=sk-ant-... # For Claude
156
- OPENAI_API_KEY=sk-... # For OpenAI/GPT
157
- ```
158
-
159
- ---
160
-
161
- ## 🛠️ Tech Stack
162
-
163
- | Category | Technology |
164
- |:---------|:-----------|
165
- | Language | ![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue) |
166
- | AI SDKs | ![Anthropic](https://img.shields.io/badge/Anthropic-SDK-orange) ![OpenAI](https://img.shields.io/badge/OpenAI-SDK-green) |
167
- | Database | ![SQLite](https://img.shields.io/badge/SQLite-better--sqlite3-lightgrey) |
168
- | Embeddings | ![Transformers](https://img.shields.io/badge/HuggingFace-Transformers-yellow) |
169
- | Testing | ![Vitest](https://img.shields.io/badge/Vitest-testing-yellowgreen) |
170
-
171
- ---
172
-
173
- ## 🏗️ Development
174
-
175
- ```bash
176
- # Clone repo
177
- git clone https://github.com/DancingTedDanson011/HelixMind.git
178
- cd HelixMind
179
-
180
- # Install dependencies
181
- npm install
182
-
183
- # Build
184
- npm run build
185
-
186
- # Run in dev mode
187
- npm run dev
188
-
189
- # Run tests
190
- npm test
191
- ```
192
-
193
- ---
194
-
195
- ## 📄 License
196
-
197
- [AGPL-3.0](LICENSE)Free for open-source use. Commercial licenses available.
198
-
199
- ---
200
-
201
- <div align="center">
202
-
203
- **Made with ❤️ by [HelixMind](https://github.com/DancingTedDanson011)**
204
-
205
- [⬆ Back to Top](#-helixmind)
206
-
207
- </div>
1
+ <div align="center">
2
+
3
+ # 🧠 HelixMind
4
+
5
+ **AI Coding Assistant with Persistent Spiral Memory**
6
+
7
+ [![npm version](https://img.shields.io/npm/v/helixmind?color=blue&logo=npm)](https://www.npmjs.com/package/helixmind)
8
+ [![License](https://img.shields.io/badge/License-AGPL_3.0-blue?logo=gnu)](LICENSE)
9
+ [![Node](https://img.shields.io/badge/Node-18%2B-green?logo=node.js)](https://nodejs.org)
10
+ [![TypeScript](https://img.shields.io/badge/TypeScript-5.0%2B-blue?logo=typescript)](https://www.typescriptlang.org/)
11
+
12
+ *Remembers context across sessions. Learns from every interaction. Full SaaS platform with CLI + Web Dashboard.*
13
+
14
+ [Installation](#-installation) • [Features](#-features) • [Quick Start](#-quick-start) • [Web Platform](#-web-platform) • [Documentation](#-documentation)
15
+
16
+ </div>
17
+
18
+ ---
19
+
20
+ ## ✨ Features
21
+
22
+ <table>
23
+ <tr>
24
+ <td width="50%">
25
+
26
+ ### 🔄 Spiral Memory
27
+ **5-level hierarchical memory** that persists across sessions. Context flows between levels based on relevance and recency.
28
+
29
+ </td>
30
+ <td width="50%">
31
+
32
+ ### 🤖 Multi-Provider
33
+ **Claude, GPT-4, Ollama** and more. Switch seamlessly between AI providers with rate limiting and model limits.
34
+
35
+ </td>
36
+ </tr>
37
+ <tr>
38
+ <td width="50%">
39
+
40
+ ### ⚡ Autonomous Agent
41
+ AI can **edit files, run commands, commit changes, and browse the web** — with a permission system and sandbox for safety.
42
+
43
+ </td>
44
+ <td width="50%">
45
+
46
+ ### 🎯 Smart Context
47
+ **Auto-assembles relevant code** from your project. Session buffer, context trimming, and dependency tracking.
48
+
49
+ </td>
50
+ </tr>
51
+ <tr>
52
+ <td width="50%">
53
+
54
+ ### 🌐 Web Dashboard
55
+ **Next.js 15 platform** with 3D brain visualization, admin panel, billing (Stripe), support tickets, and CLI remote control.
56
+
57
+ </td>
58
+ <td width="50%">
59
+
60
+ ### 🔬 Validation Matrix
61
+ **Automatic output validation** with static checks, dynamic checks, spiral checks, autofix, and quality classification.
62
+
63
+ </td>
64
+ </tr>
65
+ <tr>
66
+ <td width="50%">
67
+
68
+ ### 📊 SWE-Bench Integration
69
+ **Built-in benchmark suite** — run SWE-bench Lite/Verified, compare runs, measure Spiral Memory impact.
70
+
71
+ </td>
72
+ <td width="50%">
73
+
74
+ ### 🌍 Web Knowledge
75
+ **Cloud-enriched context** — topic detection, web search, content extraction, and automatic knowledge integration.
76
+
77
+ </td>
78
+ </tr>
79
+ <tr>
80
+ <td width="50%">
81
+
82
+ ### 🐛 Bug Tracking
83
+ **Automatic bug detection** and persistent journal — track bugs across sessions with evidence and status.
84
+
85
+ </td>
86
+ <td width="50%">
87
+
88
+ ### 💾 Checkpoints & Sessions
89
+ **Save and revert** to any checkpoint, multi-session tab view, session lifecycle management.
90
+
91
+ </td>
92
+ </tr>
93
+ <tr>
94
+ <td width="50%">
95
+
96
+ ### 🌐 Browser Automation
97
+ **Puppeteer-based browser control** navigate, click, type, screenshot, visual analysis with Chrome integration.
98
+
99
+ </td>
100
+ <td width="50%">
101
+
102
+ ### 🔐 Authentication & Security
103
+ **OAuth login, API keys, feature gating** — secure access control with subscription tier enforcement.
104
+
105
+ </td>
106
+ </tr>
107
+ </table>
108
+
109
+ ---
110
+
111
+ ## 🚀 Installation
112
+
113
+ ```bash
114
+ # Run directly (no install needed)
115
+ npx helixmind
116
+
117
+ # Or install globally
118
+ npm install -g helixmind
119
+ helixmind
120
+ ```
121
+
122
+ ---
123
+
124
+ ## 🎮 Quick Start
125
+
126
+ ```bash
127
+ # Start interactive chat (default command)
128
+ npx helixmind
129
+
130
+ # Initialize in current project
131
+ npx helixmind init
132
+
133
+ # Send a single message
134
+ npx helixmind chat -m "fix all lint errors in src/"
135
+
136
+ # YOLO mode — auto-approve everything
137
+ npx helixmind chat --yolo
138
+
139
+ # Skip permission prompts
140
+ npx helixmind chat -s
141
+
142
+ # Feed files into spiral memory
143
+ npx helixmind feed src/ --deep
144
+
145
+ # Watch files and update spiral live
146
+ npx helixmind feed src/ --watch
147
+ ```
148
+
149
+ ---
150
+
151
+ ## 📋 CLI Commands
152
+
153
+ | Command | Description |
154
+ |:--------|:------------|
155
+ | `helixmind` / `helixmind chat` | 🎯 Start interactive chat (default) |
156
+ | `helixmind helix` | 🎯 Alias for interactive chat |
157
+ | `helixmind init` | ⚙️ Initialize HelixMind in project |
158
+ | `helixmind chat -m "..."` | 💬 Send a single message |
159
+ | `helixmind chat --yolo` | 🚀 Auto-approve all operations |
160
+ | `helixmind chat --no-validation` | 🔇 Disable output validation |
161
+ | `helixmind chat --validation-verbose` | 🔍 Detailed validation output |
162
+ | `helixmind chat --validation-strict` | 🚫 Treat validation warnings as errors |
163
+ | `helixmind feed [paths...]` | 📂 Feed files/dirs into spiral |
164
+ | `helixmind feed --deep` | 🔍 Deep analysis with intent detection |
165
+ | `helixmind feed --watch` | 👁️ Watch and auto-update spiral |
166
+ | `helixmind spiral status` | 📊 Show spiral metrics |
167
+ | `helixmind spiral search <query>` | 🔎 Search spiral context |
168
+ | `helixmind spiral compact` | 🗜️ Trigger spiral compaction |
169
+ | `helixmind config set <k> <v>` | ⚙️ Set config value |
170
+ | `helixmind config get <key>` | 📖 Get config value |
171
+ | `helixmind config list` | 📋 Show all config |
172
+ | `helixmind export [dir]` | 📦 Export spiral to .helixmind.zip |
173
+ | `helixmind import <zip>` | 📥 Import spiral from archive |
174
+ | `helixmind login` | 🔑 Authenticate with web platform |
175
+ | `helixmind logout` | 🚪 Remove stored auth |
176
+ | `helixmind whoami` | 👤 Show auth status |
177
+ | `helixmind bench run` | 🏋️ Run SWE-bench benchmark |
178
+ | `helixmind bench results` | 📈 Show benchmark results |
179
+ | `helixmind bench compare` | ⚖️ Compare benchmark runs |
180
+ | `helixmind bench list` | 📋 List past runs |
181
+
182
+ ### ⌨️ Keyboard Shortcuts
183
+
184
+ | Key | Action |
185
+ |:----|:-------|
186
+ | `Ctrl+C` | 🛑 Exit |
187
+ | `Ctrl+L` | 🧹 Clear screen |
188
+ | `Ctrl+D` | 🐛 Toggle debug mode |
189
+ | `Tab` | ✨ Autocomplete command |
190
+
191
+ ---
192
+
193
+ ## 🧠 Memory Architecture
194
+
195
+ ```
196
+ ┌─────────────────────────────────────────────────────┐
197
+ │ Level 1 🔍 Focus │
198
+ │ Most relevant, recent context │
199
+ ├─────────────────────────────────────────────────────┤
200
+ │ Level 2 — ⚡ Active │
201
+ │ Related files, dependencies │
202
+ ├─────────────────────────────────────────────────────┤
203
+ │ Level 3 📚 Reference │
204
+ │ Decisions, patterns, code structure │
205
+ ├─────────────────────────────────────────────────────┤
206
+ │ Level 4 — 📦 Archive │
207
+ │ Compressed summaries, old sessions │
208
+ ├─────────────────────────────────────────────────────┤
209
+ │ Level 5 — 🗄️ Deep Archive │
210
+ │ Long-term knowledge, project history │
211
+ └─────────────────────────────────────────────────────┘
212
+ ```
213
+
214
+ Context automatically flows between levels based on relevance and recency. Cloud enrichment adds web knowledge via topic detection and content extraction.
215
+
216
+ ---
217
+
218
+ ## 🌐 Web Platform
219
+
220
+ The web dashboard (`web/`) is a full **Next.js 15** application:
221
+
222
+ | Feature | Description |
223
+ |:--------|:------------|
224
+ | **3D Brain View** | Interactive Three.js visualization of your spiral memory |
225
+ | **Dashboard** | Manage API keys, billing, profile, and CLI connections |
226
+ | **Admin Panel** | User management, ticket system, plans, settings, stats |
227
+ | **CLI Integration** | WebSocket bridge — control your CLI from the browser |
228
+ | **Support System** | Built-in ticket system with detail views |
229
+ | **Blog & Docs** | MDX-based with i18n (DE/EN), sidebar navigation |
230
+ | **Auth** | NextAuth with OAuth, staff login, CLI authorization |
231
+ | **Billing** | Stripe checkout, portal, webhooks |
232
+ | **PWA** | Service worker, install prompt, offline support |
233
+ | **Cookie Consent** | GDPR-compliant cookie banner and settings |
234
+
235
+ ### Web Setup
236
+
237
+ ```bash
238
+ cd web
239
+ npm install
240
+ cp .env.example .env # Configure database, auth, stripe
241
+ npx prisma db push # Set up database
242
+ npm run db:seed # Seed initial data
243
+ npm run dev # Start dev server (Turbopack)
244
+ ```
245
+
246
+ ---
247
+
248
+ ## ⚙️ Configuration
249
+
250
+ Create `.helixmind/config.json` in your project:
251
+
252
+ ```json
253
+ {
254
+ "provider": "anthropic",
255
+ "model": "claude-sonnet-4-20250514",
256
+ "brainEnabled": true,
257
+ "permissions": {
258
+ "writeFiles": true,
259
+ "runCommands": true,
260
+ "gitCommit": true
261
+ }
262
+ }
263
+ ```
264
+
265
+ ### 🔑 Environment Variables
266
+
267
+ ```bash
268
+ ANTHROPIC_API_KEY=sk-ant-... # For Claude
269
+ OPENAI_API_KEY=sk-... # For OpenAI/GPT
270
+ # Ollama: no key needed (local)
271
+ ```
272
+
273
+ ---
274
+
275
+ ## 🛠️ Tech Stack
276
+
277
+ ### CLI
278
+
279
+ | Category | Technology |
280
+ |:---------|:-----------|
281
+ | Language | ![TypeScript](https://img.shields.io/badge/TypeScript-strict-blue) |
282
+ | AI SDKs | ![Anthropic](https://img.shields.io/badge/Anthropic-SDK-orange) ![OpenAI](https://img.shields.io/badge/OpenAI-SDK-green) ![Ollama](https://img.shields.io/badge/Ollama-local-purple) |
283
+ | Database | ![SQLite](https://img.shields.io/badge/SQLite-better--sqlite3-lightgrey) ![sqlite-vec](https://img.shields.io/badge/sqlite--vec-vectors-blue) |
284
+ | Embeddings | ![Transformers](https://img.shields.io/badge/HuggingFace-Transformers-yellow) |
285
+ | Browser | ![Puppeteer](https://img.shields.io/badge/Puppeteer-headless-green) |
286
+ | Testing | ![Vitest](https://img.shields.io/badge/Vitest-70%2B_tests-yellowgreen) |
287
+ | MCP | ![MCP](https://img.shields.io/badge/MCP-SDK-blue) |
288
+
289
+ ### Web
290
+
291
+ | Category | Technology |
292
+ |:---------|:-----------|
293
+ | Framework | ![Next.js](https://img.shields.io/badge/Next.js-15-black) ![React](https://img.shields.io/badge/React-19-blue) |
294
+ | 3D | ![Three.js](https://img.shields.io/badge/Three.js-R3F-green) |
295
+ | Database | ![Prisma](https://img.shields.io/badge/Prisma-6-purple) |
296
+ | Auth | ![NextAuth](https://img.shields.io/badge/NextAuth-v5-orange) |
297
+ | Payments | ![Stripe](https://img.shields.io/badge/Stripe-17-blue) |
298
+ | Styling | ![Tailwind](https://img.shields.io/badge/Tailwind-4-cyan) |
299
+ | i18n | ![next-intl](https://img.shields.io/badge/next--intl-DE%2FEN-yellow) |
300
+ | PWA | ![Serwist](https://img.shields.io/badge/Serwist-PWA-green) |
301
+
302
+ ---
303
+
304
+ ## 🏗️ Development
305
+
306
+ ```bash
307
+ # Clone repo
308
+ git clone https://github.com/DancingTedDanson011/HelixMind.git
309
+ cd HelixMind
310
+
311
+ # Install dependencies (CLI)
312
+ npm install
313
+
314
+ # Build CLI
315
+ npm run build
316
+
317
+ # Run CLI in dev mode
318
+ npm run dev
319
+
320
+ # Run tests
321
+ npm test
322
+
323
+ # Run tests with coverage
324
+ npm run test:coverage
325
+
326
+ # Web dashboard
327
+ cd web
328
+ npm install
329
+ npm run dev
330
+ ```
331
+
332
+ ---
333
+
334
+ ## 📄 License
335
+
336
+ [AGPL-3.0](LICENSE) — Free for open-source use. Commercial licenses available.
337
+
338
+ ---
339
+
340
+ <div align="center">
341
+
342
+ **Made with ❤️ by [HelixMind](https://github.com/DancingTedDanson011)**
343
+
344
+ [⬆ Back to Top](#-helixmind)
345
+
346
+ </div>
@@ -22,6 +22,10 @@ export interface AgentLoopOptions {
22
22
  onThinking?: () => void;
23
23
  /** Called before rendering the final answer — use to stop activity */
24
24
  onBeforeAnswer?: () => void;
25
+ /** Called when the LLM produces a text block — used by web chat to stream text */
26
+ onTextBlock?: (text: string) => void;
27
+ /** Called when a tool call is about to execute — used by web chat to stream tool details */
28
+ onToolCallDetail?: (stepNum: number, name: string, input: Record<string, unknown>) => void;
25
29
  maxIterations?: number;
26
30
  }
27
31
  export interface AgentLoopResult {
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAIZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAIlE,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,GAAE,MAAwB;CAI9C;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,WAAW,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,iBAAiB,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1F,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6EAA6E;IAC7E,cAAc,EAAE,WAAW,EAAE,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,mBAAmB,EAAE,WAAW,EAAE,EAClC,OAAO,EAAE,gBAAgB,EACzB,UAAU,CAAC,EAAE,eAAe,GAC3B,OAAO,CAAC,eAAe,CAAC,CAyR1B;AA6BD;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAA0C;IAClE,OAAO,CAAC,YAAY,CAA6B;IAEjD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,iEAAiE;IACjE,IAAI,MAAM,IAAI,WAAW,CAExB;IAED,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI,IAAI;IASd;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAUP,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,kEAAkE;IAClE,KAAK,IAAI,IAAI;CAMd"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../../src/cli/agent/loop.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export class AgentAbortError extends Error {
18
18
  * AbortController cancels in-flight HTTP requests on emergency stop.
19
19
  */
20
20
  export async function runAgentLoop(userMessage, conversationHistory, options, controller) {
21
- const { provider, systemPrompt, permissions, toolContext, checkpointStore, sessionBuffer, onTokensUsed, onToolCall, onStepStart, onStepEnd, onThinking, onBeforeAnswer, maxIterations = 200, } = options;
21
+ const { provider, systemPrompt, permissions, toolContext, checkpointStore, sessionBuffer, onTokensUsed, onToolCall, onStepStart, onStepEnd, onThinking, onBeforeAnswer, onTextBlock, onToolCallDetail, maxIterations = 200, } = options;
22
22
  const tools = getAllToolDefinitions();
23
23
  resetToolCounter();
24
24
  const messages = [...conversationHistory];
@@ -108,6 +108,7 @@ export async function runAgentLoop(userMessage, conversationHistory, options, co
108
108
  for (const block of response.content) {
109
109
  if (block.type === 'text' && block.text) {
110
110
  totalText += block.text;
111
+ onTextBlock?.(block.text);
111
112
  }
112
113
  if (block.type === 'tool_use') {
113
114
  hasToolUse = true;
@@ -132,6 +133,7 @@ export async function runAgentLoop(userMessage, conversationHistory, options, co
132
133
  const stepNum = totalToolCalls;
133
134
  const stepLabel = summarizeToolForStep(block.name, block.input);
134
135
  onToolCall?.(block.name);
136
+ onToolCallDetail?.(stepNum, block.name, block.input);
135
137
  onStepStart?.(stepNum, block.name, stepLabel);
136
138
  sessionBuffer?.addToolCall(block.name, block.input);
137
139
  renderToolCall(block.name, block.input);
@@ -262,6 +264,12 @@ function summarizeToolForStep(name, input) {
262
264
  case 'spiral_store': return 'storing in spiral';
263
265
  case 'bug_report': return `bug ${input.action || 'update'}`;
264
266
  case 'bug_list': return 'listing bugs';
267
+ case 'browser_open': return `opening browser${input.url ? ': ' + String(input.url).slice(0, 30) : ''}`;
268
+ case 'browser_navigate': return `navigating to ${String(input.url || '').slice(0, 40)}`;
269
+ case 'browser_screenshot': return 'taking screenshot';
270
+ case 'browser_click': return `clicking ${input.selector}`;
271
+ case 'browser_type': return `typing in ${input.selector}`;
272
+ case 'browser_close': return 'closing browser';
265
273
  default: return name;
266
274
  }
267
275
  }