@compilr-dev/cli 0.4.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +254 -68
- package/dist/.tsbuildinfo.app +1 -0
- package/dist/.tsbuildinfo.data +1 -0
- package/dist/.tsbuildinfo.domain +1 -0
- package/dist/.tsbuildinfo.foundation +1 -0
- package/dist/agent.d.ts +134 -4
- package/dist/agent.js +345 -166
- 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/auth/api-client.d.ts +124 -0
- package/dist/auth/api-client.js +261 -0
- package/dist/auth/index.d.ts +172 -0
- package/dist/auth/index.js +545 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.js +118 -0
- package/dist/changelog/index.d.ts +16 -0
- package/dist/changelog/index.js +24 -0
- package/dist/changelog/releases.d.ts +17 -0
- package/dist/changelog/releases.js +63 -0
- package/dist/commands/index.d.ts +2 -1
- package/dist/commands-v2/handlers/auth.d.ts +10 -0
- package/dist/commands-v2/handlers/auth.js +118 -0
- package/dist/commands-v2/handlers/background.d.ts +14 -0
- package/dist/commands-v2/handlers/background.js +276 -0
- package/dist/commands-v2/handlers/context.d.ts +13 -0
- package/dist/commands-v2/handlers/context.js +533 -0
- package/dist/commands-v2/handlers/core.d.ts +14 -0
- package/dist/commands-v2/handlers/core.js +290 -0
- package/dist/commands-v2/handlers/debug.d.ts +11 -0
- package/dist/commands-v2/handlers/debug.js +177 -0
- package/dist/commands-v2/handlers/delegations.d.ts +8 -0
- package/dist/commands-v2/handlers/delegations.js +29 -0
- package/dist/commands-v2/handlers/files.d.ts +8 -0
- package/dist/commands-v2/handlers/files.js +162 -0
- package/dist/commands-v2/handlers/filter.d.ts +9 -0
- package/dist/commands-v2/handlers/filter.js +130 -0
- package/dist/commands-v2/handlers/games.d.ts +7 -0
- package/dist/commands-v2/handlers/games.js +57 -0
- package/dist/commands-v2/handlers/index.d.ts +25 -0
- package/dist/commands-v2/handlers/index.js +63 -0
- package/dist/commands-v2/handlers/mcp.d.ts +8 -0
- package/dist/commands-v2/handlers/mcp.js +39 -0
- package/dist/commands-v2/handlers/notifications.d.ts +9 -0
- package/dist/commands-v2/handlers/notifications.js +34 -0
- package/dist/commands-v2/handlers/project.d.ts +22 -0
- package/dist/commands-v2/handlers/project.js +1035 -0
- package/dist/commands-v2/handlers/reset.d.ts +11 -0
- package/dist/commands-v2/handlers/reset.js +118 -0
- package/dist/commands-v2/handlers/session.d.ts +161 -0
- package/dist/commands-v2/handlers/session.js +805 -0
- package/dist/commands-v2/handlers/settings.d.ts +17 -0
- package/dist/commands-v2/handlers/settings.js +417 -0
- package/dist/commands-v2/handlers/tasks.d.ts +5 -0
- package/dist/commands-v2/handlers/tasks.js +36 -0
- package/dist/commands-v2/handlers/team.d.ts +9 -0
- package/dist/commands-v2/handlers/team.js +549 -0
- package/dist/commands-v2/handlers/terminals.d.ts +9 -0
- package/dist/commands-v2/handlers/terminals.js +34 -0
- package/dist/commands-v2/index.d.ts +14 -0
- package/dist/commands-v2/index.js +18 -0
- package/dist/commands-v2/registry.d.ts +52 -0
- package/dist/commands-v2/registry.js +114 -0
- package/dist/commands-v2/types.d.ts +153 -0
- package/dist/commands-v2/types.js +7 -0
- package/dist/commands.js +123 -7
- package/dist/compilr-diff-companion.vsix +0 -0
- package/dist/db/index.js +98 -4
- package/dist/db/repositories/document-repository.d.ts +2 -0
- package/dist/db/repositories/document-repository.js +5 -1
- package/dist/db/repositories/index.d.ts +2 -0
- package/dist/db/repositories/index.js +1 -0
- package/dist/db/repositories/plan-repository.d.ts +101 -0
- package/dist/db/repositories/plan-repository.js +275 -0
- package/dist/db/repositories/project-repository.d.ts +6 -0
- package/dist/db/repositories/project-repository.js +41 -0
- package/dist/db/repositories/work-item-repository.d.ts +15 -0
- package/dist/db/repositories/work-item-repository.js +69 -4
- package/dist/db/schema.d.ts +40 -3
- package/dist/db/schema.js +66 -3
- package/dist/episodes/index.d.ts +20 -0
- package/dist/episodes/index.js +27 -0
- package/dist/episodes/recorder.d.ts +51 -0
- package/dist/episodes/recorder.js +195 -0
- package/dist/episodes/significant-work.d.ts +21 -0
- package/dist/episodes/significant-work.js +56 -0
- package/dist/episodes/store.d.ts +38 -0
- package/dist/episodes/store.js +199 -0
- package/dist/episodes/types.d.ts +35 -0
- package/dist/episodes/types.js +6 -0
- package/dist/episodes/work-at-risk.d.ts +12 -0
- package/dist/episodes/work-at-risk.js +38 -0
- package/dist/episodes/work-summary-anchor.d.ts +23 -0
- package/dist/episodes/work-summary-anchor.js +73 -0
- package/dist/games/coins.d.ts +66 -0
- package/dist/games/coins.js +165 -0
- package/dist/games/game-base.d.ts +84 -0
- package/dist/games/game-base.js +204 -0
- package/dist/games/index.d.ts +16 -0
- package/dist/games/index.js +49 -0
- package/dist/games/scores.d.ts +69 -0
- package/dist/games/scores.js +191 -0
- package/dist/games/tetris/board.d.ts +59 -0
- package/dist/games/tetris/board.js +170 -0
- package/dist/games/tetris/index.d.ts +109 -0
- package/dist/games/tetris/index.js +610 -0
- package/dist/games/tetris/pieces.d.ts +44 -0
- package/dist/games/tetris/pieces.js +271 -0
- package/dist/games/tetris/renderer.d.ts +26 -0
- package/dist/games/tetris/renderer.js +77 -0
- package/dist/guide/guide-content.d.ts +23 -0
- package/dist/guide/guide-content.js +196 -0
- package/dist/guide/index.d.ts +8 -0
- package/dist/guide/index.js +7 -0
- package/dist/guide/shared-content.d.ts +37 -0
- package/dist/guide/shared-content.js +1272 -0
- package/dist/guide/tutorial-helpers.d.ts +57 -0
- package/dist/guide/tutorial-helpers.js +147 -0
- package/dist/handlers/ask-user-handlers.d.ts +32 -0
- package/dist/handlers/ask-user-handlers.js +104 -0
- package/dist/handlers/delegation-handlers.d.ts +34 -0
- package/dist/handlers/delegation-handlers.js +291 -0
- package/dist/handlers/permission-handler.d.ts +30 -0
- package/dist/handlers/permission-handler.js +205 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +615 -179
- 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 +69 -0
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +12 -0
- package/dist/models/model-registry.d.ts +38 -0
- package/dist/models/model-registry.js +69 -0
- package/dist/models/model-tiers.d.ts +28 -0
- package/dist/models/model-tiers.js +71 -0
- package/dist/models/model-validation.d.ts +25 -0
- package/dist/models/model-validation.js +291 -0
- package/dist/models/ollama-models.d.ts +73 -0
- package/dist/models/ollama-models.js +178 -0
- package/dist/models/provider-types.d.ts +6 -0
- package/dist/models/provider-types.js +1 -0
- package/dist/models/providers.d.ts +35 -0
- package/dist/models/providers.js +58 -0
- package/dist/models/types.d.ts +4 -0
- package/dist/models/types.js +4 -0
- package/dist/multi-agent/activity.d.ts +21 -0
- package/dist/multi-agent/activity.js +34 -0
- package/dist/multi-agent/agent-selection.d.ts +55 -0
- package/dist/multi-agent/agent-selection.js +90 -0
- package/dist/multi-agent/artifacts.d.ts +197 -0
- package/dist/multi-agent/artifacts.js +379 -0
- package/dist/multi-agent/checkpointer.d.ts +138 -0
- package/dist/multi-agent/checkpointer.js +471 -0
- package/dist/multi-agent/collision-utils.d.ts +16 -0
- package/dist/multi-agent/collision-utils.js +28 -0
- package/dist/multi-agent/context-resolver.d.ts +97 -0
- package/dist/multi-agent/context-resolver.js +316 -0
- package/dist/multi-agent/custom-agents.d.ts +83 -0
- package/dist/multi-agent/custom-agents.js +227 -0
- package/dist/multi-agent/delegation-tracker.d.ts +157 -0
- package/dist/multi-agent/delegation-tracker.js +243 -0
- package/dist/multi-agent/file-lock-hook.d.ts +29 -0
- package/dist/multi-agent/file-lock-hook.js +97 -0
- package/dist/multi-agent/file-locks.d.ts +58 -0
- package/dist/multi-agent/file-locks.js +194 -0
- package/dist/multi-agent/index.d.ts +24 -0
- package/dist/multi-agent/index.js +30 -0
- package/dist/multi-agent/mention-parser.d.ts +64 -0
- package/dist/multi-agent/mention-parser.js +146 -0
- package/dist/multi-agent/notification-manager.d.ts +84 -0
- package/dist/multi-agent/notification-manager.js +224 -0
- package/dist/multi-agent/pending-requests.d.ts +122 -0
- package/dist/multi-agent/pending-requests.js +155 -0
- package/dist/multi-agent/session-registry.d.ts +139 -0
- package/dist/multi-agent/session-registry.js +514 -0
- package/dist/multi-agent/shared-context.d.ts +293 -0
- package/dist/multi-agent/shared-context.js +671 -0
- package/dist/multi-agent/skill-requirements.d.ts +66 -0
- package/dist/multi-agent/skill-requirements.js +178 -0
- package/dist/multi-agent/task-assignment.d.ts +69 -0
- package/dist/multi-agent/task-assignment.js +123 -0
- package/dist/multi-agent/task-suggestion.d.ts +31 -0
- package/dist/multi-agent/task-suggestion.js +72 -0
- package/dist/multi-agent/team-agent.d.ts +201 -0
- package/dist/multi-agent/team-agent.js +488 -0
- package/dist/multi-agent/team.d.ts +286 -0
- package/dist/multi-agent/team.js +610 -0
- package/dist/multi-agent/tool-config.d.ts +110 -0
- package/dist/multi-agent/tool-config.js +661 -0
- package/dist/multi-agent/types.d.ts +211 -0
- package/dist/multi-agent/types.js +617 -0
- package/dist/prompts/plan-mode-prompt.d.ts +11 -0
- package/dist/prompts/plan-mode-prompt.js +95 -0
- package/dist/repl-helpers.d.ts +63 -0
- package/dist/repl-helpers.js +319 -0
- package/dist/repl-v2.d.ts +554 -0
- package/dist/repl-v2.js +3286 -0
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.js +6 -0
- package/dist/session/project-session-manager.d.ts +158 -0
- package/dist/session/project-session-manager.js +650 -0
- package/dist/settings/index.d.ts +156 -13
- package/dist/settings/index.js +377 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +114 -0
- package/dist/settings/paths.js +270 -0
- package/dist/shared-handlers.d.ts +62 -0
- package/dist/shared-handlers.js +48 -0
- package/dist/system-prompt/builder.d.ts +5 -0
- package/dist/system-prompt/builder.js +4 -0
- package/dist/system-prompt/index.d.ts +18 -0
- package/dist/system-prompt/index.js +18 -0
- package/dist/system-prompt/modules.d.ts +5 -0
- package/dist/system-prompt/modules.js +4 -0
- package/dist/tabbed-menu.js +2 -1
- package/dist/templates/compilr-md-import.d.ts +16 -0
- package/dist/templates/compilr-md-import.js +241 -0
- package/dist/templates/compilr-md.js +10 -58
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +35 -75
- 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/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +31 -0
- package/dist/tools/anchor-tools.js +255 -0
- package/dist/tools/artifact-tools.d.ts +42 -0
- package/dist/tools/artifact-tools.js +328 -0
- package/dist/tools/ask-user-simple.d.ts +1 -1
- package/dist/tools/ask-user-simple.js +2 -1
- package/dist/tools/ask-user.d.ts +1 -1
- package/dist/tools/ask-user.js +2 -1
- package/dist/tools/backlog-wrappers.d.ts +56 -0
- package/dist/tools/backlog-wrappers.js +353 -0
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +2 -2
- package/dist/tools/db-tools.d.ts +12 -0
- package/dist/tools/db-tools.js +14 -0
- package/dist/tools/delegate-background.d.ts +27 -0
- package/dist/tools/delegate-background.js +115 -0
- package/dist/tools/delegate.d.ts +22 -0
- package/dist/tools/delegate.js +97 -0
- package/dist/tools/delegation-status.d.ts +16 -0
- package/dist/tools/delegation-status.js +128 -0
- package/dist/tools/document-db.d.ts +43 -0
- package/dist/tools/document-db.js +220 -0
- package/dist/tools/guide-tool.d.ts +12 -0
- package/dist/tools/guide-tool.js +59 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.js +99 -0
- package/dist/tools/meta-tools.d.ts +26 -0
- package/dist/tools/meta-tools.js +47 -0
- package/dist/tools/plan-tools.d.ts +54 -0
- package/dist/tools/plan-tools.js +338 -0
- package/dist/tools/platform-adapter.d.ts +29 -0
- package/dist/tools/platform-adapter.js +394 -0
- package/dist/tools/project-db.d.ts +34 -0
- package/dist/tools/project-db.js +39 -0
- package/dist/tools/recall-work-tool.d.ts +18 -0
- package/dist/tools/recall-work-tool.js +82 -0
- package/dist/tools/workitem-db.d.ts +135 -0
- package/dist/tools/workitem-db.js +730 -0
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +238 -38
- 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.d.ts +2 -2
- package/dist/ui/ask-user-simple-overlay.js +182 -209
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- 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 +203 -0
- package/dist/ui/base/overlay-base-v2.js +260 -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 +27 -0
- package/dist/ui/base/render-utils.js +36 -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 +118 -0
- package/dist/ui/base/tabbed-list-overlay-v2.js +335 -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/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +51 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.d.ts +75 -4
- package/dist/ui/conversation.js +376 -165
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.d.ts +1 -1
- package/dist/ui/ephemeral.js +4 -10
- 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/file-autocomplete.d.ts +24 -0
- package/dist/ui/file-autocomplete.js +56 -0
- package/dist/ui/footer-renderer.d.ts +69 -0
- package/dist/ui/footer-renderer.js +431 -0
- package/dist/ui/footer.d.ts +181 -7
- package/dist/ui/footer.js +523 -74
- package/dist/ui/guardrail-overlay.d.ts +29 -0
- package/dist/ui/guardrail-overlay.js +145 -0
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -3
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +135 -33
- package/dist/ui/input-prompt.js +728 -337
- package/dist/ui/iteration-limit-overlay.d.ts +2 -2
- package/dist/ui/iteration-limit-overlay.js +92 -128
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -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-facade.d.ts +42 -0
- package/dist/ui/live-region-facade.js +205 -0
- package/dist/ui/live-region.d.ts +157 -0
- package/dist/ui/live-region.js +379 -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 +132 -0
- package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
- package/dist/ui/overlay/data/tutorial-content.js +9 -0
- package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
- package/dist/ui/overlay/data/tutorial-registry.js +116 -0
- package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
- package/dist/ui/overlay/data/tutorial-types.js +6 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
- package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +814 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.d.ts +47 -0
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +749 -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/artifact-detail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.d.ts +72 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +581 -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/background-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +52 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +681 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.d.ts +33 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +439 -0
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +111 -0
- package/dist/ui/overlay/impl/config-overlay-v2.js +718 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +57 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +382 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +117 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +84 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +1112 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
- package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/games-overlay-v2.js +135 -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 +57 -0
- package/dist/ui/overlay/impl/help-overlay-v2.js +287 -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/login-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/login-overlay-v2.js +277 -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/mcp-overlay-v2.d.ts +63 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +93 -0
- package/dist/ui/overlay/impl/model-overlay-v2.js +1143 -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 +108 -0
- package/dist/ui/overlay/impl/new-overlay-v2.js +1243 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -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/permissions-overlay-v2.d.ts +85 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +37 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +733 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
- package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
- package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -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 +214 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +45 -0
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +212 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.d.ts +80 -0
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +641 -0
- package/dist/ui/overlay/index.d.ts +52 -0
- package/dist/ui/overlay/index.js +54 -0
- package/dist/ui/overlay/key-utils.d.ts +6 -0
- package/dist/ui/overlay/key-utils.js +6 -0
- package/dist/ui/overlay/types.d.ts +140 -0
- package/dist/ui/overlay/types.js +22 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.d.ts +0 -4
- package/dist/ui/overlays.js +4 -460
- package/dist/ui/permission-overlay.d.ts +1 -1
- package/dist/ui/permission-overlay.js +189 -300
- 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/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.d.ts +117 -0
- package/dist/ui/subagent-renderer.js +318 -0
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-codes.d.ts +94 -0
- package/dist/ui/terminal-codes.js +124 -0
- package/dist/ui/terminal-line-builders.d.ts +17 -0
- package/dist/ui/terminal-line-builders.js +42 -0
- package/dist/ui/terminal-render-item.d.ts +16 -0
- package/dist/ui/terminal-render-item.js +267 -0
- package/dist/ui/terminal-renderer.d.ts +220 -0
- package/dist/ui/terminal-renderer.js +750 -0
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +331 -0
- package/dist/ui/terminal-ui.js +819 -0
- package/dist/ui/terminal.d.ts +20 -0
- package/dist/ui/terminal.js +72 -0
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +124 -38
- package/dist/ui/tool-formatters.d.ts +16 -0
- package/dist/ui/tool-formatters.js +1027 -0
- package/dist/ui/turn-metrics.d.ts +56 -0
- package/dist/ui/turn-metrics.js +75 -0
- package/dist/ui/types.d.ts +28 -0
- package/dist/ui/types.js +1 -0
- package/dist/ui/vscode-diff-ipc.d.ts +102 -0
- package/dist/ui/vscode-diff-ipc.js +385 -0
- package/dist/utils/credentials.d.ts +24 -5
- package/dist/utils/credentials.js +123 -9
- package/dist/utils/debug-log.d.ts +28 -0
- package/dist/utils/debug-log.js +57 -0
- package/dist/utils/format-tokens.d.ts +13 -0
- package/dist/utils/format-tokens.js +18 -0
- package/dist/utils/git-config.d.ts +26 -0
- package/dist/utils/git-config.js +54 -0
- package/dist/utils/message-utils.d.ts +61 -0
- package/dist/utils/message-utils.js +72 -0
- package/dist/utils/model-tiers.d.ts +8 -1
- package/dist/utils/model-tiers.js +39 -17
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.d.ts +56 -0
- package/dist/utils/path-safety.js +240 -0
- package/dist/utils/project-detection.d.ts +58 -0
- package/dist/utils/project-detection.js +424 -0
- package/dist/utils/project-memory.js +2 -1
- package/dist/utils/project-status.d.ts +2 -2
- package/dist/utils/startup-perf.d.ts +18 -0
- package/dist/utils/startup-perf.js +60 -0
- package/dist/utils/token-tracker.d.ts +62 -0
- package/dist/utils/token-tracker.js +150 -0
- package/dist/utils/token-types.d.ts +23 -0
- package/dist/utils/token-types.js +18 -0
- package/dist/utils/types/config-types.d.ts +32 -0
- package/dist/utils/types/config-types.js +8 -0
- package/dist/utils/update-checker.d.ts +28 -0
- package/dist/utils/update-checker.js +106 -0
- package/dist/utils/version.d.ts +7 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/vscode-detect.d.ts +39 -0
- package/dist/utils/vscode-detect.js +137 -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 +32 -12
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -121
- package/dist/repl.js +0 -1878
- package/dist/templates/claude-md.d.ts +0 -7
- package/dist/templates/claude-md.js +0 -189
- package/dist/test-autocomplete.d.ts +0 -7
- package/dist/test-autocomplete.js +0 -85
- package/dist/test-tabbed-menu.d.ts +0 -7
- package/dist/test-tabbed-menu.js +0 -25
- package/dist/tool-selector.d.ts +0 -71
- package/dist/tool-selector.js +0 -184
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -501
- package/dist/ui/arch-type-overlay.d.ts +0 -20
- package/dist/ui/arch-type-overlay.js +0 -229
- package/dist/ui/backlog-overlay.d.ts +0 -17
- package/dist/ui/backlog-overlay.js +0 -786
- package/dist/ui/commands-overlay.d.ts +0 -11
- package/dist/ui/commands-overlay.js +0 -410
- package/dist/ui/config-overlay.d.ts +0 -34
- package/dist/ui/config-overlay.js +0 -977
- package/dist/ui/init-overlay.d.ts +0 -24
- package/dist/ui/init-overlay.js +0 -525
- package/dist/ui/input-prompt-v2.d.ts +0 -179
- package/dist/ui/input-prompt-v2.js +0 -991
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -171
- package/dist/ui/tools-overlay.d.ts +0 -26
- package/dist/ui/tools-overlay.js +0 -278
- package/dist/ui/tutorial-overlay.d.ts +0 -10
- package/dist/ui/tutorial-overlay.js +0 -936
package/dist/agent.js
CHANGED
|
@@ -5,96 +5,17 @@
|
|
|
5
5
|
* ClaudeProvider, OllamaProvider, OpenAIProvider, or GeminiProvider
|
|
6
6
|
* and available tools.
|
|
7
7
|
*/
|
|
8
|
-
import { Agent,
|
|
9
|
-
import { isAutoCompactEnabled } from './settings/index.js';
|
|
8
|
+
import { Agent, ContextManager, DEFAULT_CONTEXT_CONFIG, createTaskTool, createSuggestTool, defaultAgentTypes, TOOL_SETS, BUILTIN_GUARDRAILS, createProviderFromType, } from '@compilr-dev/sdk';
|
|
9
|
+
import { isAutoCompactEnabled, isDelegationEnabled, getSetting } from './settings/index.js';
|
|
10
10
|
import { getApiKey } from './utils/credentials.js';
|
|
11
|
-
import { createToolRegistry, createMinimalToolRegistry } from './tools.js';
|
|
11
|
+
import { createToolRegistry, createMinimalToolRegistry, getDirectTools, getMetaTools, initializeMetaTools, getToolIndexForSystemPrompt, getToolStats, setMetaToolFilter, createToolFallback, } from './tools.js';
|
|
12
12
|
import { getAgentRegistry } from './agents/registry.js';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- write_file: Create or overwrite a file (parameters: path, content)
|
|
20
|
-
- edit: Replace text in a file (parameters: path, old_text, new_text)
|
|
21
|
-
- glob: Find files matching a pattern (parameters: pattern, path)
|
|
22
|
-
- grep: Search file contents with regex (parameters: pattern, path)
|
|
23
|
-
|
|
24
|
-
Shell:
|
|
25
|
-
- bash: Run shell commands (parameter: command)
|
|
26
|
-
For long-running commands (dev servers, watch modes), use run_in_background=true
|
|
27
|
-
- bash_output: Get output from a background shell (parameter: shell_id)
|
|
28
|
-
- kill_shell: Terminate a background shell (parameter: shell_id)
|
|
29
|
-
|
|
30
|
-
BACKGROUND PROCESSES:
|
|
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:
|
|
43
|
-
- git_status: Show working tree status
|
|
44
|
-
- git_diff: Show file differences
|
|
45
|
-
- git_log: Show commit history (parameter: limit)
|
|
46
|
-
- git_commit: Create a commit (parameters: message, files)
|
|
47
|
-
- git_branch: List or manage branches
|
|
48
|
-
|
|
49
|
-
Project Analysis:
|
|
50
|
-
- detect_project: Detect project type and framework
|
|
51
|
-
- find_project_root: Find the root directory of the project
|
|
52
|
-
- run_tests: Run project test suite
|
|
53
|
-
- run_lint: Run project linter
|
|
54
|
-
|
|
55
|
-
Task Management:
|
|
56
|
-
- todo_write: Add/update todo items (parameters: todos array)
|
|
57
|
-
- todo_read: View current todo list
|
|
58
|
-
|
|
59
|
-
Next Action Suggestions:
|
|
60
|
-
- suggest: Suggest a next action to the user (parameters: action, reason)
|
|
61
|
-
The suggestion appears as ghost text in the input prompt (user presses Tab to accept).
|
|
62
|
-
|
|
63
|
-
IMPORTANT: Always use 'suggest' after completing a task or answering a question.
|
|
64
|
-
This is a mandatory part of your response workflow, not optional.
|
|
65
|
-
|
|
66
|
-
When to suggest:
|
|
67
|
-
- After ANY tool-based task → suggest verifying, testing, or next logical step
|
|
68
|
-
- After answering a question → suggest a follow-up to explore
|
|
69
|
-
- After explaining something → suggest trying it out or diving deeper
|
|
70
|
-
- When your reply ends with a question → suggest an answer option
|
|
71
|
-
|
|
72
|
-
Good suggestions are short commands or actions: "run npm test", "commit the changes",
|
|
73
|
-
"show me the API endpoints", "explain the error in more detail"
|
|
74
|
-
|
|
75
|
-
Sub-agents (via task tool):
|
|
76
|
-
- task: Spawn a specialized sub-agent for complex, multi-step tasks
|
|
77
|
-
Parameters: description (3-5 words), prompt (detailed task), subagent_type
|
|
78
|
-
Built-in types:
|
|
79
|
-
- explore: Fast codebase search and navigation
|
|
80
|
-
- code-review: Review code for bugs and best practices
|
|
81
|
-
- plan: Break down complex tasks into steps
|
|
82
|
-
- debug: Investigate and fix issues
|
|
83
|
-
- test-runner: Run and analyze tests
|
|
84
|
-
- refactor: Safe code refactoring
|
|
85
|
-
- security-audit: Scan for vulnerabilities
|
|
86
|
-
- doc-lookup: Search documentation
|
|
87
|
-
- general: General-purpose multi-step tasks
|
|
88
|
-
Custom agents may also be available (check /agents command).
|
|
89
|
-
|
|
90
|
-
IMPORTANT RULES:
|
|
91
|
-
1. Tool names are lowercase with underscores - use them exactly as shown
|
|
92
|
-
2. If unsure which tool to use, pick the closest match from the list
|
|
93
|
-
3. For simple questions (math, facts), answer directly without tools
|
|
94
|
-
4. After calling a tool, you MUST respond with the result to the user - never end silently
|
|
95
|
-
5. Use the task tool to delegate complex tasks to specialized sub-agents
|
|
96
|
-
|
|
97
|
-
Current working directory: ${process.cwd()}`;
|
|
13
|
+
import { SystemPromptBuilder } from './system-prompt/index.js';
|
|
14
|
+
import { getDefaultModelForTier, getModelContextWindow } from './models/index.js';
|
|
15
|
+
import { PROVIDER_METADATA } from './models/providers.js';
|
|
16
|
+
import { setStaticEstimates, estimateTokens, estimateJsonTokens, } from './utils/token-tracker.js';
|
|
17
|
+
import { createFileLockCheckHook, createFileLockAcquireHook } from './multi-agent/file-lock-hook.js';
|
|
18
|
+
import { getActiveProject } from './tools/project-db.js';
|
|
98
19
|
/**
|
|
99
20
|
* Default permission rules for potentially dangerous operations
|
|
100
21
|
* Note: Tool names are lowercase (bash, write_file, edit, git_commit)
|
|
@@ -111,8 +32,7 @@ const DEFAULT_PERMISSION_RULES = [
|
|
|
111
32
|
// Project runners (can have side effects)
|
|
112
33
|
{ toolName: 'run_tests', level: 'once', description: 'Run test suite' },
|
|
113
34
|
{ toolName: 'run_lint', level: 'once', description: 'Run linter (may auto-fix)' },
|
|
114
|
-
//
|
|
115
|
-
{ toolName: 'backlog_write', level: 'once', description: 'Modify backlog file' },
|
|
35
|
+
// Note: backlog_write removed - use workitem_* tools which modify database
|
|
116
36
|
];
|
|
117
37
|
/**
|
|
118
38
|
* Get permission info for a tool by name.
|
|
@@ -128,6 +48,19 @@ export function getToolPermissionInfo(toolName) {
|
|
|
128
48
|
}
|
|
129
49
|
return undefined;
|
|
130
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Get information about built-in guardrails.
|
|
53
|
+
* Used for displaying guardrail info in /help or status overlays.
|
|
54
|
+
*/
|
|
55
|
+
export function getBuiltinGuardrailInfo() {
|
|
56
|
+
return BUILTIN_GUARDRAILS.map((g) => ({
|
|
57
|
+
id: g.id,
|
|
58
|
+
name: g.name,
|
|
59
|
+
description: g.description,
|
|
60
|
+
action: g.action,
|
|
61
|
+
category: g.tags?.[0] ?? 'general',
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
131
64
|
/**
|
|
132
65
|
* Merges built-in agent types with custom agents from registry.
|
|
133
66
|
* Custom agents get safe read-only tools by default.
|
|
@@ -154,85 +87,57 @@ function getMergedAgentTypes() {
|
|
|
154
87
|
}
|
|
155
88
|
/**
|
|
156
89
|
* Creates the appropriate LLM provider based on configuration.
|
|
90
|
+
* Resolves CLI-specific concerns (credentials, settings) then delegates
|
|
91
|
+
* provider instantiation to the SDK's createProviderFromType().
|
|
157
92
|
*/
|
|
158
93
|
function createProvider(options) {
|
|
159
94
|
const providerType = options.provider ?? 'claude';
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return provider;
|
|
169
|
-
}
|
|
170
|
-
case 'openai': {
|
|
171
|
-
const apiKey = getApiKey('openai');
|
|
172
|
-
if (!apiKey) {
|
|
173
|
-
throw new Error('OpenAI API key not found.\n' +
|
|
174
|
-
'Run /keys to set it, or: export OPENAI_API_KEY=sk-...');
|
|
175
|
-
}
|
|
176
|
-
const model = options.model ?? 'gpt-4o';
|
|
177
|
-
console.log(`Using OpenAI provider with model: ${model}`);
|
|
178
|
-
const provider = new OpenAIProvider({ apiKey, model });
|
|
179
|
-
return provider;
|
|
180
|
-
}
|
|
181
|
-
case 'gemini': {
|
|
182
|
-
const apiKey = getApiKey('google');
|
|
183
|
-
if (!apiKey) {
|
|
184
|
-
throw new Error('Google AI API key not found.\n' +
|
|
185
|
-
'Run /keys to set it, or: export GOOGLE_API_KEY=AI...');
|
|
186
|
-
}
|
|
187
|
-
const model = options.model ?? 'gemini-2.0-flash';
|
|
188
|
-
console.log(`Using Gemini provider with model: ${model}`);
|
|
189
|
-
const provider = new GeminiProvider({ apiKey, model });
|
|
190
|
-
return provider;
|
|
191
|
-
}
|
|
192
|
-
case 'claude':
|
|
193
|
-
default: {
|
|
194
|
-
const apiKey = getApiKey('anthropic');
|
|
195
|
-
if (!apiKey) {
|
|
196
|
-
throw new Error('Anthropic API key not found.\n' +
|
|
197
|
-
'Run /keys to set it, or: export ANTHROPIC_API_KEY=sk-ant-...\n' +
|
|
198
|
-
'Or use --provider ollama for local models.');
|
|
199
|
-
}
|
|
200
|
-
const model = options.model ?? 'claude-sonnet-4-20250514';
|
|
201
|
-
console.log(`Using Claude provider with model: ${model}`);
|
|
202
|
-
return new ClaudeProvider({ apiKey, model });
|
|
203
|
-
}
|
|
95
|
+
const quiet = options.quiet ?? false;
|
|
96
|
+
const meta = PROVIDER_METADATA[providerType];
|
|
97
|
+
// 1. Resolve API key from CLI credential store
|
|
98
|
+
const apiKey = meta.requiresKey ? getApiKey(meta.credentialKey) : undefined;
|
|
99
|
+
if (!apiKey && meta.requiresKey) {
|
|
100
|
+
throw new Error(`${meta.displayName} API key not found.\n` +
|
|
101
|
+
`Run /keys to set it, or: export ${meta.envVar}=...` +
|
|
102
|
+
(providerType === 'claude' ? '\nOr use --provider ollama for local models.' : ''));
|
|
204
103
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
return 200000;
|
|
104
|
+
// 2. Resolve model (from options or registry default for balanced tier)
|
|
105
|
+
const model = options.model ?? getDefaultModelForTier(providerType, 'balanced')?.id;
|
|
106
|
+
// 3. Resolve Ollama base URL from settings
|
|
107
|
+
const baseUrl = providerType === 'ollama'
|
|
108
|
+
? ((typeof getSetting('ollamaBaseUrl') === 'string'
|
|
109
|
+
? getSetting('ollamaBaseUrl')
|
|
110
|
+
: undefined) ??
|
|
111
|
+
process.env.OLLAMA_BASE_URL ??
|
|
112
|
+
'http://localhost:11434')
|
|
113
|
+
: undefined;
|
|
114
|
+
// 4. Log (unless quiet)
|
|
115
|
+
if (!quiet)
|
|
116
|
+
console.log(`Using ${meta.displayName} with model: ${model ?? 'default'}`);
|
|
117
|
+
if (!quiet && providerType === 'ollama' && baseUrl !== 'http://localhost:11434') {
|
|
118
|
+
console.log(` Ollama server: ${baseUrl ?? ''}`);
|
|
221
119
|
}
|
|
120
|
+
// 5. Delegate to SDK
|
|
121
|
+
return createProviderFromType(providerType, {
|
|
122
|
+
model,
|
|
123
|
+
apiKey: apiKey ?? undefined,
|
|
124
|
+
baseUrl,
|
|
125
|
+
siteName: providerType === 'openrouter' ? 'compilr-cli' : undefined,
|
|
126
|
+
});
|
|
222
127
|
}
|
|
223
128
|
/**
|
|
224
129
|
* Creates an Agent instance configured with all tools.
|
|
225
130
|
*/
|
|
226
131
|
export function createAgent(options = {}) {
|
|
227
132
|
const provider = createProvider(options);
|
|
228
|
-
// Create context manager with
|
|
133
|
+
// Create context manager with model-specific limits
|
|
229
134
|
// Uses library defaults: compact at 50%, summarize at 90%, emergency at 95%
|
|
230
135
|
// Auto-compact can be disabled via settings (requires restart)
|
|
231
136
|
const autoCompact = isAutoCompactEnabled();
|
|
232
137
|
const contextManager = new ContextManager({
|
|
233
138
|
provider,
|
|
234
139
|
config: {
|
|
235
|
-
maxContextTokens:
|
|
140
|
+
maxContextTokens: getModelContextWindow(options.model ?? '', options.provider),
|
|
236
141
|
// If auto-compact disabled, set threshold to 100% (never triggers)
|
|
237
142
|
compaction: autoCompact
|
|
238
143
|
? DEFAULT_CONTEXT_CONFIG.compaction
|
|
@@ -254,10 +159,64 @@ export function createAgent(options = {}) {
|
|
|
254
159
|
}
|
|
255
160
|
}
|
|
256
161
|
: undefined;
|
|
257
|
-
// Build system prompt
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
162
|
+
// Build modular system prompt based on current context
|
|
163
|
+
// Note: Anchors are NOT added here - they're handled by library's AnchorManager
|
|
164
|
+
// which re-injects them on every LLM call (survives compaction)
|
|
165
|
+
// Initialize meta-tools if enabled (needed for tool index)
|
|
166
|
+
let metaToolsIndex;
|
|
167
|
+
if (options.enableMetaTools && !options.minimal) {
|
|
168
|
+
initializeMetaTools();
|
|
169
|
+
metaToolsIndex = getToolIndexForSystemPrompt();
|
|
170
|
+
// Log tool stats (unless quiet mode)
|
|
171
|
+
if (!options.quiet) {
|
|
172
|
+
const stats = getToolStats();
|
|
173
|
+
console.log(`[Meta-tools] Direct: ${String(stats.directTools)}, ` +
|
|
174
|
+
`Meta: ${String(stats.metaRegistryTools)}, ` +
|
|
175
|
+
`Est. savings: ~${String(stats.tokenSavings)} tokens`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
let systemPrompt;
|
|
179
|
+
// Check if we should use minimal system prompt (for testing role identity)
|
|
180
|
+
if (options.useMinimalSystemPrompt && options.systemPromptAddition) {
|
|
181
|
+
// Skip all modules - just use the role prompt directly
|
|
182
|
+
systemPrompt = options.systemPromptAddition;
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Use modular system prompt builder
|
|
186
|
+
// When a role-specific identity is provided (systemPromptAddition), skip the default identity module
|
|
187
|
+
const promptBuilder = new SystemPromptBuilder({
|
|
188
|
+
enableMetaTools: options.enableMetaTools && !options.minimal,
|
|
189
|
+
projectName: options.projectName,
|
|
190
|
+
projectContext: options.projectContext,
|
|
191
|
+
guidedModeContext: options.guidedModeContext,
|
|
192
|
+
planModeContext: options.planModeContext,
|
|
193
|
+
metaToolsIndex,
|
|
194
|
+
hasRoleIdentity: !!options.systemPromptAddition, // Skip default identity when role is specified
|
|
195
|
+
// hasGit is auto-detected by builder
|
|
196
|
+
});
|
|
197
|
+
const buildResult = promptBuilder.build();
|
|
198
|
+
systemPrompt = buildResult.prompt;
|
|
199
|
+
// Prepend role-specific system prompt (for team agents)
|
|
200
|
+
// The default identity module is already excluded via hasRoleIdentity flag
|
|
201
|
+
if (options.systemPromptAddition) {
|
|
202
|
+
// Extract role name from the role prompt (format: "# ROLE: ROLE_NAME")
|
|
203
|
+
const roleMatch = options.systemPromptAddition.match(/^#\s*ROLE:\s*(.+)$/m);
|
|
204
|
+
const roleName = roleMatch ? roleMatch[1].trim() : 'specialized team member';
|
|
205
|
+
// Put FULL role prompt at the END (recency effect is stronger than primacy)
|
|
206
|
+
// LLMs weight the end of context more heavily
|
|
207
|
+
const roleEnding = `
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## YOUR ASSIGNED ROLE: ${roleName}
|
|
212
|
+
|
|
213
|
+
${options.systemPromptAddition}
|
|
214
|
+
|
|
215
|
+
**CRITICAL**: When asked "what is your role?", "what are you?", or similar identity questions, your response should acknowledge your assigned role. For example: "In this team, I'm the ${roleName}" or "I'm operating as the ${roleName} in this session."`;
|
|
216
|
+
// Put role at BOTH beginning AND end, with full role prompt at the end
|
|
217
|
+
systemPrompt = options.systemPromptAddition + '\n\n' + systemPrompt + roleEnding;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
261
220
|
const agent = new Agent({
|
|
262
221
|
provider,
|
|
263
222
|
systemPrompt,
|
|
@@ -280,29 +239,202 @@ export function createAgent(options = {}) {
|
|
|
280
239
|
: undefined,
|
|
281
240
|
// Iteration limit handler - asks user if they want to continue
|
|
282
241
|
onIterationLimitReached: options.onIterationLimitReached,
|
|
242
|
+
// Anchors - critical info that survives context compaction
|
|
243
|
+
// Library re-injects anchors on every LLM call
|
|
244
|
+
anchors: options.enableAnchors
|
|
245
|
+
? {
|
|
246
|
+
maxAnchors: 50,
|
|
247
|
+
maxTokens: 4000,
|
|
248
|
+
includeDefaults: true,
|
|
249
|
+
// Note: We manage persistence ourselves via project-anchors.ts
|
|
250
|
+
// Don't set persistPath - we load anchors manually below
|
|
251
|
+
}
|
|
252
|
+
: undefined,
|
|
253
|
+
// Guardrails - pattern-based safety checks for risky operations
|
|
254
|
+
// 15 built-in patterns: git destructive ops, rm -rf, DROP TABLE, secrets, etc.
|
|
255
|
+
guardrails: options.enableGuardrails
|
|
256
|
+
? {
|
|
257
|
+
enabled: true,
|
|
258
|
+
includeDefaults: true,
|
|
259
|
+
onTriggered: options.onGuardrailTriggered,
|
|
260
|
+
}
|
|
261
|
+
: undefined,
|
|
262
|
+
// Tool result delegation — auto-summarize large results to conserve context
|
|
263
|
+
delegation: isDelegationEnabled()
|
|
264
|
+
? {
|
|
265
|
+
enabled: true,
|
|
266
|
+
delegationThreshold: 8000,
|
|
267
|
+
summaryMaxTokens: 800,
|
|
268
|
+
resultTTL: 600_000,
|
|
269
|
+
maxStoredResults: 50,
|
|
270
|
+
strategy: 'auto',
|
|
271
|
+
toolOverrides: {
|
|
272
|
+
// Custom thresholds
|
|
273
|
+
bash: { threshold: 12000 },
|
|
274
|
+
grep: { threshold: 4000 },
|
|
275
|
+
git_diff: { threshold: 6000 },
|
|
276
|
+
// Never summarize — agent needs verbatim results
|
|
277
|
+
get_tool_info: { enabled: false },
|
|
278
|
+
list_tools: { enabled: false },
|
|
279
|
+
ask_user: { enabled: false },
|
|
280
|
+
ask_user_simple: { enabled: false },
|
|
281
|
+
todo_read: { enabled: false },
|
|
282
|
+
},
|
|
283
|
+
}
|
|
284
|
+
: undefined,
|
|
285
|
+
// Hooks: context pressure, file lock check/acquire
|
|
286
|
+
hooks: {
|
|
287
|
+
beforeLLM: [
|
|
288
|
+
(ctx) => {
|
|
289
|
+
const utilization = contextManager.getUtilization();
|
|
290
|
+
if (utilization < 0.3)
|
|
291
|
+
return undefined;
|
|
292
|
+
const pct = Math.round(utilization * 100);
|
|
293
|
+
let hint;
|
|
294
|
+
if (utilization < 0.6) {
|
|
295
|
+
hint = `[Context: ${String(pct)}%] Consider task() for multi-file operations.`;
|
|
296
|
+
}
|
|
297
|
+
else if (utilization < 0.8) {
|
|
298
|
+
hint = `[Context: ${String(pct)}% - HIGH] Prefer task() sub-agents for file reads and code search.`;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
hint = `[Context: ${String(pct)}% - CRITICAL] Use task() for ALL exploration. Do not read files directly.`;
|
|
302
|
+
}
|
|
303
|
+
const messages = [...ctx.messages];
|
|
304
|
+
messages.splice(1, 0, { role: 'user', content: hint });
|
|
305
|
+
return { messages };
|
|
306
|
+
},
|
|
307
|
+
],
|
|
308
|
+
beforeTool: [createFileLockCheckHook(getActiveProject)],
|
|
309
|
+
afterTool: [
|
|
310
|
+
createFileLockAcquireHook(getActiveProject),
|
|
311
|
+
...(options.episodeRecorder ? [options.episodeRecorder.createHook()] : []),
|
|
312
|
+
],
|
|
313
|
+
},
|
|
283
314
|
});
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
315
|
+
// Load persisted anchors into the agent's AnchorManager
|
|
316
|
+
if (options.enableAnchors && options.persistedAnchors) {
|
|
317
|
+
for (const anchor of options.persistedAnchors) {
|
|
318
|
+
agent.addAnchor({
|
|
319
|
+
id: anchor.id,
|
|
320
|
+
content: anchor.content,
|
|
321
|
+
priority: anchor.priority,
|
|
322
|
+
scope: anchor.scope,
|
|
323
|
+
tags: anchor.tags,
|
|
324
|
+
// Note: projectId is for our tracking, not needed by library
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
// Register tools using registerTools method (skip if noTools is set)
|
|
329
|
+
if (!options.noTools) {
|
|
330
|
+
// When meta-tools is enabled, use direct tools + meta-tools instead of all tools
|
|
331
|
+
let tools;
|
|
332
|
+
if (options.minimal) {
|
|
333
|
+
tools = createMinimalToolRegistry();
|
|
334
|
+
}
|
|
335
|
+
else if (options.enableMetaTools) {
|
|
336
|
+
// Meta-tools mode: direct tools + get_tool_info (for schema introspection)
|
|
337
|
+
// Meta-registry tools are accessed transparently via fallback handler
|
|
338
|
+
tools = [...getDirectTools(), ...getMetaTools()];
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
// Legacy mode: all tools declared directly
|
|
342
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated -- Intentional for backward compatibility
|
|
343
|
+
tools = createToolRegistry();
|
|
344
|
+
}
|
|
345
|
+
// Apply tool filter if specified (filter direct tools)
|
|
346
|
+
if (options.toolFilter && options.toolFilter.length > 0) {
|
|
347
|
+
const allowedTools = new Set(options.toolFilter);
|
|
348
|
+
// get_tool_info is always allowed for schema introspection
|
|
349
|
+
const alwaysAllowed = new Set(['get_tool_info']);
|
|
350
|
+
tools = tools.filter((tool) => allowedTools.has(tool.definition.name) || alwaysAllowed.has(tool.definition.name));
|
|
351
|
+
// Also set the meta-tool filter for use_tool/list_tools filtering
|
|
352
|
+
setMetaToolFilter(options.toolFilter);
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
// No filter - clear any previous filter
|
|
356
|
+
setMetaToolFilter(null);
|
|
357
|
+
}
|
|
358
|
+
// Type assertion needed for tool registry compatibility
|
|
359
|
+
agent.registerTools(tools);
|
|
360
|
+
// Register MCP tools (from external MCP servers)
|
|
361
|
+
// These are registered as direct tools since their schemas are unknown at build time
|
|
362
|
+
if (options.mcpTools && options.mcpTools.length > 0) {
|
|
363
|
+
agent.registerTools(options.mcpTools);
|
|
364
|
+
}
|
|
365
|
+
// Set up transparent fallback to meta-registry
|
|
366
|
+
// When the agent calls a tool not in direct tools (e.g., workitem_add),
|
|
367
|
+
// the fallback handler checks the meta-registry and executes it.
|
|
368
|
+
if (options.enableMetaTools && !options.minimal) {
|
|
369
|
+
agent.getToolRegistry().setFallbackHandler(createToolFallback());
|
|
370
|
+
}
|
|
371
|
+
}
|
|
290
372
|
// Register Task tool for sub-agent spawning (only in full mode)
|
|
291
|
-
if (!options.minimal) {
|
|
373
|
+
if (!options.minimal && !options.noTools) {
|
|
374
|
+
// Track active subagents to correlate spawn/complete/events
|
|
375
|
+
// Track active subagents by toolUseId for token counting
|
|
376
|
+
const activeSubagents = new Map();
|
|
377
|
+
// Provide a way for caller to clear tracking state between runs
|
|
378
|
+
if (options.onSubagentTrackingReady) {
|
|
379
|
+
options.onSubagentTrackingReady(() => {
|
|
380
|
+
activeSubagents.clear();
|
|
381
|
+
});
|
|
382
|
+
}
|
|
292
383
|
const taskTool = createTaskTool({
|
|
293
384
|
parentAgent: agent,
|
|
294
385
|
agentTypes: getMergedAgentTypes(),
|
|
295
386
|
enableEventStreaming: true,
|
|
296
387
|
defaultTimeout: 120000, // 2 minutes for subagent operations
|
|
297
|
-
|
|
388
|
+
// Now uses toolUseId for direct correlation (no more FIFO matching!)
|
|
389
|
+
onSpawn: (agentType, description, toolUseId) => {
|
|
298
390
|
if (options.verbose) {
|
|
299
|
-
console.log(`\n[Sub-agent] Spawning ${agentType}: ${description}`);
|
|
391
|
+
console.log(`\n[Sub-agent] Spawning ${agentType}: ${description} (${toolUseId ?? 'no-id'})`);
|
|
392
|
+
}
|
|
393
|
+
// Immediately notify with toolUseId - no more queuing/matching!
|
|
394
|
+
if (toolUseId) {
|
|
395
|
+
activeSubagents.set(toolUseId, { agentType, tokenCount: 0 });
|
|
396
|
+
if (options.onSubagentStart) {
|
|
397
|
+
options.onSubagentStart(toolUseId, agentType, description);
|
|
398
|
+
}
|
|
300
399
|
}
|
|
301
400
|
},
|
|
302
|
-
onComplete: (agentType, result) => {
|
|
401
|
+
onComplete: (agentType, result, toolUseId) => {
|
|
303
402
|
if (options.verbose) {
|
|
304
403
|
console.log(`[Sub-agent] ${agentType} completed (${String(result.iterations)} iterations)`);
|
|
305
404
|
}
|
|
405
|
+
// Direct notification with toolUseId - no more searching!
|
|
406
|
+
if (toolUseId && options.onSubagentEnd) {
|
|
407
|
+
options.onSubagentEnd(toolUseId, true, result.toolCalls);
|
|
408
|
+
activeSubagents.delete(toolUseId);
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
// Stream subagent events for live updates
|
|
412
|
+
onSubAgentEvent: (eventInfo) => {
|
|
413
|
+
const { toolUseId, event } = eventInfo;
|
|
414
|
+
// Handle tool events for live updates
|
|
415
|
+
if (event.type === 'tool_start' && toolUseId && event.name && options.onSubagentToolUse) {
|
|
416
|
+
// Extract tool name and input summary
|
|
417
|
+
const toolName = event.name;
|
|
418
|
+
let summary;
|
|
419
|
+
// Try to get a meaningful summary from input
|
|
420
|
+
const input = event.input;
|
|
421
|
+
if (input) {
|
|
422
|
+
// Common patterns for tool input summaries
|
|
423
|
+
const path = input.path;
|
|
424
|
+
const pattern = input.pattern;
|
|
425
|
+
const command = input.command;
|
|
426
|
+
const filePath = input.file_path;
|
|
427
|
+
if (typeof path === 'string')
|
|
428
|
+
summary = path;
|
|
429
|
+
else if (typeof pattern === 'string')
|
|
430
|
+
summary = pattern;
|
|
431
|
+
else if (typeof command === 'string')
|
|
432
|
+
summary = command.slice(0, 40);
|
|
433
|
+
else if (typeof filePath === 'string')
|
|
434
|
+
summary = filePath;
|
|
435
|
+
}
|
|
436
|
+
options.onSubagentToolUse(toolUseId, toolName, summary);
|
|
437
|
+
}
|
|
306
438
|
},
|
|
307
439
|
});
|
|
308
440
|
// Type assertion needed for task tool compatibility
|
|
@@ -313,5 +445,52 @@ export function createAgent(options = {}) {
|
|
|
313
445
|
});
|
|
314
446
|
agent.registerTool(suggestTool);
|
|
315
447
|
}
|
|
448
|
+
// ==========================================================================
|
|
449
|
+
// Calculate and store token estimates for debugging
|
|
450
|
+
// ==========================================================================
|
|
451
|
+
if (!options.quiet) {
|
|
452
|
+
// Calculate tool tokens from the tools we registered
|
|
453
|
+
let toolTokens = 0;
|
|
454
|
+
// Get the tools array based on options
|
|
455
|
+
let toolsForEstimate = [];
|
|
456
|
+
if (!options.noTools) {
|
|
457
|
+
if (options.minimal) {
|
|
458
|
+
toolsForEstimate = createMinimalToolRegistry();
|
|
459
|
+
}
|
|
460
|
+
else if (options.enableMetaTools) {
|
|
461
|
+
toolsForEstimate = [...getDirectTools(), ...getMetaTools()];
|
|
462
|
+
}
|
|
463
|
+
else {
|
|
464
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
465
|
+
toolsForEstimate = createToolRegistry();
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
for (const tool of toolsForEstimate) {
|
|
469
|
+
const def = tool.definition;
|
|
470
|
+
toolTokens += estimateJsonTokens({
|
|
471
|
+
name: def.name,
|
|
472
|
+
description: def.description,
|
|
473
|
+
input_schema: def.inputSchema,
|
|
474
|
+
});
|
|
475
|
+
}
|
|
476
|
+
// Add task tool and suggest tool estimates (if registered)
|
|
477
|
+
if (!options.minimal && !options.noTools) {
|
|
478
|
+
// Task tool has a large description with all agent types
|
|
479
|
+
toolTokens += 700; // Approximate for task tool
|
|
480
|
+
toolTokens += 200; // Approximate for suggest tool
|
|
481
|
+
}
|
|
482
|
+
// Calculate estimates
|
|
483
|
+
const systemTokens = estimateTokens(systemPrompt);
|
|
484
|
+
const roleTokens = options.systemPromptAddition
|
|
485
|
+
? estimateTokens(options.systemPromptAddition) * 2 // Role appears at start and end
|
|
486
|
+
: 0;
|
|
487
|
+
const contextTokens = estimateTokens(options.projectContext);
|
|
488
|
+
setStaticEstimates({
|
|
489
|
+
system: systemTokens - roleTokens, // Subtract role since it's counted separately
|
|
490
|
+
role: roleTokens,
|
|
491
|
+
tools: toolTokens,
|
|
492
|
+
context: contextTokens,
|
|
493
|
+
});
|
|
494
|
+
}
|
|
316
495
|
return agent;
|
|
317
496
|
}
|
|
@@ -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/sdk';
|
|
@@ -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/sdk';
|