byterover-cli 0.2.1 → 0.3.0
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 +56 -56
- package/bin/dev.js +1 -1
- package/dist/commands/cipher-agent/run.d.ts +111 -0
- package/dist/commands/cipher-agent/run.js +493 -0
- package/dist/commands/cipher-agent/set-prompt.d.ts +14 -0
- package/dist/commands/cipher-agent/set-prompt.js +53 -0
- package/dist/commands/cipher-agent/show-prompt.d.ts +11 -0
- package/dist/commands/cipher-agent/show-prompt.js +48 -0
- package/dist/commands/clear.d.ts +6 -0
- package/dist/commands/clear.js +36 -15
- package/dist/commands/curate.d.ts +74 -0
- package/dist/commands/curate.js +396 -0
- package/dist/commands/foo.d.ts +12 -0
- package/dist/commands/foo.js +61 -0
- package/dist/commands/gen-rules.d.ts +3 -0
- package/dist/commands/gen-rules.js +39 -20
- package/dist/commands/init.d.ts +48 -3
- package/dist/commands/init.js +242 -70
- package/dist/commands/login.js +9 -4
- package/dist/commands/pull.d.ts +33 -0
- package/dist/commands/pull.js +115 -0
- package/dist/commands/push.d.ts +13 -13
- package/dist/commands/push.js +81 -101
- package/dist/commands/query.d.ts +63 -0
- package/dist/commands/query.js +349 -0
- package/dist/commands/space/list.d.ts +5 -2
- package/dist/commands/space/list.js +60 -56
- package/dist/commands/space/switch.d.ts +16 -0
- package/dist/commands/space/switch.js +102 -53
- package/dist/commands/status.d.ts +5 -2
- package/dist/commands/status.js +43 -33
- package/dist/commands/watch.d.ts +23 -0
- package/dist/commands/watch.js +171 -0
- package/dist/config/auth.config.js +14 -2
- package/dist/config/context-tree-domains.d.ts +12 -0
- package/dist/config/context-tree-domains.js +29 -0
- package/dist/config/environment.d.ts +6 -0
- package/dist/config/environment.js +9 -2
- package/dist/constants.d.ts +5 -0
- package/dist/constants.js +6 -0
- package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
- package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
- package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
- package/dist/core/domain/cipher/agent/agent-state.js +59 -0
- package/dist/core/domain/cipher/agent/index.d.ts +7 -0
- package/dist/core/domain/cipher/agent/index.js +7 -0
- package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
- package/dist/core/domain/cipher/agent-events/index.js +7 -0
- package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
- package/dist/core/domain/cipher/agent-events/types.js +42 -0
- package/dist/core/domain/cipher/blob/types.d.ts +108 -0
- package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
- package/dist/core/domain/cipher/errors/blob-error.js +68 -0
- package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
- package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
- package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
- package/dist/core/domain/cipher/errors/llm-error.js +161 -0
- package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
- package/dist/core/domain/cipher/errors/memory-error.js +62 -0
- package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
- package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
- package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
- package/dist/core/domain/cipher/errors/process-error.js +173 -0
- package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
- package/dist/core/domain/cipher/errors/session-error.js +74 -0
- package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
- package/dist/core/domain/cipher/errors/tool-error.js +81 -0
- package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
- package/dist/core/domain/cipher/memory/types.d.ts +102 -0
- package/dist/core/domain/cipher/memory/types.js +4 -0
- package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
- package/dist/core/domain/cipher/parsed-interaction.js +25 -0
- package/dist/core/domain/cipher/process/types.d.ts +286 -0
- package/dist/core/domain/cipher/session/types.d.ts +54 -0
- package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
- package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
- package/dist/core/domain/cipher/todos/index.d.ts +4 -0
- package/dist/core/domain/cipher/todos/index.js +4 -0
- package/dist/core/domain/cipher/todos/types.d.ts +57 -0
- package/dist/core/domain/cipher/todos/types.js +5 -0
- package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
- package/dist/core/domain/cipher/tools/constants.js +24 -0
- package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
- package/dist/core/domain/cipher/tools/tool-error.js +246 -0
- package/dist/core/domain/cipher/tools/types.d.ts +145 -0
- package/dist/core/domain/entities/brv-config.d.ts +42 -6
- package/dist/core/domain/entities/brv-config.js +115 -17
- package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
- package/dist/core/domain/entities/cogit-push-context.js +91 -0
- package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
- package/dist/core/domain/entities/cogit-push-response.js +31 -0
- package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
- package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
- package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
- package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
- package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
- package/dist/core/domain/entities/cogit-snapshot.js +58 -0
- package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
- package/dist/core/domain/entities/context-tree-index.js +27 -0
- package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
- package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
- package/dist/core/domain/entities/event.d.ts +1 -1
- package/dist/core/domain/entities/event.js +3 -1
- package/dist/core/domain/entities/parser.d.ts +567 -0
- package/dist/core/domain/entities/parser.js +10 -0
- package/dist/core/domain/entities/playbook.d.ts +2 -23
- package/dist/core/domain/entities/playbook.js +2 -70
- package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
- package/dist/core/domain/errors/brv-config-version-error.js +21 -0
- package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
- package/dist/core/domain/knowledge/directory-manager.js +145 -0
- package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
- package/dist/core/domain/knowledge/markdown-writer.js +18 -0
- package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
- package/dist/core/domain/knowledge/relation-parser.js +131 -0
- package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
- package/dist/core/interfaces/cipher/cipher-services.js +1 -0
- package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
- package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
- package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
- package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
- package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
- package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
- package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
- package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
- package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
- package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
- package/dist/core/interfaces/cipher/i-file-system.js +1 -0
- package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
- package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
- package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
- package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
- package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
- package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
- package/dist/core/interfaces/cipher/i-logger.js +28 -0
- package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
- package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
- package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
- package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
- package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
- package/dist/core/interfaces/cipher/i-process-service.js +1 -0
- package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
- package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
- package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
- package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
- package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
- package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
- package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
- package/dist/core/interfaces/cipher/llm-types.js +5 -0
- package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
- package/dist/core/interfaces/cipher/message-types.js +5 -0
- package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
- package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
- package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
- package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
- package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
- package/dist/core/interfaces/i-cogit-push-service.js +1 -0
- package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
- package/dist/core/interfaces/i-context-file-reader.js +1 -0
- package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
- package/dist/core/interfaces/i-context-tree-service.js +1 -0
- package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
- package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
- package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
- package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
- package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
- package/dist/core/interfaces/i-file-watcher-service.js +1 -0
- package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
- package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
- package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
- package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
- package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
- package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
- package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
- package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
- package/dist/hooks/error/clean-errors.d.ts +7 -0
- package/dist/hooks/error/clean-errors.js +50 -0
- package/dist/hooks/init/welcome.js +72 -1
- package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
- package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
- package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
- package/dist/infra/cipher/agent-service-factory.js +212 -0
- package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
- package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
- package/dist/infra/cipher/blob/index.d.ts +10 -0
- package/dist/infra/cipher/blob/index.js +12 -0
- package/dist/infra/cipher/blob/migrations.d.ts +63 -0
- package/dist/infra/cipher/blob/migrations.js +148 -0
- package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
- package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
- package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
- package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
- package/dist/infra/cipher/cipher-agent.d.ts +182 -0
- package/dist/infra/cipher/cipher-agent.js +317 -0
- package/dist/infra/cipher/command-parser.d.ts +23 -0
- package/dist/infra/cipher/command-parser.js +85 -0
- package/dist/infra/cipher/display/todo-display.d.ts +23 -0
- package/dist/infra/cipher/display/todo-display.js +129 -0
- package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
- package/dist/infra/cipher/events/event-emitter.js +158 -0
- package/dist/infra/cipher/exit-codes.d.ts +44 -0
- package/dist/infra/cipher/exit-codes.js +58 -0
- package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
- package/dist/infra/cipher/file-system/file-system-service.js +641 -0
- package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
- package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
- package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
- package/dist/infra/cipher/file-system/glob-utils.js +120 -0
- package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
- package/dist/infra/cipher/file-system/path-validator.js +184 -0
- package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
- package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
- package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
- package/dist/infra/cipher/interactive-commands.d.ts +16 -0
- package/dist/infra/cipher/interactive-commands.js +198 -0
- package/dist/infra/cipher/interactive-loop.d.ts +24 -0
- package/dist/infra/cipher/interactive-loop.js +352 -0
- package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
- package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
- package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
- package/dist/infra/cipher/llm/context/compression/index.js +5 -0
- package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
- package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
- package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
- package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
- package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
- package/dist/infra/cipher/llm/context/compression/types.js +1 -0
- package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
- package/dist/infra/cipher/llm/context/context-manager.js +419 -0
- package/dist/infra/cipher/llm/context/index.d.ts +2 -0
- package/dist/infra/cipher/llm/context/index.js +2 -0
- package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
- package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
- package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
- package/dist/infra/cipher/llm/context/utils.js +89 -0
- package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
- package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
- package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
- package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
- package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
- package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
- package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
- package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
- package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
- package/dist/infra/cipher/llm/generators/index.js +13 -0
- package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
- package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
- package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
- package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
- package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
- package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
- package/dist/infra/cipher/llm/index.d.ts +9 -0
- package/dist/infra/cipher/llm/index.js +13 -0
- package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
- package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
- package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
- package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
- package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
- package/dist/infra/cipher/llm/response-validator.js +157 -0
- package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
- package/dist/infra/cipher/llm/retry/index.js +10 -0
- package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
- package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
- package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
- package/dist/infra/cipher/llm/thought-parser.js +190 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
- package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
- package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
- package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
- package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
- package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
- package/dist/infra/cipher/logger/console-logger.js +63 -0
- package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
- package/dist/infra/cipher/logger/event-based-logger.js +92 -0
- package/dist/infra/cipher/memory/index.d.ts +6 -0
- package/dist/infra/cipher/memory/index.js +7 -0
- package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
- package/dist/infra/cipher/memory/memory-manager.js +523 -0
- package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
- package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
- package/dist/infra/cipher/process/command-validator.d.ts +59 -0
- package/dist/infra/cipher/process/command-validator.js +266 -0
- package/dist/infra/cipher/process/index.d.ts +8 -0
- package/dist/infra/cipher/process/index.js +8 -0
- package/dist/infra/cipher/process/process-service.d.ts +95 -0
- package/dist/infra/cipher/process/process-service.js +439 -0
- package/dist/infra/cipher/session/chat-session.d.ts +80 -0
- package/dist/infra/cipher/session/chat-session.js +165 -0
- package/dist/infra/cipher/session/index.d.ts +6 -0
- package/dist/infra/cipher/session/index.js +5 -0
- package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
- package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
- package/dist/infra/cipher/session/session-manager.d.ts +109 -0
- package/dist/infra/cipher/session/session-manager.js +172 -0
- package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
- package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
- package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
- package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
- package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
- package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
- package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
- package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
- package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
- package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
- package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
- package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
- package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
- package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
- package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
- package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
- package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
- package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
- package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
- package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
- package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
- package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
- package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
- package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
- package/dist/infra/cipher/tools/index.d.ts +18 -0
- package/dist/infra/cipher/tools/index.js +19 -0
- package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
- package/dist/infra/cipher/tools/policy-engine.js +110 -0
- package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
- package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
- package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
- package/dist/infra/cipher/tools/tool-invocation.js +294 -0
- package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
- package/dist/infra/cipher/tools/tool-manager.js +209 -0
- package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
- package/dist/infra/cipher/tools/tool-markers.js +49 -0
- package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
- package/dist/infra/cipher/tools/tool-provider.js +196 -0
- package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
- package/dist/infra/cipher/tools/tool-registry.js +144 -0
- package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
- package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
- package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
- package/dist/infra/cipher/validation/workspace-validator.js +37 -0
- package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
- package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
- package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
- package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
- package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
- package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
- package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
- package/dist/infra/cogit/http-cogit-push-service.js +104 -0
- package/dist/infra/config/file-config-store.js +9 -3
- package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
- package/dist/infra/context-tree/file-context-file-reader.js +46 -0
- package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
- package/dist/infra/context-tree/file-context-tree-service.js +46 -0
- package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
- package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
- package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
- package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
- package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
- package/dist/infra/memory/http-memory-storage-service.js +4 -3
- package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
- package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
- package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
- package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
- package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
- package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
- package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
- package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
- package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
- package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
- package/dist/infra/parsers/clean/shared.d.ts +84 -0
- package/dist/infra/parsers/clean/shared.js +273 -0
- package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
- package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
- package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
- package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
- package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
- package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
- package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
- package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
- package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
- package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
- package/dist/infra/space/http-space-service.js +2 -1
- package/dist/infra/team/http-team-service.js +2 -1
- package/dist/infra/user/http-user-service.js +2 -1
- package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
- package/dist/infra/watcher/file-watcher-service.js +81 -0
- package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
- package/dist/infra/workspace/workspace-detector-service.js +165 -0
- package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
- package/dist/resources/prompts/modes/autonomous.yml +9 -0
- package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
- package/dist/resources/prompts/reflection.yml +27 -0
- package/dist/resources/prompts/system-prompt.yml +82 -0
- package/dist/resources/prompts/tool-outputs.yml +30 -0
- package/dist/templates/README.md +6 -7
- package/dist/templates/sections/command-reference.md +40 -111
- package/dist/templates/sections/workflow.md +3 -30
- package/dist/utils/emoji-helpers.d.ts +38 -0
- package/dist/utils/emoji-helpers.js +42 -0
- package/dist/utils/error-handler.d.ts +51 -0
- package/dist/utils/error-handler.js +169 -0
- package/dist/utils/error-helpers.d.ts +30 -0
- package/dist/utils/error-helpers.js +47 -0
- package/dist/utils/file-helpers.d.ts +15 -0
- package/dist/utils/file-helpers.js +44 -0
- package/dist/utils/oclif-error-helpers.d.ts +40 -0
- package/dist/utils/oclif-error-helpers.js +46 -0
- package/dist/utils/tool-display-formatter.d.ts +53 -0
- package/dist/utils/tool-display-formatter.js +257 -0
- package/oclif.manifest.json +381 -141
- package/package.json +27 -6
- package/dist/commands/add.d.ts +0 -49
- package/dist/commands/add.js +0 -192
- package/dist/commands/complete.d.ts +0 -108
- package/dist/commands/complete.js +0 -340
- package/dist/commands/retrieve.d.ts +0 -26
- package/dist/commands/retrieve.js +0 -101
- package/dist/core/domain/entities/curator-output.d.ts +0 -14
- package/dist/core/domain/entities/curator-output.js +0 -23
- package/dist/core/domain/entities/delta-batch.d.ts +0 -30
- package/dist/core/domain/entities/delta-batch.js +0 -52
- package/dist/core/domain/entities/delta-operation.d.ts +0 -31
- package/dist/core/domain/entities/delta-operation.js +0 -50
- package/dist/core/domain/entities/executor-output.d.ts +0 -27
- package/dist/core/domain/entities/executor-output.js +0 -33
- package/dist/core/domain/entities/reflector-output.d.ts +0 -38
- package/dist/core/domain/entities/reflector-output.js +0 -44
- package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
- package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
- package/dist/core/interfaces/i-delta-store.d.ts +0 -15
- package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
- package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
- package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
- package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
- package/dist/infra/ace/ace-file-utils.d.ts +0 -46
- package/dist/infra/ace/ace-file-utils.js +0 -83
- package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
- package/dist/infra/ace/ace-prompt-templates.js +0 -177
- package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
- package/dist/infra/ace/file-bullet-content-store.js +0 -89
- package/dist/infra/ace/file-delta-store.d.ts +0 -9
- package/dist/infra/ace/file-delta-store.js +0 -26
- package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
- package/dist/infra/ace/file-executor-output-store.js +0 -26
- package/dist/infra/ace/file-playbook-store.d.ts +0 -29
- package/dist/infra/ace/file-playbook-store.js +0 -107
- package/dist/infra/ace/file-reflection-store.d.ts +0 -10
- package/dist/infra/ace/file-reflection-store.js +0 -55
- package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
- package/dist/infra/playbook/file-playbook-service.js +0 -132
- /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
- /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
- /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
- /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
- /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
- /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
- /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { confirm, search } from '@inquirer/prompts';
|
|
2
|
-
import { Command } from '@oclif/core';
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
3
|
import { AGENT_VALUES } from '../core/domain/entities/agent.js';
|
|
4
4
|
import { RuleExistsError } from '../core/domain/errors/rule-error.js';
|
|
5
5
|
import { FsFileService } from '../infra/file/fs-file-service.js';
|
|
@@ -19,6 +19,12 @@ const AGENTS = AGENT_VALUES.map((agent) => ({
|
|
|
19
19
|
export default class GenRules extends Command {
|
|
20
20
|
static description = 'Generate rule instructions for coding agents to work with ByteRover correctly';
|
|
21
21
|
static examples = ['<%= config.bin %> <%= command.id %>'];
|
|
22
|
+
static flags = {
|
|
23
|
+
agent: Flags.string({
|
|
24
|
+
char: 'a',
|
|
25
|
+
description: 'Agent to generate rules for (optional, will prompt if not provided)',
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
22
28
|
createServices() {
|
|
23
29
|
const fileService = new FsFileService();
|
|
24
30
|
const templateLoader = new FsTemplateLoader(fileService);
|
|
@@ -58,32 +64,45 @@ export default class GenRules extends Command {
|
|
|
58
64
|
});
|
|
59
65
|
}
|
|
60
66
|
async run() {
|
|
67
|
+
const { flags } = await this.parse(GenRules);
|
|
61
68
|
const { ruleWriterService, trackingService } = this.createServices();
|
|
62
|
-
// Track rule generation
|
|
63
|
-
await trackingService.track('rule:generate');
|
|
64
|
-
// Interactive selection with search
|
|
65
|
-
const answer = await this.promptForAgentSelection();
|
|
66
|
-
this.log(`Generating rules for: ${answer}`);
|
|
67
69
|
try {
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
70
|
+
// Track rule generation
|
|
71
|
+
await trackingService.track('rule:generate');
|
|
72
|
+
// Use provided agent or prompt for selection
|
|
73
|
+
const answer = flags.agent ? flags.agent : await this.promptForAgentSelection();
|
|
74
|
+
this.log(`Generating rules for: ${answer}`);
|
|
75
|
+
try {
|
|
76
|
+
await ruleWriterService.writeRule(answer, false);
|
|
77
|
+
this.log(`✅ Successfully generated rule file for ${answer}`);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
if (error instanceof RuleExistsError) {
|
|
81
|
+
const overwrite = await this.promptForOverwriteConfirmation(answer);
|
|
82
|
+
if (overwrite) {
|
|
83
|
+
// Retry with forced=true
|
|
84
|
+
await ruleWriterService.writeRule(answer, true);
|
|
85
|
+
this.log(`✅ Successfully generated rule file for ${answer}`);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
this.log(`Skipping rule file generation for ${answer}`);
|
|
89
|
+
}
|
|
78
90
|
}
|
|
79
91
|
else {
|
|
80
|
-
|
|
92
|
+
// Non-recoverable error - throw to let oclif handle display
|
|
93
|
+
this.error(`Failed to generate rule file: ${error instanceof Error ? error.message : String(error)}`);
|
|
81
94
|
}
|
|
82
95
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
// Handle user cancelling any prompt (Ctrl+C or closing stdin)
|
|
99
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
100
|
+
if (errorMessage.includes('User force closed') || errorMessage.includes('force closed')) {
|
|
101
|
+
this.log('Cancelled.');
|
|
102
|
+
return;
|
|
86
103
|
}
|
|
104
|
+
// For other errors, throw to let oclif handle display
|
|
105
|
+
this.error(error instanceof Error ? error.message : 'An error occurred');
|
|
87
106
|
}
|
|
88
107
|
}
|
|
89
108
|
}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,30 +1,75 @@
|
|
|
1
1
|
import { Command } from '@oclif/core';
|
|
2
|
+
import type { AuthToken } from '../core/domain/entities/auth-token.js';
|
|
2
3
|
import type { Space } from '../core/domain/entities/space.js';
|
|
3
4
|
import type { Team } from '../core/domain/entities/team.js';
|
|
4
|
-
import type {
|
|
5
|
+
import type { IContextTreeService } from '../core/interfaces/i-context-tree-service.js';
|
|
6
|
+
import type { IContextTreeSnapshotService } from '../core/interfaces/i-context-tree-snapshot-service.js';
|
|
5
7
|
import type { IProjectConfigStore } from '../core/interfaces/i-project-config-store.js';
|
|
8
|
+
import type { IRuleWriterService } from '../core/interfaces/i-rule-writer-service.js';
|
|
6
9
|
import type { ISpaceService } from '../core/interfaces/i-space-service.js';
|
|
7
10
|
import type { ITeamService } from '../core/interfaces/i-team-service.js';
|
|
8
11
|
import type { ITokenStore } from '../core/interfaces/i-token-store.js';
|
|
12
|
+
import { type Agent } from '../core/domain/entities/agent.js';
|
|
9
13
|
import { BrvConfig } from '../core/domain/entities/brv-config.js';
|
|
10
14
|
import { ITrackingService } from '../core/interfaces/i-tracking-service.js';
|
|
15
|
+
/**
|
|
16
|
+
* Represents a legacy config that exists but has version issues.
|
|
17
|
+
* Used to display config info during re-initialization prompt.
|
|
18
|
+
*/
|
|
19
|
+
export type LegacyProjectConfigInfo = {
|
|
20
|
+
/**
|
|
21
|
+
* undefined = missing, string = mismatched
|
|
22
|
+
*/
|
|
23
|
+
currentVersion: string | undefined;
|
|
24
|
+
spaceName: string;
|
|
25
|
+
teamName: string;
|
|
26
|
+
type: 'legacy';
|
|
27
|
+
};
|
|
11
28
|
export default class Init extends Command {
|
|
12
29
|
static description: string;
|
|
13
30
|
static examples: string[];
|
|
14
31
|
static flags: {
|
|
15
32
|
force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
33
|
};
|
|
34
|
+
protected aceDirectoryExists(baseDir?: string): Promise<boolean>;
|
|
17
35
|
protected cleanupBeforeReInitialization(): Promise<void>;
|
|
18
|
-
protected confirmReInitialization(config: BrvConfig): Promise<boolean>;
|
|
36
|
+
protected confirmReInitialization(config: BrvConfig | LegacyProjectConfigInfo): Promise<boolean>;
|
|
19
37
|
protected createServices(): {
|
|
20
|
-
|
|
38
|
+
contextTreeService: IContextTreeService;
|
|
39
|
+
contextTreeSnapshotService: IContextTreeSnapshotService;
|
|
21
40
|
projectConfigStore: IProjectConfigStore;
|
|
41
|
+
ruleWriterService: IRuleWriterService;
|
|
22
42
|
spaceService: ISpaceService;
|
|
23
43
|
teamService: ITeamService;
|
|
24
44
|
tokenStore: ITokenStore;
|
|
25
45
|
trackingService: ITrackingService;
|
|
26
46
|
};
|
|
47
|
+
protected detectWorkspacesForAgent(agent: Agent): {
|
|
48
|
+
chatLogPath: string;
|
|
49
|
+
cwd: string;
|
|
50
|
+
};
|
|
51
|
+
protected ensureAuthenticated(tokenStore: ITokenStore): Promise<AuthToken>;
|
|
52
|
+
protected fetchAndSelectSpace(spaceService: ISpaceService, token: AuthToken, team: Team): Promise<Space | undefined>;
|
|
53
|
+
protected fetchAndSelectTeam(teamService: ITeamService, token: AuthToken): Promise<Team | undefined>;
|
|
54
|
+
protected generateRulesForAgent(ruleWriterService: IRuleWriterService, agent: Agent): Promise<void>;
|
|
55
|
+
protected getExistingConfig(projectConfigStore: IProjectConfigStore): Promise<BrvConfig | LegacyProjectConfigInfo | undefined>;
|
|
56
|
+
protected initializeMemoryContextDir(name: string, initFn: () => Promise<string>): Promise<void>;
|
|
57
|
+
protected isLegacyProjectConfig(config: BrvConfig | LegacyProjectConfigInfo): config is LegacyProjectConfigInfo;
|
|
58
|
+
protected promptAceDeprecationRemoval(): Promise<boolean>;
|
|
59
|
+
/**
|
|
60
|
+
* Prompts the user to select an agent.
|
|
61
|
+
* This method is protected to allow test overrides.
|
|
62
|
+
* @returns The selected agent
|
|
63
|
+
*/
|
|
64
|
+
protected promptForAgentSelection(): Promise<Agent>;
|
|
65
|
+
/**
|
|
66
|
+
* Prompts the user to confirm overwriting an existing rule file.
|
|
67
|
+
* This method is protected to allow test overrides.
|
|
68
|
+
*/
|
|
69
|
+
protected promptForOverwriteConfirmation(agent: Agent): Promise<boolean>;
|
|
27
70
|
protected promptForSpaceSelection(spaces: Space[]): Promise<Space>;
|
|
28
71
|
protected promptForTeamSelection(teams: Team[]): Promise<Team>;
|
|
72
|
+
protected removeAceDirectory(baseDir?: string): Promise<void>;
|
|
29
73
|
run(): Promise<void>;
|
|
74
|
+
private logSuccess;
|
|
30
75
|
}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
import { confirm, select } from '@inquirer/prompts';
|
|
1
|
+
import { confirm, search, select } from '@inquirer/prompts';
|
|
2
2
|
import { Command, Flags, ux } from '@oclif/core';
|
|
3
|
-
import { rm } from 'node:fs/promises';
|
|
3
|
+
import { access, readFile, rm } from 'node:fs/promises';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
5
|
import { getCurrentConfig } from '../config/environment.js';
|
|
6
|
-
import { BRV_DIR, PROJECT_CONFIG_FILE } from '../constants.js';
|
|
6
|
+
import { ACE_DIR, BRV_CONFIG_VERSION, BRV_DIR, PROJECT_CONFIG_FILE } from '../constants.js';
|
|
7
|
+
import { AGENT_VALUES } from '../core/domain/entities/agent.js';
|
|
7
8
|
import { BrvConfig } from '../core/domain/entities/brv-config.js';
|
|
9
|
+
import { BrvConfigVersionError } from '../core/domain/errors/brv-config-version-error.js';
|
|
10
|
+
import { RuleExistsError } from '../core/domain/errors/rule-error.js';
|
|
8
11
|
import { ProjectConfigStore } from '../infra/config/file-config-store.js';
|
|
9
|
-
import {
|
|
12
|
+
import { FileContextTreeService } from '../infra/context-tree/file-context-tree-service.js';
|
|
13
|
+
import { FileContextTreeSnapshotService } from '../infra/context-tree/file-context-tree-snapshot-service.js';
|
|
14
|
+
import { FsFileService } from '../infra/file/fs-file-service.js';
|
|
15
|
+
import { RuleTemplateService } from '../infra/rule/rule-template-service.js';
|
|
16
|
+
import { RuleWriterService } from '../infra/rule/rule-writer-service.js';
|
|
10
17
|
import { HttpSpaceService } from '../infra/space/http-space-service.js';
|
|
11
18
|
import { KeychainTokenStore } from '../infra/storage/keychain-token-store.js';
|
|
12
19
|
import { HttpTeamService } from '../infra/team/http-team-service.js';
|
|
20
|
+
import { FsTemplateLoader } from '../infra/template/fs-template-loader.js';
|
|
13
21
|
import { MixpanelTrackingService } from '../infra/tracking/mixpanel-tracking-service.js';
|
|
22
|
+
import { WorkspaceDetectorService } from '../infra/workspace/workspace-detector-service.js';
|
|
14
23
|
export default class Init extends Command {
|
|
15
|
-
static description = `Initialize a project with ByteRover (creates ${BRV_DIR}/${PROJECT_CONFIG_FILE} with team/space selection and initializes
|
|
24
|
+
static description = `Initialize a project with ByteRover (creates ${BRV_DIR}/${PROJECT_CONFIG_FILE} with team/space selection and initializes Context Tree)`;
|
|
16
25
|
static examples = [
|
|
17
26
|
'<%= config.bin %> <%= command.id %>',
|
|
18
27
|
'# Re-initialize if config exists (will show current config and exit):\n<%= config.bin %> <%= command.id %>',
|
|
@@ -25,6 +34,17 @@ export default class Init extends Command {
|
|
|
25
34
|
description: 'Force re-initialization without confirmation prompt',
|
|
26
35
|
}),
|
|
27
36
|
};
|
|
37
|
+
async aceDirectoryExists(baseDir) {
|
|
38
|
+
const dir = baseDir ?? process.cwd();
|
|
39
|
+
const acePath = join(dir, BRV_DIR, ACE_DIR);
|
|
40
|
+
try {
|
|
41
|
+
await access(acePath);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
28
48
|
async cleanupBeforeReInitialization() {
|
|
29
49
|
const brvDir = join(process.cwd(), BRV_DIR);
|
|
30
50
|
this.log('\n Cleaning up existing ByteRover directory...');
|
|
@@ -35,18 +55,24 @@ export default class Init extends Command {
|
|
|
35
55
|
}
|
|
36
56
|
catch (error) {
|
|
37
57
|
ux.action.stop('✗');
|
|
38
|
-
|
|
58
|
+
throw new Error(`Failed to remove ${BRV_DIR}/: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
39
59
|
}
|
|
40
60
|
}
|
|
41
61
|
async confirmReInitialization(config) {
|
|
42
|
-
this.
|
|
62
|
+
if (this.isLegacyProjectConfig(config)) {
|
|
63
|
+
const versionStatus = config.currentVersion === undefined ? 'missing' : `${config.currentVersion} → ${BRV_CONFIG_VERSION}`;
|
|
64
|
+
this.log(`\n⚠️ Project has an outdated configuration (version: ${versionStatus})`);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.log('\n Project is already initialized');
|
|
68
|
+
}
|
|
43
69
|
this.log(` Team: ${config.teamName}`);
|
|
44
70
|
this.log(` Space: ${config.spaceName}`);
|
|
45
71
|
this.log(` Config: ${join(process.cwd(), BRV_DIR, PROJECT_CONFIG_FILE)}`);
|
|
46
72
|
this.log('\n Re-initializing will:');
|
|
47
73
|
this.log(` - Remove the entire ${BRV_DIR}/ directory and all its contents`);
|
|
48
74
|
this.log(' - Allow you to select a new team/space');
|
|
49
|
-
this.log(' - Create a fresh configuration and
|
|
75
|
+
this.log(' - Create a fresh configuration and Context Tree');
|
|
50
76
|
this.log(' - Regenerate rule instructions\n');
|
|
51
77
|
return confirm({
|
|
52
78
|
default: false,
|
|
@@ -57,9 +83,14 @@ export default class Init extends Command {
|
|
|
57
83
|
const envConfig = getCurrentConfig();
|
|
58
84
|
const tokenStore = new KeychainTokenStore();
|
|
59
85
|
const trackingService = new MixpanelTrackingService(tokenStore);
|
|
86
|
+
const fileService = new FsFileService();
|
|
87
|
+
const templateLoader = new FsTemplateLoader(fileService);
|
|
88
|
+
const ruleTemplateService = new RuleTemplateService(templateLoader);
|
|
60
89
|
return {
|
|
61
|
-
|
|
90
|
+
contextTreeService: new FileContextTreeService(),
|
|
91
|
+
contextTreeSnapshotService: new FileContextTreeSnapshotService(),
|
|
62
92
|
projectConfigStore: new ProjectConfigStore(),
|
|
93
|
+
ruleWriterService: new RuleWriterService(fileService, ruleTemplateService),
|
|
63
94
|
spaceService: new HttpSpaceService({
|
|
64
95
|
apiBaseUrl: envConfig.apiBaseUrl,
|
|
65
96
|
}),
|
|
@@ -70,6 +101,155 @@ export default class Init extends Command {
|
|
|
70
101
|
trackingService,
|
|
71
102
|
};
|
|
72
103
|
}
|
|
104
|
+
detectWorkspacesForAgent(agent) {
|
|
105
|
+
const detector = new WorkspaceDetectorService();
|
|
106
|
+
const result = detector.detectWorkspaces(agent);
|
|
107
|
+
return {
|
|
108
|
+
chatLogPath: result.chatLogPath,
|
|
109
|
+
cwd: result.cwd,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
async ensureAuthenticated(tokenStore) {
|
|
113
|
+
const token = await tokenStore.load();
|
|
114
|
+
if (token === undefined) {
|
|
115
|
+
this.error('Not authenticated. Please run "brv login" first.');
|
|
116
|
+
}
|
|
117
|
+
if (!token.isValid()) {
|
|
118
|
+
this.error('Authentication token expired. Please run "brv login" again.');
|
|
119
|
+
}
|
|
120
|
+
return token;
|
|
121
|
+
}
|
|
122
|
+
async fetchAndSelectSpace(spaceService, token, team) {
|
|
123
|
+
ux.action.start('\nFetching all spaces');
|
|
124
|
+
const { spaces } = await spaceService.getSpaces(token.accessToken, token.sessionKey, team.id, { fetchAll: true });
|
|
125
|
+
ux.action.stop();
|
|
126
|
+
if (spaces.length === 0) {
|
|
127
|
+
this.log(`No spaces found in team "${team.getDisplayName()}"`);
|
|
128
|
+
this.log(`Please visit ${getCurrentConfig().webAppUrl} to create your first space for ${team.getDisplayName()}.`);
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
this.log();
|
|
132
|
+
return this.promptForSpaceSelection(spaces);
|
|
133
|
+
}
|
|
134
|
+
async fetchAndSelectTeam(teamService, token) {
|
|
135
|
+
ux.action.start('Fetching all teams');
|
|
136
|
+
const { teams } = await teamService.getTeams(token.accessToken, token.sessionKey, { fetchAll: true });
|
|
137
|
+
ux.action.stop();
|
|
138
|
+
if (teams.length === 0) {
|
|
139
|
+
this.log('No teams found.');
|
|
140
|
+
this.log(`Please visit ${getCurrentConfig().webAppUrl} to create your first team.`);
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
this.log();
|
|
144
|
+
return this.promptForTeamSelection(teams);
|
|
145
|
+
}
|
|
146
|
+
async generateRulesForAgent(ruleWriterService, agent) {
|
|
147
|
+
this.log(`Generating rules for: ${agent}`);
|
|
148
|
+
try {
|
|
149
|
+
await ruleWriterService.writeRule(agent, false);
|
|
150
|
+
this.log(`✅ Successfully generated rule file for ${agent}`);
|
|
151
|
+
}
|
|
152
|
+
catch (error) {
|
|
153
|
+
if (error instanceof RuleExistsError) {
|
|
154
|
+
const overwrite = await this.promptForOverwriteConfirmation(agent);
|
|
155
|
+
if (overwrite) {
|
|
156
|
+
await ruleWriterService.writeRule(agent, true);
|
|
157
|
+
this.log(`✅ Successfully generated rule file for ${agent}`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
this.log(`Skipping rule file generation for ${agent}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
throw error;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
async getExistingConfig(projectConfigStore) {
|
|
169
|
+
const exists = await projectConfigStore.exists();
|
|
170
|
+
if (!exists)
|
|
171
|
+
return undefined;
|
|
172
|
+
try {
|
|
173
|
+
const projectConfig = await projectConfigStore.read();
|
|
174
|
+
if (projectConfig === undefined) {
|
|
175
|
+
throw new Error('Configuration file exists but cannot be read. Please check .brv/config.json');
|
|
176
|
+
}
|
|
177
|
+
return projectConfig;
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
if (error instanceof BrvConfigVersionError) {
|
|
181
|
+
// Legacy/outdated config - read raw JSON for display info
|
|
182
|
+
const configPath = join(process.cwd(), BRV_DIR, PROJECT_CONFIG_FILE);
|
|
183
|
+
const content = await readFile(configPath, 'utf8');
|
|
184
|
+
// As type assertion here since rawJson is default to any/unknown anyway
|
|
185
|
+
const rawJson = JSON.parse(content);
|
|
186
|
+
return {
|
|
187
|
+
currentVersion: error.currentVersion,
|
|
188
|
+
spaceName: typeof rawJson.spaceName === 'string' ? rawJson.spaceName : 'Unknown',
|
|
189
|
+
teamName: typeof rawJson.teamName === 'string' ? rawJson.teamName : 'Unknown',
|
|
190
|
+
type: 'legacy',
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
// Re-throw other errors
|
|
194
|
+
throw error;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async initializeMemoryContextDir(name, initFn) {
|
|
198
|
+
this.log(`\nInitializing ${name}...`);
|
|
199
|
+
try {
|
|
200
|
+
const path = await initFn();
|
|
201
|
+
this.log(`✓ ${name} initialized in ${path}`);
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
this.warn(`${name} initialization skipped: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
isLegacyProjectConfig(config) {
|
|
208
|
+
return 'type' in config && config.type === 'legacy';
|
|
209
|
+
}
|
|
210
|
+
async promptAceDeprecationRemoval() {
|
|
211
|
+
this.log('\n The ACE system is being deprecated.');
|
|
212
|
+
this.log(' ByteRover is migrating to the new Context Tree system for improved');
|
|
213
|
+
this.log(' memory organization and retrieval.');
|
|
214
|
+
this.log('');
|
|
215
|
+
this.log(' We detected an existing ACE folder at .brv/ace/');
|
|
216
|
+
this.log(' This folder and all its contents can be safely removed.\n');
|
|
217
|
+
return confirm({
|
|
218
|
+
default: true,
|
|
219
|
+
message: 'Remove the ACE folder and its contents?',
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Prompts the user to select an agent.
|
|
224
|
+
* This method is protected to allow test overrides.
|
|
225
|
+
* @returns The selected agent
|
|
226
|
+
*/
|
|
227
|
+
async promptForAgentSelection() {
|
|
228
|
+
const AGENTS = AGENT_VALUES.map((agent) => ({
|
|
229
|
+
name: agent,
|
|
230
|
+
value: agent,
|
|
231
|
+
}));
|
|
232
|
+
const answer = await search({
|
|
233
|
+
message: 'Which agent you are using (type to search):',
|
|
234
|
+
async source(input) {
|
|
235
|
+
if (!input)
|
|
236
|
+
return AGENTS;
|
|
237
|
+
return AGENTS.filter((agent) => agent.name.toLowerCase().includes(input.toLowerCase()) ||
|
|
238
|
+
agent.value.toLowerCase().includes(input.toLowerCase()));
|
|
239
|
+
},
|
|
240
|
+
});
|
|
241
|
+
return answer;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Prompts the user to confirm overwriting an existing rule file.
|
|
245
|
+
* This method is protected to allow test overrides.
|
|
246
|
+
*/
|
|
247
|
+
async promptForOverwriteConfirmation(agent) {
|
|
248
|
+
return confirm({
|
|
249
|
+
default: true,
|
|
250
|
+
message: `Rule file already exists for ${agent}. Overwrite?`,
|
|
251
|
+
});
|
|
252
|
+
}
|
|
73
253
|
async promptForSpaceSelection(spaces) {
|
|
74
254
|
const selectedSpaceId = await select({
|
|
75
255
|
choices: spaces.map((space) => ({
|
|
@@ -98,84 +278,76 @@ export default class Init extends Command {
|
|
|
98
278
|
}
|
|
99
279
|
return selectedTeam;
|
|
100
280
|
}
|
|
281
|
+
async removeAceDirectory(baseDir) {
|
|
282
|
+
const dir = baseDir ?? process.cwd();
|
|
283
|
+
const acePath = join(dir, BRV_DIR, ACE_DIR);
|
|
284
|
+
await rm(acePath, { force: true, recursive: true });
|
|
285
|
+
}
|
|
101
286
|
async run() {
|
|
102
|
-
const { flags } = await this.parse(Init);
|
|
103
287
|
try {
|
|
104
|
-
const {
|
|
105
|
-
const
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (!flags.force) {
|
|
112
|
-
const confirmed = await this.confirmReInitialization(currentConfig);
|
|
113
|
-
if (!confirmed) {
|
|
114
|
-
this.log('\nCancelled. Project configuration unchanged.');
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
try {
|
|
288
|
+
const { flags } = await this.parse(Init);
|
|
289
|
+
const { contextTreeService, contextTreeSnapshotService, projectConfigStore, ruleWriterService, spaceService, teamService, tokenStore, trackingService, } = this.createServices();
|
|
290
|
+
const authToken = await this.ensureAuthenticated(tokenStore);
|
|
291
|
+
const existingConfig = await this.getExistingConfig(projectConfigStore);
|
|
292
|
+
if (existingConfig) {
|
|
293
|
+
const shouldCleanup = flags.force ? true : await this.confirmReInitialization(existingConfig);
|
|
294
|
+
if (shouldCleanup) {
|
|
119
295
|
await this.cleanupBeforeReInitialization();
|
|
296
|
+
this.log('\n');
|
|
120
297
|
}
|
|
121
|
-
|
|
122
|
-
this.
|
|
298
|
+
else {
|
|
299
|
+
this.log('\nCancelled. Project configuration unchanged.');
|
|
300
|
+
return;
|
|
123
301
|
}
|
|
124
|
-
this.log('\n'); // Spacing before continuing with init flow
|
|
125
302
|
}
|
|
126
303
|
this.log('Initializing ByteRover project...\n');
|
|
127
|
-
const
|
|
128
|
-
if (
|
|
129
|
-
this.error('Not authenticated. Please run "brv login" first.');
|
|
130
|
-
}
|
|
131
|
-
if (!token.isValid()) {
|
|
132
|
-
this.error('Authentication token expired. Please run "brv login" again.');
|
|
133
|
-
}
|
|
134
|
-
ux.action.start('Fetching all teams');
|
|
135
|
-
const teamResult = await teamService.getTeams(token.accessToken, token.sessionKey, { fetchAll: true });
|
|
136
|
-
ux.action.stop();
|
|
137
|
-
const { teams } = teamResult;
|
|
138
|
-
if (teams.length === 0) {
|
|
139
|
-
this.log('No teams found.');
|
|
140
|
-
this.log(`Please visit ${getCurrentConfig().webAppUrl} to create your first team.`);
|
|
304
|
+
const selectedTeam = await this.fetchAndSelectTeam(teamService, authToken);
|
|
305
|
+
if (!selectedTeam)
|
|
141
306
|
return;
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
const selectedTeam = await this.promptForTeamSelection(teams);
|
|
145
|
-
ux.action.start('Fetching all spaces');
|
|
146
|
-
const spaceResult = await spaceService.getSpaces(token.accessToken, token.sessionKey, selectedTeam.id, {
|
|
147
|
-
fetchAll: true,
|
|
148
|
-
});
|
|
149
|
-
ux.action.stop();
|
|
150
|
-
const { spaces } = spaceResult;
|
|
151
|
-
if (spaces.length === 0) {
|
|
152
|
-
this.log(`No spaces found in team "${selectedTeam.getDisplayName()}"`);
|
|
153
|
-
this.log(`Please visit ${getCurrentConfig().webAppUrl} to create your first space for ${selectedTeam.getDisplayName()}.`);
|
|
307
|
+
const selectedSpace = await this.fetchAndSelectSpace(spaceService, authToken, selectedTeam);
|
|
308
|
+
if (!selectedSpace)
|
|
154
309
|
return;
|
|
310
|
+
// Handle ACE deprecation - check for existing ACE folder and offer removal
|
|
311
|
+
const aceExists = await this.aceDirectoryExists();
|
|
312
|
+
if (aceExists) {
|
|
313
|
+
const shouldRemoveAce = await this.promptAceDeprecationRemoval();
|
|
314
|
+
if (shouldRemoveAce) {
|
|
315
|
+
await this.removeAceDirectory();
|
|
316
|
+
this.log('✓ ACE folder removed');
|
|
317
|
+
}
|
|
155
318
|
}
|
|
319
|
+
// ACE is deprecated - only initialize context tree
|
|
320
|
+
await this.initializeMemoryContextDir('context tree', () => contextTreeService.initialize());
|
|
321
|
+
// Create initial snapshot for change tracking (includes the template files just created)
|
|
322
|
+
await contextTreeSnapshotService.saveSnapshot();
|
|
323
|
+
this.log('✓ Context tree snapshot created');
|
|
156
324
|
this.log();
|
|
157
|
-
const
|
|
158
|
-
|
|
325
|
+
const selectedAgent = await this.promptForAgentSelection();
|
|
326
|
+
this.log('Detecting workspaces...');
|
|
327
|
+
const { chatLogPath, cwd } = this.detectWorkspacesForAgent(selectedAgent);
|
|
328
|
+
this.log(`✓ Detected workspace: ${cwd}`);
|
|
329
|
+
const config = BrvConfig.fromSpace({
|
|
330
|
+
chatLogPath,
|
|
331
|
+
cwd,
|
|
332
|
+
ide: selectedAgent,
|
|
333
|
+
space: selectedSpace,
|
|
334
|
+
});
|
|
159
335
|
await projectConfigStore.write(config);
|
|
160
|
-
this.log('\nInitializing ACE context...');
|
|
161
|
-
try {
|
|
162
|
-
const playbookPath = await playbookService.initialize();
|
|
163
|
-
this.log(`✓ ACE playbook initialized in ${playbookPath}`);
|
|
164
|
-
}
|
|
165
|
-
catch (error) {
|
|
166
|
-
// Warn but don't fail if ACE init fails
|
|
167
|
-
this.warn(`ACE initialization skipped: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
168
|
-
}
|
|
169
336
|
this.log(`\nGenerate rule instructions for coding agents to work with ByteRover correctly`);
|
|
170
337
|
this.log();
|
|
171
|
-
await this.
|
|
338
|
+
await this.generateRulesForAgent(ruleWriterService, selectedAgent);
|
|
339
|
+
await trackingService.track('rule:generate');
|
|
172
340
|
await trackingService.track('space:init');
|
|
173
|
-
this.
|
|
174
|
-
this.log(`✓ Connected to space: ${selectedSpace.getDisplayName()}`);
|
|
175
|
-
this.log(`✓ Configuration saved to: ${BRV_DIR}/${PROJECT_CONFIG_FILE}`);
|
|
341
|
+
this.logSuccess(selectedSpace);
|
|
176
342
|
}
|
|
177
343
|
catch (error) {
|
|
178
|
-
this.error(error instanceof Error ? error.message : '
|
|
344
|
+
this.error(`Initialization failed: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
179
345
|
}
|
|
180
346
|
}
|
|
347
|
+
logSuccess(space) {
|
|
348
|
+
this.log(`\n✓ Project initialized successfully!`);
|
|
349
|
+
this.log(`✓ Connected to space: ${space.getDisplayName()}`);
|
|
350
|
+
this.log(`✓ Configuration saved to: ${BRV_DIR}/${PROJECT_CONFIG_FILE}`);
|
|
351
|
+
this.log("NOTE: It's recommended to add .brv/ to your .gitignore file since ByteRover already takes care of memory/context versioning for you.");
|
|
352
|
+
}
|
|
181
353
|
}
|
package/dist/commands/login.js
CHANGED
|
@@ -85,15 +85,20 @@ export default class Login extends Command {
|
|
|
85
85
|
this.log('Successfully authenticated!');
|
|
86
86
|
}
|
|
87
87
|
catch (error) {
|
|
88
|
-
|
|
88
|
+
// Throw error to let oclif handle display
|
|
89
|
+
const errorMessage = error instanceof Error ? error.message : 'Authentication failed';
|
|
90
|
+
this.error(errorMessage);
|
|
89
91
|
}
|
|
90
92
|
}
|
|
91
93
|
catch (error) {
|
|
92
94
|
if (error instanceof DiscoveryError) {
|
|
93
|
-
|
|
94
|
-
'Please check your network connection and try again.'
|
|
95
|
+
const errorMessage = `Failed to configure authentication: ${error.message}\n` +
|
|
96
|
+
'Please check your network connection and try again.';
|
|
97
|
+
this.error(errorMessage);
|
|
95
98
|
}
|
|
96
|
-
|
|
99
|
+
// Throw error to let oclif handle display
|
|
100
|
+
const errorMessage = error instanceof Error ? error.message : 'Authentication failed';
|
|
101
|
+
this.error(errorMessage);
|
|
97
102
|
}
|
|
98
103
|
finally {
|
|
99
104
|
// Always cleanup server
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
import type { AuthToken } from '../core/domain/entities/auth-token.js';
|
|
3
|
+
import type { BrvConfig } from '../core/domain/entities/brv-config.js';
|
|
4
|
+
import type { ICogitPullService } from '../core/interfaces/i-cogit-pull-service.js';
|
|
5
|
+
import type { IContextTreeSnapshotService } from '../core/interfaces/i-context-tree-snapshot-service.js';
|
|
6
|
+
import type { IContextTreeWriterService } from '../core/interfaces/i-context-tree-writer-service.js';
|
|
7
|
+
import type { IProjectConfigStore } from '../core/interfaces/i-project-config-store.js';
|
|
8
|
+
import type { ITokenStore } from '../core/interfaces/i-token-store.js';
|
|
9
|
+
import type { ITrackingService } from '../core/interfaces/i-tracking-service.js';
|
|
10
|
+
export default class Pull extends Command {
|
|
11
|
+
static description: string;
|
|
12
|
+
static examples: string[];
|
|
13
|
+
static flags: {
|
|
14
|
+
branch: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
catch(error: Error & {
|
|
17
|
+
oclif?: {
|
|
18
|
+
exit: number;
|
|
19
|
+
};
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
protected checkLocalChanges(contextTreeSnapshotService: IContextTreeSnapshotService): Promise<boolean>;
|
|
22
|
+
protected checkProjectInit(projectConfigStore: IProjectConfigStore): Promise<BrvConfig>;
|
|
23
|
+
protected createServices(): {
|
|
24
|
+
cogitPullService: ICogitPullService;
|
|
25
|
+
contextTreeSnapshotService: IContextTreeSnapshotService;
|
|
26
|
+
contextTreeWriterService: IContextTreeWriterService;
|
|
27
|
+
projectConfigStore: IProjectConfigStore;
|
|
28
|
+
tokenStore: ITokenStore;
|
|
29
|
+
trackingService: ITrackingService;
|
|
30
|
+
};
|
|
31
|
+
run(): Promise<void>;
|
|
32
|
+
protected validateAuth(tokenStore: ITokenStore): Promise<AuthToken>;
|
|
33
|
+
}
|