@nomad-e/bluma-cli 0.1.73 → 0.1.75

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
@@ -11,7 +11,7 @@
11
11
 
12
12
  > **Credit:** BluMa was conceived and architected by **Alex Fonseca**.
13
13
 
14
- **Current Version:** 0.1.60
14
+ **Current Version:** 0.1.74
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**: 40+ native tools + MCP SDK integration for external tools
45
+ - **Tool Layer**: 45+ 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
 
@@ -67,7 +67,7 @@ The agent maintains persistent conversation history, workspace snapshots, and co
67
67
  - **Tool Execution Policy**: Intelligent decisions based on sandbox mode and safety
68
68
 
69
69
  ### Tools & Skills
70
- - **40+ Native Tools**: File operations, search, shell commands, web fetch, agent coordination, task management, MCP resources, cron scheduling, LSP queries, notebook editing
70
+ - **45+ Native Tools**: File operations, search, shell commands, web fetch, agent coordination, task management, MCP resources, cron scheduling, LSP queries, notebook editing
71
71
  - **Coordinator Mode**: Orchestrator playbook for delegating work to background workers
72
72
  - **MCP Integration**: Model Context Protocol SDK for external tool servers
73
73
  - **Skills System**: Pluggable knowledge modules (git, PDF, Excel, etc.)
@@ -237,7 +237,7 @@ npm start
237
237
  ┌────────────────────────┼────────────────────────────────────┐
238
238
  │ Tools Layer │
239
239
  │ ┌──────────────────────────────────────────────────────┐ │
240
- │ │ Native Tools (40+) │ │
240
+ │ │ Native Tools (45+) │ │
241
241
  │ │ edit_tool, file_write, shell_command, grep_search, │ │
242
242
  │ │ spawn_agent, wait_agent, list_agents, │ │
243
243
  │ │ todo, task_boundary, task_create, task_list, │ │
@@ -260,7 +260,7 @@ npm start
260
260
 
261
261
  ## Native Tools
262
262
 
263
- BluMa includes **40+ built-in tools** organized by category:
263
+ BluMa includes **45+ built-in tools** organized by category:
264
264
 
265
265
  ### File Operations
266
266
  | Tool | Description |
@@ -341,6 +341,18 @@ BluMa includes **40+ built-in tools** organized by category:
341
341
  | `repl` | Interactive code execution (Python, Node, Bash) |
342
342
  | `task_output` | Read task output in real-time |
343
343
 
344
+ ### Specialized
345
+ | Tool | Description |
346
+ |------|-------------|
347
+ | `context_collapse` | Collapse context window |
348
+ | `dream_engine` | Auto-dream feature (coding memory consolidation) |
349
+ | `brief` | Generate project brief |
350
+ | `ctx_inspect` | Inspect current context |
351
+ | `snip` | Code snippet management |
352
+ | `coordinator_tools` | Coordinator mode utilities |
353
+ | `create-next-app` | Scaffold Next.js project with shadcn/ui + Tailwind |
354
+ | `deploy-app` | Deploy Next.js to Severino hosting |
355
+
344
356
  ### Plan Mode
345
357
  | Tool | Description |
346
358
  |------|-------------|
@@ -349,7 +361,7 @@ BluMa includes **40+ built-in tools** organized by category:
349
361
 
350
362
  ---
351
363
 
352
- ## New Features in v0.1.60
364
+ ## Current Features
353
365
 
354
366
  ### Mailbox System (Bidirectional Communication)
355
367
  **Push-based communication** between coordinator and workers using EventEmitter:
@@ -570,6 +582,7 @@ Level 3b: scripts/*.py
570
582
  |-------|-------------|
571
583
  | `git-commit` | Conventional commits, staging, commit messages |
572
584
  | `git-pr` | Pull requests, code review preparation |
585
+ | `git-release` | Version bumps, changelogs, git tags, GitHub releases |
573
586
  | `pdf` | PDF creation, extraction, merging, OCR |
574
587
  | `xlsx` | Spreadsheet operations, formulas, charts |
575
588
  | `skill-creator` | Author new BluMa skills |
@@ -765,11 +778,29 @@ src/
765
778
  │ │ ├── agent.ts # Main orchestrator
766
779
  │ │ ├── bluma/ # Core agent logic
767
780
  │ │ │ ├── core/
768
- │ │ │ │ └── bluma.ts # BluMaAgent class
769
- │ │ │ └── turn_start_payload.ts # Backend turn payload
781
+ │ │ │ │ ├── bluma.ts # BluMaAgent class
782
+ │ │ │ └── turn_start_payload.ts
783
+ │ │ │ ├── context/
784
+ │ │ │ │ └── auto_compact.ts # Automatic context compaction
785
+ │ │ │ ├── memory/
786
+ │ │ │ │ └── session_memory.ts # Session memory
787
+ │ │ │ └── types/
788
+ │ │ │ └── errors.ts # Error type definitions
770
789
  │ │ ├── config/
771
- │ │ │ ├── native_tools.json # Tool definitions (40+)
772
- │ │ │ └── skills/ # Bundled skills (git-commit, git-pr, pdf, xlsx, skill-creator)
790
+ │ │ │ ├── native_tools.json # Tool definitions (45+)
791
+ │ │ │ ├── skills/ # Bundled skills
792
+ │ │ │ │ ├── git-commit/
793
+ │ │ │ │ ├── git-pr/
794
+ │ │ │ │ ├── git-release/ # Version bumps, changelogs, releases
795
+ │ │ │ │ ├── pdf/
796
+ │ │ │ │ ├── skill-creator/
797
+ │ │ │ │ └── xlsx/
798
+ │ │ │ │ └── scripts/
799
+ │ │ │ │ └── office/ # Office document handling
800
+ │ │ │ │ ├── pack.py
801
+ │ │ │ │ ├── unpack.py
802
+ │ │ │ │ ├── validate.py
803
+ │ │ │ │ └── soffice.py
773
804
  │ │ ├── core/ # LLM, context, prompts
774
805
  │ │ │ ├── context-api/ # Context management
775
806
  │ │ │ │ ├── context_manager.ts # Token-aware context
@@ -777,17 +808,32 @@ src/
777
808
  │ │ │ │ └── token_counter.ts # Tiktoken integration
778
809
  │ │ │ ├── llm/ # LLM client
779
810
  │ │ │ │ ├── llm.ts # FactorRouter client
811
+ │ │ │ │ ├── llm_errors.ts # LLM error formatting
812
+ │ │ │ │ ├── streaming_delta.ts # Streaming delta handling
780
813
  │ │ │ │ └── tool_call_normalizer.ts
781
- │ │ │ └── prompt/ # Prompt engineering
782
- │ │ │ ├── prompt_builder.ts # Dynamic prompts
783
- │ │ │ └── workspace_snapshot.ts
814
+ │ │ │ ├── prompt/ # Prompt engineering
815
+ │ │ │├── prompt_builder.ts # Dynamic prompts
816
+ │ │ │ │ ├── workspace_snapshot.ts
817
+ │ │ │ │ ├── mcp_instructions.ts
818
+ │ │ │ │ ├── model_info.ts
819
+ │ │ │ │ ├── production_sandbox_prompt.ts
820
+ │ │ │ │ ├── system_prompt_sections.ts
821
+ │ │ │ │ ├── system_reminders.ts
822
+ │ │ │ │ └── tool_guidance.ts
823
+ │ │ │ └── context_viz.ts # Context visualization
824
+ │ │ ├── docs/
825
+ │ │ │ └── TOOL_PARITY.md # Tool parity documentation
784
826
  │ │ ├── feedback/
785
827
  │ │ │ └── feedback_system.ts # Smart feedback system
828
+ │ │ │ └── feedback_scoring.ts # User feedback scoring
786
829
  │ │ ├── runtime/ # Orchestration layer (v0.1.41+)
787
830
  │ │ │ ├── diagnostics.ts # System snapshots
788
831
  │ │ │ ├── feature_flags.ts # Feature gates
789
832
  │ │ │ ├── hook_registry.ts # Event-driven hooks
790
833
  │ │ │ ├── native_tool_catalog.ts # Tool registry
834
+ │ │ │ ├── permission_bridge.ts # Leader↔Worker permission system
835
+ │ │ │ ├── permission_rules.ts # Permission rule definitions
836
+ │ │ │ ├── tool_permission_classifier.ts
791
837
  │ │ │ ├── plan_mode_session.ts # Plan mode state
792
838
  │ │ │ ├── plugin_registry.ts # Plugin system
793
839
  │ │ │ ├── plugin_runtime.ts # Plugin execution
@@ -799,21 +845,29 @@ src/
799
845
  │ │ │ ├── tool_auto_approve.ts # Auto-approve rules
800
846
  │ │ │ ├── tool_execution_policy.ts
801
847
  │ │ │ ├── tool_orchestration.ts # Parallel read eligibility
802
- │ │ │ └── tool_permission_classifier.ts
848
+ │ │ │ ├── mailbox_registry.ts # Mailbox system
849
+ │ │ │ ├── worker_context.ts # Worker context management
850
+ │ │ │ └── factorai_context.ts # FactorAI app context
803
851
  │ │ ├── session_manager/
804
852
  │ │ │ └── session_manager.ts # Session persistence
805
853
  │ │ ├── skills/
806
- │ │ │ └── skill_loader.ts # Skill loading
854
+ │ │ │ └── skill_loader.ts # 3-source skill loading
807
855
  │ │ ├── subagents/ # Subagent system
808
856
  │ │ │ ├── base_llm_subagent.ts
809
857
  │ │ │ ├── init/ # Init subagent (BluMa.md)
858
+ │ │ │ │ ├── init_subagent.ts # Deep project analysis
859
+ │ │ │ │ ├── init_system_prompt.ts
860
+ │ │ │ │ └── contracts.ts
810
861
  │ │ │ ├── registry.ts
811
- │ │ │ ├── subagents_bluma.ts
812
- │ │ │ └── types.ts
862
+ │ │ │ ├── subagents_bluma.ts # SubAgent orchestration
863
+ │ │ │ ├── types.ts # SubAgent type definitions
864
+ │ │ │ └── worker_system_prompt.ts
813
865
  │ │ ├── tools/
814
866
  │ │ │ ├── mcp/
815
867
  │ │ │ │ └── mcp_client.ts # MCP SDK client
816
- │ │ │ └── natives/ # 27 native tool implementations
868
+ │ │ │ ├── shared/
869
+ │ │ │ │ └── token_utils.ts # Token utilities
870
+ │ │ │ └── natives/ # 45+ native tool implementations
817
871
  │ │ │ ├── agent_coordination.ts
818
872
  │ │ │ ├── ask_user_question.ts
819
873
  │ │ │ ├── async_command.ts
@@ -844,29 +898,35 @@ src/
844
898
  │ │ ├── types/
845
899
  │ │ │ └── index.ts
846
900
  │ │ └── utils/
901
+ │ │ ├── blumamd.ts # BluMa markdown utilities
847
902
  │ │ ├── coordinator_prompt.ts # Coordinator mode playbook
903
+ │ │ ├── logger.ts # Logging utilities
848
904
  │ │ ├── update_check.ts
849
905
  │ │ └── user_message_images.ts
850
906
  │ └── ui/
851
907
  │ ├── App.tsx # Main UI component
852
908
  │ ├── Asci/
853
909
  │ │ └── AsciiArt.ts
854
- │ ├── components/ # 24+ UI components
910
+ │ ├── components/ # 25+ UI components
855
911
  │ │ ├── AnimatedBorder.tsx
856
912
  │ │ ├── AskUserQuestionPrompt.tsx
857
913
  │ │ ├── AssistantMessageDisplay.tsx
858
914
  │ │ ├── CollapsibleResult.tsx
915
+ │ │ ├── ConfirmationPrompt.tsx # Permission confirmation dialog
859
916
  │ │ ├── EditToolDiffPanel.tsx # Diff preview for edits
860
917
  │ │ ├── ErrorMessage.tsx
861
918
  │ │ ├── ExpandedPreviewBlock.tsx
862
919
  │ │ ├── InputPrompt.tsx # User input
920
+ │ │ ├── InteractiveMenu.tsx # Interactive menu component
863
921
  │ │ ├── MarkdownRenderer.tsx
864
922
  │ │ ├── ProgressBar.tsx
865
923
  │ │ ├── ReasoningDisplay.tsx # LLM reasoning
924
+ │ │ │ ├── SessionInfoConnectingMCP.tsx
866
925
  │ │ ├── SessionStats.tsx
867
926
  │ │ ├── SimpleDiff.tsx
868
927
  │ │ ├── SlashCommands.tsx # 30+ commands
869
928
  │ │ ├── StatusNotification.tsx
929
+ │ │ ├── StartupUpdateGate.tsx # Update check gate
870
930
  │ │ ├── StreamingText.tsx # Live text output
871
931
  │ │ ├── TodoPlanDisplay.tsx # Task visualization
872
932
  │ │ ├── ToolCallDisplay.tsx
@@ -875,17 +935,41 @@ src/
875
935
  │ │ ├── ToolResultDisplay.tsx
876
936
  │ │ ├── TypewriterText.tsx
877
937
  │ │ ├── UpdateNotice.tsx
938
+ │ │ ├── WorkerOverlay.tsx # Worker status overlay
939
+ │ │ ├── WorkerStatusList.tsx # Active workers list
940
+ │ │ ├── WorkerTranscript.tsx # Worker conversation transcript
941
+ │ │ ├── WorkingTimer.tsx # Work duration timer
878
942
  │ │ ├── streamingTextFlush.ts
879
943
  │ │ └── toolCallRenderers.tsx
880
944
  │ ├── constants/
881
- │ │ ├── historyLayout.ts
882
- │ │ ├── inputPaste.ts
883
- │ │ └── toolUiPreview.ts
945
+ │ │ ├── historyLayout.ts # History layout constants
946
+ │ │ ├── inputPaste.ts # Input paste constants
947
+ │ │ └── toolUiPreview.ts # Tool UI preview constants
948
+ │ │ └── toolUiSymbols.ts # Tool UI symbols
884
949
  │ ├── hooks/
885
- │ │ └── useAtCompletion.ts
950
+ │ │ ├── useAtCompletion.ts # Completion hook
951
+ │ │ └── useWorkerProgress.ts # Worker progress hook
952
+ │ ├── prompts/
953
+ │ │ └── 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
886
969
  │ ├── theme/
887
970
  │ │ ├── blumaTerminal.ts
888
- │ │ └── m3Layout.tsx
971
+ │ │ ├── themes.ts # Theme definitions
972
+ │ │ └── m3Layout.tsx # Material Design 3 layout
889
973
  │ └── utils/
890
974
  │ ├── clipboardImage.ts
891
975
  │ ├── editToolDiffUtils.ts
@@ -896,8 +980,9 @@ src/
896
980
  │ ├── pathDisplay.ts
897
981
  │ ├── shellToolNames.ts
898
982
  │ ├── slashRegistry.ts
899
- │ ├── terminalTitle.ts
900
- │ ├── toolDisplayLabels.ts
983
+ │ ├── terminalTitle.ts # Terminal title keeper
984
+ │ ├── toolActionLabels.ts # Tool action labels
985
+ │ ├── toolDisplayLabels.ts # Tool display labels
901
986
  │ ├── toolInvocationPairing.ts
902
987
  │ └── useSimpleInputBuffer.ts
903
988
  ├── main.ts # Entry point
@@ -917,7 +1002,7 @@ npm run test:watch # Watch mode
917
1002
  ### Test Structure
918
1003
 
919
1004
  ```
920
- tests/ # 33 test files (flat structure)
1005
+ tests/ # 35+ test files (flat structure)
921
1006
  ├── agent_*.spec.ts # Agent routing, overlays, coordination
922
1007
  ├── edit_tool.spec.ts # File editing operations
923
1008
  ├── file_write.spec.ts # File write operations
@@ -939,6 +1024,9 @@ tests/ # 33 test files (flat structure)
939
1024
  ├── web_fetch.spec.ts # Web fetching
940
1025
  ├── workspace_snapshot.spec.ts # Workspace analysis
941
1026
  ├── ui_*.spec.ts(x) # UI component tests
1027
+ ├── llm_stream_partial.spec.ts # LLM streaming partial handling
1028
+ ├── llm_errors.spec.ts # LLM error handling
1029
+ ├── jest-resolver.cjs # Jest resolver configuration
942
1030
  └── ... # Additional integration and unit tests
943
1031
  ```
944
1032
 
@@ -636,13 +636,13 @@
636
636
  "type": "function",
637
637
  "function": {
638
638
  "name": "search_web",
639
- "description": "Search for programming solutions across developer-focused sources: Reddit (programming subreddits), GitHub (issues/discussions), StackOverflow, and X (link only). Use this to find solutions, best practices, and community discussions about errors or implementation approaches.",
639
+ "description": "Search for programming solutions across developer-focused sources: Reddit (programming subreddits), GitHub (issues/discussions), StackOverflow, and X (link only). Use this to find solutions, best practices, and community discussions about errors or implementation approaches. NEW: Supports domain filtering and rate limiting.",
640
640
  "parameters": {
641
641
  "type": "object",
642
642
  "properties": {
643
643
  "query": {
644
644
  "type": "string",
645
- "description": "Search query, e.g. 'typescript cannot find module', 'react useEffect infinite loop fix'"
645
+ "description": "Search query, e.g. 'typescript cannot find module', 'react useEffect infinite loop fix'. Must be 2-500 characters."
646
646
  },
647
647
  "sources": {
648
648
  "type": "array",
@@ -664,8 +664,31 @@
664
664
  },
665
665
  "max_results": {
666
666
  "type": "integer",
667
- "description": "Maximum total results to return. Default is 10.",
668
- "default": 10
667
+ "description": "Maximum total results to return. Default is 10, max is 50.",
668
+ "default": 10,
669
+ "maximum": 50,
670
+ "minimum": 1
671
+ },
672
+ "allowed_domains": {
673
+ "type": "array",
674
+ "items": {
675
+ "type": "string"
676
+ },
677
+ "description": "Only include search results from these domains (e.g., ['github.com', 'reddit.com']). Cannot be used with blocked_domains."
678
+ },
679
+ "blocked_domains": {
680
+ "type": "array",
681
+ "items": {
682
+ "type": "string"
683
+ },
684
+ "description": "Never include search results from these domains (e.g., ['spam-site.com']). Cannot be used with allowed_domains."
685
+ },
686
+ "max_uses": {
687
+ "type": "integer",
688
+ "description": "Maximum number of sources to search (rate limiting). Default is 8, max is 20.",
689
+ "default": 8,
690
+ "maximum": 20,
691
+ "minimum": 1
669
692
  }
670
693
  },
671
694
  "required": [