@phuetz/code-buddy 0.1.13 → 0.1.15

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 (258) hide show
  1. package/README.md +228 -13
  2. package/dist/agent/architect-mode.d.ts +11 -0
  3. package/dist/agent/architect-mode.js +133 -25
  4. package/dist/agent/architect-mode.js.map +1 -1
  5. package/dist/agent/codebuddy-agent.d.ts +24 -0
  6. package/dist/agent/codebuddy-agent.js +118 -16
  7. package/dist/agent/codebuddy-agent.js.map +1 -1
  8. package/dist/agent/execution/agent-executor.d.ts +9 -0
  9. package/dist/agent/execution/agent-executor.js +61 -0
  10. package/dist/agent/execution/agent-executor.js.map +1 -1
  11. package/dist/agent/message-queue.d.ts +77 -0
  12. package/dist/agent/message-queue.js +116 -0
  13. package/dist/agent/message-queue.js.map +1 -0
  14. package/dist/agent/middleware/auto-observation.d.ts +37 -0
  15. package/dist/agent/middleware/auto-observation.js +231 -0
  16. package/dist/agent/middleware/auto-observation.js.map +1 -0
  17. package/dist/agent/middleware/index.d.ts +2 -0
  18. package/dist/agent/middleware/index.js +1 -0
  19. package/dist/agent/middleware/index.js.map +1 -1
  20. package/dist/agent/tool-handler.js +3 -2
  21. package/dist/agent/tool-handler.js.map +1 -1
  22. package/dist/agent/types.d.ts +7 -2
  23. package/dist/analytics/budget-alerts.d.ts +81 -0
  24. package/dist/analytics/budget-alerts.js +126 -0
  25. package/dist/analytics/budget-alerts.js.map +1 -0
  26. package/dist/analytics/cost-predictor.d.ts +79 -0
  27. package/dist/analytics/cost-predictor.js +150 -0
  28. package/dist/analytics/cost-predictor.js.map +1 -0
  29. package/dist/analytics/index.d.ts +2 -0
  30. package/dist/analytics/index.js +2 -0
  31. package/dist/analytics/index.js.map +1 -1
  32. package/dist/auth/profile-manager.d.ts +205 -0
  33. package/dist/auth/profile-manager.js +484 -0
  34. package/dist/auth/profile-manager.js.map +1 -0
  35. package/dist/browser-automation/browser-manager.d.ts +79 -1
  36. package/dist/browser-automation/browser-manager.js +265 -2
  37. package/dist/browser-automation/browser-manager.js.map +1 -1
  38. package/dist/browser-automation/profile-manager.d.ts +32 -0
  39. package/dist/browser-automation/profile-manager.js +83 -0
  40. package/dist/browser-automation/profile-manager.js.map +1 -0
  41. package/dist/browser-automation/route-interceptor.d.ts +29 -0
  42. package/dist/browser-automation/route-interceptor.js +103 -0
  43. package/dist/browser-automation/route-interceptor.js.map +1 -0
  44. package/dist/browser-automation/screenshot-annotator.d.ts +23 -0
  45. package/dist/browser-automation/screenshot-annotator.js +86 -0
  46. package/dist/browser-automation/screenshot-annotator.js.map +1 -0
  47. package/dist/browser-automation/types.d.ts +47 -0
  48. package/dist/channels/discord/client.d.ts +2 -1
  49. package/dist/channels/discord/client.js +28 -16
  50. package/dist/channels/discord/client.js.map +1 -1
  51. package/dist/channels/google-chat/index.d.ts +210 -0
  52. package/dist/channels/google-chat/index.js +505 -0
  53. package/dist/channels/google-chat/index.js.map +1 -0
  54. package/dist/channels/group-security.d.ts +182 -0
  55. package/dist/channels/group-security.js +407 -0
  56. package/dist/channels/group-security.js.map +1 -0
  57. package/dist/channels/index.d.ts +17 -1
  58. package/dist/channels/index.js +16 -0
  59. package/dist/channels/index.js.map +1 -1
  60. package/dist/channels/matrix/index.d.ts +181 -0
  61. package/dist/channels/matrix/index.js +643 -0
  62. package/dist/channels/matrix/index.js.map +1 -0
  63. package/dist/channels/offline-queue.d.ts +92 -0
  64. package/dist/channels/offline-queue.js +112 -0
  65. package/dist/channels/offline-queue.js.map +1 -0
  66. package/dist/channels/reconnection-manager.d.ts +117 -0
  67. package/dist/channels/reconnection-manager.js +179 -0
  68. package/dist/channels/reconnection-manager.js.map +1 -0
  69. package/dist/channels/signal/index.d.ts +184 -0
  70. package/dist/channels/signal/index.js +488 -0
  71. package/dist/channels/signal/index.js.map +1 -0
  72. package/dist/channels/slack/client.d.ts +2 -1
  73. package/dist/channels/slack/client.js +30 -20
  74. package/dist/channels/slack/client.js.map +1 -1
  75. package/dist/channels/teams/index.d.ts +196 -0
  76. package/dist/channels/teams/index.js +477 -0
  77. package/dist/channels/teams/index.js.map +1 -0
  78. package/dist/channels/telegram/client.d.ts +3 -1
  79. package/dist/channels/telegram/client.js +29 -2
  80. package/dist/channels/telegram/client.js.map +1 -1
  81. package/dist/channels/webchat/index.d.ts +103 -0
  82. package/dist/channels/webchat/index.js +697 -0
  83. package/dist/channels/webchat/index.js.map +1 -0
  84. package/dist/channels/whatsapp/index.d.ts +105 -0
  85. package/dist/channels/whatsapp/index.js +533 -0
  86. package/dist/channels/whatsapp/index.js.map +1 -0
  87. package/dist/codebuddy/client.js +6 -3
  88. package/dist/codebuddy/client.js.map +1 -1
  89. package/dist/codebuddy/tool-definitions/advanced-tools.d.ts +1 -0
  90. package/dist/codebuddy/tool-definitions/advanced-tools.js +103 -3
  91. package/dist/codebuddy/tool-definitions/advanced-tools.js.map +1 -1
  92. package/dist/codebuddy/tool-definitions/index.d.ts +1 -1
  93. package/dist/codebuddy/tool-definitions/index.js +1 -1
  94. package/dist/codebuddy/tool-definitions/index.js.map +1 -1
  95. package/dist/codebuddy/tools.js +3 -1
  96. package/dist/codebuddy/tools.js.map +1 -1
  97. package/dist/commands/cli/config-command.d.ts +8 -0
  98. package/dist/commands/cli/config-command.js +90 -0
  99. package/dist/commands/cli/config-command.js.map +1 -0
  100. package/dist/commands/cli/openclaw-commands.d.ts +12 -0
  101. package/dist/commands/cli/openclaw-commands.js +446 -0
  102. package/dist/commands/cli/openclaw-commands.js.map +1 -0
  103. package/dist/commands/cli/utility-commands.js +30 -0
  104. package/dist/commands/cli/utility-commands.js.map +1 -1
  105. package/dist/commands/client-dispatcher.js +22 -2
  106. package/dist/commands/client-dispatcher.js.map +1 -1
  107. package/dist/commands/enhanced-command-handler.js +21 -2
  108. package/dist/commands/enhanced-command-handler.js.map +1 -1
  109. package/dist/commands/handlers/extra-handlers.d.ts +30 -0
  110. package/dist/commands/handlers/extra-handlers.js +547 -0
  111. package/dist/commands/handlers/extra-handlers.js.map +1 -0
  112. package/dist/commands/handlers/index.d.ts +1 -0
  113. package/dist/commands/handlers/index.js +2 -0
  114. package/dist/commands/handlers/index.js.map +1 -1
  115. package/dist/commands/slash/builtin-commands.js +41 -34
  116. package/dist/commands/slash/builtin-commands.js.map +1 -1
  117. package/dist/config/env-schema.d.ts +58 -0
  118. package/dist/config/env-schema.js +789 -0
  119. package/dist/config/env-schema.js.map +1 -0
  120. package/dist/config/feature-flags.js +2 -1
  121. package/dist/config/feature-flags.js.map +1 -1
  122. package/dist/context/bootstrap-loader.d.ts +48 -0
  123. package/dist/context/bootstrap-loader.js +123 -0
  124. package/dist/context/bootstrap-loader.js.map +1 -0
  125. package/dist/copilot/copilot-proxy.d.ts +15 -1
  126. package/dist/copilot/copilot-proxy.js +81 -22
  127. package/dist/copilot/copilot-proxy.js.map +1 -1
  128. package/dist/daemon/heartbeat.d.ts +112 -0
  129. package/dist/daemon/heartbeat.js +339 -0
  130. package/dist/daemon/heartbeat.js.map +1 -0
  131. package/dist/desktop-automation/smart-snapshot.d.ts +11 -0
  132. package/dist/desktop-automation/smart-snapshot.js +28 -0
  133. package/dist/desktop-automation/smart-snapshot.js.map +1 -1
  134. package/dist/identity/identity-manager.d.ts +95 -0
  135. package/dist/identity/identity-manager.js +242 -0
  136. package/dist/identity/identity-manager.js.map +1 -0
  137. package/dist/index.js +147 -17
  138. package/dist/index.js.map +1 -1
  139. package/dist/integrations/github-integration.js +1 -1
  140. package/dist/integrations/github-integration.js.map +1 -1
  141. package/dist/persistence/conversation-branches.js +2 -1
  142. package/dist/persistence/conversation-branches.js.map +1 -1
  143. package/dist/persistence/session-store.d.ts +1 -1
  144. package/dist/persistence/session-store.js +1 -1
  145. package/dist/persistence/session-store.js.map +1 -1
  146. package/dist/sandbox/auto-sandbox.d.ts +59 -0
  147. package/dist/sandbox/auto-sandbox.js +145 -0
  148. package/dist/sandbox/auto-sandbox.js.map +1 -0
  149. package/dist/security/audit-logger.d.ts +127 -0
  150. package/dist/security/audit-logger.js +194 -0
  151. package/dist/security/audit-logger.js.map +1 -0
  152. package/dist/security/bash-allowlist/allowlist-store.js +3 -2
  153. package/dist/security/bash-allowlist/allowlist-store.js.map +1 -1
  154. package/dist/security/bash-parser.js +0 -2
  155. package/dist/security/bash-parser.js.map +1 -1
  156. package/dist/security/code-validator.d.ts +51 -0
  157. package/dist/security/code-validator.js +185 -0
  158. package/dist/security/code-validator.js.map +1 -0
  159. package/dist/security/dangerous-patterns.d.ts +68 -0
  160. package/dist/security/dangerous-patterns.js +218 -0
  161. package/dist/security/dangerous-patterns.js.map +1 -0
  162. package/dist/security/remote-approval.d.ts +65 -0
  163. package/dist/security/remote-approval.js +138 -0
  164. package/dist/security/remote-approval.js.map +1 -0
  165. package/dist/security/security-audit.d.ts +7 -0
  166. package/dist/security/security-audit.js +23 -0
  167. package/dist/security/security-audit.js.map +1 -1
  168. package/dist/security/syntax-validator.d.ts +17 -0
  169. package/dist/security/syntax-validator.js +292 -0
  170. package/dist/security/syntax-validator.js.map +1 -0
  171. package/dist/server/index.js +277 -2
  172. package/dist/server/index.js.map +1 -1
  173. package/dist/services/prompt-builder.js +16 -0
  174. package/dist/services/prompt-builder.js.map +1 -1
  175. package/dist/skills/hub.d.ts +231 -0
  176. package/dist/skills/hub.js +694 -0
  177. package/dist/skills/hub.js.map +1 -0
  178. package/dist/skills/skill-loader.js +1 -1
  179. package/dist/skills/skill-loader.js.map +1 -1
  180. package/dist/skills/skill-manager.js +2 -1
  181. package/dist/skills/skill-manager.js.map +1 -1
  182. package/dist/tools/apply-patch.d.ts +1 -0
  183. package/dist/tools/apply-patch.js +57 -10
  184. package/dist/tools/apply-patch.js.map +1 -1
  185. package/dist/tools/bash/bash-tool.d.ts +123 -0
  186. package/dist/tools/bash/bash-tool.js +549 -0
  187. package/dist/tools/bash/bash-tool.js.map +1 -0
  188. package/dist/tools/bash/command-validator.d.ts +49 -0
  189. package/dist/tools/bash/command-validator.js +223 -0
  190. package/dist/tools/bash/command-validator.js.map +1 -0
  191. package/dist/tools/bash/index.d.ts +7 -0
  192. package/dist/tools/bash/index.js +8 -0
  193. package/dist/tools/bash/index.js.map +1 -0
  194. package/dist/tools/bash/security-patterns.d.ts +44 -0
  195. package/dist/tools/bash/security-patterns.js +234 -0
  196. package/dist/tools/bash/security-patterns.js.map +1 -0
  197. package/dist/tools/bash/streaming-executor.d.ts +23 -0
  198. package/dist/tools/bash/streaming-executor.js +134 -0
  199. package/dist/tools/bash/streaming-executor.js.map +1 -0
  200. package/dist/tools/code-formatter.js +41 -27
  201. package/dist/tools/code-formatter.js.map +1 -1
  202. package/dist/tools/code-review.js +1 -1
  203. package/dist/tools/code-review.js.map +1 -1
  204. package/dist/tools/computer-control-tool.js +21 -0
  205. package/dist/tools/computer-control-tool.js.map +1 -1
  206. package/dist/tools/document-tool.js +3 -2
  207. package/dist/tools/document-tool.js.map +1 -1
  208. package/dist/tools/git-tool.d.ts +45 -0
  209. package/dist/tools/git-tool.js +222 -0
  210. package/dist/tools/git-tool.js.map +1 -1
  211. package/dist/tools/index.d.ts +1 -1
  212. package/dist/tools/index.js +1 -1
  213. package/dist/tools/index.js.map +1 -1
  214. package/dist/tools/multi-edit.js +31 -3
  215. package/dist/tools/multi-edit.js.map +1 -1
  216. package/dist/tools/process-tool.d.ts +69 -0
  217. package/dist/tools/process-tool.js +222 -0
  218. package/dist/tools/process-tool.js.map +1 -0
  219. package/dist/tools/registry/git-tools.d.ts +32 -0
  220. package/dist/tools/registry/git-tools.js +211 -0
  221. package/dist/tools/registry/git-tools.js.map +1 -0
  222. package/dist/tools/registry/index.d.ts +2 -0
  223. package/dist/tools/registry/index.js +8 -0
  224. package/dist/tools/registry/index.js.map +1 -1
  225. package/dist/tools/registry/misc-tools.d.ts +32 -4
  226. package/dist/tools/registry/misc-tools.js +230 -90
  227. package/dist/tools/registry/misc-tools.js.map +1 -1
  228. package/dist/tools/registry/process-tools.d.ts +20 -0
  229. package/dist/tools/registry/process-tools.js +141 -0
  230. package/dist/tools/registry/process-tools.js.map +1 -0
  231. package/dist/tools/registry/types.d.ts +2 -0
  232. package/dist/ui/components/ChatInterface.js +9 -0
  233. package/dist/ui/components/ChatInterface.js.map +1 -1
  234. package/dist/utils/autonomy-manager.js +3 -2
  235. package/dist/utils/autonomy-manager.js.map +1 -1
  236. package/dist/utils/config-validation/schema.d.ts +15 -15
  237. package/dist/utils/confirmation-service.d.ts +16 -0
  238. package/dist/utils/confirmation-service.js +37 -3
  239. package/dist/utils/confirmation-service.js.map +1 -1
  240. package/dist/utils/custom-instructions.js +2 -1
  241. package/dist/utils/custom-instructions.js.map +1 -1
  242. package/dist/utils/graceful-shutdown.js +9 -9
  243. package/dist/utils/graceful-shutdown.js.map +1 -1
  244. package/dist/utils/head-tail-truncation.d.ts +18 -0
  245. package/dist/utils/head-tail-truncation.js +127 -0
  246. package/dist/utils/head-tail-truncation.js.map +1 -1
  247. package/dist/utils/history-manager.js +3 -2
  248. package/dist/utils/history-manager.js.map +1 -1
  249. package/dist/utils/performance.js +16 -15
  250. package/dist/utils/performance.js.map +1 -1
  251. package/dist/utils/update-notifier.js +2 -1
  252. package/dist/utils/update-notifier.js.map +1 -1
  253. package/dist/workflows/pipeline.d.ts +54 -1
  254. package/dist/workflows/pipeline.js +128 -7
  255. package/dist/workflows/pipeline.js.map +1 -1
  256. package/dist/workflows/step-manager.js +2 -1
  257. package/dist/workflows/step-manager.js.map +1 -1
  258. package/package.json +6 -3
package/README.md CHANGED
@@ -26,8 +26,8 @@
26
26
  <br/>
27
27
 
28
28
  [Quick Start](#-quick-start) |
29
+ [CLI Reference](#cli-reference) |
29
30
  [Architecture](#-architecture) |
30
- [Memory System](#-memory-system) |
31
31
  [Channels](#-multi-channel-support) |
32
32
  [Security](#-security) |
33
33
  [API](#-api-server)
@@ -117,6 +117,25 @@ Code Buddy incorporates advanced patterns from the [OpenClaw](https://github.com
117
117
  | **Headless Mode Fixes** | ✅ 100% | Clean JSON stdout, `process.exit(0)`, Gemini message sanitization |
118
118
  | **Gemini Conversation Repair** | ✅ 100% | 3-pass sanitization after context compression (orphan cleanup, role merge, user-start) |
119
119
 
120
+ ### Phase 7 — Code Generation Security
121
+
122
+ | Module | Status | Description |
123
+ |:-------|:------:|:------------|
124
+ | **Centralized Dangerous Patterns** | ✅ 100% | Single registry for all dangerous patterns (bash, code, skills) with severity levels |
125
+ | **Generated Code Validator** | ✅ 100% | Pre-write security scan for eval, XSS, SQL injection, hardcoded secrets, prototype pollution |
126
+ | **Pre-Write Syntax Validator** | ✅ 100% | Balanced delimiters, template literals, indentation (JS/TS/Python/YAML/HTML/CSS/JSON) |
127
+ | **Atomic Rollback (apply-patch)** | ✅ 100% | All-or-nothing patch application with full file state backup |
128
+ | **Atomic Transactions (multi-edit)** | ✅ 100% | Multi-file edits rolled back on first failure |
129
+ | **AST Bash Command Validation** | ✅ 100% | tree-sitter integration in command validator with centralized pattern checks |
130
+ | **Bash Checkpoint** | ✅ 100% | Pre-snapshot of files targeted by destructive commands (rm, mv, truncate) |
131
+ | **Shell Injection Fix** | ✅ 100% | Code formatter uses `spawnSync` stdin pipe instead of `execSync` echo |
132
+ | **Diff Preview in Confirmation** | ✅ 100% | Shows actual diffs before approval, magnitude-based re-confirmation for large changes |
133
+ | **Architect Parallel Execution** | ✅ 100% | Dependency-wave-based parallel step execution with DAG ordering |
134
+ | **Semantic Truncation** | ✅ 100% | Error-preserving output truncation (keeps error lines, stack traces from middle sections) |
135
+ | **Auto-Sandbox Router** | ✅ 100% | Automatic Docker routing for dangerous commands (npm, pip, cargo, make) |
136
+ | **Security Audit Logging** | ✅ 100% | JSONL audit trail for all code generation security decisions |
137
+ | **Copilot Proxy Hardening** | ✅ 100% | Per-IP rate limiting, token clamping, auth bypass fix, sanitized error messages |
138
+
120
139
  ---
121
140
 
122
141
  ## Installation
@@ -176,29 +195,47 @@ YOLO_MODE=true buddy
176
195
 
177
196
  ```bash
178
197
  # Single prompt, JSON output to stdout (logs go to stderr)
179
- buddy -p "create a hello world Express app" --output json > result.json
198
+ buddy -p "create a hello world Express app" --output-format json > result.json
180
199
 
181
200
  # Pipe into other tools
182
- buddy -p "explain this code" --output json 2>/dev/null | jq '.content'
201
+ buddy -p "explain this code" --output-format json 2>/dev/null | jq '.content'
183
202
 
184
203
  # Use in CI with full autonomy
185
204
  buddy -p "run tests and fix failures" \
186
205
  --dangerously-skip-permissions \
187
- --output json \
206
+ --output-format json \
188
207
  --max-tool-rounds 30
208
+
209
+ # Auto-approve all tool executions (no confirmation prompts)
210
+ buddy -p "fix lint errors" --auto-approve --output-format text
189
211
  ```
190
212
 
191
213
  Headless mode exits cleanly after completion — safe for `timeout`, shell scripts, and CI pipelines.
192
214
 
215
+ ### Session Management
216
+
217
+ ```bash
218
+ # Continue the most recent session
219
+ buddy --continue
220
+
221
+ # Resume a specific session by ID (supports partial matching)
222
+ buddy --resume abc123
223
+
224
+ # Set a cost limit for the session
225
+ buddy --max-price 5.00
226
+ ```
227
+
193
228
  ### Typical Project Workflow
194
229
 
195
230
  ```bash
196
231
  # 1. First-time setup
197
- buddy onboard # Interactive config wizard
232
+ buddy --setup # Quick API key setup wizard
233
+ buddy onboard # Full interactive config wizard
198
234
  buddy doctor # Verify environment & dependencies
199
235
 
200
236
  # 2. Start coding
201
237
  buddy # Launch interactive chat
238
+ buddy --vim # Launch with Vim keybindings
202
239
 
203
240
  # 3. Describe what you want in natural language
204
241
  > "Create a Node.js project with Express and Prisma"
@@ -209,9 +246,11 @@ buddy # Launch interactive chat
209
246
 
210
247
  # 4. Advanced modes
211
248
  buddy --model gemini-2.5-flash # Switch AI model
212
- buddy speak # Voice conversation mode
213
- buddy daemon start # Run 24/7 in background
214
- buddy server --port 3000 # Expose REST/WebSocket API
249
+ buddy --system-prompt architect # Use architect system prompt
250
+ buddy --agent my-custom-agent # Use custom agent from ~/.codebuddy/agents/
251
+ buddy speak # Voice conversation mode
252
+ buddy daemon start # Run 24/7 in background
253
+ buddy server --port 3000 # Expose REST/WebSocket API
215
254
  ```
216
255
 
217
256
  Code Buddy autonomously reads files, writes code, runs commands, and fixes errors — typically 5-15 tool calls per task (up to 50, or 400 in YOLO mode).
@@ -284,6 +323,82 @@ User Input → ChatInterface (Ink/React) → CodeBuddyAgent → AI Provider
284
323
 
285
324
  ---
286
325
 
326
+ ## CLI Reference
327
+
328
+ ### Global Options
329
+
330
+ | Flag | Short | Description | Default |
331
+ |:-----|:------|:------------|:--------|
332
+ | `--version` | `-V` | Show version number | - |
333
+ | `--directory <dir>` | `-d` | Set working directory | `.` |
334
+ | `--api-key <key>` | `-k` | API key (or `GROK_API_KEY` env) | - |
335
+ | `--base-url <url>` | `-u` | API base URL (or `GROK_BASE_URL` env) | - |
336
+ | `--model <model>` | `-m` | AI model to use (or `GROK_MODEL` env) | auto-detect |
337
+ | `--prompt <prompt>` | `-p` | Single prompt, headless mode | - |
338
+ | `--browser` | `-b` | Launch browser UI instead of terminal | `false` |
339
+ | `--max-tool-rounds <n>` | | Max tool execution rounds | `400` |
340
+ | `--security-mode <mode>` | `-s` | `suggest`, `auto-edit`, or `full-auto` | `suggest` |
341
+ | `--output-format <fmt>` | `-o` | Headless output: `json`, `stream-json`, `text`, `markdown` | `json` |
342
+ | `--context <patterns>` | `-c` | Glob patterns to load into context | - |
343
+
344
+ ### Session & Cost
345
+
346
+ | Flag | Description | Default |
347
+ |:-----|:------------|:--------|
348
+ | `--continue` | Resume the most recent saved session | - |
349
+ | `--resume <id>` | Resume a specific session (supports partial ID matching) | - |
350
+ | `--max-price <dollars>` | Maximum cost in dollars before stopping | `10.0` |
351
+ | `--no-cache` | Disable response caching | - |
352
+
353
+ ### Autonomy & Permissions
354
+
355
+ | Flag | Description | Default |
356
+ |:-----|:------------|:--------|
357
+ | `--auto-approve` | Automatically approve all tool executions | `false` |
358
+ | `--dangerously-skip-permissions` | Bypass all permission checks (trusted containers only) | `false` |
359
+ | `--no-self-heal` | Disable self-healing auto-correction | - |
360
+ | `--allow-outside` | Allow file operations outside workspace directory | `false` |
361
+
362
+ ### Tool Control
363
+
364
+ | Flag | Description | Example |
365
+ |:-----|:------------|:--------|
366
+ | `--force-tools` | Force-enable function calling for local models | - |
367
+ | `--probe-tools` | Auto-detect tool support at startup | - |
368
+ | `--enabled-tools <patterns>` | Only enable matching tools (glob, comma-separated) | `bash,*file*,search` |
369
+ | `--disabled-tools <patterns>` | Disable matching tools (glob, comma-separated) | `bash,web_*` |
370
+ | `--allowed-tools <patterns>` | Alias for `--enabled-tools` (Claude Code compat) | - |
371
+
372
+ ### Agent & Prompt Configuration
373
+
374
+ | Flag | Description | Default |
375
+ |:-----|:------------|:--------|
376
+ | `--system-prompt <id>` | System prompt: `default`, `minimal`, `secure`, `code-reviewer`, `architect` (or custom from `~/.codebuddy/prompts/`) | `default` |
377
+ | `--list-prompts` | List available system prompts and exit | - |
378
+ | `--agent <name>` | Use a custom agent from `~/.codebuddy/agents/` | - |
379
+ | `--list-agents` | List available custom agents and exit | - |
380
+
381
+ ### Display & Debugging
382
+
383
+ | Flag | Description |
384
+ |:-----|:------------|
385
+ | `--plain` | Minimal formatting (plain text output) |
386
+ | `--no-color` | Disable colored output |
387
+ | `--no-emoji` | Disable emoji in output |
388
+ | `--vim` | Enable Vim keybindings for input |
389
+ | `--mcp-debug` | Enable MCP protocol debugging output |
390
+
391
+ ### Setup & Init
392
+
393
+ | Flag | Description |
394
+ |:-----|:------------|
395
+ | `--init` | Initialize `.codebuddy/` directory with templates |
396
+ | `--dry-run` | Preview changes without applying (simulation mode) |
397
+ | `--setup` | Run interactive API key setup wizard |
398
+ | `--list-models` | List available models from the API and exit |
399
+
400
+ ---
401
+
287
402
  ## AI Providers
288
403
 
289
404
  Code Buddy supports multiple AI providers with automatic failover:
@@ -393,11 +508,17 @@ Code Buddy supports multiple messaging channels:
393
508
 
394
509
  | Channel | Status | Features |
395
510
  |:--------|:------:|:---------|
511
+ | **Terminal** | ✅ Full | Native CLI interface (Ink/React) |
512
+ | **HTTP API** | ✅ Full | REST + WebSocket |
513
+ | **WebChat** | ✅ Full | Built-in HTTP + WebSocket with browser UI |
396
514
  | **Discord** | 🟡 Base | Bot integration, slash commands |
397
515
  | **Telegram** | 🟡 Base | Bot API, message handlers |
398
516
  | **Slack** | 🟡 Base | Bolt framework, events |
399
- | **Terminal** | Full | Native CLI interface |
400
- | **HTTP API** | Full | REST + WebSocket |
517
+ | **WhatsApp** | 🟡 Base | Baileys (QR pairing, media, reconnect) |
518
+ | **Signal** | 🟡 Base | signal-cli REST API (polling, groups) |
519
+ | **Google Chat** | 🟡 Base | Workspace API (JWT auth, webhook events) |
520
+ | **Microsoft Teams** | 🟡 Base | Bot Framework (OAuth2, adaptive cards) |
521
+ | **Matrix** | 🟡 Base | matrix-js-sdk (E2EE, threads, media) |
401
522
 
402
523
  ### Channel Configuration
403
524
 
@@ -588,6 +709,23 @@ buddy server --port 3000
588
709
  | `/api/cron/jobs` | GET | List cron jobs |
589
710
  | `/api/cron/jobs/{id}/trigger` | POST | Trigger a cron job |
590
711
  | `/api/notifications/preferences` | GET/POST | Notification settings |
712
+ | `/api/heartbeat/status` | GET | Heartbeat engine status |
713
+ | `/api/heartbeat/start` | POST | Start heartbeat |
714
+ | `/api/heartbeat/stop` | POST | Stop heartbeat |
715
+ | `/api/heartbeat/tick` | POST | Trigger a single tick |
716
+ | `/api/hub/search?q=...` | GET | Search skills marketplace |
717
+ | `/api/hub/installed` | GET | List installed hub skills |
718
+ | `/api/hub/install` | POST | Install a skill |
719
+ | `/api/hub/{name}` | DELETE | Uninstall a skill |
720
+ | `/api/identity` | GET | List loaded identity files |
721
+ | `/api/identity/prompt` | GET | Combined identity prompt |
722
+ | `/api/identity/{name}` | PUT | Update an identity file |
723
+ | `/api/groups/status` | GET | Group security status |
724
+ | `/api/groups/list` | GET | List configured groups |
725
+ | `/api/groups/block` | POST | Block a user globally |
726
+ | `/api/groups/block/{userId}` | DELETE | Unblock a user |
727
+ | `/api/auth-profiles` | GET/POST/DELETE | Auth profile CRUD |
728
+ | `/api/auth-profiles/reset` | POST | Reset all cooldowns |
591
729
 
592
730
  ### WebSocket Events
593
731
 
@@ -639,10 +777,84 @@ buddy daemon logs [--lines N] # View daemon logs
639
777
 
640
778
  ```bash
641
779
  buddy trigger list # List all event triggers
642
- buddy trigger add <pattern> <action> # Add a trigger
780
+ buddy trigger add <spec> # Add a trigger (format: type:condition action:target)
643
781
  buddy trigger remove <id> # Remove a trigger
644
782
  ```
645
783
 
784
+ ### Webhook Commands
785
+
786
+ ```bash
787
+ buddy webhook list # List registered webhooks
788
+ buddy webhook add <name> <message> [opts] # Register a new webhook
789
+ buddy webhook remove <id> # Remove a webhook
790
+ ```
791
+
792
+ ### Hub Commands (Skills Marketplace)
793
+
794
+ ```bash
795
+ buddy hub search <query> # Search for skills
796
+ buddy hub install <name> # Install a skill from the hub
797
+ buddy hub uninstall <name> # Uninstall a skill
798
+ buddy hub update [name] # Update all or a specific skill
799
+ buddy hub list # List installed skills
800
+ buddy hub info <name> # Show details about a skill
801
+ buddy hub publish <path> # Publish a skill to the hub
802
+ buddy hub sync # Sync installed skills with lockfile
803
+ ```
804
+
805
+ ### Heartbeat Commands
806
+
807
+ ```bash
808
+ buddy heartbeat start [opts] # Start the heartbeat engine
809
+ buddy heartbeat stop # Stop the heartbeat engine
810
+ buddy heartbeat status # Show heartbeat status
811
+ buddy heartbeat tick # Manually trigger a single tick
812
+ ```
813
+
814
+ ### Identity Commands
815
+
816
+ ```bash
817
+ buddy identity show # Show loaded identity files (SOUL.md, USER.md, etc.)
818
+ buddy identity get <name> # Show content of a specific identity file
819
+ buddy identity set <name> <c> # Set content of an identity file
820
+ buddy identity prompt # Show the combined identity prompt injection
821
+ ```
822
+
823
+ ### Group Security Commands
824
+
825
+ ```bash
826
+ buddy groups status # Show group security status
827
+ buddy groups list # List configured groups
828
+ buddy groups block <userId> # Add a user to the global blocklist
829
+ buddy groups unblock <userId> # Remove a user from the blocklist
830
+ ```
831
+
832
+ ### Auth Profile Commands
833
+
834
+ ```bash
835
+ buddy auth-profile list # List authentication profiles
836
+ buddy auth-profile add <id> <provider> # Add a profile (API key rotation)
837
+ buddy auth-profile remove <id> # Remove a profile
838
+ buddy auth-profile reset # Reset all cooldowns
839
+ ```
840
+
841
+ ### Config Commands
842
+
843
+ ```bash
844
+ buddy config show [--json] # Show all environment variables and values
845
+ buddy config validate # Validate current environment configuration
846
+ buddy config get <name> # Show value and definition of a variable
847
+ ```
848
+
849
+ ### Security Audit
850
+
851
+ ```bash
852
+ buddy security-audit # Run security audit of your environment
853
+ buddy security-audit --deep # Deep scan (git history, npm audit)
854
+ buddy security-audit --fix # Auto-fix file permission issues
855
+ buddy security-audit --json # Output as JSON
856
+ ```
857
+
646
858
  ### Voice & TTS Commands
647
859
 
648
860
  ```bash
@@ -858,15 +1070,18 @@ Create `.codebuddy/settings.json`:
858
1070
  | Proactive Agent (push notifications) | HIGH | ✅ Done |
859
1071
  | Multi-Agent Orchestrator | HIGH | ✅ Done |
860
1072
  | Self-Healing & Checkpoint Rollback | HIGH | ✅ Done |
861
- | Gateway WebSocket Control Plane | HIGH | 🔲 Planned |
862
1073
  | Canvas A2UI Visual Workspace | HIGH | ✅ Done |
863
1074
  | ClawHub Skills Registry | MEDIUM | ✅ Done |
864
- | OAuth Authentication | MEDIUM | 🔲 Planned |
865
1075
  | Web Search 5-Provider Chain | HIGH | ✅ Done |
866
1076
  | Apply Patch & Bash Parser | HIGH | ✅ Done |
867
1077
  | Per-Model Tool Config | MEDIUM | ✅ Done |
868
1078
  | Voice Wake Word Detection | MEDIUM | ✅ Done |
869
1079
  | TTS Providers (OpenAI, ElevenLabs, AudioReader) | MEDIUM | ✅ Done |
1080
+ | Code Generation Security (Phase 7) | HIGH | ✅ Done |
1081
+ | Auto-Sandbox Router | HIGH | ✅ Done |
1082
+ | Semantic Output Truncation | MEDIUM | ✅ Done |
1083
+ | Gateway WebSocket Control Plane | HIGH | 🔲 Planned |
1084
+ | OAuth Authentication | MEDIUM | 🔲 Planned |
870
1085
  | Companion Apps (iOS, Android, macOS) | LOW | 🔲 Planned |
871
1086
  | Tailscale Integration | LOW | 🔲 Planned |
872
1087
 
@@ -18,6 +18,8 @@ export interface ArchitectStep {
18
18
  type: "create" | "edit" | "delete" | "command" | "test";
19
19
  target?: string;
20
20
  details?: string;
21
+ /** Steps that must complete before this one (for parallel execution) */
22
+ dependsOn?: number[];
21
23
  }
22
24
  export interface ArchitectConfig {
23
25
  architectModel?: string;
@@ -37,6 +39,15 @@ export declare class ArchitectMode extends EventEmitter {
37
39
  success: boolean;
38
40
  results: StepResult[];
39
41
  }>;
42
+ /**
43
+ * Build execution waves: groups of steps that can run in parallel.
44
+ * Steps with dependencies wait until their dependencies complete.
45
+ */
46
+ private buildExecutionWaves;
47
+ /**
48
+ * Robust JSON proposal parsing that handles nested objects and markdown code blocks.
49
+ */
50
+ private parseProposalJson;
40
51
  private buildStepPrompt;
41
52
  analyzeAndImplement(request: string, context?: string, tools?: CodeBuddyTool[], onApproval?: (proposal: ArchitectProposal) => Promise<boolean>): Promise<{
42
53
  proposal: ArchitectProposal;
@@ -1,6 +1,7 @@
1
1
  import { CodeBuddyClient } from "../codebuddy/client.js";
2
2
  import { EventEmitter } from "events";
3
3
  import { getErrorMessage } from "../types/index.js";
4
+ import { auditLogger } from "../security/audit-logger.js";
4
5
  const ARCHITECT_SYSTEM_PROMPT = `You are an expert software architect. Your role is to analyze coding requests and create detailed implementation plans.
5
6
 
6
7
  When given a task, you should:
@@ -69,12 +70,8 @@ export class ArchitectMode extends EventEmitter {
69
70
  try {
70
71
  const response = await this.architectClient.chat(messages);
71
72
  const content = response.choices[0]?.message?.content || "";
72
- // Parse the JSON response
73
- const jsonMatch = content.match(/\{[\s\S]*\}/);
74
- if (!jsonMatch) {
75
- throw new Error("Architect did not return valid JSON proposal");
76
- }
77
- const proposal = JSON.parse(jsonMatch[0]);
73
+ // Parse the JSON response — robust extraction that handles nested objects
74
+ const proposal = this.parseProposalJson(content);
78
75
  // Validate proposal
79
76
  if (!proposal.steps || proposal.steps.length === 0) {
80
77
  throw new Error("Architect proposal has no steps");
@@ -100,32 +97,72 @@ export class ArchitectMode extends EventEmitter {
100
97
  this.emit("editor:start", { proposal: targetProposal });
101
98
  this.isActive = true;
102
99
  const results = [];
100
+ const completedSteps = new Set();
103
101
  try {
104
- for (const step of targetProposal.steps) {
102
+ // Group steps into execution waves (parallel where possible)
103
+ const waves = this.buildExecutionWaves(targetProposal.steps);
104
+ for (const wave of waves) {
105
105
  if (!this.isActive) {
106
106
  this.emit("editor:cancelled");
107
107
  break;
108
108
  }
109
- this.emit("editor:step", { step });
110
- const stepPrompt = this.buildStepPrompt(step, targetProposal);
111
- const messages = [
112
- { role: "system", content: EDITOR_SYSTEM_PROMPT },
113
- { role: "user", content: stepPrompt },
114
- ];
115
- const response = await this.editorClient.chat(messages, tools);
116
- const result = {
117
- step,
118
- response: response.choices[0]?.message,
119
- success: true,
120
- };
121
- results.push(result);
122
- if (onStepComplete) {
123
- onStepComplete(step, result);
109
+ // Execute steps in this wave in parallel
110
+ const wavePromises = wave.map(async (step) => {
111
+ this.emit("editor:step", { step });
112
+ // Create checkpoint before each step
113
+ auditLogger.log({
114
+ action: 'checkpoint_created',
115
+ decision: 'allow',
116
+ source: 'architect-mode',
117
+ target: step.target,
118
+ details: `Pre-step checkpoint: step ${step.order}`,
119
+ });
120
+ const stepPrompt = this.buildStepPrompt(step, targetProposal);
121
+ const messages = [
122
+ { role: "system", content: EDITOR_SYSTEM_PROMPT },
123
+ { role: "user", content: stepPrompt },
124
+ ];
125
+ try {
126
+ const response = await this.editorClient.chat(messages, tools);
127
+ const result = {
128
+ step,
129
+ response: response.choices[0]?.message,
130
+ success: true,
131
+ };
132
+ completedSteps.add(step.order);
133
+ return result;
134
+ }
135
+ catch (error) {
136
+ return {
137
+ step,
138
+ response: null,
139
+ success: false,
140
+ error: getErrorMessage(error),
141
+ };
142
+ }
143
+ });
144
+ const waveResults = await Promise.all(wavePromises);
145
+ for (const result of waveResults) {
146
+ results.push(result);
147
+ if (onStepComplete) {
148
+ onStepComplete(result.step, result);
149
+ }
150
+ this.emit("editor:step-complete", result);
151
+ if (!result.success) {
152
+ this.emit("editor:step-failed", {
153
+ step: result.step,
154
+ completedSteps: [...completedSteps],
155
+ });
156
+ // Stop further waves on failure
157
+ this.isActive = false;
158
+ }
124
159
  }
125
- this.emit("editor:step-complete", result);
160
+ if (!this.isActive)
161
+ break;
126
162
  }
127
- this.emit("editor:complete", { results });
128
- return { success: true, results };
163
+ const allSuccess = results.every(r => r.success);
164
+ this.emit("editor:complete", { results, success: allSuccess });
165
+ return { success: allSuccess, results };
129
166
  }
130
167
  catch (error) {
131
168
  this.emit("editor:error", { error: getErrorMessage(error) });
@@ -135,6 +172,77 @@ export class ArchitectMode extends EventEmitter {
135
172
  this.isActive = false;
136
173
  }
137
174
  }
175
+ /**
176
+ * Build execution waves: groups of steps that can run in parallel.
177
+ * Steps with dependencies wait until their dependencies complete.
178
+ */
179
+ buildExecutionWaves(steps) {
180
+ const waves = [];
181
+ const scheduled = new Set();
182
+ const remaining = [...steps];
183
+ let maxIterations = steps.length + 1;
184
+ while (remaining.length > 0 && maxIterations-- > 0) {
185
+ const wave = [];
186
+ for (const step of remaining) {
187
+ const deps = step.dependsOn || [];
188
+ const allDepsScheduled = deps.every(d => scheduled.has(d));
189
+ if (allDepsScheduled) {
190
+ wave.push(step);
191
+ }
192
+ }
193
+ if (wave.length === 0) {
194
+ // No progress — break dependency cycle, schedule remaining sequentially
195
+ wave.push(remaining[0]);
196
+ }
197
+ for (const step of wave) {
198
+ scheduled.add(step.order);
199
+ const idx = remaining.indexOf(step);
200
+ if (idx !== -1)
201
+ remaining.splice(idx, 1);
202
+ }
203
+ waves.push(wave);
204
+ }
205
+ return waves;
206
+ }
207
+ /**
208
+ * Robust JSON proposal parsing that handles nested objects and markdown code blocks.
209
+ */
210
+ parseProposalJson(content) {
211
+ // Try direct parse first
212
+ try {
213
+ return JSON.parse(content);
214
+ }
215
+ catch { /* continue */ }
216
+ // Extract from markdown code block
217
+ const codeBlockMatch = content.match(/```(?:json)?\s*\n([\s\S]*?)\n```/);
218
+ if (codeBlockMatch) {
219
+ try {
220
+ return JSON.parse(codeBlockMatch[1]);
221
+ }
222
+ catch { /* continue */ }
223
+ }
224
+ // Find balanced JSON object using brace counting
225
+ let depth = 0;
226
+ let start = -1;
227
+ for (let i = 0; i < content.length; i++) {
228
+ if (content[i] === '{') {
229
+ if (depth === 0)
230
+ start = i;
231
+ depth++;
232
+ }
233
+ else if (content[i] === '}') {
234
+ depth--;
235
+ if (depth === 0 && start !== -1) {
236
+ try {
237
+ return JSON.parse(content.slice(start, i + 1));
238
+ }
239
+ catch { /* try next match */ }
240
+ start = -1;
241
+ }
242
+ }
243
+ }
244
+ throw new Error("Architect did not return valid JSON proposal");
245
+ }
138
246
  buildStepPrompt(step, proposal) {
139
247
  let prompt = `Execute step ${step.order} of the implementation plan.\n\n`;
140
248
  prompt += `Overall goal: ${proposal.summary}\n\n`;
@@ -1 +1 @@
1
- {"version":3,"file":"architect-mode.js","sourceRoot":"","sources":["../../src/agent/architect-mode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"architect-mode.js","sourceRoot":"","sources":["../../src/agent/architect-mode.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { ToolSelectionResult } from "../codebuddy/tools.js";
3
3
  import { ToolResult } from "../types/index.js";
4
4
  import { BaseAgent } from "./base-agent.js";
5
5
  import type { RouteAgentConfig } from "../channels/peer-routing.js";
6
+ import { MessageQueue, type MessageQueueMode } from "./message-queue.js";
6
7
  export type { ChatEntry, StreamingChunk } from "./types.js";
7
8
  import type { ChatEntry, StreamingChunk } from "./types.js";
8
9
  /**
@@ -30,6 +31,13 @@ export declare class CodeBuddyAgent extends BaseAgent {
30
31
  private toolSelectionStrategy;
31
32
  /** Optional peer routing config applied from channel route resolution */
32
33
  private peerRoutingConfig;
34
+ /** Message queue for steer/followup/collect modes */
35
+ private messageQueue;
36
+ private repairListeners;
37
+ /** Cost prediction before execution */
38
+ private costPredictor;
39
+ /** Budget alert monitoring */
40
+ private budgetAlertManager;
33
41
  /**
34
42
  * Create a new CodeBuddyAgent instance
35
43
  *
@@ -40,6 +48,8 @@ export declare class CodeBuddyAgent extends BaseAgent {
40
48
  * @param useRAGToolSelection - Enable RAG-based tool selection (default: true)
41
49
  */
42
50
  constructor(apiKey: string, baseURL?: string, model?: string, maxToolRounds?: number, useRAGToolSelection?: boolean, systemPromptId?: string);
51
+ /** Resolves when the system prompt has been loaded (or failed gracefully). */
52
+ systemPromptReady: Promise<void>;
43
53
  private initializeAgentSystemPrompt;
44
54
  private isGrokModel;
45
55
  /**
@@ -200,6 +210,12 @@ export declare class CodeBuddyAgent extends BaseAgent {
200
210
  * @param enabled - Whether to enable YOLO mode
201
211
  */
202
212
  setYoloMode(enabled: boolean): void;
213
+ /**
214
+ * Enable auto-observation middleware for the computer-use verify loop.
215
+ * Lazily imports and adds AutoObservationMiddleware to the executor's pipeline.
216
+ * Called automatically when a profile with metadata.enableAutoObservation is active.
217
+ */
218
+ enableAutoObservation(config?: Partial<import('./middleware/auto-observation.js').AutoObservationConfig>): void;
203
219
  /**
204
220
  * Record cost for current request
205
221
  * @param inputTokens - Number of input tokens
@@ -219,6 +235,14 @@ export declare class CodeBuddyAgent extends BaseAgent {
219
235
  *
220
236
  * @param config - The route agent config from peer routing resolution
221
237
  */
238
+ /**
239
+ * Set the message queue mode (steer/followup/collect)
240
+ */
241
+ setMessageQueueMode(mode: MessageQueueMode): void;
242
+ /**
243
+ * Get the message queue instance for external enqueuing
244
+ */
245
+ getMessageQueue(): MessageQueue;
222
246
  applyPeerRouting(config: RouteAgentConfig): void;
223
247
  /**
224
248
  * Get the currently applied peer routing configuration.