@compilr-dev/cli 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +236 -68
- package/dist/.tsbuildinfo.app +1 -0
- package/dist/.tsbuildinfo.data +1 -0
- package/dist/.tsbuildinfo.domain +1 -0
- package/dist/.tsbuildinfo.foundation +1 -0
- package/dist/agent.d.ts +61 -4
- package/dist/agent.js +241 -245
- package/dist/anchors/index.d.ts +1 -1
- package/dist/anchors/index.js +1 -1
- package/dist/anchors/project-anchors.d.ts +2 -2
- package/dist/anchors/project-anchors.js +1 -1
- package/dist/auth/api-client.d.ts +124 -0
- package/dist/auth/api-client.js +261 -0
- package/dist/auth/index.d.ts +172 -0
- package/dist/auth/index.js +545 -0
- package/dist/auth/storage.d.ts +52 -0
- package/dist/auth/storage.js +118 -0
- package/dist/changelog/index.d.ts +16 -0
- package/dist/changelog/index.js +24 -0
- package/dist/changelog/releases.d.ts +17 -0
- package/dist/changelog/releases.js +63 -0
- package/dist/commands-v2/handlers/auth.d.ts +10 -0
- package/dist/commands-v2/handlers/auth.js +118 -0
- package/dist/commands-v2/handlers/background.d.ts +14 -0
- package/dist/commands-v2/handlers/background.js +276 -0
- package/dist/commands-v2/handlers/context.js +266 -81
- package/dist/commands-v2/handlers/core.d.ts +1 -0
- package/dist/commands-v2/handlers/core.js +133 -8
- package/dist/commands-v2/handlers/debug.js +18 -0
- package/dist/commands-v2/handlers/delegations.d.ts +8 -0
- package/dist/commands-v2/handlers/delegations.js +29 -0
- package/dist/commands-v2/handlers/files.d.ts +8 -0
- package/dist/commands-v2/handlers/files.js +162 -0
- package/dist/commands-v2/handlers/filter.d.ts +9 -0
- package/dist/commands-v2/handlers/filter.js +130 -0
- package/dist/commands-v2/handlers/games.d.ts +7 -0
- package/dist/commands-v2/handlers/games.js +57 -0
- package/dist/commands-v2/handlers/index.d.ts +13 -0
- package/dist/commands-v2/handlers/index.js +39 -0
- package/dist/commands-v2/handlers/mcp.d.ts +8 -0
- package/dist/commands-v2/handlers/mcp.js +39 -0
- package/dist/commands-v2/handlers/notifications.d.ts +9 -0
- package/dist/commands-v2/handlers/notifications.js +34 -0
- package/dist/commands-v2/handlers/project.js +244 -23
- package/dist/commands-v2/handlers/reset.d.ts +11 -0
- package/dist/commands-v2/handlers/reset.js +118 -0
- package/dist/commands-v2/handlers/session.d.ts +161 -0
- package/dist/commands-v2/handlers/session.js +805 -0
- package/dist/commands-v2/handlers/settings.d.ts +2 -0
- package/dist/commands-v2/handlers/settings.js +217 -35
- package/dist/commands-v2/handlers/tasks.d.ts +5 -0
- package/dist/commands-v2/handlers/tasks.js +36 -0
- package/dist/commands-v2/handlers/team.d.ts +9 -0
- package/dist/commands-v2/handlers/team.js +549 -0
- package/dist/commands-v2/handlers/terminals.d.ts +9 -0
- package/dist/commands-v2/handlers/terminals.js +34 -0
- package/dist/commands-v2/index.d.ts +3 -2
- package/dist/commands-v2/index.js +4 -1
- package/dist/commands-v2/registry.d.ts +15 -0
- package/dist/commands-v2/registry.js +34 -0
- package/dist/commands-v2/types.d.ts +81 -3
- package/dist/commands.js +13 -0
- package/dist/compilr-diff-companion.vsix +0 -0
- package/dist/db/index.js +98 -4
- package/dist/db/repositories/document-repository.d.ts +2 -0
- package/dist/db/repositories/document-repository.js +5 -1
- package/dist/db/repositories/index.d.ts +2 -0
- package/dist/db/repositories/index.js +1 -0
- package/dist/db/repositories/plan-repository.d.ts +101 -0
- package/dist/db/repositories/plan-repository.js +275 -0
- package/dist/db/repositories/project-repository.d.ts +6 -0
- package/dist/db/repositories/project-repository.js +41 -0
- package/dist/db/repositories/work-item-repository.d.ts +15 -0
- package/dist/db/repositories/work-item-repository.js +69 -4
- package/dist/db/schema.d.ts +40 -3
- package/dist/db/schema.js +66 -3
- package/dist/episodes/index.d.ts +20 -0
- package/dist/episodes/index.js +27 -0
- package/dist/episodes/recorder.d.ts +51 -0
- package/dist/episodes/recorder.js +195 -0
- package/dist/episodes/significant-work.d.ts +21 -0
- package/dist/episodes/significant-work.js +56 -0
- package/dist/episodes/store.d.ts +38 -0
- package/dist/episodes/store.js +199 -0
- package/dist/episodes/types.d.ts +35 -0
- package/dist/episodes/types.js +6 -0
- package/dist/episodes/work-at-risk.d.ts +12 -0
- package/dist/episodes/work-at-risk.js +38 -0
- package/dist/episodes/work-summary-anchor.d.ts +23 -0
- package/dist/episodes/work-summary-anchor.js +73 -0
- package/dist/games/coins.d.ts +66 -0
- package/dist/games/coins.js +165 -0
- package/dist/games/game-base.d.ts +84 -0
- package/dist/games/game-base.js +204 -0
- package/dist/games/index.d.ts +16 -0
- package/dist/games/index.js +49 -0
- package/dist/games/scores.d.ts +69 -0
- package/dist/games/scores.js +191 -0
- package/dist/games/tetris/board.d.ts +59 -0
- package/dist/games/tetris/board.js +170 -0
- package/dist/games/tetris/index.d.ts +109 -0
- package/dist/games/tetris/index.js +610 -0
- package/dist/games/tetris/pieces.d.ts +44 -0
- package/dist/games/tetris/pieces.js +271 -0
- package/dist/games/tetris/renderer.d.ts +26 -0
- package/dist/games/tetris/renderer.js +77 -0
- package/dist/guide/guide-content.d.ts +23 -0
- package/dist/guide/guide-content.js +196 -0
- package/dist/guide/index.d.ts +8 -0
- package/dist/guide/index.js +7 -0
- package/dist/guide/shared-content.d.ts +37 -0
- package/dist/guide/shared-content.js +1272 -0
- package/dist/guide/tutorial-helpers.d.ts +57 -0
- package/dist/guide/tutorial-helpers.js +147 -0
- package/dist/handlers/ask-user-handlers.d.ts +32 -0
- package/dist/handlers/ask-user-handlers.js +104 -0
- package/dist/handlers/delegation-handlers.d.ts +34 -0
- package/dist/handlers/delegation-handlers.js +291 -0
- package/dist/handlers/permission-handler.d.ts +30 -0
- package/dist/handlers/permission-handler.js +205 -0
- package/dist/index.d.ts +11 -1
- package/dist/index.js +448 -271
- package/dist/input-handlers/memory-handler.d.ts +1 -1
- package/dist/input-handlers/memory-handler.js +2 -1
- package/dist/models/index.d.ts +10 -0
- package/dist/models/index.js +12 -0
- package/dist/models/model-registry.d.ts +38 -0
- package/dist/models/model-registry.js +69 -0
- package/dist/models/model-tiers.d.ts +28 -0
- package/dist/models/model-tiers.js +71 -0
- package/dist/models/model-validation.d.ts +25 -0
- package/dist/models/model-validation.js +291 -0
- package/dist/models/ollama-models.d.ts +73 -0
- package/dist/models/ollama-models.js +178 -0
- package/dist/models/provider-types.d.ts +6 -0
- package/dist/models/provider-types.js +1 -0
- package/dist/models/providers.d.ts +35 -0
- package/dist/models/providers.js +58 -0
- package/dist/models/types.d.ts +4 -0
- package/dist/models/types.js +4 -0
- package/dist/multi-agent/activity.d.ts +21 -0
- package/dist/multi-agent/activity.js +34 -0
- package/dist/multi-agent/agent-selection.d.ts +55 -0
- package/dist/multi-agent/agent-selection.js +90 -0
- package/dist/multi-agent/artifacts.d.ts +197 -0
- package/dist/multi-agent/artifacts.js +379 -0
- package/dist/multi-agent/checkpointer.d.ts +138 -0
- package/dist/multi-agent/checkpointer.js +471 -0
- package/dist/multi-agent/collision-utils.d.ts +16 -0
- package/dist/multi-agent/collision-utils.js +28 -0
- package/dist/multi-agent/context-resolver.d.ts +97 -0
- package/dist/multi-agent/context-resolver.js +316 -0
- package/dist/multi-agent/custom-agents.d.ts +83 -0
- package/dist/multi-agent/custom-agents.js +227 -0
- package/dist/multi-agent/delegation-tracker.d.ts +157 -0
- package/dist/multi-agent/delegation-tracker.js +243 -0
- package/dist/multi-agent/file-lock-hook.d.ts +29 -0
- package/dist/multi-agent/file-lock-hook.js +97 -0
- package/dist/multi-agent/file-locks.d.ts +58 -0
- package/dist/multi-agent/file-locks.js +194 -0
- package/dist/multi-agent/index.d.ts +24 -0
- package/dist/multi-agent/index.js +30 -0
- package/dist/multi-agent/mention-parser.d.ts +64 -0
- package/dist/multi-agent/mention-parser.js +146 -0
- package/dist/multi-agent/notification-manager.d.ts +84 -0
- package/dist/multi-agent/notification-manager.js +224 -0
- package/dist/multi-agent/pending-requests.d.ts +122 -0
- package/dist/multi-agent/pending-requests.js +155 -0
- package/dist/multi-agent/session-registry.d.ts +139 -0
- package/dist/multi-agent/session-registry.js +514 -0
- package/dist/multi-agent/shared-context.d.ts +293 -0
- package/dist/multi-agent/shared-context.js +671 -0
- package/dist/multi-agent/skill-requirements.d.ts +66 -0
- package/dist/multi-agent/skill-requirements.js +178 -0
- package/dist/multi-agent/task-assignment.d.ts +69 -0
- package/dist/multi-agent/task-assignment.js +123 -0
- package/dist/multi-agent/task-suggestion.d.ts +31 -0
- package/dist/multi-agent/task-suggestion.js +72 -0
- package/dist/multi-agent/team-agent.d.ts +201 -0
- package/dist/multi-agent/team-agent.js +488 -0
- package/dist/multi-agent/team.d.ts +286 -0
- package/dist/multi-agent/team.js +610 -0
- package/dist/multi-agent/tool-config.d.ts +110 -0
- package/dist/multi-agent/tool-config.js +661 -0
- package/dist/multi-agent/types.d.ts +211 -0
- package/dist/multi-agent/types.js +617 -0
- package/dist/prompts/plan-mode-prompt.d.ts +11 -0
- package/dist/prompts/plan-mode-prompt.js +95 -0
- package/dist/repl-helpers.js +3 -2
- package/dist/repl-v2.d.ts +401 -2
- package/dist/repl-v2.js +2577 -65
- package/dist/session/index.d.ts +6 -0
- package/dist/session/index.js +6 -0
- package/dist/session/project-session-manager.d.ts +158 -0
- package/dist/session/project-session-manager.js +650 -0
- package/dist/settings/index.d.ts +133 -13
- package/dist/settings/index.js +329 -24
- package/dist/settings/mcp-config.d.ts +76 -0
- package/dist/settings/mcp-config.js +143 -0
- package/dist/settings/paths.d.ts +4 -0
- package/dist/settings/paths.js +6 -0
- package/dist/shared-handlers.d.ts +62 -0
- package/dist/shared-handlers.js +48 -0
- package/dist/system-prompt/builder.d.ts +5 -0
- package/dist/system-prompt/builder.js +4 -0
- package/dist/system-prompt/index.d.ts +18 -0
- package/dist/system-prompt/index.js +18 -0
- package/dist/system-prompt/modules.d.ts +5 -0
- package/dist/system-prompt/modules.js +4 -0
- package/dist/tabbed-menu.js +2 -1
- package/dist/templates/compilr-md-import.d.ts +16 -0
- package/dist/templates/compilr-md-import.js +241 -0
- package/dist/templates/compilr-md.js +10 -61
- package/dist/templates/config-json.d.ts +1 -25
- package/dist/templates/index.d.ts +2 -0
- package/dist/templates/index.js +34 -73
- package/dist/tool-names.d.ts +108 -0
- package/dist/tool-names.js +227 -0
- package/dist/tools/anchor-tools.d.ts +4 -4
- package/dist/tools/anchor-tools.js +1 -1
- package/dist/tools/artifact-tools.d.ts +42 -0
- package/dist/tools/artifact-tools.js +328 -0
- package/dist/tools/ask-user-simple.d.ts +1 -1
- package/dist/tools/ask-user-simple.js +2 -1
- package/dist/tools/ask-user.d.ts +1 -1
- package/dist/tools/ask-user.js +2 -1
- package/dist/tools/backlog-wrappers.d.ts +5 -3
- package/dist/tools/backlog-wrappers.js +16 -1
- package/dist/tools/backlog.d.ts +2 -2
- package/dist/tools/backlog.js +1 -1
- package/dist/tools/db-tools.d.ts +8 -61
- package/dist/tools/db-tools.js +8 -13
- package/dist/tools/delegate-background.d.ts +27 -0
- package/dist/tools/delegate-background.js +115 -0
- package/dist/tools/delegate.d.ts +22 -0
- package/dist/tools/delegate.js +97 -0
- package/dist/tools/delegation-status.d.ts +16 -0
- package/dist/tools/delegation-status.js +128 -0
- package/dist/tools/document-db.d.ts +5 -5
- package/dist/tools/document-db.js +1 -1
- package/dist/tools/guide-tool.d.ts +12 -0
- package/dist/tools/guide-tool.js +59 -0
- package/dist/tools/handoff.d.ts +25 -0
- package/dist/tools/handoff.js +99 -0
- package/dist/tools/meta-tools.d.ts +26 -0
- package/dist/tools/meta-tools.js +47 -0
- package/dist/tools/plan-tools.d.ts +54 -0
- package/dist/tools/plan-tools.js +338 -0
- package/dist/tools/platform-adapter.d.ts +29 -0
- package/dist/tools/platform-adapter.js +394 -0
- package/dist/tools/project-db.d.ts +5 -73
- package/dist/tools/project-db.js +5 -336
- package/dist/tools/recall-work-tool.d.ts +18 -0
- package/dist/tools/recall-work-tool.js +82 -0
- package/dist/tools/workitem-db.d.ts +43 -11
- package/dist/tools/workitem-db.js +186 -5
- package/dist/tools.d.ts +67 -2
- package/dist/tools.js +237 -47
- package/dist/ui/autocomplete-controller.d.ts +42 -0
- package/dist/ui/autocomplete-controller.js +384 -0
- package/dist/ui/base/index.d.ts +1 -1
- package/dist/ui/base/index.js +1 -1
- package/dist/ui/base/overlay-base-v2.d.ts +10 -0
- package/dist/ui/base/overlay-base-v2.js +14 -0
- package/dist/ui/base/render-utils.d.ts +19 -0
- package/dist/ui/base/render-utils.js +25 -0
- package/dist/ui/base/tabbed-list-overlay-v2.d.ts +16 -1
- package/dist/ui/base/tabbed-list-overlay-v2.js +19 -1
- package/dist/ui/constants/labels.d.ts +14 -0
- package/dist/ui/constants/labels.js +51 -0
- package/dist/ui/conversation-store.d.ts +55 -0
- package/dist/ui/conversation-store.js +107 -0
- package/dist/ui/conversation.js +11 -13
- package/dist/ui/diff.d.ts +7 -1
- package/dist/ui/diff.js +85 -48
- package/dist/ui/ephemeral.js +3 -9
- package/dist/ui/file-autocomplete.d.ts +24 -0
- package/dist/ui/file-autocomplete.js +56 -0
- package/dist/ui/footer-renderer.d.ts +69 -0
- package/dist/ui/footer-renderer.js +431 -0
- package/dist/ui/footer.d.ts +74 -7
- package/dist/ui/footer.js +173 -16
- package/dist/ui/input-controller.d.ts +51 -0
- package/dist/ui/input-controller.js +176 -0
- package/dist/ui/input-prompt.d.ts +19 -0
- package/dist/ui/input-prompt.js +206 -14
- package/dist/ui/keyboard-handler.d.ts +57 -0
- package/dist/ui/keyboard-handler.js +557 -0
- package/dist/ui/live-region-facade.d.ts +42 -0
- package/dist/ui/live-region-facade.js +205 -0
- package/dist/ui/live-region.d.ts +0 -4
- package/dist/ui/live-region.js +6 -14
- package/dist/ui/mascot/renderer.d.ts +1 -1
- package/dist/ui/mascot/renderer.js +37 -2
- package/dist/ui/overlay/data/tutorial-content.d.ts +9 -0
- package/dist/ui/overlay/data/tutorial-content.js +9 -0
- package/dist/ui/overlay/data/tutorial-registry.d.ts +12 -0
- package/dist/ui/overlay/data/tutorial-registry.js +116 -0
- package/dist/ui/overlay/data/tutorial-types.d.ts +35 -0
- package/dist/ui/overlay/data/tutorial-types.js +6 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-conversation.js +220 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/first-project.js +284 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/basics/navigation.js +22 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/basics/welcome.js +174 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/context-management.js +158 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/config/mcp-servers.js +155 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/model-selection.js +162 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/permissions-safety.js +163 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/config/settings-config.js +166 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/arch.js +168 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/backlog.js +103 -0
- package/dist/ui/overlay/data/tutorials/planning/build.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/build.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/design.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/design.js +205 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/docs.js +143 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/prd.js +173 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/scaffold.js +164 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/planning/sketch.js +58 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/anchors.js +248 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/import-project.js +172 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/projects/managing-projects.js +212 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/new-project.js +251 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/projects/session-management.js +169 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/background-execution.js +171 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.d.ts +8 -0
- package/dist/ui/overlay/data/tutorials/teams/multi-terminal.js +147 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/task-assignment.js +204 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/team-overview.js +165 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.d.ts +7 -0
- package/dist/ui/overlay/data/tutorials/teams/working-with-agents.js +172 -0
- package/dist/ui/overlay/impl/agents-overlay-v2.js +6 -17
- package/dist/ui/overlay/impl/anchors-overlay-v2.js +30 -64
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/artifact-detail-overlay-v2.js +232 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/artifact-overlay-v2.js +115 -0
- package/dist/ui/overlay/impl/ask-user-overlay-v2.js +2 -5
- package/dist/ui/overlay/impl/background-overlay-v2.d.ts +40 -0
- package/dist/ui/overlay/impl/background-overlay-v2.js +147 -0
- package/dist/ui/overlay/impl/backlog-overlay-v2.d.ts +4 -1
- package/dist/ui/overlay/impl/backlog-overlay-v2.js +55 -16
- package/dist/ui/overlay/impl/changelog-overlay-v2.d.ts +44 -0
- package/dist/ui/overlay/impl/changelog-overlay-v2.js +165 -0
- package/dist/ui/overlay/impl/commands-overlay-v2.js +4 -6
- package/dist/ui/overlay/impl/config-overlay-v2.d.ts +12 -1
- package/dist/ui/overlay/impl/config-overlay-v2.js +164 -100
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.d.ts +83 -0
- package/dist/ui/overlay/impl/custom-agent-form-overlay-v2.js +711 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.d.ts +2 -0
- package/dist/ui/overlay/impl/dashboard-overlay-v2.js +26 -3
- package/dist/ui/overlay/impl/delegations-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/delegations-overlay-v2.js +279 -0
- package/dist/ui/overlay/impl/docs-overlay-v2.js +12 -9
- package/dist/ui/overlay/impl/document-detail-overlay-v2.d.ts +7 -0
- package/dist/ui/overlay/impl/document-detail-overlay-v2.js +119 -78
- package/dist/ui/overlay/impl/filter-overlay-v2.d.ts +41 -0
- package/dist/ui/overlay/impl/filter-overlay-v2.js +110 -0
- package/dist/ui/overlay/impl/games-overlay-v2.d.ts +31 -0
- package/dist/ui/overlay/impl/games-overlay-v2.js +135 -0
- package/dist/ui/overlay/impl/help-overlay-v2.d.ts +26 -3
- package/dist/ui/overlay/impl/help-overlay-v2.js +20 -42
- package/dist/ui/overlay/impl/login-overlay-v2.d.ts +49 -0
- package/dist/ui/overlay/impl/login-overlay-v2.js +277 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.d.ts +63 -0
- package/dist/ui/overlay/impl/mcp-overlay-v2.js +907 -0
- package/dist/ui/overlay/impl/model-overlay-v2.d.ts +57 -13
- package/dist/ui/overlay/impl/model-overlay-v2.js +1086 -61
- package/dist/ui/overlay/impl/new-overlay-v2.d.ts +37 -6
- package/dist/ui/overlay/impl/new-overlay-v2.js +715 -65
- package/dist/ui/overlay/impl/notifications-overlay-v2.d.ts +20 -0
- package/dist/ui/overlay/impl/notifications-overlay-v2.js +116 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.d.ts +76 -0
- package/dist/ui/overlay/impl/onboarding-wizard-overlay-v2.js +728 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.d.ts +51 -0
- package/dist/ui/overlay/impl/pending-overlay-v2.js +445 -0
- package/dist/ui/overlay/impl/permission-overlay-v2.js +5 -5
- package/dist/ui/overlay/impl/permissions-overlay-v2.d.ts +85 -0
- package/dist/ui/overlay/impl/permissions-overlay-v2.js +820 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.d.ts +35 -0
- package/dist/ui/overlay/impl/plan-approval-overlay-v2.js +181 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.d.ts +36 -0
- package/dist/ui/overlay/impl/project-edit-overlay-v2.js +195 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.d.ts +1 -0
- package/dist/ui/overlay/impl/projects-overlay-v2.js +278 -44
- package/dist/ui/overlay/impl/reset-overlay-v2.d.ts +39 -0
- package/dist/ui/overlay/impl/reset-overlay-v2.js +107 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.d.ts +60 -0
- package/dist/ui/overlay/impl/resume-overlay-v2.js +414 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.d.ts +43 -0
- package/dist/ui/overlay/impl/session-mode-overlay-v2.js +124 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.d.ts +28 -0
- package/dist/ui/overlay/impl/tasks-overlay-v2.js +283 -0
- package/dist/ui/overlay/impl/team-overlay-v2.d.ts +86 -0
- package/dist/ui/overlay/impl/team-overlay-v2.js +692 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.d.ts +26 -0
- package/dist/ui/overlay/impl/terminals-overlay-v2.js +217 -0
- package/dist/ui/overlay/impl/tools-overlay-v2.js +3 -7
- package/dist/ui/overlay/impl/tutorial-overlay-v2.d.ts +30 -16
- package/dist/ui/overlay/impl/tutorial-overlay-v2.js +133 -956
- package/dist/ui/overlay/impl/workflow-overlay-v2.js +5 -1
- package/dist/ui/overlay/index.d.ts +20 -1
- package/dist/ui/overlay/index.js +19 -0
- package/dist/ui/overlay/types.d.ts +5 -0
- package/dist/ui/overlay-manager.d.ts +43 -0
- package/dist/ui/overlay-manager.js +238 -0
- package/dist/ui/overlays.js +4 -16
- package/dist/ui/permission-overlay.js +6 -5
- package/dist/ui/status-bar-controller.d.ts +33 -0
- package/dist/ui/status-bar-controller.js +99 -0
- package/dist/ui/subagent-renderer.js +3 -19
- package/dist/ui/terminal-autocomplete-utils.d.ts +23 -0
- package/dist/ui/terminal-autocomplete-utils.js +83 -0
- package/dist/ui/terminal-line-builders.d.ts +17 -0
- package/dist/ui/terminal-line-builders.js +42 -0
- package/dist/ui/terminal-render-item.d.ts +16 -0
- package/dist/ui/terminal-render-item.js +267 -0
- package/dist/ui/terminal-renderer.d.ts +7 -8
- package/dist/ui/terminal-renderer.js +7 -8
- package/dist/ui/terminal-types.d.ts +179 -0
- package/dist/ui/terminal-types.js +34 -0
- package/dist/ui/terminal-ui.d.ts +144 -276
- package/dist/ui/terminal-ui.js +384 -1861
- package/dist/ui/todo-zone.d.ts +19 -1
- package/dist/ui/todo-zone.js +71 -13
- package/dist/ui/tool-formatters.js +512 -1
- package/dist/ui/turn-metrics.d.ts +56 -0
- package/dist/ui/turn-metrics.js +75 -0
- package/dist/ui/types.d.ts +28 -0
- package/dist/ui/types.js +1 -0
- package/dist/ui/vscode-diff-ipc.d.ts +102 -0
- package/dist/ui/vscode-diff-ipc.js +385 -0
- package/dist/utils/credentials.d.ts +24 -5
- package/dist/utils/credentials.js +123 -9
- package/dist/utils/format-tokens.d.ts +13 -0
- package/dist/utils/format-tokens.js +18 -0
- package/dist/utils/git-config.d.ts +26 -0
- package/dist/utils/git-config.js +54 -0
- package/dist/utils/message-utils.d.ts +61 -0
- package/dist/utils/message-utils.js +72 -0
- package/dist/utils/model-tiers.d.ts +8 -1
- package/dist/utils/model-tiers.js +38 -16
- package/dist/utils/open-browser.d.ts +5 -0
- package/dist/utils/open-browser.js +32 -0
- package/dist/utils/path-safety.js +3 -2
- package/dist/utils/project-detection.d.ts +58 -0
- package/dist/utils/project-detection.js +424 -0
- package/dist/utils/project-memory.js +2 -1
- package/dist/utils/project-status.d.ts +2 -2
- package/dist/utils/startup-perf.d.ts +18 -0
- package/dist/utils/startup-perf.js +60 -0
- package/dist/utils/token-tracker.d.ts +62 -0
- package/dist/utils/token-tracker.js +150 -0
- package/dist/utils/token-types.d.ts +23 -0
- package/dist/utils/token-types.js +18 -0
- package/dist/utils/types/config-types.d.ts +32 -0
- package/dist/utils/types/config-types.js +8 -0
- package/dist/utils/update-checker.d.ts +28 -0
- package/dist/utils/update-checker.js +106 -0
- package/dist/utils/version.d.ts +7 -0
- package/dist/utils/version.js +10 -0
- package/dist/utils/vscode-detect.d.ts +39 -0
- package/dist/utils/vscode-detect.js +137 -0
- package/package.json +25 -12
- package/dist/commands/handler-types.d.ts +0 -68
- package/dist/commands/handler-types.js +0 -8
- package/dist/commands/handlers/agent-commands.d.ts +0 -13
- package/dist/commands/handlers/agent-commands.js +0 -305
- package/dist/commands/handlers/design-commands.d.ts +0 -15
- package/dist/commands/handlers/design-commands.js +0 -334
- package/dist/commands/handlers/index.d.ts +0 -20
- package/dist/commands/handlers/index.js +0 -43
- package/dist/commands/handlers/overlay-commands.d.ts +0 -21
- package/dist/commands/handlers/overlay-commands.js +0 -287
- package/dist/commands/handlers/project-commands.d.ts +0 -11
- package/dist/commands/handlers/project-commands.js +0 -167
- package/dist/commands/handlers/simple-commands.d.ts +0 -19
- package/dist/commands/handlers/simple-commands.js +0 -144
- package/dist/commands/registry.d.ts +0 -50
- package/dist/commands/registry.js +0 -75
- package/dist/index.old.d.ts +0 -7
- package/dist/index.old.js +0 -1014
- package/dist/repl.d.ts +0 -149
- package/dist/repl.js +0 -1151
- package/dist/templates/claude-md.d.ts +0 -7
- package/dist/templates/claude-md.js +0 -189
- package/dist/test-autocomplete.d.ts +0 -7
- package/dist/test-autocomplete.js +0 -85
- package/dist/test-tabbed-menu.d.ts +0 -7
- package/dist/test-tabbed-menu.js +0 -25
- package/dist/tool-selector.d.ts +0 -71
- package/dist/tool-selector.js +0 -184
- package/dist/ui/agents-overlay-v2.d.ts +0 -43
- package/dist/ui/agents-overlay-v2.js +0 -809
- package/dist/ui/agents-overlay.d.ts +0 -12
- package/dist/ui/agents-overlay.js +0 -863
- package/dist/ui/anchors-overlay.d.ts +0 -12
- package/dist/ui/anchors-overlay.js +0 -775
- package/dist/ui/arch-type-overlay.d.ts +0 -15
- package/dist/ui/arch-type-overlay.js +0 -201
- package/dist/ui/ask-user-overlay-v2.d.ts +0 -26
- package/dist/ui/ask-user-overlay-v2.js +0 -555
- package/dist/ui/ask-user-simple-overlay-v2.d.ts +0 -25
- package/dist/ui/ask-user-simple-overlay-v2.js +0 -215
- package/dist/ui/backlog-overlay.d.ts +0 -32
- package/dist/ui/backlog-overlay.js +0 -652
- package/dist/ui/commands-overlay-v2.d.ts +0 -33
- package/dist/ui/commands-overlay-v2.js +0 -441
- package/dist/ui/commands-overlay.d.ts +0 -16
- package/dist/ui/commands-overlay.js +0 -439
- package/dist/ui/config-overlay.d.ts +0 -35
- package/dist/ui/config-overlay.js +0 -707
- package/dist/ui/docs-overlay.d.ts +0 -17
- package/dist/ui/docs-overlay.js +0 -303
- package/dist/ui/footer-v2.d.ts +0 -222
- package/dist/ui/footer-v2.js +0 -1349
- package/dist/ui/help-overlay-v2.d.ts +0 -34
- package/dist/ui/help-overlay-v2.js +0 -309
- package/dist/ui/help-overlay.d.ts +0 -16
- package/dist/ui/help-overlay.js +0 -316
- package/dist/ui/init-overlay-v2.d.ts +0 -34
- package/dist/ui/init-overlay-v2.js +0 -600
- package/dist/ui/init-overlay.d.ts +0 -34
- package/dist/ui/init-overlay.js +0 -604
- package/dist/ui/input-prompt-v2.d.ts +0 -180
- package/dist/ui/input-prompt-v2.js +0 -999
- package/dist/ui/iteration-limit-overlay-v2.d.ts +0 -21
- package/dist/ui/iteration-limit-overlay-v2.js +0 -114
- package/dist/ui/keys-overlay-v2.d.ts +0 -41
- package/dist/ui/keys-overlay-v2.js +0 -248
- package/dist/ui/mascot-overlay-v2.d.ts +0 -41
- package/dist/ui/mascot-overlay-v2.js +0 -138
- package/dist/ui/mascot-overlay.d.ts +0 -21
- package/dist/ui/mascot-overlay.js +0 -146
- package/dist/ui/model-overlay-v2.d.ts +0 -49
- package/dist/ui/model-overlay-v2.js +0 -118
- package/dist/ui/model-overlay.d.ts +0 -27
- package/dist/ui/model-overlay.js +0 -221
- package/dist/ui/model-warning-overlay.d.ts +0 -30
- package/dist/ui/model-warning-overlay.js +0 -169
- package/dist/ui/new-overlay.d.ts +0 -34
- package/dist/ui/new-overlay.js +0 -604
- package/dist/ui/overlay/impl/init-overlay-v2.d.ts +0 -77
- package/dist/ui/overlay/impl/init-overlay-v2.js +0 -593
- package/dist/ui/overlay/overlay-types.d.ts +0 -128
- package/dist/ui/overlay/overlay-types.js +0 -22
- package/dist/ui/overlays/help-overlay-v2.d.ts +0 -28
- package/dist/ui/overlays/help-overlay-v2.js +0 -198
- package/dist/ui/overlays/index.d.ts +0 -11
- package/dist/ui/overlays/index.js +0 -11
- package/dist/ui/permission-overlay-v2.d.ts +0 -36
- package/dist/ui/permission-overlay-v2.js +0 -380
- package/dist/ui/projects-overlay.d.ts +0 -19
- package/dist/ui/projects-overlay.js +0 -484
- package/dist/ui/theme-overlay-v2.d.ts +0 -42
- package/dist/ui/theme-overlay-v2.js +0 -135
- package/dist/ui/theme-overlay.d.ts +0 -24
- package/dist/ui/theme-overlay.js +0 -127
- package/dist/ui/tools-overlay-v2.d.ts +0 -47
- package/dist/ui/tools-overlay-v2.js +0 -218
- package/dist/ui/tools-overlay.d.ts +0 -34
- package/dist/ui/tools-overlay.js +0 -230
- package/dist/ui/tutorial-overlay-v2.d.ts +0 -31
- package/dist/ui/tutorial-overlay-v2.js +0 -1035
- package/dist/ui/tutorial-overlay.d.ts +0 -11
- package/dist/ui/tutorial-overlay.js +0 -1034
- package/dist/ui/workflow-overlay.d.ts +0 -22
- package/dist/ui/workflow-overlay.js +0 -636
|
@@ -0,0 +1,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
|
+
};
|
|
@@ -0,0 +1,424 @@
|
|
|
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
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import { execSync } from 'child_process';
|
|
10
|
+
const LANGUAGE_MARKERS = [
|
|
11
|
+
// Node.js / JavaScript / TypeScript
|
|
12
|
+
{
|
|
13
|
+
file: 'package.json',
|
|
14
|
+
language: 'node',
|
|
15
|
+
packageManager: 'npm', // Will be overridden if yarn.lock or pnpm-lock.yaml exists
|
|
16
|
+
frameworkDetector: (content) => {
|
|
17
|
+
try {
|
|
18
|
+
const pkg = JSON.parse(content);
|
|
19
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
20
|
+
if (deps['next'])
|
|
21
|
+
return 'next';
|
|
22
|
+
if (deps['nuxt'])
|
|
23
|
+
return 'nuxt';
|
|
24
|
+
if (deps['react'])
|
|
25
|
+
return 'react';
|
|
26
|
+
if (deps['vue'])
|
|
27
|
+
return 'vue';
|
|
28
|
+
if (deps['svelte'])
|
|
29
|
+
return 'svelte';
|
|
30
|
+
if (deps['@angular/core'])
|
|
31
|
+
return 'angular';
|
|
32
|
+
if (deps['express'])
|
|
33
|
+
return 'express';
|
|
34
|
+
if (deps['fastify'])
|
|
35
|
+
return 'fastify';
|
|
36
|
+
if (deps['koa'])
|
|
37
|
+
return 'koa';
|
|
38
|
+
if (deps['hono'])
|
|
39
|
+
return 'hono';
|
|
40
|
+
if (deps['electron'])
|
|
41
|
+
return 'electron';
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
nameExtractor: (content) => {
|
|
49
|
+
try {
|
|
50
|
+
const pkg = JSON.parse(content);
|
|
51
|
+
return pkg.name ?? null;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
// Go
|
|
59
|
+
{
|
|
60
|
+
file: 'go.mod',
|
|
61
|
+
language: 'go',
|
|
62
|
+
packageManager: 'go',
|
|
63
|
+
nameExtractor: (content) => {
|
|
64
|
+
const match = content.match(/^module\s+(.+)$/m);
|
|
65
|
+
if (match) {
|
|
66
|
+
// Extract just the last part of the module path
|
|
67
|
+
const parts = match[1].split('/');
|
|
68
|
+
return parts[parts.length - 1];
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
// Python
|
|
74
|
+
{
|
|
75
|
+
file: 'pyproject.toml',
|
|
76
|
+
language: 'python',
|
|
77
|
+
packageManager: 'pip', // Could be poetry, pdm, etc.
|
|
78
|
+
frameworkDetector: (content) => {
|
|
79
|
+
if (content.includes('fastapi'))
|
|
80
|
+
return 'fastapi';
|
|
81
|
+
if (content.includes('django'))
|
|
82
|
+
return 'django';
|
|
83
|
+
if (content.includes('flask'))
|
|
84
|
+
return 'flask';
|
|
85
|
+
return null;
|
|
86
|
+
},
|
|
87
|
+
nameExtractor: (content) => {
|
|
88
|
+
const match = content.match(/^name\s*=\s*["'](.+)["']/m);
|
|
89
|
+
return match ? match[1] : null;
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
file: 'requirements.txt',
|
|
94
|
+
language: 'python',
|
|
95
|
+
packageManager: 'pip',
|
|
96
|
+
frameworkDetector: (content) => {
|
|
97
|
+
if (content.includes('fastapi'))
|
|
98
|
+
return 'fastapi';
|
|
99
|
+
if (content.includes('django'))
|
|
100
|
+
return 'django';
|
|
101
|
+
if (content.includes('flask'))
|
|
102
|
+
return 'flask';
|
|
103
|
+
return null;
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
file: 'setup.py',
|
|
108
|
+
language: 'python',
|
|
109
|
+
packageManager: 'pip',
|
|
110
|
+
},
|
|
111
|
+
// Rust
|
|
112
|
+
{
|
|
113
|
+
file: 'Cargo.toml',
|
|
114
|
+
language: 'rust',
|
|
115
|
+
packageManager: 'cargo',
|
|
116
|
+
nameExtractor: (content) => {
|
|
117
|
+
const match = content.match(/^name\s*=\s*["'](.+)["']/m);
|
|
118
|
+
return match ? match[1] : null;
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
// Java
|
|
122
|
+
{
|
|
123
|
+
file: 'pom.xml',
|
|
124
|
+
language: 'java',
|
|
125
|
+
packageManager: 'maven',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
file: 'build.gradle',
|
|
129
|
+
language: 'java',
|
|
130
|
+
packageManager: 'gradle',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
file: 'build.gradle.kts',
|
|
134
|
+
language: 'kotlin',
|
|
135
|
+
packageManager: 'gradle',
|
|
136
|
+
},
|
|
137
|
+
// PHP
|
|
138
|
+
{
|
|
139
|
+
file: 'composer.json',
|
|
140
|
+
language: 'php',
|
|
141
|
+
packageManager: 'composer',
|
|
142
|
+
frameworkDetector: (content) => {
|
|
143
|
+
try {
|
|
144
|
+
const pkg = JSON.parse(content);
|
|
145
|
+
const deps = pkg.require ?? {};
|
|
146
|
+
if (deps['laravel/framework'])
|
|
147
|
+
return 'laravel';
|
|
148
|
+
if (deps['symfony/framework-bundle'])
|
|
149
|
+
return 'symfony';
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
nameExtractor: (content) => {
|
|
157
|
+
try {
|
|
158
|
+
const pkg = JSON.parse(content);
|
|
159
|
+
if (pkg.name) {
|
|
160
|
+
// composer names are vendor/package, extract just package
|
|
161
|
+
const parts = pkg.name.split('/');
|
|
162
|
+
return parts[parts.length - 1];
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
// Ruby
|
|
172
|
+
{
|
|
173
|
+
file: 'Gemfile',
|
|
174
|
+
language: 'ruby',
|
|
175
|
+
packageManager: 'bundler',
|
|
176
|
+
frameworkDetector: (content) => {
|
|
177
|
+
if (content.includes("'rails'") || content.includes('"rails"'))
|
|
178
|
+
return 'rails';
|
|
179
|
+
if (content.includes("'sinatra'") || content.includes('"sinatra"'))
|
|
180
|
+
return 'sinatra';
|
|
181
|
+
return null;
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
// .NET
|
|
185
|
+
{
|
|
186
|
+
file: '*.csproj',
|
|
187
|
+
language: 'dotnet',
|
|
188
|
+
packageManager: 'nuget',
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
file: '*.fsproj',
|
|
192
|
+
language: 'dotnet',
|
|
193
|
+
packageManager: 'nuget',
|
|
194
|
+
},
|
|
195
|
+
];
|
|
196
|
+
// =============================================================================
|
|
197
|
+
// Main Detection Functions
|
|
198
|
+
// =============================================================================
|
|
199
|
+
/**
|
|
200
|
+
* Detect project information from a directory path
|
|
201
|
+
*/
|
|
202
|
+
export function detectProjectInfo(projectPath) {
|
|
203
|
+
const folderName = path.basename(projectPath);
|
|
204
|
+
// Initialize with defaults
|
|
205
|
+
const result = {
|
|
206
|
+
name: folderName,
|
|
207
|
+
displayName: prettifyName(folderName),
|
|
208
|
+
nameSource: 'folder',
|
|
209
|
+
language: null,
|
|
210
|
+
framework: null,
|
|
211
|
+
packageManager: null,
|
|
212
|
+
hasGit: false,
|
|
213
|
+
gitRemote: null,
|
|
214
|
+
gitBranch: null,
|
|
215
|
+
hasCompilrMd: false,
|
|
216
|
+
hasClaudeMd: false,
|
|
217
|
+
};
|
|
218
|
+
// Check for COMPILR.md and CLAUDE.md
|
|
219
|
+
result.hasCompilrMd = fs.existsSync(path.join(projectPath, 'COMPILR.md'));
|
|
220
|
+
result.hasClaudeMd = fs.existsSync(path.join(projectPath, 'CLAUDE.md'));
|
|
221
|
+
// Detect git info
|
|
222
|
+
const gitInfo = detectGitInfo(projectPath);
|
|
223
|
+
result.hasGit = gitInfo.hasGit;
|
|
224
|
+
result.gitRemote = gitInfo.remote;
|
|
225
|
+
result.gitBranch = gitInfo.branch;
|
|
226
|
+
// Detect language and framework from markers
|
|
227
|
+
for (const marker of LANGUAGE_MARKERS) {
|
|
228
|
+
// Handle glob patterns (*.csproj)
|
|
229
|
+
let filePath = null;
|
|
230
|
+
if (marker.file.includes('*')) {
|
|
231
|
+
const pattern = marker.file.replace('*', '');
|
|
232
|
+
try {
|
|
233
|
+
const files = fs.readdirSync(projectPath);
|
|
234
|
+
const match = files.find((f) => f.endsWith(pattern));
|
|
235
|
+
if (match) {
|
|
236
|
+
filePath = path.join(projectPath, match);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
filePath = path.join(projectPath, marker.file);
|
|
245
|
+
}
|
|
246
|
+
if (filePath && fs.existsSync(filePath)) {
|
|
247
|
+
// First match wins for language
|
|
248
|
+
if (!result.language) {
|
|
249
|
+
result.language = marker.language;
|
|
250
|
+
}
|
|
251
|
+
// Try to read content for framework detection and name extraction
|
|
252
|
+
try {
|
|
253
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
254
|
+
// Extract name if possible
|
|
255
|
+
if (marker.nameExtractor && result.nameSource === 'folder') {
|
|
256
|
+
const extractedName = marker.nameExtractor(content);
|
|
257
|
+
if (extractedName) {
|
|
258
|
+
result.name = extractedName;
|
|
259
|
+
result.displayName = prettifyName(extractedName);
|
|
260
|
+
result.nameSource = marker.file;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
// Detect framework
|
|
264
|
+
if (!result.framework && marker.frameworkDetector) {
|
|
265
|
+
result.framework = marker.frameworkDetector(content);
|
|
266
|
+
}
|
|
267
|
+
// Set package manager
|
|
268
|
+
if (!result.packageManager && marker.packageManager) {
|
|
269
|
+
result.packageManager = marker.packageManager;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
// File read failed, continue
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Detect package manager overrides for Node.js
|
|
278
|
+
if (result.language === 'node') {
|
|
279
|
+
if (fs.existsSync(path.join(projectPath, 'pnpm-lock.yaml'))) {
|
|
280
|
+
result.packageManager = 'pnpm';
|
|
281
|
+
}
|
|
282
|
+
else if (fs.existsSync(path.join(projectPath, 'yarn.lock'))) {
|
|
283
|
+
result.packageManager = 'yarn';
|
|
284
|
+
}
|
|
285
|
+
else if (fs.existsSync(path.join(projectPath, 'bun.lockb'))) {
|
|
286
|
+
result.packageManager = 'bun';
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
// Detect package manager overrides for Python
|
|
290
|
+
if (result.language === 'python') {
|
|
291
|
+
if (fs.existsSync(path.join(projectPath, 'poetry.lock'))) {
|
|
292
|
+
result.packageManager = 'poetry';
|
|
293
|
+
}
|
|
294
|
+
else if (fs.existsSync(path.join(projectPath, 'pdm.lock'))) {
|
|
295
|
+
result.packageManager = 'pdm';
|
|
296
|
+
}
|
|
297
|
+
else if (fs.existsSync(path.join(projectPath, 'uv.lock'))) {
|
|
298
|
+
result.packageManager = 'uv';
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
return result;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Detect git repository information
|
|
305
|
+
*/
|
|
306
|
+
export function detectGitInfo(projectPath) {
|
|
307
|
+
const result = {
|
|
308
|
+
hasGit: false,
|
|
309
|
+
remote: null,
|
|
310
|
+
branch: null,
|
|
311
|
+
};
|
|
312
|
+
const gitPath = path.join(projectPath, '.git');
|
|
313
|
+
if (!fs.existsSync(gitPath)) {
|
|
314
|
+
return result;
|
|
315
|
+
}
|
|
316
|
+
result.hasGit = true;
|
|
317
|
+
// Try to get remote URL using git command
|
|
318
|
+
try {
|
|
319
|
+
const remote = execSync('git remote get-url origin', {
|
|
320
|
+
cwd: projectPath,
|
|
321
|
+
encoding: 'utf8',
|
|
322
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
323
|
+
}).trim();
|
|
324
|
+
if (remote) {
|
|
325
|
+
result.remote = remote;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
// No remote configured or git command failed
|
|
330
|
+
}
|
|
331
|
+
// Try to get current branch
|
|
332
|
+
try {
|
|
333
|
+
const branch = execSync('git branch --show-current', {
|
|
334
|
+
cwd: projectPath,
|
|
335
|
+
encoding: 'utf8',
|
|
336
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
337
|
+
}).trim();
|
|
338
|
+
if (branch) {
|
|
339
|
+
result.branch = branch;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
// Not on a branch (detached HEAD) or git command failed
|
|
344
|
+
}
|
|
345
|
+
return result;
|
|
346
|
+
}
|
|
347
|
+
// =============================================================================
|
|
348
|
+
// Helper Functions
|
|
349
|
+
// =============================================================================
|
|
350
|
+
/**
|
|
351
|
+
* Convert kebab-case or snake_case to Title Case
|
|
352
|
+
*/
|
|
353
|
+
function prettifyName(name) {
|
|
354
|
+
return name
|
|
355
|
+
.replace(/[-_]/g, ' ')
|
|
356
|
+
.replace(/\b\w/g, (c) => c.toUpperCase());
|
|
357
|
+
}
|
|
358
|
+
/**
|
|
359
|
+
* Get a human-readable label for detected language
|
|
360
|
+
*/
|
|
361
|
+
export function getLanguageLabel(language) {
|
|
362
|
+
if (!language)
|
|
363
|
+
return 'Unknown';
|
|
364
|
+
const labels = {
|
|
365
|
+
node: 'Node.js / TypeScript',
|
|
366
|
+
go: 'Go',
|
|
367
|
+
python: 'Python',
|
|
368
|
+
rust: 'Rust',
|
|
369
|
+
java: 'Java',
|
|
370
|
+
kotlin: 'Kotlin',
|
|
371
|
+
php: 'PHP',
|
|
372
|
+
ruby: 'Ruby',
|
|
373
|
+
dotnet: '.NET (C#/F#)',
|
|
374
|
+
};
|
|
375
|
+
return labels[language] ?? language;
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Get a human-readable label for detected framework
|
|
379
|
+
*/
|
|
380
|
+
export function getFrameworkLabel(framework) {
|
|
381
|
+
if (!framework)
|
|
382
|
+
return 'Not detected';
|
|
383
|
+
const labels = {
|
|
384
|
+
react: 'React',
|
|
385
|
+
vue: 'Vue.js',
|
|
386
|
+
svelte: 'Svelte',
|
|
387
|
+
angular: 'Angular',
|
|
388
|
+
next: 'Next.js',
|
|
389
|
+
nuxt: 'Nuxt.js',
|
|
390
|
+
express: 'Express.js',
|
|
391
|
+
fastify: 'Fastify',
|
|
392
|
+
koa: 'Koa',
|
|
393
|
+
hono: 'Hono',
|
|
394
|
+
electron: 'Electron',
|
|
395
|
+
fastapi: 'FastAPI',
|
|
396
|
+
django: 'Django',
|
|
397
|
+
flask: 'Flask',
|
|
398
|
+
rails: 'Ruby on Rails',
|
|
399
|
+
sinatra: 'Sinatra',
|
|
400
|
+
laravel: 'Laravel',
|
|
401
|
+
symfony: 'Symfony',
|
|
402
|
+
};
|
|
403
|
+
return labels[framework] ?? framework;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Check if a path is a valid directory that can be imported
|
|
407
|
+
*/
|
|
408
|
+
export function validateImportPath(importPath) {
|
|
409
|
+
// Check if path exists
|
|
410
|
+
if (!fs.existsSync(importPath)) {
|
|
411
|
+
return { valid: false, error: 'Path does not exist' };
|
|
412
|
+
}
|
|
413
|
+
// Check if it's a directory
|
|
414
|
+
try {
|
|
415
|
+
const stats = fs.statSync(importPath);
|
|
416
|
+
if (!stats.isDirectory()) {
|
|
417
|
+
return { valid: false, error: 'Path is not a directory' };
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
return { valid: false, error: 'Cannot access path' };
|
|
422
|
+
}
|
|
423
|
+
return { valid: true };
|
|
424
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import * as fs from 'fs';
|
|
8
8
|
import * as path from 'path';
|
|
9
|
+
import { estimateTokens } from './token-tracker.js';
|
|
9
10
|
// =============================================================================
|
|
10
11
|
// Constants
|
|
11
12
|
// =============================================================================
|
|
@@ -59,7 +60,7 @@ export function loadProjectMemory(options = {}) {
|
|
|
59
60
|
filePath,
|
|
60
61
|
originalSize,
|
|
61
62
|
truncated,
|
|
62
|
-
estimatedTokens:
|
|
63
|
+
estimatedTokens: estimateTokens(content),
|
|
63
64
|
};
|
|
64
65
|
}
|
|
65
66
|
catch {
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Project Status Detection
|
|
3
3
|
* Detects project state for startup message guidance
|
|
4
4
|
*/
|
|
5
|
-
import type { CompilrConfig } from '
|
|
6
|
-
export type { CompilrConfig } from '
|
|
5
|
+
import type { CompilrConfig } from './types/config-types.js';
|
|
6
|
+
export type { CompilrConfig } from './types/config-types.js';
|
|
7
7
|
export interface ProjectStatus {
|
|
8
8
|
/** .compilr/ folder exists */
|
|
9
9
|
initialized: boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup Performance Profiler
|
|
3
|
+
*
|
|
4
|
+
* Lightweight timing utility for diagnosing CLI startup latency.
|
|
5
|
+
* Always collects timestamps (Date.now() is ~nanosecond cost).
|
|
6
|
+
* Writes results to ~/.compilr-dev/startup-perf.log on flush.
|
|
7
|
+
*
|
|
8
|
+
* Foundation layer — no imports from domain or app layers.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Record a timing mark. Cheap — just pushes to an array.
|
|
12
|
+
*/
|
|
13
|
+
export declare function perf(label: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Flush the startup profile to ~/.compilr-dev/startup-perf.log.
|
|
16
|
+
* Overwrites previous log (only the latest startup matters).
|
|
17
|
+
*/
|
|
18
|
+
export declare function flushStartupPerf(): void;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup Performance Profiler
|
|
3
|
+
*
|
|
4
|
+
* Lightweight timing utility for diagnosing CLI startup latency.
|
|
5
|
+
* Always collects timestamps (Date.now() is ~nanosecond cost).
|
|
6
|
+
* Writes results to ~/.compilr-dev/startup-perf.log on flush.
|
|
7
|
+
*
|
|
8
|
+
* Foundation layer — no imports from domain or app layers.
|
|
9
|
+
*/
|
|
10
|
+
import * as fs from 'fs';
|
|
11
|
+
import * as path from 'path';
|
|
12
|
+
import { getDataPath } from '../settings/paths.js';
|
|
13
|
+
const marks = [];
|
|
14
|
+
const t0 = Date.now();
|
|
15
|
+
/**
|
|
16
|
+
* Record a timing mark. Cheap — just pushes to an array.
|
|
17
|
+
*/
|
|
18
|
+
export function perf(label) {
|
|
19
|
+
marks.push({ label, time: Date.now() });
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Flush the startup profile to ~/.compilr-dev/startup-perf.log.
|
|
23
|
+
* Overwrites previous log (only the latest startup matters).
|
|
24
|
+
*/
|
|
25
|
+
export function flushStartupPerf() {
|
|
26
|
+
if (marks.length === 0)
|
|
27
|
+
return;
|
|
28
|
+
const lines = [];
|
|
29
|
+
const totalMs = marks[marks.length - 1].time - t0;
|
|
30
|
+
lines.push(`=== Startup Profile: ${new Date().toISOString()} ===`);
|
|
31
|
+
lines.push(`Total: ${String(totalMs)}ms (${String(marks.length)} marks)\n`);
|
|
32
|
+
let prev = t0;
|
|
33
|
+
for (const mark of marks) {
|
|
34
|
+
const elapsed = mark.time - t0;
|
|
35
|
+
const delta = mark.time - prev;
|
|
36
|
+
const bar = delta > 50 ? ` ${'█'.repeat(Math.min(40, Math.round(delta / 50)))}` : '';
|
|
37
|
+
lines.push(` ${String(elapsed).padStart(6)}ms +${String(delta).padStart(5)}ms ${mark.label}${bar}`);
|
|
38
|
+
prev = mark.time;
|
|
39
|
+
}
|
|
40
|
+
lines.push('');
|
|
41
|
+
// Highlight slow steps (>100ms)
|
|
42
|
+
const slow = marks
|
|
43
|
+
.map((m, i) => ({ label: m.label, delta: m.time - (i > 0 ? marks[i - 1].time : t0) }))
|
|
44
|
+
.filter(m => m.delta > 100)
|
|
45
|
+
.sort((a, b) => b.delta - a.delta);
|
|
46
|
+
if (slow.length > 0) {
|
|
47
|
+
lines.push('Slow steps (>100ms):');
|
|
48
|
+
for (const s of slow) {
|
|
49
|
+
lines.push(` ${String(s.delta).padStart(5)}ms ${s.label}`);
|
|
50
|
+
}
|
|
51
|
+
lines.push('');
|
|
52
|
+
}
|
|
53
|
+
try {
|
|
54
|
+
const logPath = path.join(getDataPath(), 'startup-perf.log');
|
|
55
|
+
fs.writeFileSync(logPath, lines.join('\n'), 'utf-8');
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Best effort — don't crash on log write failure
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Token Tracker
|
|
3
|
+
*
|
|
4
|
+
* Tracks token usage breakdown for debugging and optimization.
|
|
5
|
+
* Estimates are calculated when the agent is created and updated
|
|
6
|
+
* as context changes (messages added, etc.).
|
|
7
|
+
*/
|
|
8
|
+
import type { TokenBreakdown } from './token-types.js';
|
|
9
|
+
export interface TokenEstimates {
|
|
10
|
+
system: number;
|
|
11
|
+
role: number;
|
|
12
|
+
tools: number;
|
|
13
|
+
context: number;
|
|
14
|
+
history: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Count tokens using tiktoken (cl100k_base encoding)
|
|
18
|
+
*/
|
|
19
|
+
export declare function estimateTokens(text: string | undefined): number;
|
|
20
|
+
/**
|
|
21
|
+
* Count tokens for a JSON object (tool definition, etc.)
|
|
22
|
+
*/
|
|
23
|
+
export declare function estimateJsonTokens(obj: unknown): number;
|
|
24
|
+
/**
|
|
25
|
+
* Set static token estimates (called at agent creation)
|
|
26
|
+
*/
|
|
27
|
+
export declare function setStaticEstimates(estimates: {
|
|
28
|
+
system: number;
|
|
29
|
+
role: number;
|
|
30
|
+
tools: number;
|
|
31
|
+
context: number;
|
|
32
|
+
}): void;
|
|
33
|
+
/**
|
|
34
|
+
* Update history token estimate (called before each request)
|
|
35
|
+
*/
|
|
36
|
+
export declare function updateHistoryEstimate(historyTokens: number): void;
|
|
37
|
+
/**
|
|
38
|
+
* Update cache info from API response
|
|
39
|
+
*/
|
|
40
|
+
export declare function updateCacheInfo(cacheRead: number, cacheCreation: number): void;
|
|
41
|
+
/**
|
|
42
|
+
* Get current breakdown for display
|
|
43
|
+
*/
|
|
44
|
+
export declare function getTokenBreakdown(): TokenBreakdown;
|
|
45
|
+
/**
|
|
46
|
+
* Get total estimated tokens
|
|
47
|
+
*/
|
|
48
|
+
export declare function getTotalEstimate(): number;
|
|
49
|
+
/**
|
|
50
|
+
* Reset all estimates (for new agent/session)
|
|
51
|
+
*/
|
|
52
|
+
export declare function resetEstimates(): void;
|
|
53
|
+
/**
|
|
54
|
+
* Format breakdown for display (compact form)
|
|
55
|
+
* Example: "sys:2k role:1k tools:12k ctx:0.4k hist:3k"
|
|
56
|
+
*/
|
|
57
|
+
export declare function formatBreakdownCompact(): string;
|
|
58
|
+
/**
|
|
59
|
+
* Format cache info for display
|
|
60
|
+
* Example: "cached:18k new:5k"
|
|
61
|
+
*/
|
|
62
|
+
export declare function formatCacheInfo(): string | null;
|