@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
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Anchors - CLI wrapper for @compilr-dev/agents AnchorManager
|
|
3
|
+
*
|
|
4
|
+
* Manages per-project anchor isolation using the library's AnchorManager
|
|
5
|
+
* with project-scoped persistence based on CLI's dataPath configuration.
|
|
6
|
+
*
|
|
7
|
+
* Storage structure:
|
|
8
|
+
* {dataPath}/anchors/
|
|
9
|
+
* ├── global.json # Non-project anchors
|
|
10
|
+
* └── project-{id}.json # Per-project anchors
|
|
11
|
+
*/
|
|
12
|
+
import { AnchorManager } from '@compilr-dev/sdk';
|
|
13
|
+
import type { Anchor, AnchorInput, AnchorQueryOptions } from '@compilr-dev/sdk';
|
|
14
|
+
export type { Anchor, AnchorInput, AnchorQueryOptions };
|
|
15
|
+
/**
|
|
16
|
+
* Get anchor manager for a project (or global if projectId is null)
|
|
17
|
+
*
|
|
18
|
+
* Creates a new manager if one doesn't exist, using file-based persistence.
|
|
19
|
+
*
|
|
20
|
+
* @param projectId - Project ID, or null for global anchors
|
|
21
|
+
* @returns AnchorManager instance
|
|
22
|
+
*/
|
|
23
|
+
export declare function getAnchorManager(projectId: string | null): AnchorManager;
|
|
24
|
+
/**
|
|
25
|
+
* Get the global anchor manager
|
|
26
|
+
*/
|
|
27
|
+
export declare function getGlobalAnchorManager(): AnchorManager;
|
|
28
|
+
/**
|
|
29
|
+
* Clear all anchors for a project
|
|
30
|
+
*
|
|
31
|
+
* Should be called when a project is deleted.
|
|
32
|
+
*
|
|
33
|
+
* @param projectId - Project ID to clear
|
|
34
|
+
* @returns Number of anchors removed
|
|
35
|
+
*/
|
|
36
|
+
export declare function clearProjectAnchors(projectId: string): number;
|
|
37
|
+
/**
|
|
38
|
+
* Get formatted anchor content for injection into system prompt
|
|
39
|
+
*
|
|
40
|
+
* Combines global anchors with project-specific anchors.
|
|
41
|
+
*
|
|
42
|
+
* @param projectId - Optional project ID to include project anchors
|
|
43
|
+
* @returns Formatted anchor string for system prompt
|
|
44
|
+
*/
|
|
45
|
+
export declare function getFormattedAnchors(projectId?: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Add an anchor
|
|
48
|
+
*
|
|
49
|
+
* Convenience function that routes to the appropriate manager.
|
|
50
|
+
*
|
|
51
|
+
* @param input - Anchor input with optional projectId
|
|
52
|
+
* @returns Created anchor
|
|
53
|
+
*/
|
|
54
|
+
export declare function addAnchor(input: AnchorInput & {
|
|
55
|
+
projectId?: string;
|
|
56
|
+
}): Anchor;
|
|
57
|
+
/**
|
|
58
|
+
* Get all anchors across all managers
|
|
59
|
+
*
|
|
60
|
+
* @param options - Query options
|
|
61
|
+
* @returns Array of all anchors
|
|
62
|
+
*/
|
|
63
|
+
export declare function getAllAnchors(options?: AnchorQueryOptions): Anchor[];
|
|
64
|
+
/**
|
|
65
|
+
* Get list of project IDs that have anchor files
|
|
66
|
+
*/
|
|
67
|
+
export declare function getProjectsWithAnchors(): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Get anchor statistics
|
|
70
|
+
*/
|
|
71
|
+
export declare function getAnchorStats(): {
|
|
72
|
+
globalCount: number;
|
|
73
|
+
projectCounts: Map<string, number>;
|
|
74
|
+
totalTokens: number;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Clear all cached managers (useful for testing or refresh)
|
|
78
|
+
*/
|
|
79
|
+
export declare function clearManagerCache(): void;
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Anchors - CLI wrapper for @compilr-dev/agents AnchorManager
|
|
3
|
+
*
|
|
4
|
+
* Manages per-project anchor isolation using the library's AnchorManager
|
|
5
|
+
* with project-scoped persistence based on CLI's dataPath configuration.
|
|
6
|
+
*
|
|
7
|
+
* Storage structure:
|
|
8
|
+
* {dataPath}/anchors/
|
|
9
|
+
* ├── global.json # Non-project anchors
|
|
10
|
+
* └── project-{id}.json # Per-project anchors
|
|
11
|
+
*/
|
|
12
|
+
import * as fs from 'fs';
|
|
13
|
+
import * as path from 'path';
|
|
14
|
+
import { AnchorManager } from '@compilr-dev/sdk';
|
|
15
|
+
import { getDataPath } from '../settings/paths.js';
|
|
16
|
+
// =============================================================================
|
|
17
|
+
// State
|
|
18
|
+
// =============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Cache of anchor managers by project ID (null = global)
|
|
21
|
+
*/
|
|
22
|
+
const managers = new Map();
|
|
23
|
+
// =============================================================================
|
|
24
|
+
// Helpers
|
|
25
|
+
// =============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Get the anchors directory path
|
|
28
|
+
*/
|
|
29
|
+
function getAnchorsDir() {
|
|
30
|
+
return path.join(getDataPath(), 'anchors');
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the persist path for a project (or global)
|
|
34
|
+
*/
|
|
35
|
+
function getPersistPath(projectId) {
|
|
36
|
+
const anchorsDir = getAnchorsDir();
|
|
37
|
+
const filename = projectId ? `project-${projectId}.json` : 'global.json';
|
|
38
|
+
return path.join(anchorsDir, filename);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Ensure the anchors directory exists
|
|
42
|
+
*/
|
|
43
|
+
function ensureAnchorsDir() {
|
|
44
|
+
const anchorsDir = getAnchorsDir();
|
|
45
|
+
if (!fs.existsSync(anchorsDir)) {
|
|
46
|
+
fs.mkdirSync(anchorsDir, { recursive: true });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// =============================================================================
|
|
50
|
+
// Public API
|
|
51
|
+
// =============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* Get anchor manager for a project (or global if projectId is null)
|
|
54
|
+
*
|
|
55
|
+
* Creates a new manager if one doesn't exist, using file-based persistence.
|
|
56
|
+
*
|
|
57
|
+
* @param projectId - Project ID, or null for global anchors
|
|
58
|
+
* @returns AnchorManager instance
|
|
59
|
+
*/
|
|
60
|
+
export function getAnchorManager(projectId) {
|
|
61
|
+
if (managers.has(projectId)) {
|
|
62
|
+
const existing = managers.get(projectId);
|
|
63
|
+
if (existing)
|
|
64
|
+
return existing;
|
|
65
|
+
}
|
|
66
|
+
ensureAnchorsDir();
|
|
67
|
+
const manager = new AnchorManager({
|
|
68
|
+
persistPath: getPersistPath(projectId),
|
|
69
|
+
// Only include default safety anchors for global manager
|
|
70
|
+
includeDefaults: projectId === null,
|
|
71
|
+
maxAnchors: 50,
|
|
72
|
+
maxTokens: 4000,
|
|
73
|
+
});
|
|
74
|
+
managers.set(projectId, manager);
|
|
75
|
+
return manager;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Get the global anchor manager
|
|
79
|
+
*/
|
|
80
|
+
export function getGlobalAnchorManager() {
|
|
81
|
+
return getAnchorManager(null);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Clear all anchors for a project
|
|
85
|
+
*
|
|
86
|
+
* Should be called when a project is deleted.
|
|
87
|
+
*
|
|
88
|
+
* @param projectId - Project ID to clear
|
|
89
|
+
* @returns Number of anchors removed
|
|
90
|
+
*/
|
|
91
|
+
export function clearProjectAnchors(projectId) {
|
|
92
|
+
const manager = managers.get(projectId);
|
|
93
|
+
let removed = 0;
|
|
94
|
+
if (manager) {
|
|
95
|
+
removed = manager.clear();
|
|
96
|
+
managers.delete(projectId);
|
|
97
|
+
}
|
|
98
|
+
// Also delete the persistence file
|
|
99
|
+
const filePath = getPersistPath(projectId);
|
|
100
|
+
if (fs.existsSync(filePath)) {
|
|
101
|
+
fs.unlinkSync(filePath);
|
|
102
|
+
}
|
|
103
|
+
return removed;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get formatted anchor content for injection into system prompt
|
|
107
|
+
*
|
|
108
|
+
* Combines global anchors with project-specific anchors.
|
|
109
|
+
*
|
|
110
|
+
* @param projectId - Optional project ID to include project anchors
|
|
111
|
+
* @returns Formatted anchor string for system prompt
|
|
112
|
+
*/
|
|
113
|
+
export function getFormattedAnchors(projectId) {
|
|
114
|
+
const parts = [];
|
|
115
|
+
// Get global anchors
|
|
116
|
+
const globalManager = getGlobalAnchorManager();
|
|
117
|
+
const globalFormatted = globalManager.format();
|
|
118
|
+
if (globalFormatted) {
|
|
119
|
+
parts.push(globalFormatted);
|
|
120
|
+
}
|
|
121
|
+
// Get project-specific anchors if project ID provided
|
|
122
|
+
if (projectId) {
|
|
123
|
+
const projectManager = getAnchorManager(projectId);
|
|
124
|
+
const projectFormatted = projectManager.format();
|
|
125
|
+
if (projectFormatted) {
|
|
126
|
+
if (parts.length > 0) {
|
|
127
|
+
parts.push(''); // Empty line separator
|
|
128
|
+
parts.push(`### Project Anchors (${projectId})`);
|
|
129
|
+
}
|
|
130
|
+
parts.push(projectFormatted);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return parts.join('\n');
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Add an anchor
|
|
137
|
+
*
|
|
138
|
+
* Convenience function that routes to the appropriate manager.
|
|
139
|
+
*
|
|
140
|
+
* @param input - Anchor input with optional projectId
|
|
141
|
+
* @returns Created anchor
|
|
142
|
+
*/
|
|
143
|
+
export function addAnchor(input) {
|
|
144
|
+
const manager = getAnchorManager(input.projectId ?? null);
|
|
145
|
+
return manager.add(input);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get all anchors across all managers
|
|
149
|
+
*
|
|
150
|
+
* @param options - Query options
|
|
151
|
+
* @returns Array of all anchors
|
|
152
|
+
*/
|
|
153
|
+
export function getAllAnchors(options) {
|
|
154
|
+
const allAnchors = [];
|
|
155
|
+
for (const manager of managers.values()) {
|
|
156
|
+
allAnchors.push(...manager.getAll(options));
|
|
157
|
+
}
|
|
158
|
+
return allAnchors;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get list of project IDs that have anchor files
|
|
162
|
+
*/
|
|
163
|
+
export function getProjectsWithAnchors() {
|
|
164
|
+
const anchorsDir = getAnchorsDir();
|
|
165
|
+
if (!fs.existsSync(anchorsDir)) {
|
|
166
|
+
return [];
|
|
167
|
+
}
|
|
168
|
+
const files = fs.readdirSync(anchorsDir);
|
|
169
|
+
const projectIds = [];
|
|
170
|
+
for (const file of files) {
|
|
171
|
+
const match = /^project-(.+)\.json$/.exec(file);
|
|
172
|
+
if (match && match[1]) {
|
|
173
|
+
projectIds.push(match[1]);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return projectIds;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get anchor statistics
|
|
180
|
+
*/
|
|
181
|
+
export function getAnchorStats() {
|
|
182
|
+
const globalManager = getGlobalAnchorManager();
|
|
183
|
+
const projectCounts = new Map();
|
|
184
|
+
let totalTokens = globalManager.getTotalTokens();
|
|
185
|
+
// Load all project managers to get stats
|
|
186
|
+
for (const projectId of getProjectsWithAnchors()) {
|
|
187
|
+
const manager = getAnchorManager(projectId);
|
|
188
|
+
projectCounts.set(projectId, manager.size);
|
|
189
|
+
totalTokens += manager.getTotalTokens();
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
globalCount: globalManager.size,
|
|
193
|
+
projectCounts,
|
|
194
|
+
totalTokens,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Clear all cached managers (useful for testing or refresh)
|
|
199
|
+
*/
|
|
200
|
+
export function clearManagerCache() {
|
|
201
|
+
managers.clear();
|
|
202
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Client for CLI Authentication
|
|
3
|
+
*
|
|
4
|
+
* All backend communication goes through Netlify Functions.
|
|
5
|
+
* No direct Supabase SDK dependency — the server handles Supabase calls.
|
|
6
|
+
*
|
|
7
|
+
* Note: This is for USER authentication only — users still bring their own LLM API keys.
|
|
8
|
+
*/
|
|
9
|
+
export interface RefreshTokenResponse {
|
|
10
|
+
success: boolean;
|
|
11
|
+
access_token?: string;
|
|
12
|
+
refresh_token?: string;
|
|
13
|
+
expires_in?: number;
|
|
14
|
+
user?: {
|
|
15
|
+
id: string;
|
|
16
|
+
email: string;
|
|
17
|
+
};
|
|
18
|
+
error?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ProfileData {
|
|
21
|
+
user_id: string;
|
|
22
|
+
email: string;
|
|
23
|
+
account_type: 'free' | 'pro' | 'team' | 'enterprise';
|
|
24
|
+
telemetry_enabled: boolean;
|
|
25
|
+
default_provider: string;
|
|
26
|
+
default_model: string;
|
|
27
|
+
default_tier: string;
|
|
28
|
+
theme: string;
|
|
29
|
+
total_sessions: number;
|
|
30
|
+
total_messages: number;
|
|
31
|
+
first_session_at: string | null;
|
|
32
|
+
last_session_at: string | null;
|
|
33
|
+
created_at: string;
|
|
34
|
+
}
|
|
35
|
+
export interface HeartbeatData {
|
|
36
|
+
session_id: string;
|
|
37
|
+
cli_version: string;
|
|
38
|
+
os: string;
|
|
39
|
+
node_version: string;
|
|
40
|
+
project_id?: number;
|
|
41
|
+
total_messages?: number;
|
|
42
|
+
total_tokens_in?: number;
|
|
43
|
+
total_tokens_out?: number;
|
|
44
|
+
commands_used?: Record<string, number>;
|
|
45
|
+
agents_used?: string[];
|
|
46
|
+
tools_used?: string[];
|
|
47
|
+
llm_provider?: string;
|
|
48
|
+
llm_model?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface DeviceCodeResponse {
|
|
51
|
+
device_code: string;
|
|
52
|
+
user_code: string;
|
|
53
|
+
verification_uri: string;
|
|
54
|
+
verification_uri_complete: string;
|
|
55
|
+
expires_in: number;
|
|
56
|
+
interval: number;
|
|
57
|
+
}
|
|
58
|
+
export interface DeviceTokenResponse {
|
|
59
|
+
access_token: string;
|
|
60
|
+
refresh_token: string;
|
|
61
|
+
token_type: string;
|
|
62
|
+
expires_in: number;
|
|
63
|
+
api_token?: string;
|
|
64
|
+
user: {
|
|
65
|
+
id: string;
|
|
66
|
+
email: string;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export interface DeviceTokenError {
|
|
70
|
+
error: 'authorization_pending' | 'slow_down' | 'expired_token' | 'access_denied' | 'invalid_grant' | 'server_error';
|
|
71
|
+
error_description: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Refresh an access token using a refresh token.
|
|
75
|
+
* Calls the server-side Netlify function which handles Supabase internally.
|
|
76
|
+
*/
|
|
77
|
+
export declare function refreshToken(refreshTokenValue: string): Promise<RefreshTokenResponse>;
|
|
78
|
+
/**
|
|
79
|
+
* Send heartbeat to record session.
|
|
80
|
+
*/
|
|
81
|
+
export declare function sendHeartbeat(accessToken: string, data: HeartbeatData): Promise<{
|
|
82
|
+
success: boolean;
|
|
83
|
+
telemetry_enabled?: boolean;
|
|
84
|
+
error?: string;
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* Get user profile from CLI API.
|
|
88
|
+
*/
|
|
89
|
+
export declare function getProfile(accessToken: string): Promise<{
|
|
90
|
+
success: boolean;
|
|
91
|
+
profile?: ProfileData;
|
|
92
|
+
error?: string;
|
|
93
|
+
}>;
|
|
94
|
+
/**
|
|
95
|
+
* Update user profile via CLI API.
|
|
96
|
+
*/
|
|
97
|
+
export declare function updateProfile(accessToken: string, updates: Partial<Pick<ProfileData, 'telemetry_enabled' | 'default_provider' | 'default_model' | 'default_tier' | 'theme'>>): Promise<{
|
|
98
|
+
success: boolean;
|
|
99
|
+
profile?: ProfileData;
|
|
100
|
+
error?: string;
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Request a device code for CLI authentication.
|
|
104
|
+
* Returns codes and URLs for the user to authorize.
|
|
105
|
+
*/
|
|
106
|
+
export declare function requestDeviceCode(): Promise<{
|
|
107
|
+
success: boolean;
|
|
108
|
+
data?: DeviceCodeResponse;
|
|
109
|
+
error?: string;
|
|
110
|
+
}>;
|
|
111
|
+
/**
|
|
112
|
+
* Poll for device token after user authorizes.
|
|
113
|
+
* Returns tokens on success, or error status if still pending.
|
|
114
|
+
*/
|
|
115
|
+
export declare function pollDeviceToken(deviceCode: string): Promise<{
|
|
116
|
+
success: boolean;
|
|
117
|
+
data?: DeviceTokenResponse;
|
|
118
|
+
error?: DeviceTokenError;
|
|
119
|
+
networkError?: string;
|
|
120
|
+
}>;
|
|
121
|
+
/**
|
|
122
|
+
* Get the authorization URL for the device flow.
|
|
123
|
+
*/
|
|
124
|
+
export declare function getAuthorizationUrl(userCode?: string): string;
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Client for CLI Authentication
|
|
3
|
+
*
|
|
4
|
+
* All backend communication goes through Netlify Functions.
|
|
5
|
+
* No direct Supabase SDK dependency — the server handles Supabase calls.
|
|
6
|
+
*
|
|
7
|
+
* Note: This is for USER authentication only — users still bring their own LLM API keys.
|
|
8
|
+
*/
|
|
9
|
+
import * as os from 'os';
|
|
10
|
+
// =============================================================================
|
|
11
|
+
// Configuration
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// API endpoint for CLI-specific operations
|
|
14
|
+
// Use COMPILR_API_URL env var for testing against branch previews
|
|
15
|
+
const API_BASE_URL = process.env.COMPILR_API_URL || 'https://compilr.dev/.netlify/functions';
|
|
16
|
+
// Device flow authorization URL
|
|
17
|
+
// Use COMPILR_WEB_URL env var for testing against branch previews
|
|
18
|
+
const WEB_BASE_URL = process.env.COMPILR_WEB_URL || 'https://compilr.dev';
|
|
19
|
+
const AUTHORIZATION_URL = `${WEB_BASE_URL}/cli/authorize`;
|
|
20
|
+
// =============================================================================
|
|
21
|
+
// Token Refresh (via Netlify Function)
|
|
22
|
+
// =============================================================================
|
|
23
|
+
/**
|
|
24
|
+
* Refresh an access token using a refresh token.
|
|
25
|
+
* Calls the server-side Netlify function which handles Supabase internally.
|
|
26
|
+
*/
|
|
27
|
+
export async function refreshToken(refreshTokenValue) {
|
|
28
|
+
try {
|
|
29
|
+
const response = await fetch(`${API_BASE_URL}/cli-refresh-token`, {
|
|
30
|
+
method: 'POST',
|
|
31
|
+
headers: {
|
|
32
|
+
'Content-Type': 'application/json',
|
|
33
|
+
},
|
|
34
|
+
body: JSON.stringify({ refresh_token: refreshTokenValue }),
|
|
35
|
+
});
|
|
36
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
37
|
+
if (!contentType.includes('application/json')) {
|
|
38
|
+
return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
|
|
39
|
+
}
|
|
40
|
+
const result = await response.json();
|
|
41
|
+
if (!response.ok) {
|
|
42
|
+
return {
|
|
43
|
+
success: false,
|
|
44
|
+
error: result.error ?? `HTTP ${String(response.status)}`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return {
|
|
48
|
+
success: true,
|
|
49
|
+
access_token: result.access_token,
|
|
50
|
+
refresh_token: result.refresh_token,
|
|
51
|
+
expires_in: result.expires_in,
|
|
52
|
+
user: result.user,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
return {
|
|
57
|
+
success: false,
|
|
58
|
+
error: error instanceof Error ? error.message : 'Network error',
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// =============================================================================
|
|
63
|
+
// CLI API Operations (against our Netlify Functions)
|
|
64
|
+
// =============================================================================
|
|
65
|
+
/**
|
|
66
|
+
* Send heartbeat to record session.
|
|
67
|
+
*/
|
|
68
|
+
export async function sendHeartbeat(accessToken, data) {
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetch(`${API_BASE_URL}/cli-heartbeat`, {
|
|
71
|
+
method: 'POST',
|
|
72
|
+
headers: {
|
|
73
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
74
|
+
'Content-Type': 'application/json',
|
|
75
|
+
},
|
|
76
|
+
body: JSON.stringify(data),
|
|
77
|
+
});
|
|
78
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
79
|
+
if (!contentType.includes('application/json')) {
|
|
80
|
+
return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
|
|
81
|
+
}
|
|
82
|
+
const result = await response.json();
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
error: result.error ?? `HTTP ${String(response.status)}`,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
success: result.success ?? true,
|
|
91
|
+
telemetry_enabled: result.telemetry_enabled,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return {
|
|
96
|
+
success: false,
|
|
97
|
+
error: error instanceof Error ? error.message : 'Network error',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get user profile from CLI API.
|
|
103
|
+
*/
|
|
104
|
+
export async function getProfile(accessToken) {
|
|
105
|
+
try {
|
|
106
|
+
const response = await fetch(`${API_BASE_URL}/cli-profile`, {
|
|
107
|
+
method: 'GET',
|
|
108
|
+
headers: {
|
|
109
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
113
|
+
if (!contentType.includes('application/json')) {
|
|
114
|
+
return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
|
|
115
|
+
}
|
|
116
|
+
const result = await response.json();
|
|
117
|
+
if (!response.ok) {
|
|
118
|
+
return {
|
|
119
|
+
success: false,
|
|
120
|
+
error: result.error ?? `HTTP ${String(response.status)}`,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
success: true,
|
|
125
|
+
profile: result,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
return {
|
|
130
|
+
success: false,
|
|
131
|
+
error: error instanceof Error ? error.message : 'Network error',
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Update user profile via CLI API.
|
|
137
|
+
*/
|
|
138
|
+
export async function updateProfile(accessToken, updates) {
|
|
139
|
+
try {
|
|
140
|
+
const response = await fetch(`${API_BASE_URL}/cli-profile`, {
|
|
141
|
+
method: 'PATCH',
|
|
142
|
+
headers: {
|
|
143
|
+
'Authorization': `Bearer ${accessToken}`,
|
|
144
|
+
'Content-Type': 'application/json',
|
|
145
|
+
},
|
|
146
|
+
body: JSON.stringify(updates),
|
|
147
|
+
});
|
|
148
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
149
|
+
if (!contentType.includes('application/json')) {
|
|
150
|
+
return { success: false, error: `Server returned non-JSON response (${String(response.status)})` };
|
|
151
|
+
}
|
|
152
|
+
const result = await response.json();
|
|
153
|
+
if (!response.ok) {
|
|
154
|
+
return {
|
|
155
|
+
success: false,
|
|
156
|
+
error: result.error ?? `HTTP ${String(response.status)}`,
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
success: result.success ?? true,
|
|
161
|
+
profile: result.profile,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
return {
|
|
166
|
+
success: false,
|
|
167
|
+
error: error instanceof Error ? error.message : 'Network error',
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
// =============================================================================
|
|
172
|
+
// Device Flow Authentication
|
|
173
|
+
// =============================================================================
|
|
174
|
+
/**
|
|
175
|
+
* Request a device code for CLI authentication.
|
|
176
|
+
* Returns codes and URLs for the user to authorize.
|
|
177
|
+
*/
|
|
178
|
+
export async function requestDeviceCode() {
|
|
179
|
+
try {
|
|
180
|
+
const url = `${API_BASE_URL}/cli-device-code`;
|
|
181
|
+
const response = await fetch(url, {
|
|
182
|
+
method: 'POST',
|
|
183
|
+
headers: {
|
|
184
|
+
'Content-Type': 'application/json',
|
|
185
|
+
},
|
|
186
|
+
});
|
|
187
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
188
|
+
if (!contentType.includes('application/json')) {
|
|
189
|
+
return {
|
|
190
|
+
success: false,
|
|
191
|
+
error: `Non-JSON response (${String(response.status)}) from: ${url}`,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
if (!response.ok) {
|
|
195
|
+
const result = await response.json();
|
|
196
|
+
return {
|
|
197
|
+
success: false,
|
|
198
|
+
error: result.error ?? `HTTP ${String(response.status)}`,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
const data = await response.json();
|
|
202
|
+
return { success: true, data };
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
return {
|
|
206
|
+
success: false,
|
|
207
|
+
error: error instanceof Error ? error.message : 'Network error',
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Poll for device token after user authorizes.
|
|
213
|
+
* Returns tokens on success, or error status if still pending.
|
|
214
|
+
*/
|
|
215
|
+
export async function pollDeviceToken(deviceCode) {
|
|
216
|
+
try {
|
|
217
|
+
const response = await fetch(`${API_BASE_URL}/cli-device-token`, {
|
|
218
|
+
method: 'POST',
|
|
219
|
+
headers: {
|
|
220
|
+
'Content-Type': 'application/json',
|
|
221
|
+
},
|
|
222
|
+
body: JSON.stringify({
|
|
223
|
+
device_code: deviceCode,
|
|
224
|
+
hostname: os.hostname(),
|
|
225
|
+
}),
|
|
226
|
+
});
|
|
227
|
+
const contentType = response.headers.get('content-type') ?? '';
|
|
228
|
+
if (!contentType.includes('application/json')) {
|
|
229
|
+
return {
|
|
230
|
+
success: false,
|
|
231
|
+
networkError: `Server returned non-JSON response (${String(response.status)})`,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
const result = await response.json();
|
|
235
|
+
if (!response.ok) {
|
|
236
|
+
return {
|
|
237
|
+
success: false,
|
|
238
|
+
error: result,
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
return {
|
|
242
|
+
success: true,
|
|
243
|
+
data: result,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
catch (error) {
|
|
247
|
+
return {
|
|
248
|
+
success: false,
|
|
249
|
+
networkError: error instanceof Error ? error.message : 'Network error',
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Get the authorization URL for the device flow.
|
|
255
|
+
*/
|
|
256
|
+
export function getAuthorizationUrl(userCode) {
|
|
257
|
+
if (userCode) {
|
|
258
|
+
return `${AUTHORIZATION_URL}?code=${userCode}`;
|
|
259
|
+
}
|
|
260
|
+
return AUTHORIZATION_URL;
|
|
261
|
+
}
|