@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
|
@@ -1,48 +1,69 @@
|
|
|
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
|
// =============================================================================
|
|
11
18
|
// Model Tier Mappings
|
|
12
19
|
// =============================================================================
|
|
13
20
|
const MODEL_TIERS = {
|
|
14
|
-
// Claude (Anthropic)
|
|
21
|
+
// Claude (Anthropic) - 4.5 series (current)
|
|
22
|
+
'claude-opus-4-5': { tier: 'large', provider: 'anthropic' },
|
|
23
|
+
'claude-sonnet-4-5': { tier: 'large', provider: 'anthropic' },
|
|
24
|
+
'claude-haiku-4-5': { tier: 'medium', provider: 'anthropic', suggestedUpgrade: 'claude-sonnet-4-5-20250929' },
|
|
25
|
+
// Claude legacy (for backward compatibility)
|
|
15
26
|
'claude-3-opus': { tier: 'large', provider: 'anthropic' },
|
|
16
27
|
'claude-opus-4': { tier: 'large', provider: 'anthropic' },
|
|
17
28
|
'claude-sonnet-4': { tier: 'large', provider: 'anthropic' },
|
|
18
29
|
'claude-3-5-sonnet': { tier: 'large', provider: 'anthropic' },
|
|
19
|
-
'claude-3-
|
|
20
|
-
'claude-3-
|
|
21
|
-
|
|
22
|
-
|
|
30
|
+
'claude-3-5-haiku': { tier: 'medium', provider: 'anthropic', suggestedUpgrade: 'claude-sonnet-4-5-20250929' },
|
|
31
|
+
'claude-3-haiku': { tier: 'medium', provider: 'anthropic', suggestedUpgrade: 'claude-sonnet-4-5-20250929' },
|
|
32
|
+
// OpenAI - GPT-5 series (current)
|
|
33
|
+
'gpt-5.2': { tier: 'large', provider: 'openai' },
|
|
34
|
+
'gpt-5-mini': { tier: 'large', provider: 'openai' },
|
|
35
|
+
'gpt-5-nano': { tier: 'medium', provider: 'openai', suggestedUpgrade: 'gpt-5-mini-2025-08-07' },
|
|
36
|
+
// OpenAI legacy (for backward compatibility)
|
|
23
37
|
'gpt-4o': { tier: 'large', provider: 'openai' },
|
|
24
38
|
'gpt-4-turbo': { tier: 'large', provider: 'openai' },
|
|
25
39
|
'gpt-4': { tier: 'large', provider: 'openai' },
|
|
26
|
-
'gpt-4o-mini': { tier: 'medium', provider: 'openai', suggestedUpgrade: 'gpt-
|
|
27
|
-
'gpt-3.5-turbo': { tier: 'small', provider: 'openai', suggestedUpgrade: 'gpt-
|
|
40
|
+
'gpt-4o-mini': { tier: 'medium', provider: 'openai', suggestedUpgrade: 'gpt-5-mini-2025-08-07' },
|
|
41
|
+
'gpt-3.5-turbo': { tier: 'small', provider: 'openai', suggestedUpgrade: 'gpt-5-nano-2025-08-07' },
|
|
28
42
|
'o1': { tier: 'large', provider: 'openai' },
|
|
29
43
|
'o1-mini': { tier: 'medium', provider: 'openai', suggestedUpgrade: 'o1' },
|
|
30
|
-
'
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
'gemini-
|
|
44
|
+
'o3': { tier: 'large', provider: 'openai' },
|
|
45
|
+
'o4-mini': { tier: 'medium', provider: 'openai', suggestedUpgrade: 'o3' },
|
|
46
|
+
// Google (Gemini) - 3.x series (current)
|
|
47
|
+
'gemini-3-pro': { tier: 'large', provider: 'google' },
|
|
48
|
+
'gemini-3-flash': { tier: 'large', provider: 'google' },
|
|
49
|
+
'gemini-2.5-flash-lite': { tier: 'medium', provider: 'google', suggestedUpgrade: 'gemini-3-flash-preview' },
|
|
50
|
+
// Gemini legacy (for backward compatibility)
|
|
34
51
|
'gemini-2.5-pro': { tier: 'large', provider: 'google' },
|
|
35
|
-
'gemini-2.5-flash': { tier: 'medium', provider: 'google', suggestedUpgrade: 'gemini-
|
|
36
|
-
'gemini-
|
|
37
|
-
'gemini-
|
|
52
|
+
'gemini-2.5-flash': { tier: 'medium', provider: 'google', suggestedUpgrade: 'gemini-3-flash-preview' },
|
|
53
|
+
'gemini-2.0-flash': { tier: 'large', provider: 'google' },
|
|
54
|
+
'gemini-1.5-pro': { tier: 'large', provider: 'google' },
|
|
55
|
+
'gemini-1.5-flash': { tier: 'medium', provider: 'google', suggestedUpgrade: 'gemini-3-flash-preview' },
|
|
38
56
|
// Ollama / Local models (common ones)
|
|
39
|
-
'llama3.2': { tier: 'small', provider: 'ollama', suggestedUpgrade: 'llama3.
|
|
57
|
+
'llama3.2:8b': { tier: 'small', provider: 'ollama', suggestedUpgrade: 'llama3.2:70b' },
|
|
58
|
+
'llama3.2:70b': { tier: 'large', provider: 'ollama' },
|
|
59
|
+
'llama3.2': { tier: 'small', provider: 'ollama', suggestedUpgrade: 'llama3.2:70b' },
|
|
40
60
|
'llama3.1': { tier: 'medium', provider: 'ollama', suggestedUpgrade: 'llama3.1:70b' },
|
|
41
61
|
'llama3.1:70b': { tier: 'large', provider: 'ollama' },
|
|
42
62
|
'mistral': { tier: 'small', provider: 'ollama' },
|
|
43
63
|
'mixtral': { tier: 'medium', provider: 'ollama' },
|
|
44
64
|
'codellama': { tier: 'medium', provider: 'ollama' },
|
|
45
65
|
'deepseek-coder': { tier: 'medium', provider: 'ollama' },
|
|
66
|
+
'deepseek-coder:33b': { tier: 'large', provider: 'ollama' },
|
|
46
67
|
'qwen2.5-coder': { tier: 'medium', provider: 'ollama' },
|
|
47
68
|
};
|
|
48
69
|
// =============================================================================
|
|
@@ -78,10 +99,11 @@ export function getCommandMinTier(command) {
|
|
|
78
99
|
'/design': 'large',
|
|
79
100
|
'/refine': 'large',
|
|
80
101
|
'/arch': 'large',
|
|
102
|
+
'/scaffold': 'large',
|
|
81
103
|
'/build': 'medium',
|
|
82
104
|
'/prd': 'medium',
|
|
83
105
|
'/sketch': 'small', // Simplified version - works with any model
|
|
84
|
-
'/
|
|
106
|
+
'/new': 'small',
|
|
85
107
|
'/backlog': 'small',
|
|
86
108
|
'/note': 'small',
|
|
87
109
|
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Open a URL in the default browser.
|
|
3
|
+
* Returns true if browser was opened successfully.
|
|
4
|
+
*/
|
|
5
|
+
import { exec } from 'child_process';
|
|
6
|
+
import * as os from 'os';
|
|
7
|
+
export function openBrowser(url) {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
const platform = os.platform();
|
|
10
|
+
let cmd;
|
|
11
|
+
switch (platform) {
|
|
12
|
+
case 'darwin':
|
|
13
|
+
cmd = `open "${url}"`;
|
|
14
|
+
break;
|
|
15
|
+
case 'win32':
|
|
16
|
+
cmd = `start "" "${url}"`;
|
|
17
|
+
break;
|
|
18
|
+
default:
|
|
19
|
+
// Linux and others
|
|
20
|
+
cmd = `xdg-open "${url}"`;
|
|
21
|
+
break;
|
|
22
|
+
}
|
|
23
|
+
exec(cmd, (error) => {
|
|
24
|
+
if (error) {
|
|
25
|
+
resolve(false);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
resolve(true);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Safety Utilities
|
|
3
|
+
*
|
|
4
|
+
* Safety validation for file operations, especially deletion.
|
|
5
|
+
* Prevents accidental deletion of system directories or unrelated folders.
|
|
6
|
+
*/
|
|
7
|
+
export interface DeleteValidation {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
reason?: string;
|
|
10
|
+
warnings?: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface CwdValidation {
|
|
13
|
+
matches: boolean;
|
|
14
|
+
projectPath: string;
|
|
15
|
+
cwd: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Validate a path is safe to delete
|
|
19
|
+
*
|
|
20
|
+
* @param projectPath - The path to validate for deletion
|
|
21
|
+
* @returns Validation result with valid flag, optional reason, and warnings
|
|
22
|
+
*/
|
|
23
|
+
export declare function validateDeletePath(projectPath: string): DeleteValidation;
|
|
24
|
+
/**
|
|
25
|
+
* Validate active project matches current working directory
|
|
26
|
+
*
|
|
27
|
+
* @param project - Project with path property
|
|
28
|
+
* @returns Validation result with matches flag and paths
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateProjectCwd(project: {
|
|
31
|
+
path: string;
|
|
32
|
+
}): CwdValidation;
|
|
33
|
+
/**
|
|
34
|
+
* Check if CWD validation warning should be shown
|
|
35
|
+
*/
|
|
36
|
+
export declare function shouldWarnCwdMismatch(project: {
|
|
37
|
+
path: string;
|
|
38
|
+
}): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Format a CWD mismatch warning message
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatCwdMismatchWarning(project: {
|
|
43
|
+
path: string;
|
|
44
|
+
}): string[];
|
|
45
|
+
/**
|
|
46
|
+
* Format delete validation result for display
|
|
47
|
+
*/
|
|
48
|
+
export declare function formatDeleteValidation(validation: DeleteValidation, projectPath: string): string[];
|
|
49
|
+
/**
|
|
50
|
+
* Check if a path is within the projects directory
|
|
51
|
+
*/
|
|
52
|
+
export declare function isWithinProjectsDir(targetPath: string): boolean;
|
|
53
|
+
/**
|
|
54
|
+
* Get a safe display path (truncated if too long)
|
|
55
|
+
*/
|
|
56
|
+
export declare function getSafeDisplayPath(targetPath: string, maxLength?: number): string;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Safety Utilities
|
|
3
|
+
*
|
|
4
|
+
* Safety validation for file operations, especially deletion.
|
|
5
|
+
* Prevents accidental deletion of system directories or unrelated folders.
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as os from 'os';
|
|
10
|
+
import { getAllowedDeletePaths, isDeleteProtectionEnabled, isProjectMatchRequired } from '../settings/paths.js';
|
|
11
|
+
import { truncatePlain as truncate } from '@compilr-dev/ui-core/utils';
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Dangerous Paths
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Get list of dangerous system paths that should never be deleted
|
|
17
|
+
*/
|
|
18
|
+
function getDangerousPaths() {
|
|
19
|
+
const home = os.homedir();
|
|
20
|
+
return [
|
|
21
|
+
home, // Home directory itself
|
|
22
|
+
'/', // Root
|
|
23
|
+
'/usr',
|
|
24
|
+
'/bin',
|
|
25
|
+
'/sbin',
|
|
26
|
+
'/lib',
|
|
27
|
+
'/lib64',
|
|
28
|
+
'/opt',
|
|
29
|
+
'/etc',
|
|
30
|
+
'/var',
|
|
31
|
+
'/tmp',
|
|
32
|
+
'/dev',
|
|
33
|
+
'/proc',
|
|
34
|
+
'/sys',
|
|
35
|
+
'/boot',
|
|
36
|
+
'/root',
|
|
37
|
+
'/home', // Parent of all home directories
|
|
38
|
+
// macOS specific
|
|
39
|
+
'/System',
|
|
40
|
+
'/Library',
|
|
41
|
+
'/Applications',
|
|
42
|
+
'/Users',
|
|
43
|
+
'/Volumes',
|
|
44
|
+
'/private',
|
|
45
|
+
'/cores',
|
|
46
|
+
// Windows specific (when running under WSL or similar)
|
|
47
|
+
'/mnt/c',
|
|
48
|
+
'/mnt/c/Windows',
|
|
49
|
+
'/mnt/c/Program Files',
|
|
50
|
+
'/mnt/c/Program Files (x86)',
|
|
51
|
+
'/mnt/c/Users',
|
|
52
|
+
// Common temp directories
|
|
53
|
+
os.tmpdir(),
|
|
54
|
+
path.join(home, 'Desktop'),
|
|
55
|
+
path.join(home, 'Documents'),
|
|
56
|
+
path.join(home, 'Downloads'),
|
|
57
|
+
path.join(home, 'Pictures'),
|
|
58
|
+
path.join(home, 'Videos'),
|
|
59
|
+
path.join(home, 'Music'),
|
|
60
|
+
// CLI data directory should not be deleted via project delete
|
|
61
|
+
path.join(home, '.compilr-dev'),
|
|
62
|
+
];
|
|
63
|
+
}
|
|
64
|
+
// =============================================================================
|
|
65
|
+
// Validation Functions
|
|
66
|
+
// =============================================================================
|
|
67
|
+
/**
|
|
68
|
+
* Validate a path is safe to delete
|
|
69
|
+
*
|
|
70
|
+
* @param projectPath - The path to validate for deletion
|
|
71
|
+
* @returns Validation result with valid flag, optional reason, and warnings
|
|
72
|
+
*/
|
|
73
|
+
export function validateDeletePath(projectPath) {
|
|
74
|
+
const resolved = path.resolve(projectPath);
|
|
75
|
+
const warnings = [];
|
|
76
|
+
// 1. Path must be absolute (after resolve, it always is)
|
|
77
|
+
if (!path.isAbsolute(resolved)) {
|
|
78
|
+
return { valid: false, reason: 'Project path must be absolute' };
|
|
79
|
+
}
|
|
80
|
+
// 2. Check if path exists (OK to proceed if it doesn't - just skip file deletion)
|
|
81
|
+
if (!fs.existsSync(resolved)) {
|
|
82
|
+
return { valid: true, warnings: ['Path does not exist, skipping file deletion'] };
|
|
83
|
+
}
|
|
84
|
+
// 3. Prevent dangerous system paths
|
|
85
|
+
const dangerousPaths = getDangerousPaths();
|
|
86
|
+
for (const dangerous of dangerousPaths) {
|
|
87
|
+
const resolvedDangerous = path.resolve(dangerous);
|
|
88
|
+
if (resolved === resolvedDangerous) {
|
|
89
|
+
return {
|
|
90
|
+
valid: false,
|
|
91
|
+
reason: `Cannot delete system directory: ${resolved}`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// 4. Check path is within allowed directories (if protection enabled)
|
|
96
|
+
if (isDeleteProtectionEnabled()) {
|
|
97
|
+
const allowedRoots = getAllowedDeletePaths();
|
|
98
|
+
const isWithinAllowed = allowedRoots.some((root) => {
|
|
99
|
+
const resolvedRoot = path.resolve(root);
|
|
100
|
+
return resolved.startsWith(resolvedRoot + path.sep) || resolved === resolvedRoot;
|
|
101
|
+
});
|
|
102
|
+
if (!isWithinAllowed) {
|
|
103
|
+
return {
|
|
104
|
+
valid: false,
|
|
105
|
+
reason: `Path is outside allowed directories. Configure allowedPaths in /config if needed.`,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// 5. Check for project markers (.compilr, .git, package.json)
|
|
110
|
+
const hasCompilrMarker = fs.existsSync(path.join(resolved, '.compilr'));
|
|
111
|
+
const hasGit = fs.existsSync(path.join(resolved, '.git'));
|
|
112
|
+
const hasPackageJson = fs.existsSync(path.join(resolved, 'package.json'));
|
|
113
|
+
const hasPyprojectToml = fs.existsSync(path.join(resolved, 'pyproject.toml'));
|
|
114
|
+
const hasCargoToml = fs.existsSync(path.join(resolved, 'Cargo.toml'));
|
|
115
|
+
const hasGoMod = fs.existsSync(path.join(resolved, 'go.mod'));
|
|
116
|
+
const hasProjectMarker = hasCompilrMarker || hasGit || hasPackageJson || hasPyprojectToml || hasCargoToml || hasGoMod;
|
|
117
|
+
if (!hasProjectMarker) {
|
|
118
|
+
warnings.push('Directory has no project markers (.compilr, .git, package.json, etc.)');
|
|
119
|
+
}
|
|
120
|
+
// 6. Warn if path seems too short (e.g., /home/user/a)
|
|
121
|
+
const pathParts = resolved.split(path.sep).filter(Boolean);
|
|
122
|
+
if (pathParts.length < 3) {
|
|
123
|
+
warnings.push('Path seems unusually short - double check this is correct');
|
|
124
|
+
}
|
|
125
|
+
// 7. Warn if path is very deep (might indicate system path)
|
|
126
|
+
if (pathParts.length > 15) {
|
|
127
|
+
warnings.push('Path is very deep - verify this is the correct project');
|
|
128
|
+
}
|
|
129
|
+
// 8. Check if path is a parent of current working directory
|
|
130
|
+
const cwd = process.cwd();
|
|
131
|
+
if (cwd.startsWith(resolved + path.sep) || cwd === resolved) {
|
|
132
|
+
warnings.push('This path contains or is your current working directory');
|
|
133
|
+
}
|
|
134
|
+
return { valid: true, warnings };
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Validate active project matches current working directory
|
|
138
|
+
*
|
|
139
|
+
* @param project - Project with path property
|
|
140
|
+
* @returns Validation result with matches flag and paths
|
|
141
|
+
*/
|
|
142
|
+
export function validateProjectCwd(project) {
|
|
143
|
+
const cwd = process.cwd();
|
|
144
|
+
const projectPath = path.resolve(project.path);
|
|
145
|
+
// CWD should be within or equal to project path
|
|
146
|
+
const matches = cwd === projectPath || cwd.startsWith(projectPath + path.sep);
|
|
147
|
+
return { matches, projectPath, cwd };
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if CWD validation warning should be shown
|
|
151
|
+
*/
|
|
152
|
+
export function shouldWarnCwdMismatch(project) {
|
|
153
|
+
if (!isProjectMatchRequired()) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
const { matches } = validateProjectCwd(project);
|
|
157
|
+
return !matches;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Format a CWD mismatch warning message
|
|
161
|
+
*/
|
|
162
|
+
export function formatCwdMismatchWarning(project) {
|
|
163
|
+
const { projectPath, cwd } = validateProjectCwd(project);
|
|
164
|
+
return [
|
|
165
|
+
"Current directory doesn't match active project",
|
|
166
|
+
` Active project: ${projectPath}`,
|
|
167
|
+
` Current dir: ${cwd}`,
|
|
168
|
+
` Consider: cd ${projectPath}`,
|
|
169
|
+
];
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Format delete validation result for display
|
|
173
|
+
*/
|
|
174
|
+
export function formatDeleteValidation(validation, projectPath) {
|
|
175
|
+
const lines = [];
|
|
176
|
+
if (validation.valid) {
|
|
177
|
+
lines.push('Path is within allowed directory');
|
|
178
|
+
// Check for project markers
|
|
179
|
+
if (fs.existsSync(path.join(projectPath, '.compilr'))) {
|
|
180
|
+
lines.push('Project has .compilr marker');
|
|
181
|
+
}
|
|
182
|
+
else if (fs.existsSync(path.join(projectPath, '.git'))) {
|
|
183
|
+
lines.push('Project has .git repository');
|
|
184
|
+
}
|
|
185
|
+
else if (fs.existsSync(path.join(projectPath, 'package.json'))) {
|
|
186
|
+
lines.push('Project has package.json');
|
|
187
|
+
}
|
|
188
|
+
if (validation.warnings && validation.warnings.length > 0) {
|
|
189
|
+
lines.push('');
|
|
190
|
+
lines.push('Warnings:');
|
|
191
|
+
for (const warning of validation.warnings) {
|
|
192
|
+
lines.push(` - ${warning}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
lines.push(`Error: ${validation.reason || 'Unknown error'}`);
|
|
198
|
+
lines.push('');
|
|
199
|
+
lines.push('Allowed directories:');
|
|
200
|
+
for (const allowed of getAllowedDeletePaths()) {
|
|
201
|
+
lines.push(` - ${allowed}`);
|
|
202
|
+
}
|
|
203
|
+
lines.push('');
|
|
204
|
+
lines.push('Options:');
|
|
205
|
+
lines.push(' 1. Move the project to an allowed directory');
|
|
206
|
+
lines.push(' 2. Add path to allowedPaths in /config');
|
|
207
|
+
lines.push(' 3. Delete files manually and remove from database only');
|
|
208
|
+
}
|
|
209
|
+
return lines;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Check if a path is within the projects directory
|
|
213
|
+
*/
|
|
214
|
+
export function isWithinProjectsDir(targetPath) {
|
|
215
|
+
const allowedPaths = getAllowedDeletePaths();
|
|
216
|
+
const resolved = path.resolve(targetPath);
|
|
217
|
+
return allowedPaths.some((allowed) => {
|
|
218
|
+
const resolvedAllowed = path.resolve(allowed);
|
|
219
|
+
return resolved.startsWith(resolvedAllowed + path.sep) || resolved === resolvedAllowed;
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Get a safe display path (truncated if too long)
|
|
224
|
+
*/
|
|
225
|
+
export function getSafeDisplayPath(targetPath, maxLength = 50) {
|
|
226
|
+
if (targetPath.length <= maxLength) {
|
|
227
|
+
return targetPath;
|
|
228
|
+
}
|
|
229
|
+
const parts = targetPath.split(path.sep);
|
|
230
|
+
if (parts.length <= 2) {
|
|
231
|
+
return truncate(targetPath, maxLength);
|
|
232
|
+
}
|
|
233
|
+
// Show first and last parts with ellipsis
|
|
234
|
+
const first = parts.slice(0, 2).join(path.sep);
|
|
235
|
+
const last = parts.slice(-2).join(path.sep);
|
|
236
|
+
if (first.length + last.length + 4 <= maxLength) {
|
|
237
|
+
return first + '/.../' + last;
|
|
238
|
+
}
|
|
239
|
+
return truncate(targetPath, maxLength);
|
|
240
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Detection Utilities
|
|
3
|
+
*
|
|
4
|
+
* Utilities for detecting project information from an existing directory.
|
|
5
|
+
* Used by the import project feature in /new wizard.
|
|
6
|
+
*/
|
|
7
|
+
export interface DetectedProject {
|
|
8
|
+
/** Project name from package.json or folder name */
|
|
9
|
+
name: string;
|
|
10
|
+
/** Prettified display name */
|
|
11
|
+
displayName: string;
|
|
12
|
+
/** Source of the name (package.json, go.mod, folder) */
|
|
13
|
+
nameSource: 'package.json' | 'go.mod' | 'pyproject.toml' | 'Cargo.toml' | 'folder';
|
|
14
|
+
/** Detected primary language (null if unknown) */
|
|
15
|
+
language: string | null;
|
|
16
|
+
/** Detected framework (null if not detected) */
|
|
17
|
+
framework: string | null;
|
|
18
|
+
/** Detected package manager (null if not detected) */
|
|
19
|
+
packageManager: string | null;
|
|
20
|
+
/** Whether .git directory exists */
|
|
21
|
+
hasGit: boolean;
|
|
22
|
+
/** Git remote URL (null if not configured) */
|
|
23
|
+
gitRemote: string | null;
|
|
24
|
+
/** Current git branch (null if not in git repo) */
|
|
25
|
+
gitBranch: string | null;
|
|
26
|
+
/** Whether COMPILR.md exists */
|
|
27
|
+
hasCompilrMd: boolean;
|
|
28
|
+
/** Whether CLAUDE.md exists (alternative) */
|
|
29
|
+
hasClaudeMd: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface GitInfo {
|
|
32
|
+
hasGit: boolean;
|
|
33
|
+
remote: string | null;
|
|
34
|
+
branch: string | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Detect project information from a directory path
|
|
38
|
+
*/
|
|
39
|
+
export declare function detectProjectInfo(projectPath: string): DetectedProject;
|
|
40
|
+
/**
|
|
41
|
+
* Detect git repository information
|
|
42
|
+
*/
|
|
43
|
+
export declare function detectGitInfo(projectPath: string): GitInfo;
|
|
44
|
+
/**
|
|
45
|
+
* Get a human-readable label for detected language
|
|
46
|
+
*/
|
|
47
|
+
export declare function getLanguageLabel(language: string | null): string;
|
|
48
|
+
/**
|
|
49
|
+
* Get a human-readable label for detected framework
|
|
50
|
+
*/
|
|
51
|
+
export declare function getFrameworkLabel(framework: string | null): string;
|
|
52
|
+
/**
|
|
53
|
+
* Check if a path is a valid directory that can be imported
|
|
54
|
+
*/
|
|
55
|
+
export declare function validateImportPath(importPath: string): {
|
|
56
|
+
valid: boolean;
|
|
57
|
+
error?: string;
|
|
58
|
+
};
|