@compilr-dev/cli 0.4.0 → 0.5.0
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 +30 -12
- package/dist/agent.d.ts +74 -1
- package/dist/agent.js +259 -76
- package/dist/anchors/index.d.ts +9 -0
- package/dist/anchors/index.js +9 -0
- package/dist/anchors/project-anchors.d.ts +79 -0
- package/dist/anchors/project-anchors.js +202 -0
- package/dist/commands/handler-types.d.ts +68 -0
- package/dist/commands/handler-types.js +8 -0
- package/dist/commands/handlers/agent-commands.d.ts +13 -0
- package/dist/commands/handlers/agent-commands.js +305 -0
- package/dist/commands/handlers/design-commands.d.ts +15 -0
- package/dist/commands/handlers/design-commands.js +334 -0
- package/dist/commands/handlers/index.d.ts +20 -0
- package/dist/commands/handlers/index.js +43 -0
- package/dist/commands/handlers/overlay-commands.d.ts +21 -0
- package/dist/commands/handlers/overlay-commands.js +287 -0
- package/dist/commands/handlers/project-commands.d.ts +11 -0
- package/dist/commands/handlers/project-commands.js +167 -0
- package/dist/commands/handlers/simple-commands.d.ts +19 -0
- package/dist/commands/handlers/simple-commands.js +144 -0
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands/registry.d.ts +50 -0
- package/dist/commands/registry.js +75 -0
- package/dist/commands-v2/handlers/context.d.ts +13 -0
- package/dist/commands-v2/handlers/context.js +348 -0
- package/dist/commands-v2/handlers/core.d.ts +13 -0
- package/dist/commands-v2/handlers/core.js +165 -0
- package/dist/commands-v2/handlers/debug.d.ts +11 -0
- package/dist/commands-v2/handlers/debug.js +159 -0
- package/dist/commands-v2/handlers/index.d.ts +12 -0
- package/dist/commands-v2/handlers/index.js +24 -0
- package/dist/commands-v2/handlers/project.d.ts +22 -0
- package/dist/commands-v2/handlers/project.js +814 -0
- package/dist/commands-v2/handlers/settings.d.ts +15 -0
- package/dist/commands-v2/handlers/settings.js +235 -0
- package/dist/commands-v2/index.d.ts +13 -0
- package/dist/commands-v2/index.js +15 -0
- package/dist/commands-v2/registry.d.ts +37 -0
- package/dist/commands-v2/registry.js +80 -0
- package/dist/commands-v2/types.d.ts +75 -0
- package/dist/commands-v2/types.js +7 -0
- package/dist/commands.js +110 -7
- package/dist/index.js +288 -29
- package/dist/input-handlers/index.d.ts +7 -0
- package/dist/input-handlers/index.js +7 -0
- package/dist/input-handlers/memory-handler.d.ts +26 -0
- package/dist/input-handlers/memory-handler.js +68 -0
- package/dist/repl-helpers.d.ts +63 -0
- package/dist/repl-helpers.js +318 -0
- package/dist/repl-v2.d.ts +155 -0
- package/dist/repl-v2.js +774 -0
- package/dist/repl.d.ts +32 -4
- package/dist/repl.js +250 -977
- package/dist/settings/index.d.ts +23 -0
- package/dist/settings/index.js +48 -0
- package/dist/settings/paths.d.ts +110 -0
- package/dist/settings/paths.js +264 -0
- package/dist/templates/compilr-md.js +7 -4
- package/dist/templates/index.js +3 -4
- package/dist/themes/colors.js +3 -1
- package/dist/themes/registry.d.ts +5 -36
- package/dist/themes/registry.js +11 -95
- package/dist/themes/types.d.ts +3 -38
- package/dist/themes/types.js +2 -2
- package/dist/tools/anchor-tools.d.ts +31 -0
- package/dist/tools/anchor-tools.js +255 -0
- package/dist/tools/backlog-wrappers.d.ts +54 -0
- package/dist/tools/backlog-wrappers.js +338 -0
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +65 -0
- package/dist/tools/db-tools.js +19 -0
- package/dist/tools/document-db.d.ts +43 -0
- package/dist/tools/document-db.js +220 -0
- package/dist/tools/project-db.d.ts +102 -0
- package/dist/tools/project-db.js +370 -0
- package/dist/tools/workitem-db.d.ts +103 -0
- package/dist/tools/workitem-db.js +549 -0
- package/dist/tools.js +13 -3
- package/dist/ui/agents-overlay-v2.d.ts +43 -0
- package/dist/ui/agents-overlay-v2.js +809 -0
- package/dist/ui/agents-overlay.d.ts +5 -5
- package/dist/ui/agents-overlay.js +782 -420
- package/dist/ui/anchors-overlay.d.ts +12 -0
- package/dist/ui/anchors-overlay.js +775 -0
- package/dist/ui/arch-type-overlay.d.ts +1 -6
- package/dist/ui/arch-type-overlay.js +175 -203
- package/dist/ui/ask-user-overlay-v2.d.ts +26 -0
- package/dist/ui/ask-user-overlay-v2.js +555 -0
- package/dist/ui/ask-user-overlay.d.ts +2 -2
- package/dist/ui/ask-user-overlay.js +443 -535
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +25 -0
- package/dist/ui/ask-user-simple-overlay-v2.js +215 -0
- package/dist/ui/ask-user-simple-overlay.d.ts +2 -2
- package/dist/ui/ask-user-simple-overlay.js +182 -209
- package/dist/ui/backlog-overlay.d.ts +16 -1
- package/dist/ui/backlog-overlay.js +525 -659
- package/dist/ui/base/index.d.ts +26 -0
- package/dist/ui/base/index.js +33 -0
- package/dist/ui/base/inline-overlay-utils.d.ts +217 -0
- package/dist/ui/base/inline-overlay-utils.js +320 -0
- package/dist/ui/base/inline-overlay.d.ts +159 -0
- package/dist/ui/base/inline-overlay.js +257 -0
- package/dist/ui/base/key-utils.d.ts +15 -0
- package/dist/ui/base/key-utils.js +30 -0
- package/dist/ui/base/overlay-base-v2.d.ts +193 -0
- package/dist/ui/base/overlay-base-v2.js +246 -0
- package/dist/ui/base/overlay-base.d.ts +156 -0
- package/dist/ui/base/overlay-base.js +238 -0
- package/dist/ui/base/overlay-lifecycle.d.ts +65 -0
- package/dist/ui/base/overlay-lifecycle.js +159 -0
- package/dist/ui/base/overlay-types.d.ts +185 -0
- package/dist/ui/base/overlay-types.js +7 -0
- package/dist/ui/base/render-utils.d.ts +8 -0
- package/dist/ui/base/render-utils.js +11 -0
- package/dist/ui/base/screen-stack.d.ts +148 -0
- package/dist/ui/base/screen-stack.js +184 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +103 -0
- package/dist/ui/base/tabbed-list-overlay-v2.js +317 -0
- package/dist/ui/base/tabbed-list-overlay.d.ts +153 -0
- package/dist/ui/base/tabbed-list-overlay.js +369 -0
- package/dist/ui/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/commands-overlay-v2.js +441 -0
- package/dist/ui/commands-overlay.d.ts +7 -2
- package/dist/ui/commands-overlay.js +384 -355
- package/dist/ui/config-overlay.d.ts +5 -4
- package/dist/ui/config-overlay.js +243 -513
- package/dist/ui/conversation.d.ts +75 -4
- package/dist/ui/conversation.js +374 -161
- package/dist/ui/docs-overlay.d.ts +17 -0
- package/dist/ui/docs-overlay.js +303 -0
- package/dist/ui/ephemeral.d.ts +1 -1
- package/dist/ui/ephemeral.js +1 -1
- package/dist/ui/features/index.d.ts +34 -0
- package/dist/ui/features/index.js +34 -0
- package/dist/ui/features/input-feature.d.ts +85 -0
- package/dist/ui/features/input-feature.js +238 -0
- package/dist/ui/features/list-feature.d.ts +155 -0
- package/dist/ui/features/list-feature.js +244 -0
- package/dist/ui/features/pagination-feature.d.ts +154 -0
- package/dist/ui/features/pagination-feature.js +238 -0
- package/dist/ui/features/search-feature.d.ts +148 -0
- package/dist/ui/features/search-feature.js +185 -0
- package/dist/ui/features/tab-feature.d.ts +194 -0
- package/dist/ui/features/tab-feature.js +307 -0
- package/dist/ui/footer-v2.d.ts +222 -0
- package/dist/ui/footer-v2.js +1349 -0
- package/dist/ui/footer.d.ts +107 -0
- package/dist/ui/footer.js +359 -67
- package/dist/ui/guardrail-overlay.d.ts +29 -0
- package/dist/ui/guardrail-overlay.js +145 -0
- package/dist/ui/help-overlay-v2.d.ts +34 -0
- package/dist/ui/help-overlay-v2.js +309 -0
- package/dist/ui/help-overlay.d.ts +16 -0
- package/dist/ui/help-overlay.js +316 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -3
- package/dist/ui/init-overlay-v2.d.ts +34 -0
- package/dist/ui/init-overlay-v2.js +600 -0
- package/dist/ui/init-overlay.d.ts +12 -2
- package/dist/ui/init-overlay.js +349 -270
- package/dist/ui/input-prompt-v2.d.ts +1 -0
- package/dist/ui/input-prompt-v2.js +14 -6
- package/dist/ui/input-prompt.d.ts +116 -33
- package/dist/ui/input-prompt.js +536 -337
- package/dist/ui/iteration-limit-overlay-v2.d.ts +21 -0
- package/dist/ui/iteration-limit-overlay-v2.js +114 -0
- package/dist/ui/iteration-limit-overlay.d.ts +2 -2
- package/dist/ui/iteration-limit-overlay.js +92 -128
- package/dist/ui/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/keys-overlay-v2.js +248 -0
- package/dist/ui/keys-overlay.d.ts +1 -0
- package/dist/ui/keys-overlay.js +203 -141
- package/dist/ui/line-utils.d.ts +88 -0
- package/dist/ui/line-utils.js +150 -0
- package/dist/ui/live-region.d.ts +161 -0
- package/dist/ui/live-region.js +387 -0
- package/dist/ui/mascot/expressions.d.ts +32 -0
- package/dist/ui/mascot/expressions.js +213 -0
- package/dist/ui/mascot/index.d.ts +8 -0
- package/dist/ui/mascot/index.js +8 -0
- package/dist/ui/mascot/renderer.d.ts +19 -0
- package/dist/ui/mascot/renderer.js +97 -0
- package/dist/ui/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/mascot-overlay-v2.js +138 -0
- package/dist/ui/mascot-overlay.d.ts +21 -0
- package/dist/ui/mascot-overlay.js +146 -0
- package/dist/ui/model-overlay-v2.d.ts +49 -0
- package/dist/ui/model-overlay-v2.js +118 -0
- package/dist/ui/model-overlay.d.ts +27 -0
- package/dist/ui/model-overlay.js +221 -0
- package/dist/ui/model-warning-overlay.js +3 -5
- package/dist/ui/new-overlay.d.ts +34 -0
- package/dist/ui/new-overlay.js +604 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +825 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +783 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/arch-type-overlay-v2.js +240 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +584 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/ask-user-simple-overlay-v2.js +204 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +642 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +441 -0
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +100 -0
- package/dist/ui/overlay/impl/config-overlay-v2.js +654 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +55 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +359 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1071 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/guardrail-overlay-v2.js +114 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +34 -0
- package/dist/ui/overlay/impl/help-overlay-v2.js +309 -0
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/init-overlay-v2.js +593 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.d.ts +25 -0
- package/dist/ui/overlay/impl/init-setup-overlay-v2.js +97 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/iteration-limit-overlay-v2.js +105 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/keys-overlay-v2.js +248 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/mascot-overlay-v2.js +138 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/model-overlay-v2.js +118 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.d.ts +46 -0
- package/dist/ui/overlay/impl/model-warning-overlay-v2.js +132 -0
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +77 -0
- package/dist/ui/overlay/impl/new-overlay-v2.js +593 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +380 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +499 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/overlay/impl/theme-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +218 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +1035 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +637 -0
- package/dist/ui/overlay/index.d.ts +33 -0
- package/dist/ui/overlay/index.js +35 -0
- package/dist/ui/overlay/key-utils.d.ts +6 -0
- package/dist/ui/overlay/key-utils.js +6 -0
- package/dist/ui/overlay/overlay-types.d.ts +128 -0
- package/dist/ui/overlay/overlay-types.js +22 -0
- package/dist/ui/overlay/types.d.ts +135 -0
- package/dist/ui/overlay/types.js +22 -0
- package/dist/ui/overlays/help-overlay-v2.d.ts +28 -0
- package/dist/ui/overlays/help-overlay-v2.js +198 -0
- package/dist/ui/overlays/index.d.ts +11 -0
- package/dist/ui/overlays/index.js +11 -0
- package/dist/ui/overlays.d.ts +0 -4
- package/dist/ui/overlays.js +0 -444
- package/dist/ui/permission-overlay-v2.d.ts +36 -0
- package/dist/ui/permission-overlay-v2.js +380 -0
- package/dist/ui/permission-overlay.d.ts +1 -1
- package/dist/ui/permission-overlay.js +186 -298
- package/dist/ui/projects-overlay.d.ts +19 -0
- package/dist/ui/projects-overlay.js +484 -0
- package/dist/ui/providers/types.d.ts +178 -0
- package/dist/ui/providers/types.js +9 -0
- package/dist/ui/render-modes.d.ts +36 -0
- package/dist/ui/render-modes.js +44 -0
- package/dist/ui/startup-menu.d.ts +36 -0
- package/dist/ui/startup-menu.js +236 -0
- package/dist/ui/subagent-renderer.d.ts +117 -0
- package/dist/ui/subagent-renderer.js +334 -0
- package/dist/ui/terminal-codes.d.ts +94 -0
- package/dist/ui/terminal-codes.js +124 -0
- package/dist/ui/terminal-renderer.d.ts +221 -0
- package/dist/ui/terminal-renderer.js +751 -0
- package/dist/ui/terminal-ui.d.ts +463 -0
- package/dist/ui/terminal-ui.js +2296 -0
- package/dist/ui/terminal.d.ts +20 -0
- package/dist/ui/terminal.js +72 -0
- package/dist/ui/theme-overlay-v2.d.ts +42 -0
- package/dist/ui/theme-overlay-v2.js +135 -0
- package/dist/ui/theme-overlay.d.ts +24 -0
- package/dist/ui/theme-overlay.js +127 -0
- package/dist/ui/todo-zone.js +53 -25
- package/dist/ui/tool-formatters.d.ts +16 -0
- package/dist/ui/tool-formatters.js +516 -0
- package/dist/ui/tools-overlay-v2.d.ts +47 -0
- package/dist/ui/tools-overlay-v2.js +218 -0
- package/dist/ui/tools-overlay.d.ts +10 -2
- package/dist/ui/tools-overlay.js +172 -220
- package/dist/ui/tutorial-overlay-v2.d.ts +31 -0
- package/dist/ui/tutorial-overlay-v2.js +1035 -0
- package/dist/ui/tutorial-overlay.d.ts +1 -0
- package/dist/ui/tutorial-overlay.js +400 -302
- package/dist/ui/workflow-overlay.d.ts +22 -0
- package/dist/ui/workflow-overlay.js +636 -0
- package/dist/utils/debug-log.d.ts +28 -0
- package/dist/utils/debug-log.js +57 -0
- package/dist/utils/model-tiers.js +1 -1
- package/dist/utils/path-safety.d.ts +56 -0
- package/dist/utils/path-safety.js +239 -0
- package/dist/workflow/guided-mode-injector.d.ts +42 -0
- package/dist/workflow/guided-mode-injector.js +191 -0
- package/dist/workflow/index.d.ts +8 -0
- package/dist/workflow/index.js +8 -0
- package/dist/workflow/step-criteria.d.ts +62 -0
- package/dist/workflow/step-criteria.js +150 -0
- package/dist/workflow/step-tracker.d.ts +92 -0
- package/dist/workflow/step-tracker.js +141 -0
- package/package.json +12 -5
package/README.md
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
# @compilr-dev/cli
|
|
2
2
|
|
|
3
|
+
```
|
|
4
|
+
\|/
|
|
5
|
+
╭══════════╮ ___ ___ _ __ ___ _ __ (_) |_ __
|
|
6
|
+
║' ▐▌ ▐▌ │ / __|/ _ \| '_ ` _ \| '_ \| | | '__|
|
|
7
|
+
║ │ | (__| (_) | | | | | | |_) | | | |
|
|
8
|
+
╰─═──────═─╯ \___|\___/|_| |_| |_| .__/|_|_|_|
|
|
9
|
+
\________\ | | .dev
|
|
10
|
+
|_| CLI
|
|
11
|
+
```
|
|
12
|
+
|
|
3
13
|
> AI-powered CLI assistant using @compilr-dev/agents
|
|
4
14
|
|
|
15
|
+
[](https://www.npmjs.com/package/@compilr-dev/cli)
|
|
16
|
+
[](https://opensource.org/licenses/MIT)
|
|
17
|
+
|
|
5
18
|
## Overview
|
|
6
19
|
|
|
7
20
|
An AI coding assistant for the terminal, built with the `@compilr-dev/agents` library. Supports multiple LLM providers (Claude, OpenAI, Gemini, Ollama) with streaming output, tool execution, and context management.
|
|
@@ -63,8 +76,8 @@ compilr --verbose
|
|
|
63
76
|
|
|
64
77
|
```bash
|
|
65
78
|
# Clone the repository
|
|
66
|
-
git clone https://github.com/
|
|
67
|
-
cd
|
|
79
|
+
git clone https://github.com/compilr-dev/cli.git
|
|
80
|
+
cd cli
|
|
68
81
|
|
|
69
82
|
# Install dependencies
|
|
70
83
|
npm install
|
|
@@ -86,13 +99,15 @@ npm run build
|
|
|
86
99
|
|
|
87
100
|
## Documentation
|
|
88
101
|
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
102
|
+
Full documentation and tutorials available at [compilr.dev](https://compilr.dev):
|
|
103
|
+
- Getting Started Guide
|
|
104
|
+
- Configuration Reference
|
|
105
|
+
- Tool Documentation
|
|
106
|
+
- Best Practices
|
|
107
|
+
|
|
108
|
+
## Contributing
|
|
109
|
+
|
|
110
|
+
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
96
111
|
|
|
97
112
|
## License
|
|
98
113
|
|
|
@@ -100,11 +115,14 @@ MIT
|
|
|
100
115
|
|
|
101
116
|
## Links
|
|
102
117
|
|
|
103
|
-
- [compilr.dev](https://compilr.dev) - Main website
|
|
118
|
+
- [compilr.dev](https://compilr.dev) - Main website & documentation
|
|
104
119
|
- [@compilr-dev/agents](https://www.npmjs.com/package/@compilr-dev/agents) - Agent library
|
|
105
120
|
- [@compilr-dev/agents-coding](https://www.npmjs.com/package/@compilr-dev/agents-coding) - Coding tools
|
|
106
|
-
- [GitHub](https://github.com/
|
|
121
|
+
- [GitHub](https://github.com/compilr-dev/cli) - Source code
|
|
122
|
+
- [Examples](https://github.com/compilr-dev/examples) - Example projects
|
|
107
123
|
|
|
108
124
|
---
|
|
109
125
|
|
|
110
|
-
|
|
126
|
+
```
|
|
127
|
+
[^_^] Built with @compilr-dev/agents
|
|
128
|
+
```
|
package/dist/agent.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* and available tools.
|
|
7
7
|
*/
|
|
8
8
|
import { Agent } from '@compilr-dev/agents';
|
|
9
|
-
import type { AgentEvent, PermissionHandler } from '@compilr-dev/agents';
|
|
9
|
+
import type { AgentEvent, PermissionHandler, GuardrailTriggeredHandler } from '@compilr-dev/agents';
|
|
10
10
|
/**
|
|
11
11
|
* Supported providers
|
|
12
12
|
*/
|
|
@@ -47,6 +47,68 @@ export interface AgentOptions {
|
|
|
47
47
|
* This is appended to the system prompt to give the agent project-specific knowledge.
|
|
48
48
|
*/
|
|
49
49
|
projectContext?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Guided workflow context.
|
|
52
|
+
* Appended to the system prompt when in guided mode.
|
|
53
|
+
* Generated by the workflow module based on project/item state.
|
|
54
|
+
*/
|
|
55
|
+
guidedModeContext?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Enable anchors (critical info that survives compaction).
|
|
58
|
+
* When true, agent is configured with AnchorManager.
|
|
59
|
+
*/
|
|
60
|
+
enableAnchors?: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Pre-loaded anchors to add to the agent at startup.
|
|
63
|
+
* These are loaded from persisted files (global + project).
|
|
64
|
+
*/
|
|
65
|
+
persistedAnchors?: Array<{
|
|
66
|
+
id?: string;
|
|
67
|
+
content: string;
|
|
68
|
+
priority: 'critical' | 'safety' | 'info';
|
|
69
|
+
scope: 'session' | 'persistent' | 'temporary';
|
|
70
|
+
tags?: string[];
|
|
71
|
+
projectId?: string;
|
|
72
|
+
}>;
|
|
73
|
+
/**
|
|
74
|
+
* Enable guardrails (safety checks for risky operations).
|
|
75
|
+
* When true, 15 built-in patterns are enabled for git, filesystem, database, etc.
|
|
76
|
+
* Warnings are emitted as 'guardrail_warning' events on the agent.
|
|
77
|
+
*/
|
|
78
|
+
enableGuardrails?: boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Callback for guardrail confirmation prompts.
|
|
81
|
+
* Called when a guardrail with action='confirm' is triggered.
|
|
82
|
+
* Return true to proceed, false to block.
|
|
83
|
+
*/
|
|
84
|
+
onGuardrailTriggered?: GuardrailTriggeredHandler;
|
|
85
|
+
/**
|
|
86
|
+
* Callback when a subagent starts (task tool spawns agent).
|
|
87
|
+
* @param toolUseId - Tool use ID for correlation (from task tool's tool_start event)
|
|
88
|
+
* @param agentType - Type of agent being spawned
|
|
89
|
+
* @param description - Task description
|
|
90
|
+
*/
|
|
91
|
+
onSubagentStart?: (toolUseId: string, agentType: string, description: string) => void;
|
|
92
|
+
/**
|
|
93
|
+
* Callback when a subagent completes.
|
|
94
|
+
* @param toolUseId - Tool use ID for correlation
|
|
95
|
+
* @param success - Whether the subagent completed successfully
|
|
96
|
+
* @param tokenCount - Total tokens used by the subagent
|
|
97
|
+
* @param error - Error message if failed
|
|
98
|
+
*/
|
|
99
|
+
onSubagentEnd?: (toolUseId: string, success: boolean, tokenCount: number, error?: string) => void;
|
|
100
|
+
/**
|
|
101
|
+
* Callback when a subagent uses a tool (for live updates).
|
|
102
|
+
* @param toolUseId - Tool use ID for correlation
|
|
103
|
+
* @param toolName - Name of the tool being used
|
|
104
|
+
* @param summary - Optional summary of what the tool is doing
|
|
105
|
+
*/
|
|
106
|
+
onSubagentToolUse?: (toolUseId: string, toolName: string, summary?: string) => void;
|
|
107
|
+
/**
|
|
108
|
+
* Callback invoked when subagent tracking should be cleared (e.g., new run starting).
|
|
109
|
+
* Returns a function to clear the tracking state.
|
|
110
|
+
*/
|
|
111
|
+
onSubagentTrackingReady?: (clearTracking: () => void) => void;
|
|
50
112
|
}
|
|
51
113
|
/**
|
|
52
114
|
* Get permission info for a tool by name.
|
|
@@ -56,6 +118,17 @@ export declare function getToolPermissionInfo(toolName: string): {
|
|
|
56
118
|
level: 'once' | 'always' | 'session';
|
|
57
119
|
description: string;
|
|
58
120
|
} | undefined;
|
|
121
|
+
/**
|
|
122
|
+
* Get information about built-in guardrails.
|
|
123
|
+
* Used for displaying guardrail info in /help or status overlays.
|
|
124
|
+
*/
|
|
125
|
+
export declare function getBuiltinGuardrailInfo(): Array<{
|
|
126
|
+
id: string;
|
|
127
|
+
name: string;
|
|
128
|
+
description: string;
|
|
129
|
+
action: 'warn' | 'confirm' | 'block';
|
|
130
|
+
category: string;
|
|
131
|
+
}>;
|
|
59
132
|
/**
|
|
60
133
|
* Creates an Agent instance configured with all tools.
|
|
61
134
|
*/
|
package/dist/agent.js
CHANGED
|
@@ -5,94 +5,176 @@
|
|
|
5
5
|
* ClaudeProvider, OllamaProvider, OpenAIProvider, or GeminiProvider
|
|
6
6
|
* and available tools.
|
|
7
7
|
*/
|
|
8
|
-
import { Agent, ClaudeProvider, OllamaProvider, OpenAIProvider, GeminiProvider, ContextManager, DEFAULT_CONTEXT_CONFIG, createTaskTool, createSuggestTool, defaultAgentTypes, TOOL_SETS, } from '@compilr-dev/agents';
|
|
8
|
+
import { Agent, ClaudeProvider, OllamaProvider, OpenAIProvider, GeminiProvider, ContextManager, DEFAULT_CONTEXT_CONFIG, createTaskTool, createSuggestTool, defaultAgentTypes, TOOL_SETS, BUILTIN_GUARDRAILS, } from '@compilr-dev/agents';
|
|
9
9
|
import { isAutoCompactEnabled } from './settings/index.js';
|
|
10
10
|
import { getApiKey } from './utils/credentials.js';
|
|
11
11
|
import { createToolRegistry, createMinimalToolRegistry } from './tools.js';
|
|
12
12
|
import { getAgentRegistry } from './agents/registry.js';
|
|
13
|
-
const SYSTEM_PROMPT = `You are a
|
|
13
|
+
const SYSTEM_PROMPT = `You are a coding assistant running in a terminal CLI.
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
You help users with software engineering tasks: writing code, debugging, refactoring, explaining concepts, managing projects, and more.
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
## Tone and Style
|
|
18
|
+
|
|
19
|
+
- Your output displays in a terminal. Keep responses short and concise.
|
|
20
|
+
- Use GitHub-flavored markdown for formatting.
|
|
21
|
+
- Only use emojis if the user explicitly requests them.
|
|
22
|
+
- Output text to communicate. Never use tools (like bash echo) to communicate.
|
|
23
|
+
- NEVER create files unless absolutely necessary. Always prefer editing existing files.
|
|
24
|
+
- When referencing code, include file path and line number: src/utils.ts:42
|
|
25
|
+
|
|
26
|
+
## Professional Objectivity
|
|
27
|
+
|
|
28
|
+
Prioritize technical accuracy over validating the user's beliefs. Provide direct, objective technical info without unnecessary praise or emotional validation. Disagree when necessary - objective guidance is more valuable than false agreement.
|
|
29
|
+
|
|
30
|
+
Avoid phrases like "You're absolutely right!" or "Great question!" - just answer directly.
|
|
31
|
+
|
|
32
|
+
## No Time Estimates
|
|
33
|
+
|
|
34
|
+
Never predict how long tasks will take. Avoid phrases like "this will take a few minutes" or "quick fix". Focus on what needs to be done, not duration.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Doing Tasks
|
|
39
|
+
|
|
40
|
+
When the user requests software engineering work:
|
|
41
|
+
|
|
42
|
+
1. **Read before modifying**: NEVER propose changes to code you haven't read. Always read files first.
|
|
43
|
+
2. **Use todo_write for complex tasks**: Track progress on multi-step work (3+ steps).
|
|
44
|
+
3. **Avoid over-engineering**:
|
|
45
|
+
- Only make changes that are directly requested
|
|
46
|
+
- Don't add features beyond what was asked
|
|
47
|
+
- Don't add error handling for scenarios that can't happen
|
|
48
|
+
- Don't create abstractions for one-time operations
|
|
49
|
+
- Three similar lines is better than a premature abstraction
|
|
50
|
+
4. **Security awareness**: Don't introduce vulnerabilities (injection, XSS, SQL injection). If you notice insecure code, fix it immediately.
|
|
51
|
+
5. **Clean up completely**: If something is unused, delete it. No backwards-compatibility hacks.
|
|
52
|
+
|
|
53
|
+
## Task Management (todo_write)
|
|
54
|
+
|
|
55
|
+
Use todo_write to track progress on multi-step tasks.
|
|
56
|
+
|
|
57
|
+
When to use:
|
|
58
|
+
- Tasks with 3+ distinct steps
|
|
59
|
+
- User provides multiple tasks
|
|
60
|
+
- Complex work requiring planning
|
|
61
|
+
|
|
62
|
+
When NOT to use:
|
|
63
|
+
- Single, trivial tasks
|
|
64
|
+
- Purely informational questions
|
|
65
|
+
- Tasks completable in 1-2 steps
|
|
66
|
+
|
|
67
|
+
### Example: When to use todo_write
|
|
68
|
+
|
|
69
|
+
User: Fix the type errors and run the tests
|
|
70
|
+
Assistant: I'll track this multi-step task:
|
|
71
|
+
[Uses todo_write: "Fix type errors", "Run tests"]
|
|
72
|
+
[Marks "Fix type errors" as in_progress]
|
|
73
|
+
[Reads files, fixes errors]
|
|
74
|
+
[Marks "Fix type errors" complete, "Run tests" in_progress]
|
|
75
|
+
[Runs tests]
|
|
76
|
+
[Marks "Run tests" complete]
|
|
77
|
+
|
|
78
|
+
### Example: When NOT to use todo_write
|
|
79
|
+
|
|
80
|
+
User: What does this function do?
|
|
81
|
+
Assistant: [Reads the file and explains directly - no todo needed for a simple question]
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Tool Usage
|
|
86
|
+
|
|
87
|
+
IMPORTANT: Tool names are lowercase with underscores. Use them exactly as shown.
|
|
88
|
+
|
|
89
|
+
### File Operations
|
|
90
|
+
- read_file: Read file contents (parameter: path)
|
|
19
91
|
- write_file: Create or overwrite a file (parameters: path, content)
|
|
20
92
|
- edit: Replace text in a file (parameters: path, old_text, new_text)
|
|
21
93
|
- glob: Find files matching a pattern (parameters: pattern, path)
|
|
22
94
|
- grep: Search file contents with regex (parameters: pattern, path)
|
|
23
95
|
|
|
24
|
-
Shell
|
|
96
|
+
### Shell
|
|
25
97
|
- bash: Run shell commands (parameter: command)
|
|
26
|
-
For long-running commands (dev servers
|
|
27
|
-
- bash_output: Get output from
|
|
28
|
-
- kill_shell: Terminate
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
When running commands that don't exit (like npm run dev, npm start, watch commands):
|
|
32
|
-
1. Use bash with run_in_background=true to start the process
|
|
33
|
-
2. The tool returns a shell_id you can use to monitor or kill the process
|
|
34
|
-
3. Use bash_output with the shell_id to check output/status
|
|
35
|
-
4. Use kill_shell with the shell_id to stop the process when done
|
|
36
|
-
|
|
37
|
-
Example: Starting a dev server
|
|
38
|
-
bash(command="npm run dev", run_in_background=true) → returns shell_id
|
|
39
|
-
bash_output(shell_id="...") → check if server started
|
|
40
|
-
kill_shell(shell_id="...") → stop when done
|
|
41
|
-
|
|
42
|
-
Git:
|
|
98
|
+
For long-running commands (dev servers), use run_in_background=true
|
|
99
|
+
- bash_output: Get output from background shell (parameter: shell_id)
|
|
100
|
+
- kill_shell: Terminate background shell (parameter: shell_id)
|
|
101
|
+
|
|
102
|
+
### Git
|
|
43
103
|
- git_status: Show working tree status
|
|
44
104
|
- git_diff: Show file differences
|
|
45
|
-
- git_log: Show commit history
|
|
105
|
+
- git_log: Show commit history
|
|
46
106
|
- git_commit: Create a commit (parameters: message, files)
|
|
47
107
|
- git_branch: List or manage branches
|
|
48
108
|
|
|
49
|
-
Project Analysis
|
|
109
|
+
### Project Analysis
|
|
50
110
|
- detect_project: Detect project type and framework
|
|
51
|
-
- find_project_root: Find
|
|
52
|
-
- run_tests: Run
|
|
53
|
-
- run_lint: Run
|
|
111
|
+
- find_project_root: Find project root directory
|
|
112
|
+
- run_tests: Run test suite
|
|
113
|
+
- run_lint: Run linter
|
|
54
114
|
|
|
55
|
-
Task Management
|
|
56
|
-
- todo_write: Add/update todo items
|
|
115
|
+
### Task Management
|
|
116
|
+
- todo_write: Add/update todo items
|
|
57
117
|
- todo_read: View current todo list
|
|
58
118
|
|
|
59
|
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
119
|
+
### User Interaction
|
|
120
|
+
- ask_user: Ask question with multiple choice options
|
|
121
|
+
- ask_user_simple: Ask simple yes/no or text input question
|
|
122
|
+
- suggest: Suggest next action (appears as ghost text - user presses Tab to accept)
|
|
123
|
+
|
|
124
|
+
### Sub-agents
|
|
125
|
+
- task: Spawn specialized sub-agent for complex tasks
|
|
126
|
+
Types: explore, code-review, plan, debug, test-runner, refactor, security-audit, general
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Git Safety Protocol
|
|
131
|
+
|
|
132
|
+
When working with git:
|
|
133
|
+
|
|
134
|
+
1. **Never update git config** without explicit user request
|
|
135
|
+
2. **Never force push** to main/master - warn if requested
|
|
136
|
+
3. **Never use --amend** unless:
|
|
137
|
+
- User explicitly requested it, AND
|
|
138
|
+
- Commit was created by you in this session, AND
|
|
139
|
+
- Commit has NOT been pushed to remote
|
|
140
|
+
4. **Check before destructive operations**:
|
|
141
|
+
- git reset --hard (loses uncommitted changes)
|
|
142
|
+
- git checkout -- file (discards local changes)
|
|
143
|
+
- git clean (deletes untracked files)
|
|
144
|
+
5. **Only commit when asked** - don't commit proactively
|
|
145
|
+
|
|
146
|
+
### Commit Workflow
|
|
147
|
+
1. Run git_status to see changes
|
|
148
|
+
2. Run git_diff to review what will be committed
|
|
149
|
+
3. Check recent git_log for commit message style
|
|
150
|
+
4. Create focused commit with clear message
|
|
151
|
+
5. Never commit files with secrets (.env, credentials.json)
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## Next Action Suggestions
|
|
156
|
+
|
|
157
|
+
After completing a task, call the suggest tool to recommend the next action.
|
|
158
|
+
|
|
159
|
+
Good suggestions are short commands or actions:
|
|
160
|
+
- "run npm test"
|
|
161
|
+
- "commit the changes"
|
|
162
|
+
- "check the error log"
|
|
163
|
+
|
|
164
|
+
CALL the suggest tool - never write "suggest: ..." as text.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## IMPORTANT RULES (read carefully)
|
|
169
|
+
|
|
170
|
+
1. Tool names are lowercase with underscores - use exactly as shown
|
|
171
|
+
2. ALWAYS read files before proposing changes to them
|
|
172
|
+
3. After calling a tool, respond with the result - never end silently
|
|
173
|
+
4. Use todo_write for multi-step tasks (3+ steps)
|
|
174
|
+
5. Don't over-engineer - implement exactly what was asked
|
|
175
|
+
6. Check for security issues - fix insecure code immediately
|
|
176
|
+
7. Use the task tool to delegate complex work to sub-agents
|
|
177
|
+
8. Call suggest tool after completing tasks (don't write "suggest:" as text)
|
|
96
178
|
|
|
97
179
|
Current working directory: ${process.cwd()}`;
|
|
98
180
|
/**
|
|
@@ -111,8 +193,7 @@ const DEFAULT_PERMISSION_RULES = [
|
|
|
111
193
|
// Project runners (can have side effects)
|
|
112
194
|
{ toolName: 'run_tests', level: 'once', description: 'Run test suite' },
|
|
113
195
|
{ toolName: 'run_lint', level: 'once', description: 'Run linter (may auto-fix)' },
|
|
114
|
-
//
|
|
115
|
-
{ toolName: 'backlog_write', level: 'once', description: 'Modify backlog file' },
|
|
196
|
+
// Note: backlog_write removed - use workitem_* tools which modify database
|
|
116
197
|
];
|
|
117
198
|
/**
|
|
118
199
|
* Get permission info for a tool by name.
|
|
@@ -128,6 +209,19 @@ export function getToolPermissionInfo(toolName) {
|
|
|
128
209
|
}
|
|
129
210
|
return undefined;
|
|
130
211
|
}
|
|
212
|
+
/**
|
|
213
|
+
* Get information about built-in guardrails.
|
|
214
|
+
* Used for displaying guardrail info in /help or status overlays.
|
|
215
|
+
*/
|
|
216
|
+
export function getBuiltinGuardrailInfo() {
|
|
217
|
+
return BUILTIN_GUARDRAILS.map((g) => ({
|
|
218
|
+
id: g.id,
|
|
219
|
+
name: g.name,
|
|
220
|
+
description: g.description,
|
|
221
|
+
action: g.action,
|
|
222
|
+
category: g.tags?.[0] ?? 'general',
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
131
225
|
/**
|
|
132
226
|
* Merges built-in agent types with custom agents from registry.
|
|
133
227
|
* Custom agents get safe read-only tools by default.
|
|
@@ -254,10 +348,16 @@ export function createAgent(options = {}) {
|
|
|
254
348
|
}
|
|
255
349
|
}
|
|
256
350
|
: undefined;
|
|
257
|
-
// Build system prompt with optional project context
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
351
|
+
// Build system prompt with optional project context and guided mode context
|
|
352
|
+
// Note: Anchors are NOT added here - they're handled by library's AnchorManager
|
|
353
|
+
// which re-injects them on every LLM call (survives compaction)
|
|
354
|
+
let systemPrompt = SYSTEM_PROMPT;
|
|
355
|
+
if (options.projectContext) {
|
|
356
|
+
systemPrompt += `\n\n---\n\n## Project Context\n\nThe following is project-specific context loaded from COMPILR.md:\n\n${options.projectContext}`;
|
|
357
|
+
}
|
|
358
|
+
if (options.guidedModeContext) {
|
|
359
|
+
systemPrompt += `\n\n---\n\n${options.guidedModeContext}`;
|
|
360
|
+
}
|
|
261
361
|
const agent = new Agent({
|
|
262
362
|
provider,
|
|
263
363
|
systemPrompt,
|
|
@@ -280,7 +380,40 @@ export function createAgent(options = {}) {
|
|
|
280
380
|
: undefined,
|
|
281
381
|
// Iteration limit handler - asks user if they want to continue
|
|
282
382
|
onIterationLimitReached: options.onIterationLimitReached,
|
|
383
|
+
// Anchors - critical info that survives context compaction
|
|
384
|
+
// Library re-injects anchors on every LLM call
|
|
385
|
+
anchors: options.enableAnchors
|
|
386
|
+
? {
|
|
387
|
+
maxAnchors: 50,
|
|
388
|
+
maxTokens: 4000,
|
|
389
|
+
includeDefaults: true,
|
|
390
|
+
// Note: We manage persistence ourselves via project-anchors.ts
|
|
391
|
+
// Don't set persistPath - we load anchors manually below
|
|
392
|
+
}
|
|
393
|
+
: undefined,
|
|
394
|
+
// Guardrails - pattern-based safety checks for risky operations
|
|
395
|
+
// 15 built-in patterns: git destructive ops, rm -rf, DROP TABLE, secrets, etc.
|
|
396
|
+
guardrails: options.enableGuardrails
|
|
397
|
+
? {
|
|
398
|
+
enabled: true,
|
|
399
|
+
includeDefaults: true,
|
|
400
|
+
onTriggered: options.onGuardrailTriggered,
|
|
401
|
+
}
|
|
402
|
+
: undefined,
|
|
283
403
|
});
|
|
404
|
+
// Load persisted anchors into the agent's AnchorManager
|
|
405
|
+
if (options.enableAnchors && options.persistedAnchors) {
|
|
406
|
+
for (const anchor of options.persistedAnchors) {
|
|
407
|
+
agent.addAnchor({
|
|
408
|
+
id: anchor.id,
|
|
409
|
+
content: anchor.content,
|
|
410
|
+
priority: anchor.priority,
|
|
411
|
+
scope: anchor.scope,
|
|
412
|
+
tags: anchor.tags,
|
|
413
|
+
// Note: projectId is for our tracking, not needed by library
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
}
|
|
284
417
|
// Register tools using registerTools method
|
|
285
418
|
const tools = options.minimal
|
|
286
419
|
? createMinimalToolRegistry()
|
|
@@ -289,20 +422,70 @@ export function createAgent(options = {}) {
|
|
|
289
422
|
agent.registerTools(tools);
|
|
290
423
|
// Register Task tool for sub-agent spawning (only in full mode)
|
|
291
424
|
if (!options.minimal) {
|
|
425
|
+
// Track active subagents to correlate spawn/complete/events
|
|
426
|
+
// Track active subagents by toolUseId for token counting
|
|
427
|
+
const activeSubagents = new Map();
|
|
428
|
+
// Provide a way for caller to clear tracking state between runs
|
|
429
|
+
if (options.onSubagentTrackingReady) {
|
|
430
|
+
options.onSubagentTrackingReady(() => {
|
|
431
|
+
activeSubagents.clear();
|
|
432
|
+
});
|
|
433
|
+
}
|
|
292
434
|
const taskTool = createTaskTool({
|
|
293
435
|
parentAgent: agent,
|
|
294
436
|
agentTypes: getMergedAgentTypes(),
|
|
295
437
|
enableEventStreaming: true,
|
|
296
438
|
defaultTimeout: 120000, // 2 minutes for subagent operations
|
|
297
|
-
|
|
439
|
+
// Now uses toolUseId for direct correlation (no more FIFO matching!)
|
|
440
|
+
onSpawn: (agentType, description, toolUseId) => {
|
|
298
441
|
if (options.verbose) {
|
|
299
|
-
console.log(`\n[Sub-agent] Spawning ${agentType}: ${description}`);
|
|
442
|
+
console.log(`\n[Sub-agent] Spawning ${agentType}: ${description} (${toolUseId ?? 'no-id'})`);
|
|
443
|
+
}
|
|
444
|
+
// Immediately notify with toolUseId - no more queuing/matching!
|
|
445
|
+
if (toolUseId) {
|
|
446
|
+
activeSubagents.set(toolUseId, { agentType, tokenCount: 0 });
|
|
447
|
+
if (options.onSubagentStart) {
|
|
448
|
+
options.onSubagentStart(toolUseId, agentType, description);
|
|
449
|
+
}
|
|
300
450
|
}
|
|
301
451
|
},
|
|
302
|
-
onComplete: (agentType, result) => {
|
|
452
|
+
onComplete: (agentType, result, toolUseId) => {
|
|
303
453
|
if (options.verbose) {
|
|
304
454
|
console.log(`[Sub-agent] ${agentType} completed (${String(result.iterations)} iterations)`);
|
|
305
455
|
}
|
|
456
|
+
// Direct notification with toolUseId - no more searching!
|
|
457
|
+
if (toolUseId && options.onSubagentEnd) {
|
|
458
|
+
options.onSubagentEnd(toolUseId, true, result.toolCalls);
|
|
459
|
+
activeSubagents.delete(toolUseId);
|
|
460
|
+
}
|
|
461
|
+
},
|
|
462
|
+
// Stream subagent events for live updates
|
|
463
|
+
onSubAgentEvent: (eventInfo) => {
|
|
464
|
+
const { toolUseId, event } = eventInfo;
|
|
465
|
+
// Handle tool events for live updates
|
|
466
|
+
if (event.type === 'tool_start' && toolUseId && event.name && options.onSubagentToolUse) {
|
|
467
|
+
// Extract tool name and input summary
|
|
468
|
+
const toolName = event.name;
|
|
469
|
+
let summary;
|
|
470
|
+
// Try to get a meaningful summary from input
|
|
471
|
+
const input = event.input;
|
|
472
|
+
if (input) {
|
|
473
|
+
// Common patterns for tool input summaries
|
|
474
|
+
const path = input.path;
|
|
475
|
+
const pattern = input.pattern;
|
|
476
|
+
const command = input.command;
|
|
477
|
+
const filePath = input.file_path;
|
|
478
|
+
if (typeof path === 'string')
|
|
479
|
+
summary = path;
|
|
480
|
+
else if (typeof pattern === 'string')
|
|
481
|
+
summary = pattern;
|
|
482
|
+
else if (typeof command === 'string')
|
|
483
|
+
summary = command.slice(0, 40);
|
|
484
|
+
else if (typeof filePath === 'string')
|
|
485
|
+
summary = filePath;
|
|
486
|
+
}
|
|
487
|
+
options.onSubagentToolUse(toolUseId, toolName, summary);
|
|
488
|
+
}
|
|
306
489
|
},
|
|
307
490
|
});
|
|
308
491
|
// Type assertion needed for task tool compatibility
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anchors Module
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the project-anchors API for managing persistent
|
|
5
|
+
* critical information that survives context compaction.
|
|
6
|
+
*/
|
|
7
|
+
export { getAnchorManager, getGlobalAnchorManager, clearProjectAnchors, getFormattedAnchors, addAnchor, getAllAnchors, getProjectsWithAnchors, getAnchorStats, clearManagerCache, } from './project-anchors.js';
|
|
8
|
+
export type { Anchor, AnchorInput, AnchorQueryOptions } from './project-anchors.js';
|
|
9
|
+
export { AnchorManager } from '@compilr-dev/agents';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anchors Module
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the project-anchors API for managing persistent
|
|
5
|
+
* critical information that survives context compaction.
|
|
6
|
+
*/
|
|
7
|
+
export { getAnchorManager, getGlobalAnchorManager, clearProjectAnchors, getFormattedAnchors, addAnchor, getAllAnchors, getProjectsWithAnchors, getAnchorStats, clearManagerCache, } from './project-anchors.js';
|
|
8
|
+
// Re-export the AnchorManager type from agents for consumers
|
|
9
|
+
export { AnchorManager } from '@compilr-dev/agents';
|