@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
|
@@ -6,11 +6,16 @@
|
|
|
6
6
|
* - Machine-specific identifiers (hostname, username)
|
|
7
7
|
* - A random "mk" value stored in settings.json
|
|
8
8
|
*/
|
|
9
|
-
export type ProviderKey = 'anthropic' | 'openai' | 'google' | 'ollama';
|
|
9
|
+
export type ProviderKey = 'anthropic' | 'openai' | 'google' | 'ollama' | 'together' | 'groq' | 'fireworks' | 'perplexity' | 'openrouter';
|
|
10
10
|
export interface StoredCredentials {
|
|
11
11
|
anthropic?: string;
|
|
12
12
|
openai?: string;
|
|
13
13
|
google?: string;
|
|
14
|
+
together?: string;
|
|
15
|
+
groq?: string;
|
|
16
|
+
fireworks?: string;
|
|
17
|
+
perplexity?: string;
|
|
18
|
+
openrouter?: string;
|
|
14
19
|
}
|
|
15
20
|
/**
|
|
16
21
|
* Get API key for a provider
|
|
@@ -39,17 +44,31 @@ export declare function getMaskedKey(provider: ProviderKey): string | null;
|
|
|
39
44
|
*/
|
|
40
45
|
export declare function isKeyFromEnv(provider: ProviderKey): boolean;
|
|
41
46
|
/**
|
|
42
|
-
*
|
|
47
|
+
* Provider category for grouping in UI
|
|
48
|
+
*/
|
|
49
|
+
export type ProviderCategory = 'primary' | 'local' | 'others';
|
|
50
|
+
/**
|
|
51
|
+
* Provider status with category information
|
|
43
52
|
*/
|
|
44
|
-
export
|
|
53
|
+
export interface ProviderStatus {
|
|
45
54
|
provider: ProviderKey;
|
|
46
55
|
name: string;
|
|
47
56
|
hasKey: boolean;
|
|
48
57
|
masked: string | null;
|
|
49
58
|
fromEnv: boolean;
|
|
50
59
|
keyUrl: string;
|
|
51
|
-
|
|
60
|
+
category: ProviderCategory;
|
|
61
|
+
endpoint?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get all provider statuses
|
|
65
|
+
*/
|
|
66
|
+
export declare function getAllProviderStatuses(): ProviderStatus[];
|
|
67
|
+
/**
|
|
68
|
+
* Get provider statuses filtered by category
|
|
69
|
+
*/
|
|
70
|
+
export declare function getProvidersByCategory(category: ProviderCategory): ProviderStatus[];
|
|
52
71
|
/**
|
|
53
72
|
* Map provider type from settings to credential provider key
|
|
54
73
|
*/
|
|
55
|
-
export declare function settingsProviderToCredentialKey(provider: 'auto' | 'claude' | 'openai' | 'gemini' | 'ollama'): ProviderKey;
|
|
74
|
+
export declare function settingsProviderToCredentialKey(provider: 'auto' | 'claude' | 'openai' | 'gemini' | 'ollama' | 'together' | 'groq' | 'fireworks' | 'perplexity' | 'openrouter' | 'custom'): ProviderKey;
|
|
@@ -18,6 +18,8 @@ const SETTINGS_FILE = path.join(CONFIG_DIR, 'settings.json');
|
|
|
18
18
|
const CREDENTIALS_FILE = path.join(CONFIG_DIR, 'credentials.enc');
|
|
19
19
|
const ALGORITHM = 'aes-256-gcm';
|
|
20
20
|
const SALT = 'compilr-dev-v1';
|
|
21
|
+
// Cache for loaded credentials (avoids repeated disk reads)
|
|
22
|
+
let credentialsCache = null;
|
|
21
23
|
// =============================================================================
|
|
22
24
|
// Master Key Management
|
|
23
25
|
// =============================================================================
|
|
@@ -98,29 +100,38 @@ function decrypt(encryptedData) {
|
|
|
98
100
|
// Credentials Storage
|
|
99
101
|
// =============================================================================
|
|
100
102
|
/**
|
|
101
|
-
* Load all stored credentials
|
|
103
|
+
* Load all stored credentials (cached to avoid repeated disk reads)
|
|
102
104
|
*/
|
|
103
105
|
function loadCredentials() {
|
|
106
|
+
// Return cached credentials if available
|
|
107
|
+
if (credentialsCache !== null) {
|
|
108
|
+
return credentialsCache;
|
|
109
|
+
}
|
|
104
110
|
try {
|
|
105
111
|
if (!fs.existsSync(CREDENTIALS_FILE)) {
|
|
106
|
-
|
|
112
|
+
credentialsCache = {};
|
|
113
|
+
return credentialsCache;
|
|
107
114
|
}
|
|
108
115
|
const encryptedData = fs.readFileSync(CREDENTIALS_FILE, 'utf-8');
|
|
109
116
|
const decrypted = decrypt(encryptedData);
|
|
110
|
-
|
|
117
|
+
credentialsCache = JSON.parse(decrypted);
|
|
118
|
+
return credentialsCache;
|
|
111
119
|
}
|
|
112
120
|
catch {
|
|
113
121
|
// If decryption fails (e.g., key changed), return empty
|
|
114
|
-
|
|
122
|
+
credentialsCache = {};
|
|
123
|
+
return credentialsCache;
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
126
|
/**
|
|
118
|
-
* Save all credentials
|
|
127
|
+
* Save all credentials (invalidates cache)
|
|
119
128
|
*/
|
|
120
129
|
function saveCredentials(credentials) {
|
|
121
130
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
122
131
|
const encrypted = encrypt(JSON.stringify(credentials));
|
|
123
132
|
fs.writeFileSync(CREDENTIALS_FILE, encrypted, 'utf-8');
|
|
133
|
+
// Update cache with new credentials
|
|
134
|
+
credentialsCache = credentials;
|
|
124
135
|
}
|
|
125
136
|
// =============================================================================
|
|
126
137
|
// Public API
|
|
@@ -136,6 +147,11 @@ export function getApiKey(provider) {
|
|
|
136
147
|
openai: 'OPENAI_API_KEY',
|
|
137
148
|
google: 'GOOGLE_API_KEY',
|
|
138
149
|
ollama: '', // No key needed
|
|
150
|
+
together: 'TOGETHER_API_KEY',
|
|
151
|
+
groq: 'GROQ_API_KEY',
|
|
152
|
+
fireworks: 'FIREWORKS_API_KEY',
|
|
153
|
+
perplexity: 'PERPLEXITY_API_KEY',
|
|
154
|
+
openrouter: 'OPENROUTER_API_KEY',
|
|
139
155
|
};
|
|
140
156
|
const envVar = envVarMap[provider];
|
|
141
157
|
if (envVar && process.env[envVar]) {
|
|
@@ -164,16 +180,33 @@ export function setApiKey(provider, key) {
|
|
|
164
180
|
*/
|
|
165
181
|
export function deleteApiKey(provider) {
|
|
166
182
|
const credentials = loadCredentials();
|
|
167
|
-
// Remove the key by setting to undefined
|
|
183
|
+
// Remove the key by setting to undefined
|
|
184
|
+
// Ollama doesn't have a key to delete
|
|
168
185
|
if (provider === 'anthropic') {
|
|
169
|
-
|
|
186
|
+
credentials.anthropic = undefined;
|
|
170
187
|
}
|
|
171
188
|
else if (provider === 'openai') {
|
|
172
|
-
|
|
189
|
+
credentials.openai = undefined;
|
|
173
190
|
}
|
|
174
191
|
else if (provider === 'google') {
|
|
175
|
-
|
|
192
|
+
credentials.google = undefined;
|
|
193
|
+
}
|
|
194
|
+
else if (provider === 'together') {
|
|
195
|
+
credentials.together = undefined;
|
|
196
|
+
}
|
|
197
|
+
else if (provider === 'groq') {
|
|
198
|
+
credentials.groq = undefined;
|
|
199
|
+
}
|
|
200
|
+
else if (provider === 'fireworks') {
|
|
201
|
+
credentials.fireworks = undefined;
|
|
202
|
+
}
|
|
203
|
+
else if (provider === 'perplexity') {
|
|
204
|
+
credentials.perplexity = undefined;
|
|
176
205
|
}
|
|
206
|
+
else if (provider === 'openrouter') {
|
|
207
|
+
credentials.openrouter = undefined;
|
|
208
|
+
}
|
|
209
|
+
// Note: ollama doesn't have a key to delete
|
|
177
210
|
saveCredentials(credentials);
|
|
178
211
|
}
|
|
179
212
|
/**
|
|
@@ -205,6 +238,11 @@ export function isKeyFromEnv(provider) {
|
|
|
205
238
|
openai: 'OPENAI_API_KEY',
|
|
206
239
|
google: 'GOOGLE_API_KEY',
|
|
207
240
|
ollama: '',
|
|
241
|
+
together: 'TOGETHER_API_KEY',
|
|
242
|
+
groq: 'GROQ_API_KEY',
|
|
243
|
+
fireworks: 'FIREWORKS_API_KEY',
|
|
244
|
+
perplexity: 'PERPLEXITY_API_KEY',
|
|
245
|
+
openrouter: 'OPENROUTER_API_KEY',
|
|
208
246
|
};
|
|
209
247
|
const envVar = envVarMap[provider];
|
|
210
248
|
return !!(envVar && process.env[envVar]);
|
|
@@ -214,6 +252,7 @@ export function isKeyFromEnv(provider) {
|
|
|
214
252
|
*/
|
|
215
253
|
export function getAllProviderStatuses() {
|
|
216
254
|
return [
|
|
255
|
+
// Primary providers (main tabs)
|
|
217
256
|
{
|
|
218
257
|
provider: 'anthropic',
|
|
219
258
|
name: 'Anthropic (Claude)',
|
|
@@ -221,6 +260,7 @@ export function getAllProviderStatuses() {
|
|
|
221
260
|
masked: getMaskedKey('anthropic'),
|
|
222
261
|
fromEnv: isKeyFromEnv('anthropic'),
|
|
223
262
|
keyUrl: 'https://console.anthropic.com/settings/keys',
|
|
263
|
+
category: 'primary',
|
|
224
264
|
},
|
|
225
265
|
{
|
|
226
266
|
provider: 'openai',
|
|
@@ -229,6 +269,7 @@ export function getAllProviderStatuses() {
|
|
|
229
269
|
masked: getMaskedKey('openai'),
|
|
230
270
|
fromEnv: isKeyFromEnv('openai'),
|
|
231
271
|
keyUrl: 'https://platform.openai.com/api-keys',
|
|
272
|
+
category: 'primary',
|
|
232
273
|
},
|
|
233
274
|
{
|
|
234
275
|
provider: 'google',
|
|
@@ -237,7 +278,9 @@ export function getAllProviderStatuses() {
|
|
|
237
278
|
masked: getMaskedKey('google'),
|
|
238
279
|
fromEnv: isKeyFromEnv('google'),
|
|
239
280
|
keyUrl: 'https://aistudio.google.com/apikey',
|
|
281
|
+
category: 'primary',
|
|
240
282
|
},
|
|
283
|
+
// Local provider
|
|
241
284
|
{
|
|
242
285
|
provider: 'ollama',
|
|
243
286
|
name: 'Ollama (Local)',
|
|
@@ -245,9 +288,67 @@ export function getAllProviderStatuses() {
|
|
|
245
288
|
masked: 'local',
|
|
246
289
|
fromEnv: false,
|
|
247
290
|
keyUrl: 'https://ollama.ai',
|
|
291
|
+
category: 'local',
|
|
292
|
+
},
|
|
293
|
+
// "Others" providers (OpenAI-compatible cloud APIs)
|
|
294
|
+
{
|
|
295
|
+
provider: 'together',
|
|
296
|
+
name: 'Together AI',
|
|
297
|
+
hasKey: hasApiKey('together'),
|
|
298
|
+
masked: getMaskedKey('together'),
|
|
299
|
+
fromEnv: isKeyFromEnv('together'),
|
|
300
|
+
keyUrl: 'https://api.together.xyz/settings/api-keys',
|
|
301
|
+
category: 'others',
|
|
302
|
+
endpoint: 'https://api.together.xyz/v1',
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
provider: 'groq',
|
|
306
|
+
name: 'Groq',
|
|
307
|
+
hasKey: hasApiKey('groq'),
|
|
308
|
+
masked: getMaskedKey('groq'),
|
|
309
|
+
fromEnv: isKeyFromEnv('groq'),
|
|
310
|
+
keyUrl: 'https://console.groq.com/keys',
|
|
311
|
+
category: 'others',
|
|
312
|
+
endpoint: 'https://api.groq.com/openai/v1',
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
provider: 'fireworks',
|
|
316
|
+
name: 'Fireworks AI',
|
|
317
|
+
hasKey: hasApiKey('fireworks'),
|
|
318
|
+
masked: getMaskedKey('fireworks'),
|
|
319
|
+
fromEnv: isKeyFromEnv('fireworks'),
|
|
320
|
+
keyUrl: 'https://fireworks.ai/account/api-keys',
|
|
321
|
+
category: 'others',
|
|
322
|
+
endpoint: 'https://api.fireworks.ai/inference/v1',
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
provider: 'perplexity',
|
|
326
|
+
name: 'Perplexity',
|
|
327
|
+
hasKey: hasApiKey('perplexity'),
|
|
328
|
+
masked: getMaskedKey('perplexity'),
|
|
329
|
+
fromEnv: isKeyFromEnv('perplexity'),
|
|
330
|
+
keyUrl: 'https://www.perplexity.ai/settings/api',
|
|
331
|
+
category: 'others',
|
|
332
|
+
endpoint: 'https://api.perplexity.ai',
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
provider: 'openrouter',
|
|
336
|
+
name: 'OpenRouter',
|
|
337
|
+
hasKey: hasApiKey('openrouter'),
|
|
338
|
+
masked: getMaskedKey('openrouter'),
|
|
339
|
+
fromEnv: isKeyFromEnv('openrouter'),
|
|
340
|
+
keyUrl: 'https://openrouter.ai/keys',
|
|
341
|
+
category: 'others',
|
|
342
|
+
endpoint: 'https://openrouter.ai/api/v1',
|
|
248
343
|
},
|
|
249
344
|
];
|
|
250
345
|
}
|
|
346
|
+
/**
|
|
347
|
+
* Get provider statuses filtered by category
|
|
348
|
+
*/
|
|
349
|
+
export function getProvidersByCategory(category) {
|
|
350
|
+
return getAllProviderStatuses().filter(p => p.category === category);
|
|
351
|
+
}
|
|
251
352
|
/**
|
|
252
353
|
* Map provider type from settings to credential provider key
|
|
253
354
|
*/
|
|
@@ -261,6 +362,19 @@ export function settingsProviderToCredentialKey(provider) {
|
|
|
261
362
|
return 'openai';
|
|
262
363
|
case 'ollama':
|
|
263
364
|
return 'ollama';
|
|
365
|
+
case 'together':
|
|
366
|
+
return 'together';
|
|
367
|
+
case 'groq':
|
|
368
|
+
return 'groq';
|
|
369
|
+
case 'fireworks':
|
|
370
|
+
return 'fireworks';
|
|
371
|
+
case 'perplexity':
|
|
372
|
+
return 'perplexity';
|
|
373
|
+
case 'openrouter':
|
|
374
|
+
return 'openrouter';
|
|
375
|
+
case 'custom':
|
|
376
|
+
// Custom provider might use any key; default to openai (most common format)
|
|
377
|
+
return 'openai';
|
|
264
378
|
case 'auto':
|
|
265
379
|
default:
|
|
266
380
|
return 'anthropic'; // Default to anthropic for auto
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Logger
|
|
3
|
+
*
|
|
4
|
+
* Writes timestamped logs to a file for debugging timing issues.
|
|
5
|
+
* Usage: import { debugLog } from './utils/debug-log.js';
|
|
6
|
+
* debugLog('event-name', 'description');
|
|
7
|
+
*
|
|
8
|
+
* For rendering debug: set DEBUG_RENDERING=1 environment variable
|
|
9
|
+
* Usage: DEBUG_RENDERING=1 compilr
|
|
10
|
+
* Then: tail -f /tmp/compilr-debug.log
|
|
11
|
+
*/
|
|
12
|
+
export declare const DEBUG_RENDERING: boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Log a debug message with timestamp
|
|
15
|
+
*/
|
|
16
|
+
export declare function debugLog(event: string, details?: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* Clear the log file
|
|
19
|
+
*/
|
|
20
|
+
export declare function clearDebugLog(): void;
|
|
21
|
+
/**
|
|
22
|
+
* Get the log file path
|
|
23
|
+
*/
|
|
24
|
+
export declare function getDebugLogPath(): string;
|
|
25
|
+
/**
|
|
26
|
+
* Log rendering-specific debug info (only if DEBUG_RENDERING=1)
|
|
27
|
+
*/
|
|
28
|
+
export declare function debugRender(component: string, details: string): void;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debug Logger
|
|
3
|
+
*
|
|
4
|
+
* Writes timestamped logs to a file for debugging timing issues.
|
|
5
|
+
* Usage: import { debugLog } from './utils/debug-log.js';
|
|
6
|
+
* debugLog('event-name', 'description');
|
|
7
|
+
*
|
|
8
|
+
* For rendering debug: set DEBUG_RENDERING=1 environment variable
|
|
9
|
+
* Usage: DEBUG_RENDERING=1 compilr
|
|
10
|
+
* Then: tail -f /tmp/compilr-debug.log
|
|
11
|
+
*/
|
|
12
|
+
import fs from 'node:fs';
|
|
13
|
+
import path from 'node:path';
|
|
14
|
+
import os from 'node:os';
|
|
15
|
+
const LOG_FILE = path.join(os.tmpdir(), 'compilr-debug.log');
|
|
16
|
+
const startTime = Date.now();
|
|
17
|
+
// Check if rendering debug is enabled via environment variable
|
|
18
|
+
export const DEBUG_RENDERING = process.env['DEBUG_RENDERING'] === '1';
|
|
19
|
+
/**
|
|
20
|
+
* Log a debug message with timestamp
|
|
21
|
+
*/
|
|
22
|
+
export function debugLog(event, details) {
|
|
23
|
+
const elapsed = Date.now() - startTime;
|
|
24
|
+
const timestamp = new Date().toISOString();
|
|
25
|
+
const line = `[${timestamp}] +${String(elapsed)}ms | ${event}${details ? ` | ${details}` : ''}\n`;
|
|
26
|
+
try {
|
|
27
|
+
fs.appendFileSync(LOG_FILE, line);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Ignore errors
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Clear the log file
|
|
35
|
+
*/
|
|
36
|
+
export function clearDebugLog() {
|
|
37
|
+
try {
|
|
38
|
+
fs.writeFileSync(LOG_FILE, `=== Debug Log Started ${new Date().toISOString()} ===\n`);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Ignore errors
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the log file path
|
|
46
|
+
*/
|
|
47
|
+
export function getDebugLogPath() {
|
|
48
|
+
return LOG_FILE;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Log rendering-specific debug info (only if DEBUG_RENDERING=1)
|
|
52
|
+
*/
|
|
53
|
+
export function debugRender(component, details) {
|
|
54
|
+
if (!DEBUG_RENDERING)
|
|
55
|
+
return;
|
|
56
|
+
debugLog(`[RENDER:${component}]`, details);
|
|
57
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format Tokens Utility
|
|
3
|
+
*
|
|
4
|
+
* Extracted from ui/base/render-utils.ts so foundation-layer code
|
|
5
|
+
* (token-tracker) can use it without importing from the domain layer.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Format a token count in a human-readable way.
|
|
9
|
+
*
|
|
10
|
+
* @param tokens - Number of tokens
|
|
11
|
+
* @returns Formatted string (e.g., "1.5k" for 1500)
|
|
12
|
+
*/
|
|
13
|
+
export declare function formatTokens(tokens: number): string;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format Tokens Utility
|
|
3
|
+
*
|
|
4
|
+
* Extracted from ui/base/render-utils.ts so foundation-layer code
|
|
5
|
+
* (token-tracker) can use it without importing from the domain layer.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Format a token count in a human-readable way.
|
|
9
|
+
*
|
|
10
|
+
* @param tokens - Number of tokens
|
|
11
|
+
* @returns Formatted string (e.g., "1.5k" for 1500)
|
|
12
|
+
*/
|
|
13
|
+
export function formatTokens(tokens) {
|
|
14
|
+
if (tokens >= 1000) {
|
|
15
|
+
return `${(tokens / 1000).toFixed(1)}k`;
|
|
16
|
+
}
|
|
17
|
+
return String(tokens);
|
|
18
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Config Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared helpers for reading/writing git global config values.
|
|
5
|
+
* Used by onboarding wizard and new project overlay.
|
|
6
|
+
*/
|
|
7
|
+
export interface GitConfig {
|
|
8
|
+
userName: string | null;
|
|
9
|
+
userEmail: string | null;
|
|
10
|
+
hasName: boolean;
|
|
11
|
+
hasEmail: boolean;
|
|
12
|
+
/** True when both user.name and user.email are set */
|
|
13
|
+
isConfigured: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Get a single git global config value, returns null if not set.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getGitConfigValue(key: string): string | null;
|
|
19
|
+
/**
|
|
20
|
+
* Set a git global config value. Returns true on success.
|
|
21
|
+
*/
|
|
22
|
+
export declare function setGitConfigValue(key: string, value: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Check git user.name and user.email configuration status.
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkGitConfig(): GitConfig;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Config Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared helpers for reading/writing git global config values.
|
|
5
|
+
* Used by onboarding wizard and new project overlay.
|
|
6
|
+
*/
|
|
7
|
+
import { execSync } from 'child_process';
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Functions
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Get a single git global config value, returns null if not set.
|
|
13
|
+
*/
|
|
14
|
+
export function getGitConfigValue(key) {
|
|
15
|
+
try {
|
|
16
|
+
const value = execSync(`git config --global ${key}`, {
|
|
17
|
+
encoding: 'utf-8',
|
|
18
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
19
|
+
}).trim();
|
|
20
|
+
return value || null;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Set a git global config value. Returns true on success.
|
|
28
|
+
*/
|
|
29
|
+
export function setGitConfigValue(key, value) {
|
|
30
|
+
try {
|
|
31
|
+
execSync(`git config --global ${key} "${value.replace(/"/g, '\\"')}"`, {
|
|
32
|
+
encoding: 'utf-8',
|
|
33
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
34
|
+
});
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check git user.name and user.email configuration status.
|
|
43
|
+
*/
|
|
44
|
+
export function checkGitConfig() {
|
|
45
|
+
const userName = getGitConfigValue('user.name');
|
|
46
|
+
const userEmail = getGitConfigValue('user.email');
|
|
47
|
+
return {
|
|
48
|
+
userName,
|
|
49
|
+
userEmail,
|
|
50
|
+
hasName: Boolean(userName),
|
|
51
|
+
hasEmail: Boolean(userEmail),
|
|
52
|
+
isConfigured: Boolean(userName && userEmail),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for message manipulation across the codebase.
|
|
5
|
+
* This is the single source of truth for message transformation functions.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Minimal interface for content blocks with a type property.
|
|
9
|
+
* This is structurally compatible with any type that has a 'type' field.
|
|
10
|
+
*/
|
|
11
|
+
interface TypedBlock {
|
|
12
|
+
type: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Strip thinking blocks from messages.
|
|
16
|
+
*
|
|
17
|
+
* Thinking blocks contain provider-specific signatures (e.g., Gemini's thought_signature)
|
|
18
|
+
* that don't transfer between sessions or when switching projects/models.
|
|
19
|
+
* This function removes them while preserving all other content blocks.
|
|
20
|
+
*
|
|
21
|
+
* Uses structural typing - works with any message that has a 'content' property
|
|
22
|
+
* that is either a string or an array of objects with 'type' fields.
|
|
23
|
+
*
|
|
24
|
+
* @param messages - Array of messages to process
|
|
25
|
+
* @returns New array with thinking blocks removed from each message
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```ts
|
|
29
|
+
* const cleanedMessages = stripThinkingBlocks(session.messages);
|
|
30
|
+
* await agent.setHistory(cleanedMessages);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function stripThinkingBlocks<T extends {
|
|
34
|
+
content: string | TypedBlock[];
|
|
35
|
+
}>(messages: T[]): T[];
|
|
36
|
+
/**
|
|
37
|
+
* Message interface for text extraction functions.
|
|
38
|
+
*/
|
|
39
|
+
interface MessageForTextExtraction {
|
|
40
|
+
content: string | (TypedBlock & {
|
|
41
|
+
text?: string;
|
|
42
|
+
})[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extract text content from a message.
|
|
46
|
+
*
|
|
47
|
+
* Handles both string content and array content with text blocks.
|
|
48
|
+
*
|
|
49
|
+
* @param msg - Message to extract text from
|
|
50
|
+
* @returns The text content, or empty string if not found
|
|
51
|
+
*/
|
|
52
|
+
export declare function getMessageText(msg: MessageForTextExtraction): string;
|
|
53
|
+
/**
|
|
54
|
+
* Create a truncated preview of message text.
|
|
55
|
+
*
|
|
56
|
+
* @param msg - Message to preview
|
|
57
|
+
* @param maxLength - Maximum length of preview (default: 60)
|
|
58
|
+
* @returns Truncated text with ellipsis if needed
|
|
59
|
+
*/
|
|
60
|
+
export declare function getMessagePreview(msg: MessageForTextExtraction, maxLength?: number): string;
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message Utilities
|
|
3
|
+
*
|
|
4
|
+
* Shared utilities for message manipulation across the codebase.
|
|
5
|
+
* This is the single source of truth for message transformation functions.
|
|
6
|
+
*/
|
|
7
|
+
import { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
|
|
8
|
+
/**
|
|
9
|
+
* Strip thinking blocks from messages.
|
|
10
|
+
*
|
|
11
|
+
* Thinking blocks contain provider-specific signatures (e.g., Gemini's thought_signature)
|
|
12
|
+
* that don't transfer between sessions or when switching projects/models.
|
|
13
|
+
* This function removes them while preserving all other content blocks.
|
|
14
|
+
*
|
|
15
|
+
* Uses structural typing - works with any message that has a 'content' property
|
|
16
|
+
* that is either a string or an array of objects with 'type' fields.
|
|
17
|
+
*
|
|
18
|
+
* @param messages - Array of messages to process
|
|
19
|
+
* @returns New array with thinking blocks removed from each message
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```ts
|
|
23
|
+
* const cleanedMessages = stripThinkingBlocks(session.messages);
|
|
24
|
+
* await agent.setHistory(cleanedMessages);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function stripThinkingBlocks(messages) {
|
|
28
|
+
return messages.map((msg) => {
|
|
29
|
+
// String content - no thinking blocks to strip
|
|
30
|
+
if (typeof msg.content === 'string') {
|
|
31
|
+
return msg;
|
|
32
|
+
}
|
|
33
|
+
// Array content - filter out thinking blocks
|
|
34
|
+
return {
|
|
35
|
+
...msg,
|
|
36
|
+
content: msg.content.filter((block) => block.type !== 'thinking'),
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Extract text content from a message.
|
|
42
|
+
*
|
|
43
|
+
* Handles both string content and array content with text blocks.
|
|
44
|
+
*
|
|
45
|
+
* @param msg - Message to extract text from
|
|
46
|
+
* @returns The text content, or empty string if not found
|
|
47
|
+
*/
|
|
48
|
+
export function getMessageText(msg) {
|
|
49
|
+
if (typeof msg.content === 'string') {
|
|
50
|
+
return msg.content;
|
|
51
|
+
}
|
|
52
|
+
// Find the first text block
|
|
53
|
+
const textBlock = msg.content.find((b) => b.type === 'text');
|
|
54
|
+
if (textBlock && typeof textBlock.text === 'string') {
|
|
55
|
+
return textBlock.text;
|
|
56
|
+
}
|
|
57
|
+
return '';
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Create a truncated preview of message text.
|
|
61
|
+
*
|
|
62
|
+
* @param msg - Message to preview
|
|
63
|
+
* @param maxLength - Maximum length of preview (default: 60)
|
|
64
|
+
* @returns Truncated text with ellipsis if needed
|
|
65
|
+
*/
|
|
66
|
+
export function getMessagePreview(msg, maxLength = 60) {
|
|
67
|
+
const text = getMessageText(msg);
|
|
68
|
+
if (text.length <= maxLength) {
|
|
69
|
+
return text;
|
|
70
|
+
}
|
|
71
|
+
return truncate(text, maxLength);
|
|
72
|
+
}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Model Tier Detection
|
|
2
|
+
* Model Tier Detection (Capability Tiers)
|
|
3
3
|
*
|
|
4
4
|
* Categorizes LLM models by capability tier (small/medium/large)
|
|
5
5
|
* and provides upgrade suggestions within the same provider.
|
|
6
6
|
*
|
|
7
7
|
* Used by commands like /design to warn users about model limitations
|
|
8
8
|
* and suggest alternatives.
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This is SEPARATE from the model registry in src/models/model-registry.ts.
|
|
11
|
+
* - Registry: Model metadata, selection UI, speed tiers (fast/balanced/powerful)
|
|
12
|
+
* - This file: Command capability requirements (small/medium/large)
|
|
13
|
+
*
|
|
14
|
+
* When adding new models to the registry, also update this file if the model
|
|
15
|
+
* should be recognized for capability tier detection.
|
|
9
16
|
*/
|
|
10
17
|
export type TierLevel = 'small' | 'medium' | 'large';
|
|
11
18
|
export interface ModelTier {
|