@compilr-dev/cli 0.5.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 +236 -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 +61 -4
- package/dist/agent.js +241 -245
- package/dist/anchors/index.d.ts +1 -1
- package/dist/anchors/index.js +1 -1
- package/dist/anchors/project-anchors.d.ts +2 -2
- package/dist/anchors/project-anchors.js +1 -1
- 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-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.js +266 -81
- package/dist/commands-v2/handlers/core.d.ts +1 -0
- package/dist/commands-v2/handlers/core.js +133 -8
- package/dist/commands-v2/handlers/debug.js +18 -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 +13 -0
- package/dist/commands-v2/handlers/index.js +39 -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.js +244 -23
- 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 +2 -0
- package/dist/commands-v2/handlers/settings.js +217 -35
- 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 +3 -2
- package/dist/commands-v2/index.js +4 -1
- package/dist/commands-v2/registry.d.ts +15 -0
- package/dist/commands-v2/registry.js +34 -0
- package/dist/commands-v2/types.d.ts +81 -3
- package/dist/commands.js +13 -0
- 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 +448 -271
- package/dist/input-handlers/memory-handler.d.ts +1 -1
- package/dist/input-handlers/memory-handler.js +2 -1
- 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.js +3 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2577 -65
- 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 +133 -13
- package/dist/settings/index.js +329 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +4 -0
- package/dist/settings/paths.js +6 -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 -61
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +34 -73
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +4 -4
- package/dist/tools/anchor-tools.js +1 -1
- 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 +5 -3
- package/dist/tools/backlog-wrappers.js +16 -1
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +8 -61
- package/dist/tools/db-tools.js +8 -13
- 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 +5 -5
- package/dist/tools/document-db.js +1 -1
- 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 +5 -73
- package/dist/tools/project-db.js +5 -336
- 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 +43 -11
- package/dist/tools/workitem-db.js +186 -5
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +237 -47
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +1 -1
- package/dist/ui/base/index.js +1 -1
- package/dist/ui/base/overlay-base-v2.d.ts +10 -0
- package/dist/ui/base/overlay-base-v2.js +14 -0
- package/dist/ui/base/render-utils.d.ts +19 -0
- package/dist/ui/base/render-utils.js +25 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
- package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
- 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.js +11 -13
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.js +3 -9
- 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 +74 -7
- package/dist/ui/footer.js +173 -16
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +19 -0
- package/dist/ui/input-prompt.js +206 -14
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -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 +0 -4
- package/dist/ui/live-region.js +6 -14
- package/dist/ui/mascot/renderer.d.ts +1 -1
- package/dist/ui/mascot/renderer.js +37 -2
- 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.js +6 -17
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
- 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.js +2 -5
- 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 +4 -1
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
- 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.js +4 -6
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
- package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
- 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 +2 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
- 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.js +12 -9
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
- 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/help-overlay-v2.d.ts +26 -3
- package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
- 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/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 +57 -13
- package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
- package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
- 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.js +5 -5
- 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 +1 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
- 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/tools-overlay-v2.js +3 -7
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
- package/dist/ui/overlay/index.d.ts +20 -1
- package/dist/ui/overlay/index.js +19 -0
- package/dist/ui/overlay/types.d.ts +5 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.js +4 -16
- package/dist/ui/permission-overlay.js +6 -5
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.js +3 -19
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -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 +7 -8
- package/dist/ui/terminal-renderer.js +7 -8
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +144 -276
- package/dist/ui/terminal-ui.js +384 -1861
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +71 -13
- package/dist/ui/tool-formatters.js +512 -1
- 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/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 +38 -16
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.js +3 -2
- 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/package.json +25 -12
- package/dist/commands/handler-types.d.ts +0 -68
- package/dist/commands/handler-types.js +0 -8
- package/dist/commands/handlers/agent-commands.d.ts +0 -13
- package/dist/commands/handlers/agent-commands.js +0 -305
- package/dist/commands/handlers/design-commands.d.ts +0 -15
- package/dist/commands/handlers/design-commands.js +0 -334
- package/dist/commands/handlers/index.d.ts +0 -20
- package/dist/commands/handlers/index.js +0 -43
- package/dist/commands/handlers/overlay-commands.d.ts +0 -21
- package/dist/commands/handlers/overlay-commands.js +0 -287
- package/dist/commands/handlers/project-commands.d.ts +0 -11
- package/dist/commands/handlers/project-commands.js +0 -167
- package/dist/commands/handlers/simple-commands.d.ts +0 -19
- package/dist/commands/handlers/simple-commands.js +0 -144
- package/dist/commands/registry.d.ts +0 -50
- package/dist/commands/registry.js +0 -75
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -149
- package/dist/repl.js +0 -1151
- 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-v2.d.ts +0 -43
- package/dist/ui/agents-overlay-v2.js +0 -809
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -863
- package/dist/ui/anchors-overlay.d.ts +0 -12
- package/dist/ui/anchors-overlay.js +0 -775
- package/dist/ui/arch-type-overlay.d.ts +0 -15
- package/dist/ui/arch-type-overlay.js +0 -201
- package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
- package/dist/ui/ask-user-overlay-v2.js +0 -555
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
- package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
- package/dist/ui/backlog-overlay.d.ts +0 -32
- package/dist/ui/backlog-overlay.js +0 -652
- package/dist/ui/commands-overlay-v2.d.ts +0 -33
- package/dist/ui/commands-overlay-v2.js +0 -441
- package/dist/ui/commands-overlay.d.ts +0 -16
- package/dist/ui/commands-overlay.js +0 -439
- package/dist/ui/config-overlay.d.ts +0 -35
- package/dist/ui/config-overlay.js +0 -707
- package/dist/ui/docs-overlay.d.ts +0 -17
- package/dist/ui/docs-overlay.js +0 -303
- package/dist/ui/footer-v2.d.ts +0 -222
- package/dist/ui/footer-v2.js +0 -1349
- package/dist/ui/help-overlay-v2.d.ts +0 -34
- package/dist/ui/help-overlay-v2.js +0 -309
- package/dist/ui/help-overlay.d.ts +0 -16
- package/dist/ui/help-overlay.js +0 -316
- package/dist/ui/init-overlay-v2.d.ts +0 -34
- package/dist/ui/init-overlay-v2.js +0 -600
- package/dist/ui/init-overlay.d.ts +0 -34
- package/dist/ui/init-overlay.js +0 -604
- package/dist/ui/input-prompt-v2.d.ts +0 -180
- package/dist/ui/input-prompt-v2.js +0 -999
- package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
- package/dist/ui/iteration-limit-overlay-v2.js +0 -114
- package/dist/ui/keys-overlay-v2.d.ts +0 -41
- package/dist/ui/keys-overlay-v2.js +0 -248
- package/dist/ui/mascot-overlay-v2.d.ts +0 -41
- package/dist/ui/mascot-overlay-v2.js +0 -138
- package/dist/ui/mascot-overlay.d.ts +0 -21
- package/dist/ui/mascot-overlay.js +0 -146
- package/dist/ui/model-overlay-v2.d.ts +0 -49
- package/dist/ui/model-overlay-v2.js +0 -118
- package/dist/ui/model-overlay.d.ts +0 -27
- package/dist/ui/model-overlay.js +0 -221
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -169
- package/dist/ui/new-overlay.d.ts +0 -34
- package/dist/ui/new-overlay.js +0 -604
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
- package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
- package/dist/ui/overlay/overlay-types.d.ts +0 -128
- package/dist/ui/overlay/overlay-types.js +0 -22
- package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
- package/dist/ui/overlays/help-overlay-v2.js +0 -198
- package/dist/ui/overlays/index.d.ts +0 -11
- package/dist/ui/overlays/index.js +0 -11
- package/dist/ui/permission-overlay-v2.d.ts +0 -36
- package/dist/ui/permission-overlay-v2.js +0 -380
- package/dist/ui/projects-overlay.d.ts +0 -19
- package/dist/ui/projects-overlay.js +0 -484
- package/dist/ui/theme-overlay-v2.d.ts +0 -42
- package/dist/ui/theme-overlay-v2.js +0 -135
- package/dist/ui/theme-overlay.d.ts +0 -24
- package/dist/ui/theme-overlay.js +0 -127
- package/dist/ui/tools-overlay-v2.d.ts +0 -47
- package/dist/ui/tools-overlay-v2.js +0 -218
- package/dist/ui/tools-overlay.d.ts +0 -34
- package/dist/ui/tools-overlay.js +0 -230
- package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
- package/dist/ui/tutorial-overlay-v2.js +0 -1035
- package/dist/ui/tutorial-overlay.d.ts +0 -11
- package/dist/ui/tutorial-overlay.js +0 -1034
- package/dist/ui/workflow-overlay.d.ts +0 -22
- package/dist/ui/workflow-overlay.js +0 -636
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilr Guide Tool
|
|
3
|
+
*
|
|
4
|
+
* Provides documentation about the CLI for the AI agent.
|
|
5
|
+
* The agent can call this tool to answer user questions about how to use the CLI.
|
|
6
|
+
*/
|
|
7
|
+
interface GuideInput {
|
|
8
|
+
query?: string;
|
|
9
|
+
list_topics?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const guideTool: import("@compilr-dev/sdk").Tool<GuideInput>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compilr Guide Tool
|
|
3
|
+
*
|
|
4
|
+
* Provides documentation about the CLI for the AI agent.
|
|
5
|
+
* The agent can call this tool to answer user questions about how to use the CLI.
|
|
6
|
+
*/
|
|
7
|
+
import { defineTool } from '@compilr-dev/sdk';
|
|
8
|
+
import { searchGuide, getGuideTopics } from '../guide/index.js';
|
|
9
|
+
export const guideTool = defineTool({
|
|
10
|
+
name: 'compilr_guide',
|
|
11
|
+
description: 'Get documentation about Compilr Dev CLI features and commands. ' +
|
|
12
|
+
'Use this to answer user questions about how to use the CLI. ' +
|
|
13
|
+
'Query by topic (e.g., "creating-project", "team-agents") or command (e.g., "/design", "/backlog").',
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: 'object',
|
|
16
|
+
properties: {
|
|
17
|
+
query: {
|
|
18
|
+
type: 'string',
|
|
19
|
+
description: 'Topic or command to look up. Examples: "creating-project", "/design", "team-agents", "workflow"',
|
|
20
|
+
},
|
|
21
|
+
list_topics: {
|
|
22
|
+
type: 'boolean',
|
|
23
|
+
description: 'Set to true to list all available topics',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
execute: (input) => {
|
|
28
|
+
if (input.list_topics) {
|
|
29
|
+
const topics = getGuideTopics();
|
|
30
|
+
return Promise.resolve({
|
|
31
|
+
success: true,
|
|
32
|
+
result: { output: `Available guide topics:\n\n${topics.map(t => `- ${t}`).join('\n')}` },
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (!input.query) {
|
|
36
|
+
return Promise.resolve({
|
|
37
|
+
success: true,
|
|
38
|
+
result: { output: 'Please provide a query (topic or command) or set list_topics=true to see all topics.' },
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
const results = searchGuide(input.query);
|
|
42
|
+
if (results.length === 0) {
|
|
43
|
+
const topics = getGuideTopics();
|
|
44
|
+
return Promise.resolve({
|
|
45
|
+
success: true,
|
|
46
|
+
result: { output: `No guide found for "${input.query}".\n\nAvailable topics:\n${topics.map(t => `- ${t}`).join('\n')}` },
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Format results
|
|
50
|
+
const formatted = results
|
|
51
|
+
.map((entry) => `## ${entry.title}\n\n${entry.content}\n`)
|
|
52
|
+
.join('\n---\n\n');
|
|
53
|
+
return Promise.resolve({
|
|
54
|
+
success: true,
|
|
55
|
+
result: { output: formatted },
|
|
56
|
+
});
|
|
57
|
+
},
|
|
58
|
+
silent: true,
|
|
59
|
+
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handoff Tool - Multi-Agent Task Handoff
|
|
3
|
+
*
|
|
4
|
+
* Allows any agent to hand off the current task to another agent.
|
|
5
|
+
* Available to all agents (specialists and coordinator).
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. Agent calls handoff(agentId, task, reason?)
|
|
9
|
+
* 2. CLI shows approval prompt (unless auto-approve is enabled)
|
|
10
|
+
* 3. If approved: auto-switch to target agent, inject task
|
|
11
|
+
* 4. If denied: return "User declined" to current agent
|
|
12
|
+
*
|
|
13
|
+
* One-hop rule: If this agent was itself handed a task, it cannot
|
|
14
|
+
* re-hand it off (except back to the coordinator/default).
|
|
15
|
+
*/
|
|
16
|
+
interface HandoffInput {
|
|
17
|
+
/** Target agent ID (e.g., 'arch', 'dev', 'qa', 'default') */
|
|
18
|
+
agentId: string;
|
|
19
|
+
/** Task description for the target agent */
|
|
20
|
+
task: string;
|
|
21
|
+
/** Optional reason for handoff (shown to user for context) */
|
|
22
|
+
reason?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare const handoffTool: import("@compilr-dev/sdk").Tool<HandoffInput>;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handoff Tool - Multi-Agent Task Handoff
|
|
3
|
+
*
|
|
4
|
+
* Allows any agent to hand off the current task to another agent.
|
|
5
|
+
* Available to all agents (specialists and coordinator).
|
|
6
|
+
*
|
|
7
|
+
* Flow:
|
|
8
|
+
* 1. Agent calls handoff(agentId, task, reason?)
|
|
9
|
+
* 2. CLI shows approval prompt (unless auto-approve is enabled)
|
|
10
|
+
* 3. If approved: auto-switch to target agent, inject task
|
|
11
|
+
* 4. If denied: return "User declined" to current agent
|
|
12
|
+
*
|
|
13
|
+
* One-hop rule: If this agent was itself handed a task, it cannot
|
|
14
|
+
* re-hand it off (except back to the coordinator/default).
|
|
15
|
+
*/
|
|
16
|
+
import { defineTool } from '@compilr-dev/sdk';
|
|
17
|
+
import { getHandoffHandler } from '../shared-handlers.js';
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Tool Definition
|
|
20
|
+
// =============================================================================
|
|
21
|
+
export const handoffTool = defineTool({
|
|
22
|
+
name: 'handoff',
|
|
23
|
+
description: 'Hand off the current task to another team agent. ' +
|
|
24
|
+
'Use this when a task is outside your expertise or would benefit from another specialist. ' +
|
|
25
|
+
'The user will be asked to approve the handoff before switching. ' +
|
|
26
|
+
'Example: hand off architecture questions to $arch, implementation to $dev, testing to $qa.',
|
|
27
|
+
inputSchema: {
|
|
28
|
+
type: 'object',
|
|
29
|
+
properties: {
|
|
30
|
+
agentId: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Target agent ID (e.g., "arch", "dev", "qa", "default")',
|
|
33
|
+
},
|
|
34
|
+
task: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Task description for the target agent - be specific and clear',
|
|
37
|
+
},
|
|
38
|
+
reason: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Why this agent is better suited for the task (shown to user)',
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
required: ['agentId', 'task'],
|
|
44
|
+
},
|
|
45
|
+
execute: async (input) => {
|
|
46
|
+
try {
|
|
47
|
+
// Validate input
|
|
48
|
+
if (!input.agentId || input.agentId.trim().length === 0) {
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
error: 'Agent ID is required',
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
if (!input.task || input.task.trim().length === 0) {
|
|
55
|
+
return {
|
|
56
|
+
success: false,
|
|
57
|
+
error: 'Task description is required',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Get the handoff handler from shared-handlers
|
|
61
|
+
const handoffHandler = getHandoffHandler();
|
|
62
|
+
if (!handoffHandler) {
|
|
63
|
+
return {
|
|
64
|
+
success: false,
|
|
65
|
+
error: 'Handoff handler not initialized. ' +
|
|
66
|
+
'This tool requires multi-agent mode with a team.',
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Execute handoff (shows approval prompt, switches if approved)
|
|
70
|
+
const result = await handoffHandler({
|
|
71
|
+
agentId: input.agentId.trim(),
|
|
72
|
+
task: input.task.trim(),
|
|
73
|
+
reason: input.reason?.trim(),
|
|
74
|
+
});
|
|
75
|
+
if (result.error) {
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
error: result.error,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
const output = {
|
|
82
|
+
handedOff: result.success,
|
|
83
|
+
message: result.declined
|
|
84
|
+
? 'User declined the handoff. Continue handling the task yourself.'
|
|
85
|
+
: `Task handed off to $${input.agentId}. They will handle it from here.`,
|
|
86
|
+
};
|
|
87
|
+
return {
|
|
88
|
+
success: true,
|
|
89
|
+
result: output,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
return {
|
|
94
|
+
success: false,
|
|
95
|
+
error: `Handoff failed: ${err instanceof Error ? err.message : String(err)}`,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meta-Tools for Dynamic Tool Loading
|
|
3
|
+
*
|
|
4
|
+
* Thin singleton wrapper over @compilr-dev/sdk's MetaToolsRegistry.
|
|
5
|
+
* Provides the same module-level API used by the CLI while delegating
|
|
6
|
+
* all logic to the SDK's class-based implementation.
|
|
7
|
+
*
|
|
8
|
+
* Instead of declaring all 49 tools (~15K tokens), we declare:
|
|
9
|
+
* 1. A small set of "direct" tools (always available)
|
|
10
|
+
* 2. A get_tool_info meta-tool (always available)
|
|
11
|
+
* 3. A tool index in the system prompt
|
|
12
|
+
* 4. A transparent fallback handler that routes calls to the registry
|
|
13
|
+
*/
|
|
14
|
+
import { type Tool, type ToolExecutionResult } from '@compilr-dev/sdk';
|
|
15
|
+
export declare function setMetaToolFilter(filter: string[] | null | undefined): void;
|
|
16
|
+
export declare function getMetaToolFilter(): Set<string> | null;
|
|
17
|
+
export declare function initializeMetaToolRegistry(tools: Tool[]): void;
|
|
18
|
+
export declare function getRegisteredMetaTools(): Tool[];
|
|
19
|
+
export declare function getMetaToolCount(): number;
|
|
20
|
+
export declare function generateToolIndex(): string;
|
|
21
|
+
export declare const listToolsTool: Tool<object>;
|
|
22
|
+
export declare const getToolInfoTool: Tool<object>;
|
|
23
|
+
export declare const useToolTool: Tool<object>;
|
|
24
|
+
export declare const metaTools: Tool<object>[];
|
|
25
|
+
export declare function createMetaToolFallback(): (name: string, input: Record<string, unknown>) => Promise<ToolExecutionResult | null>;
|
|
26
|
+
export declare const META_TOOLS_SYSTEM_PROMPT_PREFIX = "\n## Tool Index (Specialized Tools)\n\nThese tools are called **exactly like direct tools** \u2014 just use the tool name with parameters. No special syntax or wrapper needed. The system routes them automatically.\n\n**IMPORTANT \u2014 These are CLI system tools, NOT your project's backend. Never use localhost/curl to access them.**\n\n**Parameter Rules:**\n- For **zero-parameter calls**: call the tool directly (e.g., `workitem_query()`, `git_status()`).\n- For **calls WITH parameters**: you MUST call `get_tool_info(\"tool_name\")` first to get the exact JSON schema. The signatures below are summaries only \u2014 do NOT guess parameter structure from them.\n- After a failed tool call, always call `get_tool_info()` before retrying.\n\n";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Meta-Tools for Dynamic Tool Loading
|
|
3
|
+
*
|
|
4
|
+
* Thin singleton wrapper over @compilr-dev/sdk's MetaToolsRegistry.
|
|
5
|
+
* Provides the same module-level API used by the CLI while delegating
|
|
6
|
+
* all logic to the SDK's class-based implementation.
|
|
7
|
+
*
|
|
8
|
+
* Instead of declaring all 49 tools (~15K tokens), we declare:
|
|
9
|
+
* 1. A small set of "direct" tools (always available)
|
|
10
|
+
* 2. A get_tool_info meta-tool (always available)
|
|
11
|
+
* 3. A tool index in the system prompt
|
|
12
|
+
* 4. A transparent fallback handler that routes calls to the registry
|
|
13
|
+
*/
|
|
14
|
+
import { MetaToolsRegistry, createMetaTools, META_TOOLS_SYSTEM_PROMPT_PREFIX as SDK_META_TOOLS_SYSTEM_PROMPT_PREFIX, } from '@compilr-dev/sdk';
|
|
15
|
+
// Singleton registry for the CLI process
|
|
16
|
+
const registry = new MetaToolsRegistry();
|
|
17
|
+
const metaToolSet = createMetaTools(registry);
|
|
18
|
+
// =============================================================================
|
|
19
|
+
// Module-level API (same signatures as before)
|
|
20
|
+
// =============================================================================
|
|
21
|
+
export function setMetaToolFilter(filter) {
|
|
22
|
+
registry.setFilter(filter);
|
|
23
|
+
}
|
|
24
|
+
export function getMetaToolFilter() {
|
|
25
|
+
return registry.getFilter();
|
|
26
|
+
}
|
|
27
|
+
export function initializeMetaToolRegistry(tools) {
|
|
28
|
+
registry.initialize(tools);
|
|
29
|
+
}
|
|
30
|
+
export function getRegisteredMetaTools() {
|
|
31
|
+
return registry.getRegisteredTools();
|
|
32
|
+
}
|
|
33
|
+
export function getMetaToolCount() {
|
|
34
|
+
return registry.getToolCount();
|
|
35
|
+
}
|
|
36
|
+
export function generateToolIndex() {
|
|
37
|
+
return registry.generateToolIndex();
|
|
38
|
+
}
|
|
39
|
+
// Re-export tool instances
|
|
40
|
+
export const listToolsTool = metaToolSet.listToolsTool;
|
|
41
|
+
export const getToolInfoTool = metaToolSet.getToolInfoTool;
|
|
42
|
+
export const useToolTool = metaToolSet.useToolTool;
|
|
43
|
+
export const metaTools = [listToolsTool, getToolInfoTool, useToolTool];
|
|
44
|
+
export function createMetaToolFallback() {
|
|
45
|
+
return metaToolSet.createFallback();
|
|
46
|
+
}
|
|
47
|
+
export const META_TOOLS_SYSTEM_PROMPT_PREFIX = SDK_META_TOOLS_SYSTEM_PROMPT_PREFIX;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Database Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing plans in the database.
|
|
5
|
+
* Plans are used in Plan Mode for structured task planning before implementation.
|
|
6
|
+
*/
|
|
7
|
+
export declare const planCreateTool: import("@compilr-dev/sdk").Tool<{
|
|
8
|
+
name: string;
|
|
9
|
+
content: string;
|
|
10
|
+
work_item_id?: number;
|
|
11
|
+
project_id?: number;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const planUpdateTool: import("@compilr-dev/sdk").Tool<{
|
|
14
|
+
plan_id: number;
|
|
15
|
+
content?: string;
|
|
16
|
+
status?: string;
|
|
17
|
+
work_item_id?: number | null;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const planGetTool: import("@compilr-dev/sdk").Tool<{
|
|
20
|
+
plan_id?: number;
|
|
21
|
+
name?: string;
|
|
22
|
+
project_id?: number;
|
|
23
|
+
}>;
|
|
24
|
+
export declare const planListTool: import("@compilr-dev/sdk").Tool<{
|
|
25
|
+
project_id?: number;
|
|
26
|
+
status?: string;
|
|
27
|
+
work_item_id?: number;
|
|
28
|
+
limit?: number;
|
|
29
|
+
order_by?: string;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const planDeleteTool: import("@compilr-dev/sdk").Tool<{
|
|
32
|
+
plan_id: number;
|
|
33
|
+
}>;
|
|
34
|
+
export declare const planDbTools: (import("@compilr-dev/sdk").Tool<{
|
|
35
|
+
name: string;
|
|
36
|
+
content: string;
|
|
37
|
+
work_item_id?: number;
|
|
38
|
+
project_id?: number;
|
|
39
|
+
}> | import("@compilr-dev/sdk").Tool<{
|
|
40
|
+
plan_id: number;
|
|
41
|
+
content?: string;
|
|
42
|
+
status?: string;
|
|
43
|
+
work_item_id?: number | null;
|
|
44
|
+
}> | import("@compilr-dev/sdk").Tool<{
|
|
45
|
+
plan_id?: number;
|
|
46
|
+
name?: string;
|
|
47
|
+
project_id?: number;
|
|
48
|
+
}> | import("@compilr-dev/sdk").Tool<{
|
|
49
|
+
project_id?: number;
|
|
50
|
+
status?: string;
|
|
51
|
+
work_item_id?: number;
|
|
52
|
+
limit?: number;
|
|
53
|
+
order_by?: string;
|
|
54
|
+
}>)[];
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Database Tools
|
|
3
|
+
*
|
|
4
|
+
* Tools for managing plans in the database.
|
|
5
|
+
* Plans are used in Plan Mode for structured task planning before implementation.
|
|
6
|
+
*/
|
|
7
|
+
import { defineTool, createSuccessResult, createErrorResult } from '@compilr-dev/sdk';
|
|
8
|
+
import { planRepository, } from '../db/repositories/index.js';
|
|
9
|
+
import { getActiveProject } from './project-db.js';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// plan_create - Create a new plan
|
|
12
|
+
// =============================================================================
|
|
13
|
+
export const planCreateTool = defineTool({
|
|
14
|
+
name: 'plan_create',
|
|
15
|
+
description: 'Create a new plan for the current project. Plans are used to document implementation approaches before coding. The plan is created with "draft" status.',
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
name: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Plan name (kebab-case, 3-5 words). Example: "auth-jwt-migration", "add-dark-mode-toggle"',
|
|
22
|
+
},
|
|
23
|
+
content: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Plan content in markdown format. Should include: Context, Goals, Steps, Verification sections.',
|
|
26
|
+
},
|
|
27
|
+
work_item_id: {
|
|
28
|
+
type: 'number',
|
|
29
|
+
description: 'Optional: ID of the work item this plan is for. Links the plan to a backlog item.',
|
|
30
|
+
},
|
|
31
|
+
project_id: {
|
|
32
|
+
type: 'number',
|
|
33
|
+
description: 'Project ID (uses active project if not provided)',
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
required: ['name', 'content'],
|
|
37
|
+
},
|
|
38
|
+
execute: async (input) => {
|
|
39
|
+
await Promise.resolve();
|
|
40
|
+
try {
|
|
41
|
+
const projectId = input.project_id ?? getActiveProject()?.id;
|
|
42
|
+
if (!projectId) {
|
|
43
|
+
return createErrorResult('No project specified and no active project. Use project_get or /projects to select a project first.');
|
|
44
|
+
}
|
|
45
|
+
// Validate name format (kebab-case)
|
|
46
|
+
if (!/^[a-z][a-z0-9-]*[a-z0-9]$/.test(input.name) && input.name.length > 2) {
|
|
47
|
+
// Allow simple 2-char names, but enforce kebab-case for longer names
|
|
48
|
+
if (input.name.length > 2 && !/^[a-z0-9-]+$/.test(input.name)) {
|
|
49
|
+
return createErrorResult('Plan name should be kebab-case (lowercase letters, numbers, hyphens). Example: "auth-jwt-migration"');
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const createInput = {
|
|
53
|
+
project_id: projectId,
|
|
54
|
+
name: input.name,
|
|
55
|
+
content: input.content,
|
|
56
|
+
work_item_id: input.work_item_id,
|
|
57
|
+
};
|
|
58
|
+
const plan = planRepository.create(createInput);
|
|
59
|
+
return createSuccessResult({
|
|
60
|
+
success: true,
|
|
61
|
+
message: `Plan "${plan.name}" created`,
|
|
62
|
+
plan: {
|
|
63
|
+
id: plan.id,
|
|
64
|
+
name: plan.name,
|
|
65
|
+
status: plan.status,
|
|
66
|
+
workItemId: plan.workItemId,
|
|
67
|
+
createdAt: plan.createdAt.toISOString(),
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return createErrorResult(`Failed to create plan: ${error instanceof Error ? error.message : String(error)}`);
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
});
|
|
76
|
+
// =============================================================================
|
|
77
|
+
// plan_update - Update an existing plan
|
|
78
|
+
// =============================================================================
|
|
79
|
+
export const planUpdateTool = defineTool({
|
|
80
|
+
name: 'plan_update',
|
|
81
|
+
description: 'Update an existing plan. Can update content, status, or work item link. Status transitions: draft→approved→in_progress→completed. Any status can transition to "abandoned".',
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: 'object',
|
|
84
|
+
properties: {
|
|
85
|
+
plan_id: {
|
|
86
|
+
type: 'number',
|
|
87
|
+
description: 'ID of the plan to update',
|
|
88
|
+
},
|
|
89
|
+
content: {
|
|
90
|
+
type: 'string',
|
|
91
|
+
description: 'New plan content (optional)',
|
|
92
|
+
},
|
|
93
|
+
status: {
|
|
94
|
+
type: 'string',
|
|
95
|
+
enum: ['draft', 'approved', 'in_progress', 'completed', 'abandoned'],
|
|
96
|
+
description: 'New status (optional). Valid transitions: draft→approved, approved→in_progress, in_progress→completed. Any→abandoned. abandoned→draft.',
|
|
97
|
+
},
|
|
98
|
+
work_item_id: {
|
|
99
|
+
type: ['number', 'null'],
|
|
100
|
+
description: 'Work item ID to link (optional). Use null to unlink.',
|
|
101
|
+
},
|
|
102
|
+
},
|
|
103
|
+
required: ['plan_id'],
|
|
104
|
+
},
|
|
105
|
+
execute: async (input) => {
|
|
106
|
+
await Promise.resolve();
|
|
107
|
+
try {
|
|
108
|
+
const updateInput = {};
|
|
109
|
+
if (input.content !== undefined) {
|
|
110
|
+
updateInput.content = input.content;
|
|
111
|
+
}
|
|
112
|
+
if (input.status !== undefined) {
|
|
113
|
+
updateInput.status = input.status;
|
|
114
|
+
}
|
|
115
|
+
if (input.work_item_id !== undefined) {
|
|
116
|
+
updateInput.work_item_id = input.work_item_id;
|
|
117
|
+
}
|
|
118
|
+
const plan = planRepository.update(input.plan_id, updateInput);
|
|
119
|
+
if (!plan) {
|
|
120
|
+
return createErrorResult(`Plan with ID ${String(input.plan_id)} not found`);
|
|
121
|
+
}
|
|
122
|
+
return createSuccessResult({
|
|
123
|
+
success: true,
|
|
124
|
+
message: `Plan "${plan.name}" updated`,
|
|
125
|
+
plan: {
|
|
126
|
+
id: plan.id,
|
|
127
|
+
name: plan.name,
|
|
128
|
+
status: plan.status,
|
|
129
|
+
workItemId: plan.workItemId,
|
|
130
|
+
updatedAt: plan.updatedAt.toISOString(),
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
return createErrorResult(`Failed to update plan: ${error instanceof Error ? error.message : String(error)}`);
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
// =============================================================================
|
|
140
|
+
// plan_get - Get a plan by ID or name
|
|
141
|
+
// =============================================================================
|
|
142
|
+
export const planGetTool = defineTool({
|
|
143
|
+
name: 'plan_get',
|
|
144
|
+
description: 'Get a plan by ID or name. Returns the full plan content and linked work item details.',
|
|
145
|
+
inputSchema: {
|
|
146
|
+
type: 'object',
|
|
147
|
+
properties: {
|
|
148
|
+
plan_id: {
|
|
149
|
+
type: 'number',
|
|
150
|
+
description: 'Plan ID (preferred)',
|
|
151
|
+
},
|
|
152
|
+
name: {
|
|
153
|
+
type: 'string',
|
|
154
|
+
description: 'Plan name (alternative to ID)',
|
|
155
|
+
},
|
|
156
|
+
project_id: {
|
|
157
|
+
type: 'number',
|
|
158
|
+
description: 'Project ID (required if using name, uses active project if not provided)',
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
required: [],
|
|
162
|
+
},
|
|
163
|
+
execute: async (input) => {
|
|
164
|
+
await Promise.resolve();
|
|
165
|
+
try {
|
|
166
|
+
let plan;
|
|
167
|
+
if (input.plan_id) {
|
|
168
|
+
plan = planRepository.getWithWorkItem(input.plan_id);
|
|
169
|
+
}
|
|
170
|
+
else if (input.name) {
|
|
171
|
+
const projectId = input.project_id ?? getActiveProject()?.id;
|
|
172
|
+
if (!projectId) {
|
|
173
|
+
return createErrorResult('No project specified and no active project. Provide plan_id or project_id.');
|
|
174
|
+
}
|
|
175
|
+
const basePlan = planRepository.getByName(projectId, input.name);
|
|
176
|
+
if (basePlan) {
|
|
177
|
+
plan = planRepository.getWithWorkItem(basePlan.id);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return createErrorResult('Either plan_id or name is required');
|
|
182
|
+
}
|
|
183
|
+
if (!plan) {
|
|
184
|
+
return createSuccessResult({
|
|
185
|
+
success: true,
|
|
186
|
+
plan: null,
|
|
187
|
+
message: 'Plan not found',
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return createSuccessResult({
|
|
191
|
+
success: true,
|
|
192
|
+
plan: {
|
|
193
|
+
id: plan.id,
|
|
194
|
+
name: plan.name,
|
|
195
|
+
content: plan.content,
|
|
196
|
+
status: plan.status,
|
|
197
|
+
workItemId: plan.workItemId,
|
|
198
|
+
workItem: plan.workItem
|
|
199
|
+
? {
|
|
200
|
+
id: plan.workItem.id,
|
|
201
|
+
itemId: plan.workItem.itemId,
|
|
202
|
+
title: plan.workItem.title,
|
|
203
|
+
status: plan.workItem.status,
|
|
204
|
+
}
|
|
205
|
+
: null,
|
|
206
|
+
createdAt: plan.createdAt.toISOString(),
|
|
207
|
+
updatedAt: plan.updatedAt.toISOString(),
|
|
208
|
+
},
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
catch (error) {
|
|
212
|
+
return createErrorResult(`Failed to get plan: ${error instanceof Error ? error.message : String(error)}`);
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
// =============================================================================
|
|
217
|
+
// plan_list - List plans for a project
|
|
218
|
+
// =============================================================================
|
|
219
|
+
export const planListTool = defineTool({
|
|
220
|
+
name: 'plan_list',
|
|
221
|
+
description: 'List plans for a project. Supports filtering by status and work item. Returns plan summaries without full content.',
|
|
222
|
+
inputSchema: {
|
|
223
|
+
type: 'object',
|
|
224
|
+
properties: {
|
|
225
|
+
project_id: {
|
|
226
|
+
type: 'number',
|
|
227
|
+
description: 'Project ID (uses active project if not provided)',
|
|
228
|
+
},
|
|
229
|
+
status: {
|
|
230
|
+
type: 'string',
|
|
231
|
+
enum: ['draft', 'approved', 'in_progress', 'completed', 'abandoned', 'all'],
|
|
232
|
+
description: 'Filter by status (default: all)',
|
|
233
|
+
},
|
|
234
|
+
work_item_id: {
|
|
235
|
+
type: 'number',
|
|
236
|
+
description: 'Filter by linked work item',
|
|
237
|
+
},
|
|
238
|
+
limit: {
|
|
239
|
+
type: 'number',
|
|
240
|
+
description: 'Maximum plans to return (default: 20)',
|
|
241
|
+
},
|
|
242
|
+
order_by: {
|
|
243
|
+
type: 'string',
|
|
244
|
+
enum: ['updated_desc', 'updated_asc', 'created_desc', 'name_asc'],
|
|
245
|
+
description: 'Sort order (default: updated_desc)',
|
|
246
|
+
},
|
|
247
|
+
},
|
|
248
|
+
required: [],
|
|
249
|
+
},
|
|
250
|
+
execute: async (input) => {
|
|
251
|
+
await Promise.resolve();
|
|
252
|
+
try {
|
|
253
|
+
const projectId = input.project_id ?? getActiveProject()?.id;
|
|
254
|
+
if (!projectId) {
|
|
255
|
+
return createErrorResult('No project specified and no active project. Use project_get or /projects to select a project first.');
|
|
256
|
+
}
|
|
257
|
+
const options = {
|
|
258
|
+
limit: input.limit ?? 20,
|
|
259
|
+
order_by: input.order_by ?? 'updated_desc',
|
|
260
|
+
};
|
|
261
|
+
if (input.status && input.status !== 'all') {
|
|
262
|
+
options.status = input.status;
|
|
263
|
+
}
|
|
264
|
+
if (input.work_item_id !== undefined) {
|
|
265
|
+
options.work_item_id = input.work_item_id;
|
|
266
|
+
}
|
|
267
|
+
const plans = planRepository.list(projectId, options);
|
|
268
|
+
const counts = planRepository.countByStatus(projectId);
|
|
269
|
+
const planSummaries = plans.map((plan) => ({
|
|
270
|
+
id: plan.id,
|
|
271
|
+
name: plan.name,
|
|
272
|
+
status: plan.status,
|
|
273
|
+
workItemId: plan.workItemId,
|
|
274
|
+
workItemTitle: plan.workItemTitle,
|
|
275
|
+
workItemItemId: plan.workItemItemId,
|
|
276
|
+
updatedAt: plan.updatedAt.toISOString(),
|
|
277
|
+
}));
|
|
278
|
+
return createSuccessResult({
|
|
279
|
+
success: true,
|
|
280
|
+
plans: planSummaries,
|
|
281
|
+
count: planSummaries.length,
|
|
282
|
+
statusCounts: counts,
|
|
283
|
+
projectId,
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
return createErrorResult(`Failed to list plans: ${error instanceof Error ? error.message : String(error)}`);
|
|
288
|
+
}
|
|
289
|
+
},
|
|
290
|
+
});
|
|
291
|
+
// =============================================================================
|
|
292
|
+
// plan_delete - Delete a plan
|
|
293
|
+
// =============================================================================
|
|
294
|
+
export const planDeleteTool = defineTool({
|
|
295
|
+
name: 'plan_delete',
|
|
296
|
+
description: 'Delete a plan by ID. This action cannot be undone.',
|
|
297
|
+
inputSchema: {
|
|
298
|
+
type: 'object',
|
|
299
|
+
properties: {
|
|
300
|
+
plan_id: {
|
|
301
|
+
type: 'number',
|
|
302
|
+
description: 'ID of the plan to delete',
|
|
303
|
+
},
|
|
304
|
+
},
|
|
305
|
+
required: ['plan_id'],
|
|
306
|
+
},
|
|
307
|
+
execute: async (input) => {
|
|
308
|
+
await Promise.resolve();
|
|
309
|
+
try {
|
|
310
|
+
// Get plan first to show name in message
|
|
311
|
+
const plan = planRepository.getById(input.plan_id);
|
|
312
|
+
if (!plan) {
|
|
313
|
+
return createErrorResult(`Plan with ID ${String(input.plan_id)} not found`);
|
|
314
|
+
}
|
|
315
|
+
const deleted = planRepository.delete(input.plan_id);
|
|
316
|
+
if (!deleted) {
|
|
317
|
+
return createErrorResult(`Failed to delete plan "${plan.name}"`);
|
|
318
|
+
}
|
|
319
|
+
return createSuccessResult({
|
|
320
|
+
success: true,
|
|
321
|
+
message: `Plan "${plan.name}" deleted`,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
return createErrorResult(`Failed to delete plan: ${error instanceof Error ? error.message : String(error)}`);
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
});
|
|
329
|
+
// =============================================================================
|
|
330
|
+
// All plan tools
|
|
331
|
+
// =============================================================================
|
|
332
|
+
export const planDbTools = [
|
|
333
|
+
planCreateTool,
|
|
334
|
+
planUpdateTool,
|
|
335
|
+
planGetTool,
|
|
336
|
+
planListTool,
|
|
337
|
+
planDeleteTool,
|
|
338
|
+
];
|