@phuetz/code-buddy 0.1.12 → 0.1.14
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 +228 -13
- package/dist/agent/architect-mode.d.ts +11 -0
- package/dist/agent/architect-mode.js +133 -25
- package/dist/agent/architect-mode.js.map +1 -1
- package/dist/agent/codebuddy-agent.d.ts +24 -0
- package/dist/agent/codebuddy-agent.js +118 -16
- package/dist/agent/codebuddy-agent.js.map +1 -1
- package/dist/agent/execution/agent-executor.d.ts +9 -0
- package/dist/agent/execution/agent-executor.js +62 -1
- package/dist/agent/execution/agent-executor.js.map +1 -1
- package/dist/agent/message-queue.d.ts +77 -0
- package/dist/agent/message-queue.js +116 -0
- package/dist/agent/message-queue.js.map +1 -0
- package/dist/agent/middleware/auto-observation.d.ts +37 -0
- package/dist/agent/middleware/auto-observation.js +231 -0
- package/dist/agent/middleware/auto-observation.js.map +1 -0
- package/dist/agent/middleware/index.d.ts +2 -0
- package/dist/agent/middleware/index.js +1 -0
- package/dist/agent/middleware/index.js.map +1 -1
- package/dist/agent/tool-handler.js +3 -2
- package/dist/agent/tool-handler.js.map +1 -1
- package/dist/agent/turn-diff-tracker.js +3 -0
- package/dist/agent/turn-diff-tracker.js.map +1 -1
- package/dist/agent/types.d.ts +7 -2
- package/dist/analytics/budget-alerts.d.ts +81 -0
- package/dist/analytics/budget-alerts.js +126 -0
- package/dist/analytics/budget-alerts.js.map +1 -0
- package/dist/analytics/cost-predictor.d.ts +79 -0
- package/dist/analytics/cost-predictor.js +150 -0
- package/dist/analytics/cost-predictor.js.map +1 -0
- package/dist/analytics/index.d.ts +2 -0
- package/dist/analytics/index.js +2 -0
- package/dist/analytics/index.js.map +1 -1
- package/dist/auth/profile-manager.d.ts +205 -0
- package/dist/auth/profile-manager.js +484 -0
- package/dist/auth/profile-manager.js.map +1 -0
- package/dist/browser-automation/browser-manager.d.ts +79 -1
- package/dist/browser-automation/browser-manager.js +265 -2
- package/dist/browser-automation/browser-manager.js.map +1 -1
- package/dist/browser-automation/profile-manager.d.ts +32 -0
- package/dist/browser-automation/profile-manager.js +83 -0
- package/dist/browser-automation/profile-manager.js.map +1 -0
- package/dist/browser-automation/route-interceptor.d.ts +29 -0
- package/dist/browser-automation/route-interceptor.js +103 -0
- package/dist/browser-automation/route-interceptor.js.map +1 -0
- package/dist/browser-automation/screenshot-annotator.d.ts +23 -0
- package/dist/browser-automation/screenshot-annotator.js +86 -0
- package/dist/browser-automation/screenshot-annotator.js.map +1 -0
- package/dist/browser-automation/types.d.ts +47 -0
- package/dist/cache/llm-response-cache.js +3 -0
- package/dist/cache/llm-response-cache.js.map +1 -1
- package/dist/canvas/canvas-server.js +4 -3
- package/dist/canvas/canvas-server.js.map +1 -1
- package/dist/channels/discord/client.d.ts +2 -1
- package/dist/channels/discord/client.js +28 -16
- package/dist/channels/discord/client.js.map +1 -1
- package/dist/channels/dm-pairing.js +6 -3
- package/dist/channels/dm-pairing.js.map +1 -1
- package/dist/channels/google-chat/index.d.ts +210 -0
- package/dist/channels/google-chat/index.js +505 -0
- package/dist/channels/google-chat/index.js.map +1 -0
- package/dist/channels/group-security.d.ts +182 -0
- package/dist/channels/group-security.js +407 -0
- package/dist/channels/group-security.js.map +1 -0
- package/dist/channels/index.d.ts +17 -1
- package/dist/channels/index.js +16 -0
- package/dist/channels/index.js.map +1 -1
- package/dist/channels/matrix/index.d.ts +181 -0
- package/dist/channels/matrix/index.js +643 -0
- package/dist/channels/matrix/index.js.map +1 -0
- package/dist/channels/offline-queue.d.ts +92 -0
- package/dist/channels/offline-queue.js +112 -0
- package/dist/channels/offline-queue.js.map +1 -0
- package/dist/channels/reconnection-manager.d.ts +117 -0
- package/dist/channels/reconnection-manager.js +171 -0
- package/dist/channels/reconnection-manager.js.map +1 -0
- package/dist/channels/signal/index.d.ts +184 -0
- package/dist/channels/signal/index.js +488 -0
- package/dist/channels/signal/index.js.map +1 -0
- package/dist/channels/slack/client.d.ts +2 -1
- package/dist/channels/slack/client.js +30 -15
- package/dist/channels/slack/client.js.map +1 -1
- package/dist/channels/teams/index.d.ts +196 -0
- package/dist/channels/teams/index.js +477 -0
- package/dist/channels/teams/index.js.map +1 -0
- package/dist/channels/telegram/client.d.ts +3 -1
- package/dist/channels/telegram/client.js +29 -2
- package/dist/channels/telegram/client.js.map +1 -1
- package/dist/channels/webchat/index.d.ts +103 -0
- package/dist/channels/webchat/index.js +697 -0
- package/dist/channels/webchat/index.js.map +1 -0
- package/dist/channels/whatsapp/index.d.ts +105 -0
- package/dist/channels/whatsapp/index.js +533 -0
- package/dist/channels/whatsapp/index.js.map +1 -0
- package/dist/codebuddy/client.js +11 -5
- package/dist/codebuddy/client.js.map +1 -1
- package/dist/codebuddy/tool-definitions/advanced-tools.d.ts +1 -0
- package/dist/codebuddy/tool-definitions/advanced-tools.js +103 -3
- package/dist/codebuddy/tool-definitions/advanced-tools.js.map +1 -1
- package/dist/codebuddy/tool-definitions/index.d.ts +1 -1
- package/dist/codebuddy/tool-definitions/index.js +1 -1
- package/dist/codebuddy/tool-definitions/index.js.map +1 -1
- package/dist/codebuddy/tools.js +3 -1
- package/dist/codebuddy/tools.js.map +1 -1
- package/dist/commands/cli/config-command.d.ts +8 -0
- package/dist/commands/cli/config-command.js +90 -0
- package/dist/commands/cli/config-command.js.map +1 -0
- package/dist/commands/cli/openclaw-commands.d.ts +12 -0
- package/dist/commands/cli/openclaw-commands.js +446 -0
- package/dist/commands/cli/openclaw-commands.js.map +1 -0
- package/dist/commands/cli/utility-commands.js +30 -0
- package/dist/commands/cli/utility-commands.js.map +1 -1
- package/dist/commands/client-dispatcher.js +22 -2
- package/dist/commands/client-dispatcher.js.map +1 -1
- package/dist/commands/enhanced-command-handler.js +21 -2
- package/dist/commands/enhanced-command-handler.js.map +1 -1
- package/dist/commands/handlers/extra-handlers.d.ts +30 -0
- package/dist/commands/handlers/extra-handlers.js +547 -0
- package/dist/commands/handlers/extra-handlers.js.map +1 -0
- package/dist/commands/handlers/index.d.ts +1 -0
- package/dist/commands/handlers/index.js +2 -0
- package/dist/commands/handlers/index.js.map +1 -1
- package/dist/commands/slash/builtin-commands.js +41 -34
- package/dist/commands/slash/builtin-commands.js.map +1 -1
- package/dist/config/env-schema.d.ts +58 -0
- package/dist/config/env-schema.js +789 -0
- package/dist/config/env-schema.js.map +1 -0
- package/dist/config/feature-flags.js +2 -1
- package/dist/config/feature-flags.js.map +1 -1
- package/dist/context/bootstrap-loader.d.ts +48 -0
- package/dist/context/bootstrap-loader.js +123 -0
- package/dist/context/bootstrap-loader.js.map +1 -0
- package/dist/context/codebase-rag/chunker.js +2 -2
- package/dist/context/codebase-rag/chunker.js.map +1 -1
- package/dist/copilot/copilot-proxy.d.ts +15 -1
- package/dist/copilot/copilot-proxy.js +92 -23
- package/dist/copilot/copilot-proxy.js.map +1 -1
- package/dist/daemon/health-monitor.js +11 -7
- package/dist/daemon/health-monitor.js.map +1 -1
- package/dist/daemon/heartbeat.d.ts +112 -0
- package/dist/daemon/heartbeat.js +339 -0
- package/dist/daemon/heartbeat.js.map +1 -0
- package/dist/desktop-automation/smart-snapshot.d.ts +11 -0
- package/dist/desktop-automation/smart-snapshot.js +38 -0
- package/dist/desktop-automation/smart-snapshot.js.map +1 -1
- package/dist/extensions/extension-loader.js +4 -0
- package/dist/extensions/extension-loader.js.map +1 -1
- package/dist/identity/identity-manager.d.ts +95 -0
- package/dist/identity/identity-manager.js +242 -0
- package/dist/identity/identity-manager.js.map +1 -0
- package/dist/index.js +147 -17
- package/dist/index.js.map +1 -1
- package/dist/input/text-to-speech.js +4 -2
- package/dist/input/text-to-speech.js.map +1 -1
- package/dist/input/voice-control.js +5 -3
- package/dist/input/voice-control.js.map +1 -1
- package/dist/integrations/github-integration.js +1 -1
- package/dist/integrations/github-integration.js.map +1 -1
- package/dist/orchestration/orchestrator.js +3 -0
- package/dist/orchestration/orchestrator.js.map +1 -1
- package/dist/persistence/conversation-branches.js +2 -1
- package/dist/persistence/conversation-branches.js.map +1 -1
- package/dist/persistence/session-store.d.ts +1 -1
- package/dist/persistence/session-store.js +1 -1
- package/dist/persistence/session-store.js.map +1 -1
- package/dist/plugins/plugin-system.js +5 -2
- package/dist/plugins/plugin-system.js.map +1 -1
- package/dist/providers/gemini-provider.js +6 -4
- package/dist/providers/gemini-provider.js.map +1 -1
- package/dist/providers/local-llm-provider.js +8 -0
- package/dist/providers/local-llm-provider.js.map +1 -1
- package/dist/sandbox/auto-sandbox.d.ts +59 -0
- package/dist/sandbox/auto-sandbox.js +145 -0
- package/dist/sandbox/auto-sandbox.js.map +1 -0
- package/dist/scheduler/cron-scheduler.js +2 -0
- package/dist/scheduler/cron-scheduler.js.map +1 -1
- package/dist/scheduler/scheduler.js +11 -2
- package/dist/scheduler/scheduler.js.map +1 -1
- package/dist/security/audit-logger.d.ts +127 -0
- package/dist/security/audit-logger.js +194 -0
- package/dist/security/audit-logger.js.map +1 -0
- package/dist/security/bash-allowlist/allowlist-store.js +3 -2
- package/dist/security/bash-allowlist/allowlist-store.js.map +1 -1
- package/dist/security/bash-parser.js +0 -2
- package/dist/security/bash-parser.js.map +1 -1
- package/dist/security/code-validator.d.ts +51 -0
- package/dist/security/code-validator.js +185 -0
- package/dist/security/code-validator.js.map +1 -0
- package/dist/security/dangerous-patterns.d.ts +68 -0
- package/dist/security/dangerous-patterns.js +218 -0
- package/dist/security/dangerous-patterns.js.map +1 -0
- package/dist/security/remote-approval.d.ts +65 -0
- package/dist/security/remote-approval.js +138 -0
- package/dist/security/remote-approval.js.map +1 -0
- package/dist/security/security-audit.d.ts +7 -0
- package/dist/security/security-audit.js +23 -0
- package/dist/security/security-audit.js.map +1 -1
- package/dist/security/syntax-validator.d.ts +17 -0
- package/dist/security/syntax-validator.js +292 -0
- package/dist/security/syntax-validator.js.map +1 -0
- package/dist/server/index.js +277 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware/logging.js +9 -1
- package/dist/server/middleware/logging.js.map +1 -1
- package/dist/server/routes/memory.js +4 -1
- package/dist/server/routes/memory.js.map +1 -1
- package/dist/server/routes/metrics.js +1 -1
- package/dist/server/routes/metrics.js.map +1 -1
- package/dist/server/routes/sessions.js +5 -4
- package/dist/server/routes/sessions.js.map +1 -1
- package/dist/server/websocket/handler.js +8 -2
- package/dist/server/websocket/handler.js.map +1 -1
- package/dist/services/prompt-builder.js +16 -0
- package/dist/services/prompt-builder.js.map +1 -1
- package/dist/skills/hub.d.ts +231 -0
- package/dist/skills/hub.js +694 -0
- package/dist/skills/hub.js.map +1 -0
- package/dist/skills/skill-loader.js +1 -1
- package/dist/skills/skill-loader.js.map +1 -1
- package/dist/skills/skill-manager.js +2 -1
- package/dist/skills/skill-manager.js.map +1 -1
- package/dist/skills/skill-registry.js +4 -0
- package/dist/skills/skill-registry.js.map +1 -1
- package/dist/talk-mode/providers/audioreader-tts.js +1 -0
- package/dist/talk-mode/providers/audioreader-tts.js.map +1 -1
- package/dist/tools/apply-patch.d.ts +1 -0
- package/dist/tools/apply-patch.js +66 -12
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/bash/bash-tool.d.ts +123 -0
- package/dist/tools/bash/bash-tool.js +549 -0
- package/dist/tools/bash/bash-tool.js.map +1 -0
- package/dist/tools/bash/command-validator.d.ts +49 -0
- package/dist/tools/bash/command-validator.js +223 -0
- package/dist/tools/bash/command-validator.js.map +1 -0
- package/dist/tools/bash/index.d.ts +7 -0
- package/dist/tools/bash/index.js +8 -0
- package/dist/tools/bash/index.js.map +1 -0
- package/dist/tools/bash/security-patterns.d.ts +44 -0
- package/dist/tools/bash/security-patterns.js +234 -0
- package/dist/tools/bash/security-patterns.js.map +1 -0
- package/dist/tools/bash/streaming-executor.d.ts +23 -0
- package/dist/tools/bash/streaming-executor.js +134 -0
- package/dist/tools/bash/streaming-executor.js.map +1 -0
- package/dist/tools/bash.js +5 -3
- package/dist/tools/bash.js.map +1 -1
- package/dist/tools/code-formatter.js +41 -27
- package/dist/tools/code-formatter.js.map +1 -1
- package/dist/tools/code-review.js +1 -1
- package/dist/tools/code-review.js.map +1 -1
- package/dist/tools/computer-control-tool.js +21 -0
- package/dist/tools/computer-control-tool.js.map +1 -1
- package/dist/tools/document-tool.js +3 -2
- package/dist/tools/document-tool.js.map +1 -1
- package/dist/tools/git-tool.d.ts +45 -0
- package/dist/tools/git-tool.js +224 -2
- package/dist/tools/git-tool.js.map +1 -1
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.js +1 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/morph-editor.js +1 -0
- package/dist/tools/morph-editor.js.map +1 -1
- package/dist/tools/multi-edit.js +31 -3
- package/dist/tools/multi-edit.js.map +1 -1
- package/dist/tools/notebook-tool.js +8 -2
- package/dist/tools/notebook-tool.js.map +1 -1
- package/dist/tools/process-tool.d.ts +69 -0
- package/dist/tools/process-tool.js +222 -0
- package/dist/tools/process-tool.js.map +1 -0
- package/dist/tools/registry/git-tools.d.ts +32 -0
- package/dist/tools/registry/git-tools.js +211 -0
- package/dist/tools/registry/git-tools.js.map +1 -0
- package/dist/tools/registry/index.d.ts +2 -0
- package/dist/tools/registry/index.js +8 -0
- package/dist/tools/registry/index.js.map +1 -1
- package/dist/tools/registry/misc-tools.d.ts +32 -4
- package/dist/tools/registry/misc-tools.js +230 -90
- package/dist/tools/registry/misc-tools.js.map +1 -1
- package/dist/tools/registry/process-tools.d.ts +20 -0
- package/dist/tools/registry/process-tools.js +141 -0
- package/dist/tools/registry/process-tools.js.map +1 -0
- package/dist/tools/registry/types.d.ts +2 -0
- package/dist/tools/search.js +4 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/video-tool.js +30 -14
- package/dist/tools/video-tool.js.map +1 -1
- package/dist/tools/web-search.js +4 -1
- package/dist/tools/web-search.js.map +1 -1
- package/dist/ui/components/ChatInterface.js +9 -0
- package/dist/ui/components/ChatInterface.js.map +1 -1
- package/dist/utils/autonomy-manager.js +3 -2
- package/dist/utils/autonomy-manager.js.map +1 -1
- package/dist/utils/config-validation/schema.d.ts +15 -15
- package/dist/utils/confirmation-service.d.ts +16 -0
- package/dist/utils/confirmation-service.js +37 -3
- package/dist/utils/confirmation-service.js.map +1 -1
- package/dist/utils/custom-instructions.js +2 -1
- package/dist/utils/custom-instructions.js.map +1 -1
- package/dist/utils/diff-generator.js +3 -1
- package/dist/utils/diff-generator.js.map +1 -1
- package/dist/utils/graceful-shutdown.js +9 -9
- package/dist/utils/graceful-shutdown.js.map +1 -1
- package/dist/utils/head-tail-truncation.d.ts +18 -0
- package/dist/utils/head-tail-truncation.js +127 -0
- package/dist/utils/head-tail-truncation.js.map +1 -1
- package/dist/utils/history-manager.js +3 -2
- package/dist/utils/history-manager.js.map +1 -1
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.js +18 -3
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/performance.js +16 -15
- package/dist/utils/performance.js.map +1 -1
- package/dist/utils/stream-helpers.js +4 -2
- package/dist/utils/stream-helpers.js.map +1 -1
- package/dist/utils/update-notifier.js +2 -1
- package/dist/utils/update-notifier.js.map +1 -1
- package/dist/workflows/pipeline.d.ts +54 -1
- package/dist/workflows/pipeline.js +128 -7
- package/dist/workflows/pipeline.js.map +1 -1
- package/dist/workflows/step-manager.js +2 -1
- package/dist/workflows/step-manager.js.map +1 -1
- 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
|
|
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
|
|
213
|
-
buddy
|
|
214
|
-
buddy
|
|
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
|
-
| **
|
|
400
|
-
| **
|
|
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 <
|
|
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
|
|
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
|
-
|
|
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
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
{
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
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.
|
|
160
|
+
if (!this.isActive)
|
|
161
|
+
break;
|
|
126
162
|
}
|
|
127
|
-
|
|
128
|
-
|
|
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":"AAAA,OAAO,EAAE,eAAe,EAAmC,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"architect-mode.js","sourceRoot":"","sources":["../../src/agent/architect-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAmC,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAiC1D,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;oDA0BoB,CAAC;AAErD,MAAM,oBAAoB,GAAG;;;;;;;;4EAQ+C,CAAC;AAE7E,MAAM,OAAO,aAAc,SAAQ,YAAY;IACrC,eAAe,CAAkB;IACjC,YAAY,CAAkB;IAC9B,MAAM,CAAkB;IACxB,eAAe,GAA6B,IAAI,CAAC;IACjD,QAAQ,GAAY,KAAK,CAAC;IAElC,YACE,MAAc,EACd,OAAgB,EAChB,SAA0B,EAAE;QAE5B,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG;YACZ,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,eAAe;YACxD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,kBAAkB;YACrD,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,KAAK;YACxC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;YAC/B,GAAG,MAAM;SACV,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CACxC,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,cAAe,EAC3B,OAAO,CACR,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CACrC,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,WAAY,EACxB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAe,EAAE,OAAgB;QAC7C,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QAE1C,MAAM,QAAQ,GAAuB;YACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,uBAAuB,EAAE;YACpD;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO;oBACd,CAAC,CAAC,aAAa,OAAO,iBAAiB,OAAO,EAAE;oBAChD,CAAC,CAAC,OAAO;aACZ;SACF,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YAE5D,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAEjD,oBAAoB;YACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAS,EAAE,CAAC;gBAClD,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAS,CAAC,CAAC;gBAChE,QAAQ,CAAC,OAAO,IAAI,kBAAkB,IAAI,CAAC,MAAM,CAAC,QAAQ,SAAS,CAAC;YACtE,CAAC;YAED,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;YAChC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;YAE1C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAA4B,EAC5B,KAAuB,EACvB,cAAkE;QAElE,MAAM,cAAc,GAAG,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QAExD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAEzC,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC9B,MAAM;gBACR,CAAC;gBAED,yCAAyC;gBACzC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;oBAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBAEnC,qCAAqC;oBACrC,WAAW,CAAC,GAAG,CAAC;wBACd,MAAM,EAAE,oBAAoB;wBAC5B,QAAQ,EAAE,OAAO;wBACjB,MAAM,EAAE,gBAAgB;wBACxB,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,OAAO,EAAE,6BAA6B,IAAI,CAAC,KAAK,EAAE;qBACnD,CAAC,CAAC;oBAEH,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;oBAE9D,MAAM,QAAQ,GAAuB;wBACnC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oBAAoB,EAAE;wBACjD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;qBACtC,CAAC;oBAEF,IAAI,CAAC;wBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;wBAE/D,MAAM,MAAM,GAAe;4BACzB,IAAI;4BACJ,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO;4BACtC,OAAO,EAAE,IAAI;yBACd,CAAC;wBAEF,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBAC/B,OAAO,MAAM,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAc,EAAE,CAAC;wBACxB,OAAO;4BACL,IAAI;4BACJ,QAAQ,EAAE,IAAI;4BACd,OAAO,EAAE,KAAK;4BACd,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC;yBAChB,CAAC;oBAClB,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBAEpD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAErB,IAAI,cAAc,EAAE,CAAC;wBACnB,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBACtC,CAAC;oBAED,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;oBAE1C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;wBACpB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;4BAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;4BACjB,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC;yBACpC,CAAC,CAAC;wBACH,gCAAgC;wBAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;oBACxB,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,MAAM;YAC5B,CAAC;YAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;YAC/D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,KAAsB;QAChD,MAAM,KAAK,GAAsB,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7B,IAAI,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAErC,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,EAAE,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,GAAoB,EAAE,CAAC;YAEjC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;gBAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;gBAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC3D,IAAI,gBAAgB,EAAE,CAAC;oBACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,wEAAwE;gBACxE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;YAED,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAC1B,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACpC,IAAI,GAAG,KAAK,CAAC,CAAC;oBAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAe;QACvC,yBAAyB;QACzB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAE1B,mCAAmC;QACnC,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzE,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAsB,CAAC;YAC5D,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QAED,iDAAiD;QACjD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBACvB,IAAI,KAAK,KAAK,CAAC;oBAAE,KAAK,GAAG,CAAC,CAAC;gBAC3B,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAC9B,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAsB,CAAC;oBACtE,CAAC;oBAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,CAAC;oBAChC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACb,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAEO,eAAe,CAAC,IAAmB,EAAE,QAA2B;QACtE,IAAI,MAAM,GAAG,gBAAgB,IAAI,CAAC,KAAK,kCAAkC,CAAC;QAC1E,MAAM,IAAI,iBAAiB,QAAQ,CAAC,OAAO,MAAM,CAAC;QAClD,MAAM,IAAI,QAAQ,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,IAAI,CAAC;QACtD,MAAM,IAAI,SAAS,IAAI,CAAC,IAAI,IAAI,CAAC;QAEjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC;QACvC,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,IAAI,CAAC,OAAO,IAAI,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,0BAA0B,CAAC;QAErC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,OAAe,EACf,OAAgB,EAChB,KAAuB,EACvB,UAA8D;QAE9D,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,qBAAqB;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,UAAU,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE1D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACJ,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,cAAc,CAAC,QAA2B;QACxC,IAAI,MAAM,GAAG,4BAA4B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC;QAC9D,MAAM,IAAI,eAAe,QAAQ,CAAC,OAAO,MAAM,CAAC;QAEhD,MAAM,IAAI,sBAAsB,QAAQ,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC;QAC5D,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,QAAQ,IAAI,IAAI,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,8BAA8B,QAAQ,CAAC,KAAK,CAAC,MAAM,MAAM,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,MAAM,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC;YAC5D,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,IAAI,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC;YACxC,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,gBAAgB,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAClC,MAAM,IAAI,QAAQ,IAAI,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,MAAM,IAAI,4BAA4B,QAAQ,CAAC,gBAAgB,UAAU,CAAC;QAC1E,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QAEhC,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,GAAG,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC;YACd,KAAK,QAAQ;gBACX,OAAO,KAAK,CAAC;YACf,KAAK,SAAS;gBACZ,OAAO,GAAG,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,GAAG,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAED,mBAAmB;AACnB,MAAM,UAAU,mBAAmB,CACjC,MAAc,EACd,OAAgB,EAChB,MAAwB;IAExB,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC"}
|
|
@@ -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.
|