@nomad-e/bluma-cli 0.1.83 → 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.
- package/README.md +177 -57
- package/dist/main.js +9480 -8382
- package/dist/native/bluma-clipboard.linux-x64-gnu.node +0 -0
- package/dist/native/index.d.ts +38 -0
- package/dist/native/index.js +319 -0
- package/dist/native/package.json +38 -0
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
> **Credit:** BluMa was conceived and architected by **Alex Fonseca**.
|
|
13
13
|
|
|
14
|
-
**Current Version:** 0.1.
|
|
14
|
+
**Current Version:** 0.1.84
|
|
15
15
|
|
|
16
16
|
---
|
|
17
17
|
|
|
@@ -42,7 +42,7 @@ BluMa operates as a **conversational agent** in the terminal, combining:
|
|
|
42
42
|
- **Rich UI Layer**: React/Ink 5 components for interactive prompts, live overlays, and real-time feedback
|
|
43
43
|
- **Agent Layer**: LLM orchestration via FactorRouter with tool invocation and context management
|
|
44
44
|
- **Runtime Layer**: Task tracking, plugin system, hooks, diagnostics, session management, and coordinator mode
|
|
45
|
-
- **Tool Layer**:
|
|
45
|
+
- **Tool Layer**: 50+ native tools + MCP SDK integration for external tools
|
|
46
46
|
|
|
47
47
|
The agent maintains persistent conversation history, workspace snapshots, and coding memory across sessions.
|
|
48
48
|
|
|
@@ -63,22 +63,24 @@ The agent maintains persistent conversation history, workspace snapshots, and co
|
|
|
63
63
|
- **Hook Registry**: Event-driven lifecycle tracking (tool calls, decisions, state changes)
|
|
64
64
|
- **Task Store**: Persistent task management with PLANNING → EXECUTION → VERIFICATION flow
|
|
65
65
|
- **Session Registry**: Multi-session support with process health monitoring
|
|
66
|
+
- **Thread System**: Multi-thread conversation management with isolated contexts
|
|
66
67
|
- **Diagnostics**: Real-time system snapshot (tasks, hooks, plugins, sessions)
|
|
67
68
|
- **Tool Execution Policy**: Intelligent decisions based on sandbox mode and safety
|
|
68
69
|
|
|
69
70
|
### Tools & Skills
|
|
70
|
-
- **
|
|
71
|
+
- **50+ Native Tools**: File operations, search, shell commands, web fetch, agent coordination, task management, MCP resources, cron scheduling, LSP queries, notebook editing, REPL execution
|
|
71
72
|
- **Coordinator Mode**: Orchestrator playbook for delegating work to background workers
|
|
72
73
|
- **MCP Integration**: Model Context Protocol SDK for external tool servers
|
|
73
74
|
- **Skills System**: Pluggable knowledge modules (git, PDF, Excel, etc.)
|
|
74
|
-
- **Agent Coordination**: Spawn/wait/list subagents for parallel work
|
|
75
|
+
- **Agent Coordination**: Spawn/wait/list subagents for parallel work with bidirectional mailbox system
|
|
75
76
|
|
|
76
77
|
### UI Components
|
|
77
|
-
- **Slash Commands**:
|
|
78
|
+
- **Slash Commands**: 30+ built-in commands (`/help`, `/model`, `/tasks`, `/plugins`, `/threads`, etc.)
|
|
78
79
|
- **Live Overlays**: Working timers, progress indicators, streaming text
|
|
79
80
|
- **Diff Previews**: Side-by-side code comparisons before edits
|
|
80
81
|
- **Tool Result Cards**: Structured display of tool outputs
|
|
81
82
|
- **Session Panels**: Real-time monitoring with log streaming
|
|
83
|
+
- **Thread Management**: Multi-thread conversation UI with thread switching
|
|
82
84
|
|
|
83
85
|
---
|
|
84
86
|
|
|
@@ -153,6 +155,7 @@ npm start
|
|
|
153
155
|
> run npm test in the background
|
|
154
156
|
> /tasks to see active tasks
|
|
155
157
|
> /model to switch LLM model
|
|
158
|
+
> /threads to manage conversation threads
|
|
156
159
|
```
|
|
157
160
|
|
|
158
161
|
---
|
|
@@ -187,7 +190,8 @@ npm start
|
|
|
187
190
|
├── coding_memory.json # Persistent coding notes
|
|
188
191
|
├── artifacts/ # Saved plans and documents
|
|
189
192
|
├── plugins/ # Global plugins
|
|
190
|
-
|
|
193
|
+
├── sessions/ # Session history
|
|
194
|
+
└── threads/ # Thread storage
|
|
191
195
|
```
|
|
192
196
|
|
|
193
197
|
---
|
|
@@ -198,15 +202,19 @@ npm start
|
|
|
198
202
|
┌─────────────────────────────────────────────────────────────┐
|
|
199
203
|
│ UI Layer │
|
|
200
204
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
|
|
201
|
-
│ │
|
|
202
|
-
│ │
|
|
205
|
+
│ │ Bluma │ │ Input │ │ Slash │ │ ToolResult │ │
|
|
206
|
+
│ │ Session │ │ Prompt │ │ Commands │ │ Display │ │
|
|
207
|
+
│ │ (Ink) │ │ │ │ │ │ │ │
|
|
203
208
|
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────┬───────┘ │
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
209
|
+
│ │ │ │ │ │
|
|
210
|
+
│ ┌────┴────────────┴────────────┴──────────────┴─────┐ │
|
|
211
|
+
│ │ BlumaShell / BlumaViewport │ │
|
|
212
|
+
│ │ BlumaTranscript / BlumaBottomDock │ │
|
|
213
|
+
│ └────────────────────────────────────────────────────┘ │
|
|
214
|
+
└─────────────────────────────────────────────────────────────┘
|
|
215
|
+
│
|
|
216
|
+
┌─────────────────────────────┼────────────────────────────────┐
|
|
217
|
+
│ Agent Layer │
|
|
210
218
|
│ ┌──────────────┐ ┌──────────┐ ┌──────────────────────┐ │
|
|
211
219
|
│ │ Agent │ │ BluMa │ │ RouteManager │ │
|
|
212
220
|
│ │ Orchestrator│ │ Core │ │ (FactorRouter) │ │
|
|
@@ -216,10 +224,13 @@ npm start
|
|
|
216
224
|
│ │ ToolInvoker │ │ LLM │ │ PromptBuilder │ │
|
|
217
225
|
│ │ │ │ Client │ │ + ContextManager │ │
|
|
218
226
|
│ └──────────────┘ └─────────┘ └──────────────────────┘ │
|
|
227
|
+
│ ┌──────────────────────────────────────────────────────┐ │
|
|
228
|
+
│ │ Thread Manager / Thread Store │ │
|
|
229
|
+
│ └──────────────────────────────────────────────────────┘ │
|
|
219
230
|
└─────────────────────────────────────────────────────────────┘
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
│ Runtime Layer
|
|
231
|
+
│
|
|
232
|
+
┌─────────────────────────────┼────────────────────────────────┐
|
|
233
|
+
│ Runtime Layer │
|
|
223
234
|
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
|
|
224
235
|
│ │TaskStore │ │HookReg. │ │PluginReg.│ │SessionReg. │ │
|
|
225
236
|
│ │ │ │ │ │ │ │ │ │
|
|
@@ -232,18 +243,23 @@ npm start
|
|
|
232
243
|
│ │Feature │ │Plan Mode │ │Tool Auto │ │Tool Permission│ │
|
|
233
244
|
│ │Flags │ │Session │ │Approve │ │Classifier │ │
|
|
234
245
|
│ └──────────┘ └──────────┘ └──────────┘ └──────────────┘ │
|
|
246
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │
|
|
247
|
+
│ │Mailbox │ │Worker │ │Permission│ │Thread │ │
|
|
248
|
+
│ │Registry │ │Context │ │Rules │ │Manager │ │
|
|
249
|
+
│ └──────────┘ └──────────┘ └──────────┘ └──────────────┘ │
|
|
235
250
|
└─────────────────────────────────────────────────────────────┘
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
│ Tools Layer
|
|
251
|
+
│
|
|
252
|
+
┌─────────────────────────────┼────────────────────────────────┐
|
|
253
|
+
│ Tools Layer │
|
|
239
254
|
│ ┌──────────────────────────────────────────────────────┐ │
|
|
240
|
-
│ │ Native Tools (
|
|
255
|
+
│ │ Native Tools (50+) │ │
|
|
241
256
|
│ │ edit_tool, file_write, shell_command, grep_search, │ │
|
|
242
257
|
│ │ spawn_agent, wait_agent, list_agents, │ │
|
|
258
|
+
│ │ send_message, list_mailbox_messages, signal_mailbox,│ │
|
|
243
259
|
│ │ todo, task_boundary, task_create, task_list, │ │
|
|
244
260
|
│ │ task_get, task_update, task_stop, │ │
|
|
245
261
|
│ │ coding_memory, search_web, web_fetch, load_skill, │ │
|
|
246
|
-
│ │ message, ask_user_question,
|
|
262
|
+
│ │ message, ask_user_question, repl, │ │
|
|
247
263
|
│ │ list_mcp_resources, read_mcp_resource, │ │
|
|
248
264
|
│ │ cron_create, cron_list, cron_delete, │ │
|
|
249
265
|
│ │ lsp_query, notebook_edit, │ │
|
|
@@ -260,7 +276,7 @@ npm start
|
|
|
260
276
|
|
|
261
277
|
## Native Tools
|
|
262
278
|
|
|
263
|
-
BluMa includes **
|
|
279
|
+
BluMa includes **50+ built-in tools** organized by category:
|
|
264
280
|
|
|
265
281
|
### File Operations
|
|
266
282
|
| Tool | Description |
|
|
@@ -292,7 +308,7 @@ BluMa includes **45+ built-in tools** organized by category:
|
|
|
292
308
|
| `send_message` | Send follow-up to running worker (continue without re-spawn) |
|
|
293
309
|
| `list_mailbox_messages` | Read messages from workers (progress, permission requests) |
|
|
294
310
|
| `signal_mailbox` | Send ack/nack/progress signals to workers |
|
|
295
|
-
| `poll_mailbox` | Poll mailbox for new messages
|
|
311
|
+
| `poll_mailbox` | Poll mailbox for new messages |
|
|
296
312
|
|
|
297
313
|
### Task & Project Management
|
|
298
314
|
| Tool | Description |
|
|
@@ -304,8 +320,17 @@ BluMa includes **45+ built-in tools** organized by category:
|
|
|
304
320
|
| `task_get` | Get one task by id |
|
|
305
321
|
| `task_update` | Update task fields |
|
|
306
322
|
| `task_stop` | Cancel a task |
|
|
307
|
-
| `
|
|
308
|
-
| `
|
|
323
|
+
| `task_output` | Read task output in real-time |
|
|
324
|
+
| `create_artifact` | Save documents under `<workspace>/.bluma/artifacts/<session>/` |
|
|
325
|
+
| `read_artifact` | Read artifacts from the current session directory |
|
|
326
|
+
|
|
327
|
+
### Thread Management (v0.1.84+)
|
|
328
|
+
| Tool | Description |
|
|
329
|
+
|------|-------------|
|
|
330
|
+
| `thread_create` | Create new conversation thread |
|
|
331
|
+
| `thread_list` | List all threads |
|
|
332
|
+
| `thread_switch` | Switch to different thread |
|
|
333
|
+
| `thread_archive` | Archive a thread |
|
|
309
334
|
|
|
310
335
|
### Knowledge & Research
|
|
311
336
|
| Tool | Description |
|
|
@@ -339,7 +364,6 @@ BluMa includes **45+ built-in tools** organized by category:
|
|
|
339
364
|
|------|-------------|
|
|
340
365
|
| `lsp_query` | LSP go-to-definition or references (TS/JS) |
|
|
341
366
|
| `repl` | Interactive code execution (Python, Node, Bash) |
|
|
342
|
-
| `task_output` | Read task output in real-time |
|
|
343
367
|
|
|
344
368
|
### Specialized
|
|
345
369
|
| Tool | Description |
|
|
@@ -363,6 +387,29 @@ BluMa includes **45+ built-in tools** organized by category:
|
|
|
363
387
|
|
|
364
388
|
## Current Features
|
|
365
389
|
|
|
390
|
+
### Thread System (v0.1.84+)
|
|
391
|
+
**Multi-thread conversation management** for isolated contexts:
|
|
392
|
+
|
|
393
|
+
```typescript
|
|
394
|
+
// Create a new thread
|
|
395
|
+
thread_create({
|
|
396
|
+
name: "Feature Implementation",
|
|
397
|
+
context: "Working on authentication module"
|
|
398
|
+
})
|
|
399
|
+
|
|
400
|
+
// List all threads
|
|
401
|
+
thread_list()
|
|
402
|
+
|
|
403
|
+
// Switch between threads
|
|
404
|
+
thread_switch({ threadId: "thread-123" })
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Key Benefits:**
|
|
408
|
+
- **Isolated contexts** - Each thread maintains separate conversation history
|
|
409
|
+
- **Parallel work** - Work on multiple features simultaneously
|
|
410
|
+
- **Context preservation** - Switch without losing previous context
|
|
411
|
+
- **Thread-specific memory** - Coding memories scoped to threads
|
|
412
|
+
|
|
366
413
|
### Mailbox System (Bidirectional Communication)
|
|
367
414
|
**Push-based communication** between coordinator and workers using EventEmitter:
|
|
368
415
|
|
|
@@ -619,6 +666,18 @@ task_boundary({
|
|
|
619
666
|
});
|
|
620
667
|
```
|
|
621
668
|
|
|
669
|
+
### Thread Manager (v0.1.84+)
|
|
670
|
+
|
|
671
|
+
Manage multiple conversation threads:
|
|
672
|
+
|
|
673
|
+
```typescript
|
|
674
|
+
// Thread operations
|
|
675
|
+
thread_create({ name: "Feature A" })
|
|
676
|
+
thread_list()
|
|
677
|
+
thread_switch({ threadId: "..." })
|
|
678
|
+
thread_archive({ threadId: "..." })
|
|
679
|
+
```
|
|
680
|
+
|
|
622
681
|
### Hook Registry
|
|
623
682
|
|
|
624
683
|
Event-driven lifecycle tracking:
|
|
@@ -659,6 +718,7 @@ Real-time system snapshot:
|
|
|
659
718
|
> /diagnostics hooks # Hook registry status
|
|
660
719
|
> /diagnostics plugins # Plugin registry status
|
|
661
720
|
> /diagnostics sessions # Active sessions
|
|
721
|
+
> /diagnostics threads # Thread overview
|
|
662
722
|
```
|
|
663
723
|
|
|
664
724
|
### Runtime Files
|
|
@@ -669,6 +729,7 @@ Real-time system snapshot:
|
|
|
669
729
|
| `~/.bluma/hooks.json` | Hook registry state |
|
|
670
730
|
| `~/.bluma/sessions/` | Session history and logs |
|
|
671
731
|
| `~/.bluma/plugins/` | Global plugin storage |
|
|
732
|
+
| `~/.bluma/threads/` | Thread storage |
|
|
672
733
|
|
|
673
734
|
### Tool Execution Policy
|
|
674
735
|
|
|
@@ -705,6 +766,14 @@ Built-in terminal commands (type `/` to see all):
|
|
|
705
766
|
| `/compact` | Manually compact conversation context |
|
|
706
767
|
| `/export` | Export conversation as markdown |
|
|
707
768
|
|
|
769
|
+
### Threads (v0.1.84+)
|
|
770
|
+
| Command | Description |
|
|
771
|
+
|---------|-------------|
|
|
772
|
+
| `/threads` | List all conversation threads |
|
|
773
|
+
| `/thread [id]` | Switch to thread or show current |
|
|
774
|
+
| `/thread new [name]` | Create new thread |
|
|
775
|
+
| `/thread archive [id]` | Archive a thread |
|
|
776
|
+
|
|
708
777
|
### Agent
|
|
709
778
|
| Command | Description |
|
|
710
779
|
|---------|-------------|
|
|
@@ -750,6 +819,7 @@ Built-in terminal commands (type `/` to see all):
|
|
|
750
819
|
|----------|-------------|
|
|
751
820
|
| `Ctrl+V / Cmd+V` | Paste from clipboard: image → cache `~/.cache/bluma/clipboard`; text; or file path as image |
|
|
752
821
|
| `Ctrl+Shift+I` | Same as Ctrl+V (paste image, text, or file path) |
|
|
822
|
+
| `Ctrl+O` | Expand truncated previews in tool results |
|
|
753
823
|
|
|
754
824
|
---
|
|
755
825
|
|
|
@@ -759,6 +829,8 @@ Built-in terminal commands (type `/` to see all):
|
|
|
759
829
|
|
|
760
830
|
```bash
|
|
761
831
|
npm run build # Production build
|
|
832
|
+
npm run build:native # Build native modules
|
|
833
|
+
npm run build:all # Build native + main
|
|
762
834
|
npm start # Build + run
|
|
763
835
|
```
|
|
764
836
|
|
|
@@ -769,6 +841,15 @@ npm run lint # Check code style
|
|
|
769
841
|
npm run lint:fix # Auto-fix issues
|
|
770
842
|
```
|
|
771
843
|
|
|
844
|
+
### Test
|
|
845
|
+
|
|
846
|
+
```bash
|
|
847
|
+
npm test # Run all tests
|
|
848
|
+
npm run test:watch # Watch mode
|
|
849
|
+
npm run test:parallel # Parallel test execution
|
|
850
|
+
npm run test:parallel:fast # Fast parallel with 8 workers
|
|
851
|
+
```
|
|
852
|
+
|
|
772
853
|
### Project Structure
|
|
773
854
|
|
|
774
855
|
```
|
|
@@ -787,7 +868,7 @@ src/
|
|
|
787
868
|
│ │ │ └── types/
|
|
788
869
|
│ │ │ └── errors.ts # Error type definitions
|
|
789
870
|
│ │ ├── config/
|
|
790
|
-
│ │ │ ├── native_tools.json # Tool definitions (
|
|
871
|
+
│ │ │ ├── native_tools.json # Tool definitions (50+)
|
|
791
872
|
│ │ │ ├── skills/ # Bundled skills
|
|
792
873
|
│ │ │ │ ├── git-commit/
|
|
793
874
|
│ │ │ │ ├── git-pr/
|
|
@@ -797,10 +878,6 @@ src/
|
|
|
797
878
|
│ │ │ │ └── xlsx/
|
|
798
879
|
│ │ │ │ └── scripts/
|
|
799
880
|
│ │ │ │ └── office/ # Office document handling
|
|
800
|
-
│ │ │ │ ├── pack.py
|
|
801
|
-
│ │ │ │ ├── unpack.py
|
|
802
|
-
│ │ │ │ ├── validate.py
|
|
803
|
-
│ │ │ │ └── soffice.py
|
|
804
881
|
│ │ ├── core/ # LLM, context, prompts
|
|
805
882
|
│ │ │ ├── context-api/ # Context management
|
|
806
883
|
│ │ │ │ ├── context_manager.ts # Token-aware context
|
|
@@ -820,13 +897,18 @@ src/
|
|
|
820
897
|
│ │ │ │ ├── system_prompt_sections.ts
|
|
821
898
|
│ │ │ │ ├── system_reminders.ts
|
|
822
899
|
│ │ │ │ └── tool_guidance.ts
|
|
900
|
+
│ │ │ ├── thread/ # Thread management (v0.1.84+)
|
|
901
|
+
│ │ │ │ ├── index.ts
|
|
902
|
+
│ │ │ │ ├── thread_manager.ts
|
|
903
|
+
│ │ │ │ ├── thread_store.ts
|
|
904
|
+
│ │ │ │ └── types.ts
|
|
823
905
|
│ │ │ └── context_viz.ts # Context visualization
|
|
824
906
|
│ │ ├── docs/
|
|
825
907
|
│ │ │ └── TOOL_PARITY.md # Tool parity documentation
|
|
826
908
|
│ │ ├── feedback/
|
|
827
909
|
│ │ │ └── feedback_system.ts # Smart feedback system
|
|
828
910
|
│ │ │ └── feedback_scoring.ts # User feedback scoring
|
|
829
|
-
│ │ ├── runtime/ # Orchestration layer
|
|
911
|
+
│ │ ├── runtime/ # Orchestration layer
|
|
830
912
|
│ │ │ ├── diagnostics.ts # System snapshots
|
|
831
913
|
│ │ │ ├── feature_flags.ts # Feature gates
|
|
832
914
|
│ │ │ ├── hook_registry.ts # Event-driven hooks
|
|
@@ -867,7 +949,7 @@ src/
|
|
|
867
949
|
│ │ │ │ └── mcp_client.ts # MCP SDK client
|
|
868
950
|
│ │ │ ├── shared/
|
|
869
951
|
│ │ │ │ └── token_utils.ts # Token utilities
|
|
870
|
-
│ │ │ └── natives/ #
|
|
952
|
+
│ │ │ └── natives/ # 50+ native tool implementations
|
|
871
953
|
│ │ │ ├── agent_coordination.ts
|
|
872
954
|
│ │ │ ├── ask_user_question.ts
|
|
873
955
|
│ │ │ ├── async_command.ts
|
|
@@ -879,6 +961,7 @@ src/
|
|
|
879
961
|
│ │ │ ├── file_write.ts
|
|
880
962
|
│ │ │ ├── find_by_name.ts
|
|
881
963
|
│ │ │ ├── grep_search.ts
|
|
964
|
+
│ │ │ ├── list_mailbox_messages.ts
|
|
882
965
|
│ │ │ ├── load_skill.ts
|
|
883
966
|
│ │ │ ├── ls.ts
|
|
884
967
|
│ │ │ ├── lsp_query.ts
|
|
@@ -886,11 +969,16 @@ src/
|
|
|
886
969
|
│ │ │ ├── message.ts
|
|
887
970
|
│ │ │ ├── notebook_edit.ts
|
|
888
971
|
│ │ │ ├── plan_mode_tools.ts
|
|
972
|
+
│ │ │ ├── poll_mailbox.ts
|
|
889
973
|
│ │ │ ├── readLines.ts
|
|
974
|
+
│ │ │ ├── repl.ts
|
|
890
975
|
│ │ │ ├── search_web.ts
|
|
976
|
+
│ │ │ ├── send_message.ts
|
|
891
977
|
│ │ │ ├── session_cron.ts
|
|
892
978
|
│ │ │ ├── shell_command.ts
|
|
979
|
+
│ │ │ ├── signal_mailbox.ts
|
|
893
980
|
│ │ │ ├── task_boundary.ts
|
|
981
|
+
│ │ │ ├── task_output.ts
|
|
894
982
|
│ │ │ ├── task_tools.ts
|
|
895
983
|
│ │ │ ├── todo.ts
|
|
896
984
|
│ │ │ ├── view_file_outline.ts
|
|
@@ -905,29 +993,38 @@ src/
|
|
|
905
993
|
│ │ └── user_message_images.ts
|
|
906
994
|
│ └── ui/
|
|
907
995
|
│ ├── App.tsx # Main UI component
|
|
996
|
+
│ ├── BlumaSession.tsx # Session component (v0.1.84+)
|
|
908
997
|
│ ├── Asci/
|
|
909
998
|
│ │ └── AsciiArt.ts
|
|
910
|
-
│ ├── components/ #
|
|
999
|
+
│ ├── components/ # 35+ UI components
|
|
911
1000
|
│ │ ├── AnimatedBorder.tsx
|
|
912
1001
|
│ │ ├── AskUserQuestionPrompt.tsx
|
|
913
1002
|
│ │ ├── AssistantMessageDisplay.tsx
|
|
1003
|
+
│ │ ├── BlumaBottomDock.tsx # Bottom dock (v0.1.84+)
|
|
1004
|
+
│ │ ├── BlumaShell.tsx # Shell container (v0.1.84+)
|
|
1005
|
+
│ │ ├── BlumaTranscript.tsx # Message transcript (v0.1.84+)
|
|
1006
|
+
│ │ ├── BlumaViewport.tsx # Viewport container (v0.1.84+)
|
|
1007
|
+
│ │ ├── BlumaWorkersOverlay.tsx # Workers overlay (v0.1.84+)
|
|
914
1008
|
│ │ ├── CollapsibleResult.tsx
|
|
915
1009
|
│ │ ├── ConfirmationPrompt.tsx # Permission confirmation dialog
|
|
1010
|
+
│ │ ├── CtrlOToExpand.tsx # Ctrl+O expansion (v0.1.84+)
|
|
916
1011
|
│ │ ├── EditToolDiffPanel.tsx # Diff preview for edits
|
|
917
1012
|
│ │ ├── ErrorMessage.tsx
|
|
918
1013
|
│ │ ├── ExpandedPreviewBlock.tsx
|
|
1014
|
+
│ │ ├── FilePathLink.tsx # File path links (v0.1.84+)
|
|
1015
|
+
│ │ ├── HighlightedCode.tsx # Syntax highlighting (v0.1.84+)
|
|
919
1016
|
│ │ ├── InputPrompt.tsx # User input
|
|
920
1017
|
│ │ ├── InteractiveMenu.tsx # Interactive menu component
|
|
921
1018
|
│ │ ├── MarkdownRenderer.tsx
|
|
922
1019
|
│ │ ├── ProgressBar.tsx
|
|
923
1020
|
│ │ ├── ReasoningDisplay.tsx # LLM reasoning
|
|
924
|
-
│ │ │ ├── SessionInfoConnectingMCP.tsx
|
|
925
1021
|
│ │ ├── SessionStats.tsx
|
|
926
1022
|
│ │ ├── SimpleDiff.tsx
|
|
927
1023
|
│ │ ├── SlashCommands.tsx # 30+ commands
|
|
928
|
-
│ │ ├── StatusNotification.tsx
|
|
929
1024
|
│ │ ├── StartupUpdateGate.tsx # Update check gate
|
|
1025
|
+
│ │ ├── StatusNotification.tsx
|
|
930
1026
|
│ │ ├── StreamingText.tsx # Live text output
|
|
1027
|
+
│ │ ├── TaskDisplay.tsx
|
|
931
1028
|
│ │ ├── TodoPlanDisplay.tsx # Task visualization
|
|
932
1029
|
│ │ ├── ToolCallDisplay.tsx
|
|
933
1030
|
│ │ ├── ToolInvocationBlock.tsx
|
|
@@ -939,33 +1036,35 @@ src/
|
|
|
939
1036
|
│ │ ├── WorkerStatusList.tsx # Active workers list
|
|
940
1037
|
│ │ ├── WorkerTranscript.tsx # Worker conversation transcript
|
|
941
1038
|
│ │ ├── WorkingTimer.tsx # Work duration timer
|
|
1039
|
+
│ │ ├── WorkingShimmerText.tsx # Shimmer text effect
|
|
942
1040
|
│ │ ├── streamingTextFlush.ts
|
|
943
|
-
│ │
|
|
1041
|
+
│ │ ├── toolCallRenderers.tsx
|
|
1042
|
+
│ │ └── slash-commands/ # Slash command renderers
|
|
1043
|
+
│ │ ├── SessionLivePanel.tsx
|
|
1044
|
+
│ │ ├── SlashCommands.types.ts
|
|
1045
|
+
│ │ ├── commandHelpers.tsx
|
|
1046
|
+
│ │ ├── constants.ts
|
|
1047
|
+
│ │ └── renderers/
|
|
1048
|
+
│ │ ├── index.ts
|
|
1049
|
+
│ │ ├── configRenderers.tsx
|
|
1050
|
+
│ │ ├── infoRenderers.tsx
|
|
1051
|
+
│ │ ├── permissionRenderers.tsx
|
|
1052
|
+
│ │ ├── pluginRenderers.tsx
|
|
1053
|
+
│ │ ├── sessionRenderers.tsx
|
|
1054
|
+
│ │ ├── staticRenderers.tsx
|
|
1055
|
+
│ │ ├── taskRenderers.tsx
|
|
1056
|
+
│ │ └── threadRenderers.tsx # Thread renderers (v0.1.84+)
|
|
944
1057
|
│ ├── constants/
|
|
945
1058
|
│ │ ├── historyLayout.ts # History layout constants
|
|
946
1059
|
│ │ ├── inputPaste.ts # Input paste constants
|
|
947
|
-
│ │
|
|
1060
|
+
│ │ ├── toolUiPreview.ts # Tool UI preview constants
|
|
948
1061
|
│ │ └── toolUiSymbols.ts # Tool UI symbols
|
|
949
1062
|
│ ├── hooks/
|
|
950
1063
|
│ │ ├── useAtCompletion.ts # Completion hook
|
|
1064
|
+
│ │ ├── useBlumaSessionRuntime.tsx # Session runtime hook (v0.1.84+)
|
|
951
1065
|
│ │ └── useWorkerProgress.ts # Worker progress hook
|
|
952
1066
|
│ ├── prompts/
|
|
953
1067
|
│ │ └── initCommandPrompt.ts # Init command prompt
|
|
954
|
-
│ ├── slash-commands/
|
|
955
|
-
│ │ ├── SlashCommands.types.ts # Type definitions
|
|
956
|
-
│ │ ├── commandHelpers.tsx # Command helpers
|
|
957
|
-
│ │ ├── constants.ts # Slash command constants
|
|
958
|
-
│ │ ├── SessionLivePanel.tsx # Session live panel
|
|
959
|
-
│ │ ├── streamingTextFlush.ts # Streaming text flush
|
|
960
|
-
│ │ └── renderers/
|
|
961
|
-
│ │ ├── index.ts
|
|
962
|
-
│ │ ├── configRenderers.tsx
|
|
963
|
-
│ │ ├── infoRenderers.tsx
|
|
964
|
-
│ │ ├── permissionRenderers.tsx
|
|
965
|
-
│ │ ├── pluginRenderers.tsx
|
|
966
|
-
│ │ ├── sessionRenderers.tsx
|
|
967
|
-
│ │ ├── staticRenderers.tsx
|
|
968
|
-
│ │ └── taskRenderers.tsx
|
|
969
1068
|
│ ├── theme/
|
|
970
1069
|
│ │ ├── blumaTerminal.ts
|
|
971
1070
|
│ │ ├── themes.ts # Theme definitions
|
|
@@ -984,7 +1083,10 @@ src/
|
|
|
984
1083
|
│ ├── toolActionLabels.ts # Tool action labels
|
|
985
1084
|
│ ├── toolDisplayLabels.ts # Tool display labels
|
|
986
1085
|
│ ├── toolInvocationPairing.ts
|
|
987
|
-
│
|
|
1086
|
+
│ ├── toolResultStatusStore.ts
|
|
1087
|
+
│ ├── update_message.ts
|
|
1088
|
+
│ ├── useSimpleInputBuffer.ts
|
|
1089
|
+
│ └── vim_engine.ts # Vim mode engine
|
|
988
1090
|
├── main.ts # Entry point
|
|
989
1091
|
└── types/
|
|
990
1092
|
└── semver-functions.d.ts
|
|
@@ -997,12 +1099,14 @@ src/
|
|
|
997
1099
|
```bash
|
|
998
1100
|
npm test # Run all tests
|
|
999
1101
|
npm run test:watch # Watch mode
|
|
1102
|
+
npm run test:parallel # Parallel execution
|
|
1103
|
+
npm run test:parallel:fast # Fast mode with 8 workers
|
|
1000
1104
|
```
|
|
1001
1105
|
|
|
1002
1106
|
### Test Structure
|
|
1003
1107
|
|
|
1004
1108
|
```
|
|
1005
|
-
tests/ #
|
|
1109
|
+
tests/ # 40+ test files
|
|
1006
1110
|
├── agent_*.spec.ts # Agent routing, overlays, coordination
|
|
1007
1111
|
├── edit_tool.spec.ts # File editing operations
|
|
1008
1112
|
├── file_write.spec.ts # File write operations
|
|
@@ -1026,6 +1130,8 @@ tests/ # 35+ test files (flat structure)
|
|
|
1026
1130
|
├── ui_*.spec.ts(x) # UI component tests
|
|
1027
1131
|
├── llm_stream_partial.spec.ts # LLM streaming partial handling
|
|
1028
1132
|
├── llm_errors.spec.ts # LLM error handling
|
|
1133
|
+
├── context_manager_sanitize.spec.ts # Context sanitization
|
|
1134
|
+
├── coordinator-worker-mailbox.integration.spec.ts # Mailbox system
|
|
1029
1135
|
├── jest-resolver.cjs # Jest resolver configuration
|
|
1030
1136
|
└── ... # Additional integration and unit tests
|
|
1031
1137
|
```
|
|
@@ -1067,16 +1173,20 @@ Apache 2.0 — see [LICENSE](LICENSE) for details.
|
|
|
1067
1173
|
- **Author & Architect**: Alex Fonseca (conceived and architected BluMa)
|
|
1068
1174
|
- **npm Package**: [@nomad-e/bluma-cli](https://www.npmjs.com/package/@nomad-e/bluma-cli)
|
|
1069
1175
|
|
|
1070
|
-
### Runtime Modules
|
|
1176
|
+
### Runtime Modules
|
|
1071
1177
|
|
|
1072
1178
|
BluMa's runtime layer provides enterprise-grade orchestration:
|
|
1073
1179
|
|
|
1074
1180
|
| Module | Purpose | Key Features |
|
|
1075
1181
|
|--------|---------|--------------|
|
|
1076
1182
|
| `task_store.ts` | Task lifecycle | PLANNING → EXECUTION → VERIFICATION phases, persistence |
|
|
1183
|
+
| `thread_manager.ts` | Thread management | Multi-thread conversations, context isolation |
|
|
1077
1184
|
| `hook_registry.ts` | Event system | Tool calls, decisions, state changes |
|
|
1078
1185
|
| `plugin_registry.ts` | Plugin system | Load from `.bluma/plugins/`, lifecycle management |
|
|
1079
1186
|
| `session_registry.ts` | Multi-session | Process health monitoring, session isolation |
|
|
1187
|
+
| `mailbox_registry.ts` | Communication | Bidirectional coordinator-worker messaging |
|
|
1188
|
+
| `worker_context.ts` | Worker isolation | AsyncLocalStorage-based context |
|
|
1189
|
+
| `permission_rules.ts` | Permissions | Granular allow/deny rules |
|
|
1080
1190
|
| `sandbox_policy.ts` | Safety | Safe vs dangerous tool classification |
|
|
1081
1191
|
| `tool_execution_policy.ts` | Execution rules | Auto-approve, confirm, block decisions |
|
|
1082
1192
|
| `diagnostics.ts` | System snapshots | Tasks, hooks, plugins, sessions overview |
|
|
@@ -1096,6 +1206,12 @@ Key UI components that power the rich terminal experience:
|
|
|
1096
1206
|
|
|
1097
1207
|
| Component | Purpose |
|
|
1098
1208
|
|-----------|---------|
|
|
1209
|
+
| `BlumaSession.tsx` | Main session component with event handling |
|
|
1210
|
+
| `BlumaShell.tsx` | Shell container for layout |
|
|
1211
|
+
| `BlumaViewport.tsx` | Viewport container for responsive layout |
|
|
1212
|
+
| `BlumaTranscript.tsx` | Message transcript display |
|
|
1213
|
+
| `BlumaBottomDock.tsx` | Bottom dock for status and controls |
|
|
1214
|
+
| `BlumaWorkersOverlay.tsx` | Overlay for worker status |
|
|
1099
1215
|
| `EditToolDiffPanel.tsx` | Side-by-side diff previews before edits |
|
|
1100
1216
|
| `ToolResultCard.tsx` | Structured tool output display |
|
|
1101
1217
|
| `SlashCommands.tsx` | Command palette and help |
|
|
@@ -1109,6 +1225,10 @@ Key UI components that power the rich terminal experience:
|
|
|
1109
1225
|
| `AskUserQuestionPrompt.tsx` | Multiple-choice question UI |
|
|
1110
1226
|
| `ToolInvocationBlock.tsx` | Tool call visualization |
|
|
1111
1227
|
| `AssistantMessageDisplay.tsx` | Assistant message formatting |
|
|
1228
|
+
| `CtrlOToExpand.tsx` | Ctrl+O expansion for previews |
|
|
1229
|
+
| `FilePathLink.tsx` | Clickable file path links |
|
|
1230
|
+
| `HighlightedCode.tsx` | Syntax highlighted code blocks |
|
|
1231
|
+
| `WorkingShimmerText.tsx` | Shimmer text effect for loading states |
|
|
1112
1232
|
|
|
1113
1233
|
---
|
|
1114
1234
|
|