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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Command, Flags, ux } from '@oclif/core';
|
|
2
|
+
import { getCurrentConfig } from '../config/environment.js';
|
|
3
|
+
import { DEFAULT_BRANCH } from '../constants.js';
|
|
4
|
+
import { ExitCode, ExitError, exitWithCode } from '../infra/cipher/exit-codes.js';
|
|
5
|
+
import { WorkspaceNotInitializedError } from '../infra/cipher/validation/workspace-validator.js';
|
|
6
|
+
import { HttpCogitPullService } from '../infra/cogit/http-cogit-pull-service.js';
|
|
7
|
+
import { ProjectConfigStore } from '../infra/config/file-config-store.js';
|
|
8
|
+
import { FileContextTreeSnapshotService } from '../infra/context-tree/file-context-tree-snapshot-service.js';
|
|
9
|
+
import { FileContextTreeWriterService } from '../infra/context-tree/file-context-tree-writer-service.js';
|
|
10
|
+
import { KeychainTokenStore } from '../infra/storage/keychain-token-store.js';
|
|
11
|
+
import { MixpanelTrackingService } from '../infra/tracking/mixpanel-tracking-service.js';
|
|
12
|
+
export default class Pull extends Command {
|
|
13
|
+
static description = 'Pull context tree from ByteRover memory storage';
|
|
14
|
+
static examples = [
|
|
15
|
+
'<%= config.bin %> <%= command.id %>',
|
|
16
|
+
'<%= config.bin %> <%= command.id %> --branch develop',
|
|
17
|
+
'<%= config.bin %> <%= command.id %> -b feature-auth',
|
|
18
|
+
];
|
|
19
|
+
static flags = {
|
|
20
|
+
branch: Flags.string({
|
|
21
|
+
char: 'b',
|
|
22
|
+
default: DEFAULT_BRANCH,
|
|
23
|
+
description: 'ByteRover branch name (not Git branch)',
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
async catch(error) {
|
|
27
|
+
if (error instanceof ExitError) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (error.oclif?.exit !== undefined) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
async checkLocalChanges(contextTreeSnapshotService) {
|
|
36
|
+
const changes = await contextTreeSnapshotService.getChanges();
|
|
37
|
+
return changes.added.length > 0 || changes.modified.length > 0 || changes.deleted.length > 0;
|
|
38
|
+
}
|
|
39
|
+
async checkProjectInit(projectConfigStore) {
|
|
40
|
+
const projectConfig = await projectConfigStore.read();
|
|
41
|
+
if (projectConfig === undefined) {
|
|
42
|
+
throw new WorkspaceNotInitializedError('Project not initialized. Please run "brv init" to select your team and workspace.', '.brv');
|
|
43
|
+
}
|
|
44
|
+
return projectConfig;
|
|
45
|
+
}
|
|
46
|
+
createServices() {
|
|
47
|
+
const envConfig = getCurrentConfig();
|
|
48
|
+
const tokenStore = new KeychainTokenStore();
|
|
49
|
+
const trackingService = new MixpanelTrackingService(tokenStore);
|
|
50
|
+
const contextTreeSnapshotService = new FileContextTreeSnapshotService();
|
|
51
|
+
return {
|
|
52
|
+
cogitPullService: new HttpCogitPullService({
|
|
53
|
+
apiBaseUrl: envConfig.cogitApiBaseUrl,
|
|
54
|
+
}),
|
|
55
|
+
contextTreeSnapshotService,
|
|
56
|
+
contextTreeWriterService: new FileContextTreeWriterService({ snapshotService: contextTreeSnapshotService }),
|
|
57
|
+
projectConfigStore: new ProjectConfigStore(),
|
|
58
|
+
tokenStore,
|
|
59
|
+
trackingService,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
async run() {
|
|
63
|
+
const { flags } = await this.parse(Pull);
|
|
64
|
+
try {
|
|
65
|
+
const { cogitPullService, contextTreeSnapshotService, contextTreeWriterService, projectConfigStore, tokenStore, trackingService, } = this.createServices();
|
|
66
|
+
await trackingService.track('mem:pull');
|
|
67
|
+
const token = await this.validateAuth(tokenStore);
|
|
68
|
+
const projectConfig = await this.checkProjectInit(projectConfigStore);
|
|
69
|
+
// Check for local changes
|
|
70
|
+
ux.action.start('Checking for local Context Tree changes');
|
|
71
|
+
const hasLocalChanges = await this.checkLocalChanges(contextTreeSnapshotService);
|
|
72
|
+
ux.action.stop();
|
|
73
|
+
if (hasLocalChanges) {
|
|
74
|
+
exitWithCode(ExitCode.VALIDATION_ERROR, 'You have local changes that have not been pushed. Run "brv push" first.');
|
|
75
|
+
}
|
|
76
|
+
// Pull from CoGit
|
|
77
|
+
this.log('Pulling from ByteRover...');
|
|
78
|
+
const snapshot = await cogitPullService.pull({
|
|
79
|
+
accessToken: token.accessToken,
|
|
80
|
+
branch: flags.branch,
|
|
81
|
+
sessionKey: token.sessionKey,
|
|
82
|
+
spaceId: projectConfig.spaceId,
|
|
83
|
+
teamId: projectConfig.teamId,
|
|
84
|
+
});
|
|
85
|
+
// Sync files to local context tree
|
|
86
|
+
ux.action.start('Syncing context files');
|
|
87
|
+
const syncResult = await contextTreeWriterService.sync({ files: snapshot.files });
|
|
88
|
+
ux.action.stop();
|
|
89
|
+
// Update snapshot ONLY after successful sync
|
|
90
|
+
await contextTreeSnapshotService.saveSnapshot();
|
|
91
|
+
// Success message
|
|
92
|
+
this.log('\n✓ Successfully pulled context tree from ByteRover memory storage!');
|
|
93
|
+
this.log(` Branch: ${flags.branch}`);
|
|
94
|
+
this.log(` Commit: ${snapshot.commitSha.slice(0, 7)}`);
|
|
95
|
+
this.log(` Added: ${syncResult.added.length}, Edited: ${syncResult.edited.length}, Deleted: ${syncResult.deleted.length}`);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (error instanceof WorkspaceNotInitializedError) {
|
|
99
|
+
exitWithCode(ExitCode.VALIDATION_ERROR, 'Project not initialized. Please run "brv init" to select your team and workspace.');
|
|
100
|
+
}
|
|
101
|
+
const message = error instanceof Error ? error.message : 'Pull failed';
|
|
102
|
+
exitWithCode(ExitCode.RUNTIME_ERROR, `Failed to pull: ${message}`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async validateAuth(tokenStore) {
|
|
106
|
+
const token = await tokenStore.load();
|
|
107
|
+
if (token === undefined) {
|
|
108
|
+
this.error('Not authenticated. Run "brv login" first.');
|
|
109
|
+
}
|
|
110
|
+
if (!token.isValid()) {
|
|
111
|
+
this.error('Authentication token expired. Run "brv login" again.');
|
|
112
|
+
}
|
|
113
|
+
return token;
|
|
114
|
+
}
|
|
115
|
+
}
|
package/dist/commands/push.d.ts
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { Command } from '@oclif/core';
|
|
2
2
|
import type { AuthToken } from '../core/domain/entities/auth-token.js';
|
|
3
3
|
import type { BrvConfig } from '../core/domain/entities/brv-config.js';
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
6
|
-
import type { IMemoryStorageService } from '../core/interfaces/i-memory-storage-service.js';
|
|
7
|
-
import type { IPlaybookStore } from '../core/interfaces/i-playbook-store.js';
|
|
4
|
+
import type { ICogitPushService } from '../core/interfaces/i-cogit-push-service.js';
|
|
5
|
+
import type { IContextFileReader } from '../core/interfaces/i-context-file-reader.js';
|
|
8
6
|
import type { IProjectConfigStore } from '../core/interfaces/i-project-config-store.js';
|
|
9
7
|
import type { ITokenStore } from '../core/interfaces/i-token-store.js';
|
|
8
|
+
import { IContextTreeSnapshotService } from '../core/interfaces/i-context-tree-snapshot-service.js';
|
|
10
9
|
import { ITrackingService } from '../core/interfaces/i-tracking-service.js';
|
|
11
10
|
export default class Push extends Command {
|
|
12
11
|
static description: string;
|
|
@@ -15,21 +14,22 @@ export default class Push extends Command {
|
|
|
15
14
|
branch: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
15
|
yes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
17
16
|
};
|
|
17
|
+
protected buildSpaceUrl(webAppUrl: string, teamName: string, spaceName: string): string;
|
|
18
|
+
catch(error: Error & {
|
|
19
|
+
oclif?: {
|
|
20
|
+
exit: number;
|
|
21
|
+
};
|
|
22
|
+
}): Promise<void>;
|
|
18
23
|
protected checkProjectInit(projectConfigStore: IProjectConfigStore): Promise<BrvConfig>;
|
|
19
|
-
protected
|
|
20
|
-
protected confirmPush(projectConfig: BrvConfig, branch: string, fileCount: number): Promise<boolean>;
|
|
21
|
-
protected confirmUpload(memoryService: IMemoryStorageService, token: AuthToken, projectConfig: BrvConfig, requestId: string): Promise<void>;
|
|
24
|
+
protected confirmPush(projectConfig: BrvConfig, branch: string): Promise<boolean>;
|
|
22
25
|
protected createServices(): {
|
|
23
|
-
|
|
24
|
-
|
|
26
|
+
cogitPushService: ICogitPushService;
|
|
27
|
+
contextFileReader: IContextFileReader;
|
|
28
|
+
contextTreeSnapshotService: IContextTreeSnapshotService;
|
|
25
29
|
projectConfigStore: IProjectConfigStore;
|
|
26
30
|
tokenStore: ITokenStore;
|
|
27
31
|
trackingService: ITrackingService;
|
|
28
32
|
};
|
|
29
|
-
protected getPresignedUrls(memoryService: IMemoryStorageService, token: AuthToken, projectConfig: BrvConfig): Promise<PresignedUrlsResponse>;
|
|
30
|
-
protected loadPlaybookContent(playbookStore: IPlaybookStore): Promise<string>;
|
|
31
33
|
run(): Promise<void>;
|
|
32
|
-
protected uploadFiles(memoryService: IMemoryStorageService, presignedUrls: ReadonlyArray<PresignedUrl>, playbookContent: string): Promise<void>;
|
|
33
34
|
protected validateAuth(tokenStore: ITokenStore): Promise<AuthToken>;
|
|
34
|
-
protected verifyPlaybookExists(playbookStore: IPlaybookStore): Promise<void>;
|
|
35
35
|
}
|
package/dist/commands/push.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import { confirm } from '@inquirer/prompts';
|
|
2
2
|
import { Command, Flags, ux } from '@oclif/core';
|
|
3
|
-
import { join } from 'node:path';
|
|
4
3
|
import { getCurrentConfig } from '../config/environment.js';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { DEFAULT_BRANCH } from '../constants.js';
|
|
5
|
+
import { ExitCode, ExitError, exitWithCode } from '../infra/cipher/exit-codes.js';
|
|
6
|
+
import { WorkspaceNotInitializedError } from '../infra/cipher/validation/workspace-validator.js';
|
|
7
|
+
import { mapToPushContexts } from '../infra/cogit/context-tree-to-push-context-mapper.js';
|
|
8
|
+
import { HttpCogitPushService } from '../infra/cogit/http-cogit-push-service.js';
|
|
7
9
|
import { ProjectConfigStore } from '../infra/config/file-config-store.js';
|
|
8
|
-
import {
|
|
10
|
+
import { FileContextFileReader } from '../infra/context-tree/file-context-file-reader.js';
|
|
11
|
+
import { FileContextTreeSnapshotService } from '../infra/context-tree/file-context-tree-snapshot-service.js';
|
|
9
12
|
import { KeychainTokenStore } from '../infra/storage/keychain-token-store.js';
|
|
10
13
|
import { MixpanelTrackingService } from '../infra/tracking/mixpanel-tracking-service.js';
|
|
11
|
-
import { clearDirectory } from '../utils/file-helpers.js';
|
|
12
14
|
export default class Push extends Command {
|
|
13
|
-
static description = 'Push
|
|
15
|
+
static description = 'Push context tree to ByteRover memory storage';
|
|
14
16
|
static examples = [
|
|
15
17
|
'<%= config.bin %> <%= command.id %>',
|
|
16
18
|
'<%= config.bin %> <%= command.id %> --branch develop',
|
|
@@ -29,138 +31,122 @@ export default class Push extends Command {
|
|
|
29
31
|
description: 'Skip confirmation prompt',
|
|
30
32
|
}),
|
|
31
33
|
};
|
|
34
|
+
buildSpaceUrl(webAppUrl, teamName, spaceName) {
|
|
35
|
+
return `${webAppUrl}/${teamName}/${spaceName}`;
|
|
36
|
+
}
|
|
37
|
+
// Override catch to prevent oclif from logging errors that were already displayed
|
|
38
|
+
async catch(error) {
|
|
39
|
+
// Check if error is ExitError (message already displayed by exitWithCode)
|
|
40
|
+
if (error instanceof ExitError) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Backwards compatibility: also check oclif.exit property
|
|
44
|
+
if (error.oclif?.exit !== undefined) {
|
|
45
|
+
// Error already displayed by exitWithCode, silently exit
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// For other errors, re-throw to let oclif handle them
|
|
49
|
+
throw error;
|
|
50
|
+
}
|
|
32
51
|
async checkProjectInit(projectConfigStore) {
|
|
33
52
|
const projectConfig = await projectConfigStore.read();
|
|
34
53
|
if (projectConfig === undefined) {
|
|
35
|
-
|
|
54
|
+
throw new WorkspaceNotInitializedError('Project not initialized. Please run "brv init" to select your team and workspace.', '.brv');
|
|
36
55
|
}
|
|
37
56
|
return projectConfig;
|
|
38
57
|
}
|
|
39
|
-
async
|
|
40
|
-
this.log('\nCleaning up local files...');
|
|
41
|
-
// Clear playbook content and bullet files
|
|
42
|
-
ux.action.start(' Clearing playbook and bullet files');
|
|
43
|
-
await playbookStore.clear();
|
|
44
|
-
ux.action.stop('✓');
|
|
45
|
-
// Clean executor outputs
|
|
46
|
-
const baseDir = process.cwd();
|
|
47
|
-
const aceDir = join(baseDir, BRV_DIR, ACE_DIR);
|
|
48
|
-
const executorOutputsDir = join(aceDir, EXECUTOR_OUTPUTS_DIR);
|
|
49
|
-
const reflectionsDir = join(aceDir, REFLECTIONS_DIR);
|
|
50
|
-
const deltasDir = join(aceDir, DELTAS_DIR);
|
|
51
|
-
ux.action.start(' Cleaning executor outputs');
|
|
52
|
-
const executorCount = await clearDirectory(executorOutputsDir);
|
|
53
|
-
ux.action.stop(`✓ (${executorCount} files removed)`);
|
|
54
|
-
// Clean reflections
|
|
55
|
-
ux.action.start(' Cleaning reflections');
|
|
56
|
-
const reflectionCount = await clearDirectory(reflectionsDir);
|
|
57
|
-
ux.action.stop(`✓ (${reflectionCount} files removed)`);
|
|
58
|
-
// Clean deltas
|
|
59
|
-
ux.action.start(' Cleaning deltas');
|
|
60
|
-
const deltaCount = await clearDirectory(deltasDir);
|
|
61
|
-
ux.action.stop(`✓ (${deltaCount} files removed)`);
|
|
62
|
-
}
|
|
63
|
-
async confirmPush(projectConfig, branch, fileCount) {
|
|
58
|
+
async confirmPush(projectConfig, branch) {
|
|
64
59
|
this.log('\nYou are about to push to ByteRover memory storage:');
|
|
65
60
|
this.log(` Space: ${projectConfig.spaceName}`);
|
|
66
61
|
this.log(` Branch: ${branch}`);
|
|
67
|
-
this.log(` Files to upload: ${fileCount}`);
|
|
68
|
-
this.log('\nAfter successful push, these local files will be cleaned up:');
|
|
69
|
-
this.log(' - Playbook content');
|
|
70
|
-
this.log(` - Bullet files (${BRV_DIR}/${ACE_DIR}/${BULLETS_DIR}/)`);
|
|
71
|
-
this.log(` - Executor outputs (${BRV_DIR}/${ACE_DIR}/${EXECUTOR_OUTPUTS_DIR}/)`);
|
|
72
|
-
this.log(` - Reflections (${BRV_DIR}/${ACE_DIR}/${REFLECTIONS_DIR}/)`);
|
|
73
|
-
this.log(` - Deltas (${BRV_DIR}/${ACE_DIR}/${DELTAS_DIR}/)`);
|
|
74
62
|
return confirm({
|
|
75
63
|
default: false,
|
|
76
|
-
message: 'Push to ByteRover
|
|
64
|
+
message: 'Push to ByteRover?',
|
|
77
65
|
});
|
|
78
66
|
}
|
|
79
|
-
async confirmUpload(memoryService, token, projectConfig, requestId) {
|
|
80
|
-
ux.action.start('Confirming upload');
|
|
81
|
-
await memoryService.confirmUpload({
|
|
82
|
-
accessToken: token.accessToken,
|
|
83
|
-
requestId,
|
|
84
|
-
sessionKey: token.sessionKey,
|
|
85
|
-
spaceId: projectConfig.spaceId,
|
|
86
|
-
teamId: projectConfig.teamId,
|
|
87
|
-
});
|
|
88
|
-
ux.action.stop('✓');
|
|
89
|
-
}
|
|
90
67
|
createServices() {
|
|
91
68
|
const envConfig = getCurrentConfig();
|
|
92
69
|
const tokenStore = new KeychainTokenStore();
|
|
93
70
|
const trackingService = new MixpanelTrackingService(tokenStore);
|
|
94
71
|
return {
|
|
95
|
-
|
|
72
|
+
cogitPushService: new HttpCogitPushService({
|
|
96
73
|
apiBaseUrl: envConfig.cogitApiBaseUrl,
|
|
97
74
|
}),
|
|
98
|
-
|
|
75
|
+
contextFileReader: new FileContextFileReader(),
|
|
76
|
+
contextTreeSnapshotService: new FileContextTreeSnapshotService(),
|
|
99
77
|
projectConfigStore: new ProjectConfigStore(),
|
|
100
78
|
tokenStore,
|
|
101
79
|
trackingService,
|
|
102
80
|
};
|
|
103
81
|
}
|
|
104
|
-
async getPresignedUrls(memoryService, token, projectConfig) {
|
|
105
|
-
const { flags } = await this.parse(Push);
|
|
106
|
-
ux.action.start('Requesting upload URLs');
|
|
107
|
-
const response = await memoryService.getPresignedUrls({
|
|
108
|
-
accessToken: token.accessToken,
|
|
109
|
-
branch: flags.branch,
|
|
110
|
-
fileNames: [`${PLAYBOOK_FILE}`],
|
|
111
|
-
sessionKey: token.sessionKey,
|
|
112
|
-
spaceId: projectConfig.spaceId,
|
|
113
|
-
teamId: projectConfig.teamId,
|
|
114
|
-
});
|
|
115
|
-
ux.action.stop();
|
|
116
|
-
return response;
|
|
117
|
-
}
|
|
118
|
-
async loadPlaybookContent(playbookStore) {
|
|
119
|
-
ux.action.start('Loading playbook');
|
|
120
|
-
const playbook = await playbookStore.load();
|
|
121
|
-
if (playbook === undefined) {
|
|
122
|
-
this.error('Failed to load playbook');
|
|
123
|
-
}
|
|
124
|
-
const playbookContent = playbook.dumps();
|
|
125
|
-
ux.action.stop();
|
|
126
|
-
return playbookContent;
|
|
127
|
-
}
|
|
128
82
|
async run() {
|
|
129
83
|
const { flags } = await this.parse(Push);
|
|
130
84
|
try {
|
|
131
|
-
const {
|
|
85
|
+
const { cogitPushService, contextFileReader, contextTreeSnapshotService, projectConfigStore, tokenStore, trackingService, } = this.createServices();
|
|
132
86
|
await trackingService.track('mem:push');
|
|
133
87
|
const token = await this.validateAuth(tokenStore);
|
|
134
88
|
const projectConfig = await this.checkProjectInit(projectConfigStore);
|
|
135
|
-
|
|
89
|
+
// Check for changes
|
|
90
|
+
ux.action.start('Checking for Context Tree changes');
|
|
91
|
+
const contextTreeChanges = await contextTreeSnapshotService.getChanges();
|
|
92
|
+
ux.action.stop();
|
|
93
|
+
if (contextTreeChanges.added.length === 0 &&
|
|
94
|
+
contextTreeChanges.modified.length === 0 &&
|
|
95
|
+
contextTreeChanges.deleted.length === 0) {
|
|
96
|
+
this.log('No context changes to push.');
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
136
99
|
// Prompt for confirmation unless --yes flag is provided
|
|
137
100
|
if (!flags.yes) {
|
|
138
|
-
const confirmed = await this.confirmPush(projectConfig, flags.branch
|
|
101
|
+
const confirmed = await this.confirmPush(projectConfig, flags.branch);
|
|
139
102
|
if (!confirmed) {
|
|
140
|
-
this.log('Push cancelled.
|
|
103
|
+
this.log('Push cancelled.');
|
|
141
104
|
return;
|
|
142
105
|
}
|
|
143
106
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
await
|
|
147
|
-
|
|
148
|
-
|
|
107
|
+
// Read and prepare files
|
|
108
|
+
ux.action.start('Reading context files');
|
|
109
|
+
const [addedFiles, modifiedFiles] = await Promise.all([
|
|
110
|
+
contextFileReader.readMany(contextTreeChanges.added),
|
|
111
|
+
contextFileReader.readMany(contextTreeChanges.modified),
|
|
112
|
+
]);
|
|
113
|
+
ux.action.stop();
|
|
114
|
+
const pushContexts = mapToPushContexts({
|
|
115
|
+
addedFiles,
|
|
116
|
+
deletedPaths: contextTreeChanges.deleted,
|
|
117
|
+
modifiedFiles,
|
|
118
|
+
});
|
|
119
|
+
if (pushContexts.length === 0) {
|
|
120
|
+
this.log('\nNo valid context files to push.');
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
// Push to CoGit (with two-request SHA flow)
|
|
124
|
+
this.log('Pushing to ByteRover...');
|
|
125
|
+
await cogitPushService.push({
|
|
126
|
+
accessToken: token.accessToken,
|
|
127
|
+
branch: flags.branch,
|
|
128
|
+
contexts: pushContexts,
|
|
129
|
+
sessionKey: token.sessionKey,
|
|
130
|
+
spaceId: projectConfig.spaceId,
|
|
131
|
+
teamId: projectConfig.teamId,
|
|
132
|
+
});
|
|
133
|
+
// Update snapshot ONLY after successful push
|
|
134
|
+
await contextTreeSnapshotService.saveSnapshot();
|
|
149
135
|
// Success message
|
|
150
|
-
this.log('\n✓ Successfully pushed
|
|
136
|
+
this.log('\n✓ Successfully pushed context tree to ByteRover memory storage!');
|
|
151
137
|
this.log(` Branch: ${flags.branch}`);
|
|
152
|
-
this.log(`
|
|
138
|
+
this.log(` Added: ${addedFiles.length}, Edited: ${modifiedFiles.length}, Deleted: ${contextTreeChanges.deleted.length}`);
|
|
139
|
+
this.log(` View: ${this.buildSpaceUrl(getCurrentConfig().webAppUrl, projectConfig.teamName, projectConfig.spaceName)}`);
|
|
153
140
|
}
|
|
154
141
|
catch (error) {
|
|
155
|
-
|
|
142
|
+
if (error instanceof WorkspaceNotInitializedError) {
|
|
143
|
+
exitWithCode(ExitCode.VALIDATION_ERROR, 'Project not initialized. Please run "brv init" to select your team and workspace.');
|
|
144
|
+
}
|
|
145
|
+
// For other errors, use exitWithCode to properly display error before exit
|
|
146
|
+
const message = error instanceof Error ? error.message : 'Push failed';
|
|
147
|
+
exitWithCode(ExitCode.RUNTIME_ERROR, `Failed to push: ${message}`);
|
|
156
148
|
}
|
|
157
149
|
}
|
|
158
|
-
async uploadFiles(memoryService, presignedUrls, playbookContent) {
|
|
159
|
-
this.log('\nUploading files...');
|
|
160
|
-
ux.action.start(' Uploading files');
|
|
161
|
-
await Promise.all(presignedUrls.map((presignedUrl) => memoryService.uploadFile(presignedUrl.uploadUrl, playbookContent)));
|
|
162
|
-
ux.action.stop('✓');
|
|
163
|
-
}
|
|
164
150
|
async validateAuth(tokenStore) {
|
|
165
151
|
const token = await tokenStore.load();
|
|
166
152
|
if (token === undefined) {
|
|
@@ -171,10 +157,4 @@ export default class Push extends Command {
|
|
|
171
157
|
}
|
|
172
158
|
return token;
|
|
173
159
|
}
|
|
174
|
-
async verifyPlaybookExists(playbookStore) {
|
|
175
|
-
const playbookExists = await playbookStore.exists();
|
|
176
|
-
if (!playbookExists) {
|
|
177
|
-
this.error('Playbook not found. Run "brv init" to create one.');
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
160
|
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
import type { IProjectConfigStore } from '../core/interfaces/i-project-config-store.js';
|
|
3
|
+
import type { ITrackingService } from '../core/interfaces/i-tracking-service.js';
|
|
4
|
+
export default class Query extends Command {
|
|
5
|
+
static args: {
|
|
6
|
+
query: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static description: string;
|
|
9
|
+
static examples: string[];
|
|
10
|
+
static flags: {
|
|
11
|
+
apiKey?: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions> | undefined;
|
|
12
|
+
model?: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions> | undefined;
|
|
13
|
+
verbose?: import("@oclif/core/interfaces").BooleanFlag<boolean> | undefined;
|
|
14
|
+
};
|
|
15
|
+
static strict: boolean;
|
|
16
|
+
catch(error: Error & {
|
|
17
|
+
oclif?: {
|
|
18
|
+
exit: number;
|
|
19
|
+
};
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
protected createServices(): {
|
|
22
|
+
projectConfigStore: IProjectConfigStore;
|
|
23
|
+
trackingService: ITrackingService;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Generate a unique session ID for the query agent.
|
|
27
|
+
* Uses crypto.randomUUID() for guaranteed uniqueness (122 bits of entropy).
|
|
28
|
+
*/
|
|
29
|
+
protected generateSessionId(): string;
|
|
30
|
+
run(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* Format items count from list_directory result
|
|
33
|
+
*/
|
|
34
|
+
private formatItemsCount;
|
|
35
|
+
/**
|
|
36
|
+
* Format matches count from grep_content result
|
|
37
|
+
*/
|
|
38
|
+
private formatMatchesCount;
|
|
39
|
+
/**
|
|
40
|
+
* Format tool result summary for display
|
|
41
|
+
*/
|
|
42
|
+
private formatToolResultSummary;
|
|
43
|
+
/**
|
|
44
|
+
* Format topics count from find_knowledge_topics result
|
|
45
|
+
*/
|
|
46
|
+
private formatTopicsCount;
|
|
47
|
+
/**
|
|
48
|
+
* Get user-friendly description for a tool
|
|
49
|
+
*
|
|
50
|
+
* @param toolName - Name of the tool
|
|
51
|
+
* @param args - Tool arguments
|
|
52
|
+
* @returns User-friendly description
|
|
53
|
+
*/
|
|
54
|
+
private getToolDescription;
|
|
55
|
+
/**
|
|
56
|
+
* Handle workspace not initialized error
|
|
57
|
+
*/
|
|
58
|
+
private handleWorkspaceError;
|
|
59
|
+
/**
|
|
60
|
+
* Setup event listeners for CipherAgent
|
|
61
|
+
*/
|
|
62
|
+
private setupEventListeners;
|
|
63
|
+
}
|