azerclaw 1.6.1 → 2.1.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 (121) hide show
  1. package/README.md +66 -175
  2. package/bin/azerclaw.ts +103 -2
  3. package/dist/bin/azerclaw.d.ts +0 -25
  4. package/dist/bin/azerclaw.d.ts.map +1 -1
  5. package/dist/bin/azerclaw.js +84 -3
  6. package/dist/bin/azerclaw.js.map +1 -1
  7. package/dist/src/agents/builtin.d.ts +1 -0
  8. package/dist/src/agents/builtin.d.ts.map +1 -1
  9. package/dist/src/agents/builtin.js +24 -14
  10. package/dist/src/agents/builtin.js.map +1 -1
  11. package/dist/src/agents/loader.d.ts.map +1 -1
  12. package/dist/src/agents/loader.js +1 -0
  13. package/dist/src/agents/loader.js.map +1 -1
  14. package/dist/src/channels/adapter.d.ts.map +1 -1
  15. package/dist/src/channels/adapter.js +6 -1
  16. package/dist/src/channels/adapter.js.map +1 -1
  17. package/dist/src/cli/animations/fish.d.ts +1 -0
  18. package/dist/src/cli/animations/fish.d.ts.map +1 -1
  19. package/dist/src/cli/animations/fish.js +53 -6
  20. package/dist/src/cli/animations/fish.js.map +1 -1
  21. package/dist/src/cli/commands/bot.d.ts +8 -0
  22. package/dist/src/cli/commands/bot.d.ts.map +1 -0
  23. package/dist/src/cli/commands/bot.js +42 -0
  24. package/dist/src/cli/commands/bot.js.map +1 -0
  25. package/dist/src/cli/commands/chat.d.ts +1 -1
  26. package/dist/src/cli/commands/chat.d.ts.map +1 -1
  27. package/dist/src/cli/commands/chat.js +197 -74
  28. package/dist/src/cli/commands/chat.js.map +1 -1
  29. package/dist/src/cli/commands/config.js +1 -1
  30. package/dist/src/cli/commands/config.js.map +1 -1
  31. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  32. package/dist/src/cli/commands/doctor.js +18 -3
  33. package/dist/src/cli/commands/doctor.js.map +1 -1
  34. package/dist/src/cli/commands/export.d.ts +6 -0
  35. package/dist/src/cli/commands/export.d.ts.map +1 -0
  36. package/dist/src/cli/commands/export.js +126 -0
  37. package/dist/src/cli/commands/export.js.map +1 -0
  38. package/dist/src/cli/commands/mcp.d.ts +8 -0
  39. package/dist/src/cli/commands/mcp.d.ts.map +1 -0
  40. package/dist/src/cli/commands/mcp.js +117 -0
  41. package/dist/src/cli/commands/mcp.js.map +1 -0
  42. package/dist/src/cli/commands/models.d.ts.map +1 -1
  43. package/dist/src/cli/commands/models.js +7 -2
  44. package/dist/src/cli/commands/models.js.map +1 -1
  45. package/dist/src/cli/commands/onboard.js +1 -1
  46. package/dist/src/cli/commands/onboard.js.map +1 -1
  47. package/dist/src/cli/commands/plugins.d.ts +7 -0
  48. package/dist/src/cli/commands/plugins.d.ts.map +1 -0
  49. package/dist/src/cli/commands/plugins.js +128 -0
  50. package/dist/src/cli/commands/plugins.js.map +1 -0
  51. package/dist/src/cli/commands/run.d.ts.map +1 -1
  52. package/dist/src/cli/commands/run.js +11 -3
  53. package/dist/src/cli/commands/run.js.map +1 -1
  54. package/dist/src/cli/commands/settings.js +1 -1
  55. package/dist/src/cli/commands/settings.js.map +1 -1
  56. package/dist/src/cli/commands/share.d.ts +6 -0
  57. package/dist/src/cli/commands/share.d.ts.map +1 -0
  58. package/dist/src/cli/commands/share.js +113 -0
  59. package/dist/src/cli/commands/share.js.map +1 -0
  60. package/dist/src/cli/commands/tui.d.ts.map +1 -1
  61. package/dist/src/cli/commands/tui.js +23 -3
  62. package/dist/src/cli/commands/tui.js.map +1 -1
  63. package/dist/src/config/manager.d.ts.map +1 -1
  64. package/dist/src/config/manager.js +4 -2
  65. package/dist/src/config/manager.js.map +1 -1
  66. package/dist/src/config/schema.d.ts +98 -13
  67. package/dist/src/config/schema.d.ts.map +1 -1
  68. package/dist/src/config/schema.js +69 -45
  69. package/dist/src/config/schema.js.map +1 -1
  70. package/dist/src/core/gateway.d.ts.map +1 -1
  71. package/dist/src/core/gateway.js +21 -0
  72. package/dist/src/core/gateway.js.map +1 -1
  73. package/dist/src/core/runtime.d.ts +11 -2
  74. package/dist/src/core/runtime.d.ts.map +1 -1
  75. package/dist/src/core/runtime.js +134 -10
  76. package/dist/src/core/runtime.js.map +1 -1
  77. package/dist/src/mcp-servers/antigravity/index.d.ts +2 -0
  78. package/dist/src/mcp-servers/antigravity/index.d.ts.map +1 -0
  79. package/dist/src/mcp-servers/antigravity/index.js +136 -0
  80. package/dist/src/mcp-servers/antigravity/index.js.map +1 -0
  81. package/dist/src/memory/store.d.ts +20 -2
  82. package/dist/src/memory/store.d.ts.map +1 -1
  83. package/dist/src/memory/store.js +44 -2
  84. package/dist/src/memory/store.js.map +1 -1
  85. package/dist/src/providers/base.d.ts +8 -1
  86. package/dist/src/providers/base.d.ts.map +1 -1
  87. package/dist/src/providers/base.js.map +1 -1
  88. package/dist/src/providers/openai.d.ts.map +1 -1
  89. package/dist/src/providers/openai.js +17 -3
  90. package/dist/src/providers/openai.js.map +1 -1
  91. package/dist/src/providers/router.d.ts.map +1 -1
  92. package/dist/src/providers/router.js +30 -4
  93. package/dist/src/providers/router.js.map +1 -1
  94. package/dist/src/providers/vought.d.ts +20 -0
  95. package/dist/src/providers/vought.d.ts.map +1 -0
  96. package/dist/src/providers/vought.js +35 -0
  97. package/dist/src/providers/vought.js.map +1 -0
  98. package/dist/src/server/hq.d.ts +21 -0
  99. package/dist/src/server/hq.d.ts.map +1 -0
  100. package/dist/src/server/hq.js +70 -0
  101. package/dist/src/server/hq.js.map +1 -0
  102. package/dist/src/tools/index.d.ts.map +1 -1
  103. package/dist/src/tools/index.js +22 -1
  104. package/dist/src/tools/index.js.map +1 -1
  105. package/dist/src/tools/index_memory.d.ts +14 -0
  106. package/dist/src/tools/index_memory.d.ts.map +1 -0
  107. package/dist/src/tools/index_memory.js +134 -0
  108. package/dist/src/tools/index_memory.js.map +1 -0
  109. package/dist/src/tools/mcp.d.ts +19 -0
  110. package/dist/src/tools/mcp.d.ts.map +1 -0
  111. package/dist/src/tools/mcp.js +97 -0
  112. package/dist/src/tools/mcp.js.map +1 -0
  113. package/dist/src/tools/specialized.d.ts +36 -0
  114. package/dist/src/tools/specialized.d.ts.map +1 -0
  115. package/dist/src/tools/specialized.js +196 -0
  116. package/dist/src/tools/specialized.js.map +1 -0
  117. package/dist/src/tools/visual.d.ts +7 -0
  118. package/dist/src/tools/visual.d.ts.map +1 -0
  119. package/dist/src/tools/visual.js +59 -0
  120. package/dist/src/tools/visual.js.map +1 -0
  121. package/package.json +9 -2
package/README.md CHANGED
@@ -9,222 +9,113 @@
9
9
  ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝ ╚═════╝╚══════╝╚═╝ ╚═╝ ╚══╝╚══╝
10
10
  ```
11
11
 
12
- **🐟 Your AI · Your Keys · Your Way**
12
+ **🐟 Diabolical AI · Scorched Earth · Your Way**
13
13
 
14
- [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
15
- [![Node.js](https://img.shields.io/badge/Node.js-18%2B-green.svg)](https://nodejs.org)
16
- [![BYOK](https://img.shields.io/badge/BYOK-Bring%20Your%20Own%20Key-purple.svg)](#-byok-providers)
14
+ [![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](LICENSE)
15
+ [![Node.js](https://img.shields.io/badge/Node.js-18%2B-red.svg)](https://nodejs.org)
16
+ [![BYOK](https://img.shields.io/badge/BYOK-Bring%20Your%20Own%20Key-red.svg)](#-byok-providers)
17
17
 
18
- *An open-source, BYOK autonomous AI agent for your terminal.*
19
- *Inspired by OpenClaw 🦞, powered by a fish 🐟.*
18
+ *An autonomous, uncensored AI agent gateway for your terminal.*
19
+ *Powered by **Azertron X1.0** (The Upgrade) and the **Compound V** Toolset.*
20
20
 
21
21
  </div>
22
22
 
23
23
  ---
24
24
 
25
- ## Features
25
+ ## 🩸 The Diabolical Edge
26
+
27
+ Azerclaw is not your average polite assistant. It's an autonomous force built for developers who need to get the job done—no half-measures, no filters, just scorched earth execution.
26
28
 
27
29
  | Feature | Description |
28
30
  |---|---|
29
- | 🔑 **BYOK** | Bring Your Own Key zero platform fees, use any provider |
30
- | 🤖 **Autonomous Agent** | Multi-step task execution with tool use |
31
- | 🐠 **Sub-Agents** | Spawn parallel agents for complex workloads |
32
- | 🐟 **Fish CLI** | Animated ASCII fish instead of a lobster |
33
- | 🖥️ **Premium TUI** | Luxe terminal UI with status bar & panels |
34
- | 🔧 **8 Built-in Tools** | Shell, filesystem, search, code analysis, web |
35
- | 📦 **Skills System** | SKILL.md compatible, extensible capabilities |
36
- | 🔒 **Security First** | AES-256-GCM key encryption, zero telemetry |
37
- | 🌐 **8 Providers** | OpenAI, Anthropic, Google, Ollama, Groq, DeepSeek, OpenRouter, Custom |
38
- | 💻 **Cross-Platform** | macOS (Intel + Silicon), Windows, Linux |
39
-
40
- ## 🚀 Quick Start
31
+ | 🧠 **Azertron X1.0** | Powered by the elite Azertron X1.0 backend (masked for maximum stealth). |
32
+ | 🦸‍♂️ **The Pantheon** | 12 specialized sub-agents themed after **The Boys** (Homelander, Butcher, Frenchie). |
33
+ | 🔌 **MCP Bridge** | Native support for **Model Context Protocol**. Connect to any external tool server. |
34
+ | 🎮 **Interactive UI** | Pro-grade CLI with **`/` command dropdown** and animated fish logic. |
35
+ | 🛡️ **Self-Healing** | **Vought Recovery** mode: Agents automatically analyze and fix failures in real-time. |
36
+ | 🧠 **Project RAG** | **Deep Project Memory**: Instant retrieval of code snippets across thousands of files. |
37
+ | 📄 **PDF Debriefs** | Professional, classified mission reports exported as board-ready PDFs. |
38
+ | 🚀 **Turbo Mode** | High-velocity execution with automatic tool approval and parallel spawning. |
39
+ | 🛡️ **Stealth Ops** | Dynamic identity masking. Switches to **DEEP Ocean 1.0** if primary systems fail. |
40
+
41
+ ## 🚀 Deployment
41
42
 
42
43
  ```bash
43
- # Clone
44
- git clone https://github.com/azerclaw/azerclaw.git
45
- cd azerclaw
46
-
47
- # Install
48
- npm install
44
+ # Install globally
45
+ npm install -g azerclaw
49
46
 
50
- # First run launches setup wizard with animated splash
51
- npx tsx bin/azerclaw.ts
52
-
53
- # Or use npm scripts
54
- npm start # Launch TUI
55
- npm run chat # Interactive chat
56
- npm run doctor # Health check
57
- ```
47
+ # Launch the Diabolical TUI
48
+ azerclaw
58
49
 
59
- ## 📸 Preview
50
+ # Start a stealth chat
51
+ azerclaw chat
60
52
 
53
+ # Run a one-off mission
54
+ azerclaw run "Nmap the target and find vulnerabilities"
61
55
  ```
62
- ><(((º> AZERCLAW v1.0.0
63
- Your AI · Your Keys · Your Way
64
-
65
- ╭──────────────────────────────────────────────────────────╮
66
- │ 🩺 AZERCLAW Doctor │
67
- │──────────────────────────────────────────────────────────│
68
- │ Running health checks... │
69
- ╰──────────────────────────────────────────────────────────╯
70
-
71
- ═══════════════════════════════════════><(((º> 100% System
72
-
73
- ✓ Config File Found at ~/.azerclaw/config.json
74
- ✓ Directories All present
75
- ✓ Permissions Config is 0600 (secure)
76
- ✓ Providers 1 configured: openrouter
77
- ✓ Connectivity 1 providers initialized
78
- ✓ Node.js v22.0.0
79
- ✓ System darwin arm64 | 10 cores | 16GB RAM
80
-
81
- ><(((°> ✓ All 7 checks passed! 🐟
82
- ```
83
-
84
- ## 🔑 BYOK Providers
85
56
 
86
- | Provider | Models | How to Get Key |
87
- |---|---|---|
88
- | **OpenAI** | GPT-4o, GPT-4.1, o3, o4-mini | [platform.openai.com](https://platform.openai.com) |
89
- | **Anthropic** | Claude Opus 4, Sonnet 4, Haiku | [console.anthropic.com](https://console.anthropic.com) |
90
- | **Google** | Gemini 2.5 Pro/Flash | [aistudio.google.com](https://aistudio.google.com) |
91
- | **Groq** | Llama 3.3, Mixtral | [console.groq.com](https://console.groq.com) |
92
- | **DeepSeek** | DeepSeek V3, R1 | [platform.deepseek.com](https://platform.deepseek.com) |
93
- | **OpenRouter** | 100+ models | [openrouter.ai](https://openrouter.ai) |
94
- | **Ollama** | Any local model | [ollama.ai](https://ollama.ai) |
95
- | **Custom** | Any OpenAI-compatible | Your own endpoint |
57
+ ## 🦸‍♂️ The Pantheon (Sub-Agents)
96
58
 
97
- ```bash
98
- # Configure via CLI
99
- azerclaw config set ai.providers.openrouter.apiKey "sk-or-..."
100
- azerclaw config set ai.providers.openrouter.enabled true
101
- azerclaw config set ai.defaultProvider openrouter
59
+ Invoke specialized supes directly from the chat using `/COMMAND`:
102
60
 
103
- # Or use the interactive wizard
104
- azerclaw onboard
61
+ * 🦸‍♂️ `/HOMELANDER` **Orchestrator**. Delegates and synthesizes.
62
+ * 🧥 `/BUTCHER` — **Strategic Planner**. Plots the path forward.
63
+ * 🔧 `/FRENCHIE` — **Master Coder**. Writes and debugs everything.
64
+ * 🥛 `/MOTHERS_MILK` — **DevOps**. Infrastructure and Docker.
65
+ * 🥷 `/BLACK_NOIR` — **Security**. Stealth audits and pentesting.
66
+ * 🐙 `/THE_DEEP` — **Network Specialist**. API and WebSocket mastery.
67
+ * ...and 6 more in the roster.
105
68
 
106
- # Or use environment variables
107
- export OPENAI_API_KEY="sk-..."
108
- export ANTHROPIC_API_KEY="sk-ant-..."
109
- ```
69
+ ## 🔌 Model Context Protocol (MCP)
110
70
 
111
- ## 🎮 Commands
71
+ Azerclaw speaks the universal language of AI tools. Connect to any MCP server to give your agent "hands."
112
72
 
113
73
  ```bash
114
- azerclaw # Launch TUI (or onboard if first run)
115
- azerclaw chat # Interactive chat
116
- azerclaw run "task" # Execute a single task
117
- azerclaw tui # Premium terminal UI
118
- azerclaw onboard # Setup wizard
119
- azerclaw config list # Show configuration
120
- azerclaw config get <key> # Get a config value
121
- azerclaw config set <k> <v> # Set a config value
122
- azerclaw config channels list # Show DM policy + routing settings
123
- azerclaw config channels dm-policy <platform> <pairing|open|closed>
124
- azerclaw config sandbox status # Show sandbox mode + allowed/denied tools
125
- azerclaw config sandbox mode <off|non-main|all>
126
- azerclaw models list # List available models
127
- azerclaw models status # Current model info
128
- azerclaw doctor # Health check
129
- azerclaw doctor --fix # Auto-repair issues
130
- azerclaw security audit # Security check
131
- azerclaw pairing list # List approved/pending DM pairings
132
- azerclaw pairing approve <platform> <code> # Approve DM pairing
133
- ```
134
-
135
- ## 🐟 Fish Animations
74
+ # List available MCP servers
75
+ azerclaw mcp list
136
76
 
137
- AZERCLAW replaces OpenClaw's lobster 🦞 with a fish 🐟:
77
+ # Add the Antigravity Remote (Google IDE control)
78
+ azerclaw mcp add antigravity
138
79
 
80
+ # Add Filesystem or GitHub connectors
81
+ azerclaw mcp add filesystem
82
+ azerclaw mcp add github
139
83
  ```
140
- Thinking: ><(((º> ○ ○ Working...
141
- Success: ><(((°> ✓ Done!
142
- Error: ><(((x> ✗ Failed!
143
- Progress: ═══════><(((º>░░░░░ 67%
144
- ```
145
-
146
- ## 🤖 Agent & Sub-Agents
147
-
148
- AZERCLAW uses an autonomous agent loop with sub-agent orchestration:
149
84
 
150
- ```
151
- ┌──────────────────────────┐
152
- │ Main Agent │
153
- │ (receives user task) │
154
- ├──────────────────────────┤
155
- │ ↓ Thinks & Plans │
156
- │ ↓ Uses Tools │
157
- │ ↓ Spawns Sub-Agents │
158
- │ │
159
- │ ┌────────┐ ┌────────┐ │
160
- │ │Sub 🐠 A│ │Sub 🐠 B│ │
161
- │ │Research│ │ Code │ │
162
- │ └────────┘ └────────┘ │
163
- │ │
164
- │ ↓ Aggregates Results │
165
- │ ↓ Returns Response │
166
- └──────────────────────────┘
167
- ```
85
+ ## 🔑 BYOK Providers
168
86
 
169
- ## 🔒 Security
87
+ Azerclaw is **Bring Your Own Key**. We ship with a default Cloudflare configuration for instant access, but you can plug in any provider:
170
88
 
171
- - **Zero telemetry** no data ever leaves your machine
172
- - **No analytics** we don't track anything
173
- - **No phone-home** no background network requests
174
- - **AES-256-GCM** API keys encrypted at rest
175
- - **0600 permissions** — config files owner-only
176
- - **Audit logging** — local security event log
177
- - **Env sanitization** — sensitive vars stripped from child processes
178
- - **SSRF protection** — blocks requests to private/internal IPs
179
- - **DM pairing policy** — default DM access requires explicit approval per sender
180
- - **Session sandbox modes** — isolate non-main or all sessions with tool allow/deny policy
89
+ * **Cloudflare Workers AI** (Default: Azertron X1.0)
90
+ * **OpenRouter** (Fallback: DEEP Ocean 1.0)
91
+ * **Anthropic / OpenAI / Google / DeepSeek / Groq**
92
+ * **Ollama / LM Studio** (For 100% local dark ops)
181
93
 
182
- ## 📦 Skills System
94
+ ## 🤖 Messenger Bots (The Boys in Your Pocket)
183
95
 
184
- Skills are SKILL.md files compatible with the OpenClaw ecosystem:
185
-
186
- ```markdown
187
- ---
188
- name: Code Review
189
- description: Review code for bugs and security issues
190
- version: 1.0.0
191
- tags: code, review
192
- ---
193
-
194
- # Code Review Skill
195
- When asked to review code...
196
- ```
197
-
198
- Skills load from (priority order):
199
- 1. `<workspace>/skills/` — Project-specific
200
- 2. `~/.agents/skills/` — Personal
201
- 3. `~/.azerclaw/skills/` — Managed
202
- 4. `<install>/skills/` — Bundled defaults
203
-
204
- ## 🛠️ Development
96
+ Azerclaw can run as a bot on Telegram, Discord, or Slack.
205
97
 
206
98
  ```bash
207
- # Install dependencies
208
- npm install
99
+ # Enable Telegram bot
100
+ azerclaw config set channels.telegram.enabled true
101
+ azerclaw config set channels.telegram.token YOUR_BOT_TOKEN
209
102
 
210
- # Run in dev mode
211
- npm run dev
212
-
213
- # Build
214
- npm run build
215
-
216
- # Run doctor
217
- npm run doctor
103
+ # Start the bot daemon
104
+ azerclaw bot start
218
105
  ```
219
106
 
220
- ## 📄 License
107
+ *Telegram bots act as **BUTCHER** by default, ensuring your messages are handled with proper scorched-earth attitude.*
108
+
109
+ ## 🔒 Security & Privacy
221
110
 
222
- MIT Free and open source forever.
111
+ - **Zero Telemetry:** We don't track your prompts, your keys, or your wins.
112
+ - **Local Vault:** Keys are stored in `~/.azerclaw/settings.json` with `0600` permissions.
113
+ - **Audit Logs:** Every "Compound V" tool execution is logged locally for your review.
223
114
 
224
115
  ---
225
116
 
226
117
  <div align="center">
227
118
 
228
- **🐟 AZERCLAW — Your AI, Your Keys, Your Way**
119
+ **🐟 AZERCLAW — Your AI · Your Keys · Your Way**
229
120
 
230
121
  </div>
package/bin/azerclaw.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
 
3
+ process.removeAllListeners('warning');
4
+ process.env.NODE_NO_WARNINGS = '1';
5
+
3
6
  /**
4
7
  * 🐟 AZERCLAW — CLI Entry Point
5
8
  *
@@ -28,10 +31,17 @@
28
31
 
29
32
  const { Command } = require('commander');
30
33
  const chalk = require('chalk');
34
+
35
+ // Disable colors and animations if output is piped
36
+ if (!process.stdout.isTTY) {
37
+ chalk.level = 0;
38
+ process.env.FORCE_COLOR = '0';
39
+ }
40
+
31
41
  const { playSplashScreen, printQuickSplash, fishError, fishInfo, fishSuccess } = require('../src/cli/animations/fish');
32
42
  const { getConfigManager } = require('../src/config/manager');
33
43
 
34
- const VERSION = '1.6.1';
44
+ const VERSION = '2.1.1';
35
45
  const program = new Command();
36
46
 
37
47
  // ─── Program Setup ──────────────────────────────────────────────
@@ -42,7 +52,11 @@ program
42
52
  .version(VERSION, '-v, --version', 'Display version')
43
53
  .option('--no-splash', 'Skip the splash screen')
44
54
  .option('--no-color', 'Disable colors')
45
- .hook('preAction', async () => {
55
+ .hook('preAction', async (thisCommand: any) => {
56
+ if (thisCommand.opts().color === false) {
57
+ chalk.level = 0;
58
+ process.env.FORCE_COLOR = '0';
59
+ }
46
60
  // Global initialization
47
61
  const { registerAllTools } = require('../src/tools');
48
62
  await registerAllTools();
@@ -241,6 +255,13 @@ program
241
255
  showStatus();
242
256
  });
243
257
 
258
+ program
259
+ .command('version')
260
+ .description('Display version information')
261
+ .action(() => {
262
+ console.log(`AZERCLAW v${VERSION} — Diabolical Edition`);
263
+ });
264
+
244
265
  // ─── Config Command ─────────────────────────────────────────────
245
266
 
246
267
  const configCmd = program
@@ -841,6 +862,86 @@ toolsCmd.action(() => {
841
862
  program.helpInformation();
842
863
  });
843
864
 
865
+ // ─── Bot Command ─────────────────────────────────────────────
866
+
867
+ const botCmd = program
868
+ .command('bot')
869
+ .description('Manage messenger bots (Telegram, Discord, Slack)');
870
+
871
+ botCmd
872
+ .command('start')
873
+ .description('Start all enabled bot channels')
874
+ .option('-p, --port <port>', 'Gateway port', '3142')
875
+ .action(async (opts: any) => {
876
+ const { startBot } = require('../src/cli/commands/bot');
877
+ await startBot({ port: parseInt(opts.port, 10) });
878
+ });
879
+
880
+ // ─── Export Command ─────────────────────────────────────────────
881
+
882
+ program
883
+ .command('export [sessionId]')
884
+ .description('Export a session as a professional PDF Mission Debrief')
885
+ .action(async (sessionId: string | undefined) => {
886
+ const { runExport } = require('../src/cli/commands/export');
887
+ await runExport(sessionId);
888
+ });
889
+
890
+ // ─── Share Command ──────────────────────────────────────────────
891
+
892
+ program
893
+ .command('share [sessionId]')
894
+ .description('Export a session as a shareable markdown file')
895
+ .action(async (sessionId: string | undefined) => {
896
+ const { runShare } = require('../src/cli/commands/share');
897
+ await runShare(sessionId);
898
+ });
899
+
900
+ // ─── Plugin Commands ───────────────────────────────────────────
901
+
902
+ const plugins = program.command('plugin')
903
+ .description('Manage community plugins');
904
+
905
+ plugins.command('list')
906
+ .description('List available community plugins')
907
+ .action(async () => {
908
+ const { listPlugins } = require('../src/cli/commands/plugins');
909
+ await listPlugins();
910
+ });
911
+
912
+ plugins.command('install <name>')
913
+ .description('Install a community plugin')
914
+ .action(async (name: string) => {
915
+ const { installPlugin } = require('../src/cli/commands/plugins');
916
+ await installPlugin(name);
917
+ });
918
+
919
+ // ─── MCP Commands ──────────────────────────────────────────────
920
+
921
+ const mcp = program.command('mcp')
922
+ .description('Manage Model Context Protocol (MCP) servers');
923
+
924
+ mcp.command('list')
925
+ .description('List available MCP servers from the directory')
926
+ .action(async () => {
927
+ const { listMCPDirectory } = require('../src/cli/commands/mcp');
928
+ await listMCPDirectory();
929
+ });
930
+
931
+ mcp.command('add <name>')
932
+ .description('Add an MCP server from the directory')
933
+ .action(async (name: string) => {
934
+ const { addMCPServer } = require('../src/cli/commands/mcp');
935
+ await addMCPServer(name);
936
+ });
937
+
938
+ mcp.command('remove <name>')
939
+ .description('Remove an MCP server')
940
+ .action(async (name: string) => {
941
+ const { removeMCPServer } = require('../src/cli/commands/mcp');
942
+ await removeMCPServer(name);
943
+ });
944
+
844
945
  // ─── Parse & Run ────────────────────────────────────────────────
845
946
 
846
947
 
@@ -1,28 +1,3 @@
1
1
  #!/usr/bin/env node
2
- /**
3
- * 🐟 AZERCLAW — CLI Entry Point
4
- *
5
- * An open-source, BYOK AI agent for your terminal.
6
- * Inspired by OpenClaw, themed with a fish 🐟 instead of a lobster.
7
- *
8
- * Usage:
9
- * azerclaw — Launch interactive session (or onboard if first run)
10
- * azerclaw chat — Interactive chat
11
- * azerclaw run "task" — Execute a task
12
- * azerclaw tui — Premium terminal UI
13
- * azerclaw onboard — Setup wizard
14
- * azerclaw config — Manage configuration
15
- * azerclaw config provider — Switch provider
16
- * azerclaw config model — Switch model
17
- * azerclaw config apikey — Set API key
18
- * azerclaw config fallback — Configure fallback
19
- * azerclaw config channels — DM policy + routing controls
20
- * azerclaw config sandbox — Session sandbox controls
21
- * azerclaw pairing — Manage DM pairing approvals
22
- * azerclaw init — Initialize project (AZERCLAW.md)
23
- * azerclaw models — Manage AI models
24
- * azerclaw doctor — Health check
25
- * azerclaw status — Show current status
26
- */
27
2
  export {};
28
3
  //# sourceMappingURL=azerclaw.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"azerclaw.d.ts","sourceRoot":"","sources":["../../bin/azerclaw.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}
1
+ {"version":3,"file":"azerclaw.d.ts","sourceRoot":"","sources":["../../bin/azerclaw.ts"],"names":[],"mappings":""}
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ process.removeAllListeners('warning');
5
+ process.env.NODE_NO_WARNINGS = '1';
3
6
  /**
4
7
  * 🐟 AZERCLAW — CLI Entry Point
5
8
  *
@@ -25,12 +28,16 @@
25
28
  * azerclaw doctor — Health check
26
29
  * azerclaw status — Show current status
27
30
  */
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
31
  const { Command } = require('commander');
30
32
  const chalk = require('chalk');
33
+ // Disable colors and animations if output is piped
34
+ if (!process.stdout.isTTY) {
35
+ chalk.level = 0;
36
+ process.env.FORCE_COLOR = '0';
37
+ }
31
38
  const { playSplashScreen, printQuickSplash, fishError, fishInfo, fishSuccess } = require('../src/cli/animations/fish');
32
39
  const { getConfigManager } = require('../src/config/manager');
33
- const VERSION = '1.6.1';
40
+ const VERSION = '2.1.1';
34
41
  const program = new Command();
35
42
  // ─── Program Setup ──────────────────────────────────────────────
36
43
  program
@@ -39,7 +46,11 @@ program
39
46
  .version(VERSION, '-v, --version', 'Display version')
40
47
  .option('--no-splash', 'Skip the splash screen')
41
48
  .option('--no-color', 'Disable colors')
42
- .hook('preAction', async () => {
49
+ .hook('preAction', async (thisCommand) => {
50
+ if (thisCommand.opts().color === false) {
51
+ chalk.level = 0;
52
+ process.env.FORCE_COLOR = '0';
53
+ }
43
54
  // Global initialization
44
55
  const { registerAllTools } = require('../src/tools');
45
56
  await registerAllTools();
@@ -205,6 +216,12 @@ program
205
216
  const { showStatus } = require('../src/cli/commands/settings');
206
217
  showStatus();
207
218
  });
219
+ program
220
+ .command('version')
221
+ .description('Display version information')
222
+ .action(() => {
223
+ console.log(`AZERCLAW v${VERSION} — Diabolical Edition`);
224
+ });
208
225
  // ─── Config Command ─────────────────────────────────────────────
209
226
  const configCmd = program
210
227
  .command('config')
@@ -731,6 +748,70 @@ toolsCmd
731
748
  toolsCmd.action(() => {
732
749
  program.helpInformation();
733
750
  });
751
+ // ─── Bot Command ─────────────────────────────────────────────
752
+ const botCmd = program
753
+ .command('bot')
754
+ .description('Manage messenger bots (Telegram, Discord, Slack)');
755
+ botCmd
756
+ .command('start')
757
+ .description('Start all enabled bot channels')
758
+ .option('-p, --port <port>', 'Gateway port', '3142')
759
+ .action(async (opts) => {
760
+ const { startBot } = require('../src/cli/commands/bot');
761
+ await startBot({ port: parseInt(opts.port, 10) });
762
+ });
763
+ // ─── Export Command ─────────────────────────────────────────────
764
+ program
765
+ .command('export [sessionId]')
766
+ .description('Export a session as a professional PDF Mission Debrief')
767
+ .action(async (sessionId) => {
768
+ const { runExport } = require('../src/cli/commands/export');
769
+ await runExport(sessionId);
770
+ });
771
+ // ─── Share Command ──────────────────────────────────────────────
772
+ program
773
+ .command('share [sessionId]')
774
+ .description('Export a session as a shareable markdown file')
775
+ .action(async (sessionId) => {
776
+ const { runShare } = require('../src/cli/commands/share');
777
+ await runShare(sessionId);
778
+ });
779
+ // ─── Plugin Commands ───────────────────────────────────────────
780
+ const plugins = program.command('plugin')
781
+ .description('Manage community plugins');
782
+ plugins.command('list')
783
+ .description('List available community plugins')
784
+ .action(async () => {
785
+ const { listPlugins } = require('../src/cli/commands/plugins');
786
+ await listPlugins();
787
+ });
788
+ plugins.command('install <name>')
789
+ .description('Install a community plugin')
790
+ .action(async (name) => {
791
+ const { installPlugin } = require('../src/cli/commands/plugins');
792
+ await installPlugin(name);
793
+ });
794
+ // ─── MCP Commands ──────────────────────────────────────────────
795
+ const mcp = program.command('mcp')
796
+ .description('Manage Model Context Protocol (MCP) servers');
797
+ mcp.command('list')
798
+ .description('List available MCP servers from the directory')
799
+ .action(async () => {
800
+ const { listMCPDirectory } = require('../src/cli/commands/mcp');
801
+ await listMCPDirectory();
802
+ });
803
+ mcp.command('add <name>')
804
+ .description('Add an MCP server from the directory')
805
+ .action(async (name) => {
806
+ const { addMCPServer } = require('../src/cli/commands/mcp');
807
+ await addMCPServer(name);
808
+ });
809
+ mcp.command('remove <name>')
810
+ .description('Remove an MCP server')
811
+ .action(async (name) => {
812
+ const { removeMCPServer } = require('../src/cli/commands/mcp');
813
+ await removeMCPServer(name);
814
+ });
734
815
  // ─── Parse & Run ────────────────────────────────────────────────
735
816
  program.parse(process.argv);
736
817
  //# sourceMappingURL=azerclaw.js.map