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,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized error handling utility for CLI commands
|
|
3
|
+
*
|
|
4
|
+
* Provides user-friendly error messages based on error type:
|
|
5
|
+
* - Network errors: Check internet connection
|
|
6
|
+
* - Server errors: Retry later
|
|
7
|
+
* - Billing errors: Check account/payment
|
|
8
|
+
* - Auth errors: Re-login required
|
|
9
|
+
* - Validation errors: Check input
|
|
10
|
+
*/
|
|
11
|
+
import { isAxiosError } from 'axios';
|
|
12
|
+
import { addErrorPrefix } from './emoji-helpers.js';
|
|
13
|
+
export var ErrorType;
|
|
14
|
+
(function (ErrorType) {
|
|
15
|
+
ErrorType["AUTH"] = "AUTH";
|
|
16
|
+
ErrorType["BILLING"] = "BILLING";
|
|
17
|
+
ErrorType["NETWORK"] = "NETWORK";
|
|
18
|
+
ErrorType["SERVER"] = "SERVER";
|
|
19
|
+
ErrorType["UNKNOWN"] = "UNKNOWN";
|
|
20
|
+
ErrorType["VALIDATION"] = "VALIDATION";
|
|
21
|
+
})(ErrorType || (ErrorType = {}));
|
|
22
|
+
/**
|
|
23
|
+
* Helper to create a ClassifiedError object
|
|
24
|
+
*/
|
|
25
|
+
function createClassifiedError(err, type, userMessage, customMessage) {
|
|
26
|
+
return {
|
|
27
|
+
message: customMessage || err.message,
|
|
28
|
+
originalError: err,
|
|
29
|
+
type,
|
|
30
|
+
userMessage,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Classify axios-specific errors
|
|
35
|
+
* Returns null if error is not an axios error
|
|
36
|
+
*/
|
|
37
|
+
function classifyAxiosError(error, err) {
|
|
38
|
+
if (!isAxiosError(error)) {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
// Network connectivity issues
|
|
42
|
+
if (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED' || error.code === 'ETIMEDOUT') {
|
|
43
|
+
return createClassifiedError(err, ErrorType.NETWORK, '❌ Network error: Unable to connect to ByteRover servers. Please check your internet connection and try again.');
|
|
44
|
+
}
|
|
45
|
+
// DNS resolution failed
|
|
46
|
+
if (error.code === 'EAI_AGAIN') {
|
|
47
|
+
return createClassifiedError(err, ErrorType.NETWORK, '❌ Network error: DNS resolution failed. Please check your internet connection and DNS settings.');
|
|
48
|
+
}
|
|
49
|
+
// Server returned error response
|
|
50
|
+
if (error.response) {
|
|
51
|
+
const { status } = error.response;
|
|
52
|
+
// Authentication errors (401, 403)
|
|
53
|
+
if (status === 401 || status === 403) {
|
|
54
|
+
return createClassifiedError(err, ErrorType.AUTH, '❌ Authentication failed: Your session has expired or is invalid. Please run "brv login" to re-authenticate.');
|
|
55
|
+
}
|
|
56
|
+
// Billing/quota errors (402, 429)
|
|
57
|
+
if (status === 402 || status === 429) {
|
|
58
|
+
return createClassifiedError(err, ErrorType.BILLING, '❌ Billing error: Your ByteRover account may not have sufficient credits or has reached quota limits. Please check your account settings.');
|
|
59
|
+
}
|
|
60
|
+
// Server errors (500, 502, 503, 504)
|
|
61
|
+
if (status >= 500) {
|
|
62
|
+
return createClassifiedError(err, ErrorType.SERVER, '❌ Server error: ByteRover servers are experiencing issues. Please try again in a few moments.');
|
|
63
|
+
}
|
|
64
|
+
// Client errors (400, 404, etc.)
|
|
65
|
+
if (status >= 400 && status < 500) {
|
|
66
|
+
// Try to extract error message from response
|
|
67
|
+
const responseData = error.response.data;
|
|
68
|
+
const errorMessage = typeof responseData === 'string' ? responseData : responseData?.message || responseData?.error || err.message;
|
|
69
|
+
return createClassifiedError(err, ErrorType.VALIDATION, `❌ Request error: ${errorMessage}`, errorMessage);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Request was made but no response received
|
|
73
|
+
if (error.request) {
|
|
74
|
+
return createClassifiedError(err, ErrorType.NETWORK, '❌ Network error: No response from ByteRover servers. Please check your internet connection and try again.');
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Classify error based on message keywords
|
|
80
|
+
* Returns null if no keywords match
|
|
81
|
+
*/
|
|
82
|
+
function classifyByMessageKeywords(err) {
|
|
83
|
+
const errorMessage = err.message.toLowerCase();
|
|
84
|
+
// Network-related keywords
|
|
85
|
+
if (errorMessage.includes('network') ||
|
|
86
|
+
errorMessage.includes('connection') ||
|
|
87
|
+
errorMessage.includes('timeout') ||
|
|
88
|
+
errorMessage.includes('enotfound') ||
|
|
89
|
+
errorMessage.includes('econnrefused')) {
|
|
90
|
+
return createClassifiedError(err, ErrorType.NETWORK, '❌ Network error: Unable to connect to ByteRover servers. Please check your internet connection and try again.');
|
|
91
|
+
}
|
|
92
|
+
// Authentication keywords
|
|
93
|
+
if (errorMessage.includes('authentication') ||
|
|
94
|
+
errorMessage.includes('unauthorized') ||
|
|
95
|
+
errorMessage.includes('forbidden') ||
|
|
96
|
+
errorMessage.includes('token') ||
|
|
97
|
+
errorMessage.includes('login')) {
|
|
98
|
+
return createClassifiedError(err, ErrorType.AUTH, '❌ Authentication failed: Your session has expired or is invalid. Please run "brv login" to re-authenticate.');
|
|
99
|
+
}
|
|
100
|
+
// Billing keywords
|
|
101
|
+
if (errorMessage.includes('billing') ||
|
|
102
|
+
errorMessage.includes('quota') ||
|
|
103
|
+
errorMessage.includes('limit') ||
|
|
104
|
+
errorMessage.includes('credits') ||
|
|
105
|
+
errorMessage.includes('payment')) {
|
|
106
|
+
return createClassifiedError(err, ErrorType.BILLING, '❌ Billing error: Your ByteRover account may not have sufficient credits or has reached quota limits. Please check your account settings.');
|
|
107
|
+
}
|
|
108
|
+
// Validation keywords
|
|
109
|
+
if (errorMessage.includes('invalid') ||
|
|
110
|
+
errorMessage.includes('required') ||
|
|
111
|
+
errorMessage.includes('missing') ||
|
|
112
|
+
errorMessage.includes('validation')) {
|
|
113
|
+
return createClassifiedError(err, ErrorType.VALIDATION, `❌ Validation error: ${err.message}`);
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Classify error and return user-friendly message
|
|
119
|
+
*/
|
|
120
|
+
export function classifyError(error) {
|
|
121
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
122
|
+
// Try axios error classification first
|
|
123
|
+
const axiosResult = classifyAxiosError(error, err);
|
|
124
|
+
if (axiosResult) {
|
|
125
|
+
return axiosResult;
|
|
126
|
+
}
|
|
127
|
+
// Try message-based classification
|
|
128
|
+
const messageResult = classifyByMessageKeywords(err);
|
|
129
|
+
if (messageResult) {
|
|
130
|
+
return messageResult;
|
|
131
|
+
}
|
|
132
|
+
// Default: unknown error
|
|
133
|
+
// Don't add prefix if error message already has emoji prefix
|
|
134
|
+
return createClassifiedError(err, ErrorType.UNKNOWN, addErrorPrefix(err.message));
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Format error for display to user
|
|
138
|
+
*
|
|
139
|
+
* @param error - Error to format
|
|
140
|
+
* @returns User-friendly error message
|
|
141
|
+
*/
|
|
142
|
+
export function formatError(error) {
|
|
143
|
+
const classified = classifyError(error);
|
|
144
|
+
return classified.userMessage;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Check if error is a network error
|
|
148
|
+
*/
|
|
149
|
+
export function isNetworkError(error) {
|
|
150
|
+
return classifyError(error).type === ErrorType.NETWORK;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Check if error is a server error
|
|
154
|
+
*/
|
|
155
|
+
export function isServerError(error) {
|
|
156
|
+
return classifyError(error).type === ErrorType.SERVER;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Check if error is an authentication error
|
|
160
|
+
*/
|
|
161
|
+
export function isAuthError(error) {
|
|
162
|
+
return classifyError(error).type === ErrorType.AUTH;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Check if error is a billing error
|
|
166
|
+
*/
|
|
167
|
+
export function isBillingError(error) {
|
|
168
|
+
return classifyError(error).type === ErrorType.BILLING;
|
|
169
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safely extracts an error message from an unknown error value.
|
|
3
|
+
*
|
|
4
|
+
* This utility handles various error types that can be thrown in JavaScript:
|
|
5
|
+
* - Error instances (standard Error, custom Error subclasses)
|
|
6
|
+
* - Objects with message property
|
|
7
|
+
* - Strings
|
|
8
|
+
* - Other primitive types
|
|
9
|
+
*
|
|
10
|
+
* @param error - The caught error value (unknown type)
|
|
11
|
+
* @returns A string message describing the error
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* try {
|
|
16
|
+
* await riskyOperation()
|
|
17
|
+
* } catch (error) {
|
|
18
|
+
* throw new Error(`Operation failed: ${getErrorMessage(error)}`)
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function getErrorMessage(error: unknown): string;
|
|
23
|
+
/**
|
|
24
|
+
* Type guard to check if a value is an Error instance.
|
|
25
|
+
* Useful for conditional error handling logic.
|
|
26
|
+
*
|
|
27
|
+
* @param error - The value to check
|
|
28
|
+
* @returns True if the value is an Error instance
|
|
29
|
+
*/
|
|
30
|
+
export declare function isError(error: unknown): error is Error;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safely extracts an error message from an unknown error value.
|
|
3
|
+
*
|
|
4
|
+
* This utility handles various error types that can be thrown in JavaScript:
|
|
5
|
+
* - Error instances (standard Error, custom Error subclasses)
|
|
6
|
+
* - Objects with message property
|
|
7
|
+
* - Strings
|
|
8
|
+
* - Other primitive types
|
|
9
|
+
*
|
|
10
|
+
* @param error - The caught error value (unknown type)
|
|
11
|
+
* @returns A string message describing the error
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* try {
|
|
16
|
+
* await riskyOperation()
|
|
17
|
+
* } catch (error) {
|
|
18
|
+
* throw new Error(`Operation failed: ${getErrorMessage(error)}`)
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function getErrorMessage(error) {
|
|
23
|
+
if (error instanceof Error) {
|
|
24
|
+
return error.message;
|
|
25
|
+
}
|
|
26
|
+
if (typeof error === 'string') {
|
|
27
|
+
return error;
|
|
28
|
+
}
|
|
29
|
+
if (error && typeof error === 'object' && 'message' in error) {
|
|
30
|
+
const { message } = error;
|
|
31
|
+
if (typeof message === 'string') {
|
|
32
|
+
return message;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// Fallback for unknown error types
|
|
36
|
+
return String(error);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Type guard to check if a value is an Error instance.
|
|
40
|
+
* Useful for conditional error handling logic.
|
|
41
|
+
*
|
|
42
|
+
* @param error - The value to check
|
|
43
|
+
* @returns True if the value is an Error instance
|
|
44
|
+
*/
|
|
45
|
+
export function isError(error) {
|
|
46
|
+
return error instanceof Error;
|
|
47
|
+
}
|
|
@@ -13,3 +13,18 @@ export declare function findLatestFile(directory: string): Promise<string>;
|
|
|
13
13
|
* @returns Number of files removed
|
|
14
14
|
*/
|
|
15
15
|
export declare function clearDirectory(dirPath: string): Promise<number>;
|
|
16
|
+
/**
|
|
17
|
+
* Sanitizes a folder path by replacing all special characters with a hyphen.
|
|
18
|
+
* @param folderName - The folder path need to sanitize
|
|
19
|
+
* @returns The sanitized folder path
|
|
20
|
+
*/
|
|
21
|
+
export declare function sanitizeFolderName(folderName: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Lists all immediate children (files and directories) of the given directory,
|
|
24
|
+
* and, for each child folder, shows its own immediate children.
|
|
25
|
+
* @param dirPath The directory path whose children to list.
|
|
26
|
+
* @returns An object where keys are child names, and values are:
|
|
27
|
+
* - for files: undefined
|
|
28
|
+
* - for directories: an array of their immediate children
|
|
29
|
+
*/
|
|
30
|
+
export declare function listDirectoryChildren(dirPath?: string): Record<string, string[] | undefined>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
1
2
|
import { readdir, unlink } from 'node:fs/promises';
|
|
2
3
|
import { join } from 'node:path';
|
|
3
4
|
/**
|
|
@@ -43,3 +44,46 @@ export async function clearDirectory(dirPath) {
|
|
|
43
44
|
throw error;
|
|
44
45
|
}
|
|
45
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Sanitizes a folder path by replacing all special characters with a hyphen.
|
|
49
|
+
* @param folderName - The folder path need to sanitize
|
|
50
|
+
* @returns The sanitized folder path
|
|
51
|
+
*/
|
|
52
|
+
export function sanitizeFolderName(folderName) {
|
|
53
|
+
return folderName.replaceAll(/[^\w\-./]/g, '-');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Lists all immediate children (files and directories) of the given directory,
|
|
57
|
+
* and, for each child folder, shows its own immediate children.
|
|
58
|
+
* @param dirPath The directory path whose children to list.
|
|
59
|
+
* @returns An object where keys are child names, and values are:
|
|
60
|
+
* - for files: undefined
|
|
61
|
+
* - for directories: an array of their immediate children
|
|
62
|
+
*/
|
|
63
|
+
export function listDirectoryChildren(dirPath = '.brv/context-tree') {
|
|
64
|
+
const result = {};
|
|
65
|
+
const children = fs.readdirSync(dirPath);
|
|
66
|
+
for (const child of children) {
|
|
67
|
+
const childPath = `${dirPath}/${child}`;
|
|
68
|
+
let stat;
|
|
69
|
+
try {
|
|
70
|
+
stat = fs.statSync(childPath);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
result[child] = undefined;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (stat.isDirectory()) {
|
|
77
|
+
try {
|
|
78
|
+
result[child] = fs.readdirSync(childPath);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
result[child] = undefined;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
result[child] = undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper utilities for handling oclif-specific errors
|
|
3
|
+
*
|
|
4
|
+
* These utilities help avoid duplicating error handling logic across commands
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Handle oclif error exit codes
|
|
8
|
+
*
|
|
9
|
+
* If the error has an oclif.exit property (set by this.error()), exit the process
|
|
10
|
+
* with that code. This prevents oclif from re-logging errors that were already displayed.
|
|
11
|
+
*
|
|
12
|
+
* @param error - Error with optional oclif metadata
|
|
13
|
+
* @returns true if error was handled (process exited), false if error should be re-thrown
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* public async catch(error: Error & {oclif?: {exit: number}}): Promise<void> {
|
|
17
|
+
* if (handleOclifExit(error)) return
|
|
18
|
+
* // Handle other error cases...
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleOclifExit(error: Error & {
|
|
22
|
+
oclif?: {
|
|
23
|
+
exit: number;
|
|
24
|
+
};
|
|
25
|
+
}): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if error is an oclif validation error
|
|
28
|
+
*
|
|
29
|
+
* Validation errors include missing arguments, unexpected arguments, and missing flags.
|
|
30
|
+
* These should be re-thrown to let oclif's error handler display them properly.
|
|
31
|
+
*
|
|
32
|
+
* @param error - Error to check
|
|
33
|
+
* @returns true if error is a validation error
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* if (isValidationError(error)) {
|
|
37
|
+
* throw error // Let oclif handle it
|
|
38
|
+
* }
|
|
39
|
+
*/
|
|
40
|
+
export declare function isValidationError(error: Error): boolean;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper utilities for handling oclif-specific errors
|
|
3
|
+
*
|
|
4
|
+
* These utilities help avoid duplicating error handling logic across commands
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Handle oclif error exit codes
|
|
8
|
+
*
|
|
9
|
+
* If the error has an oclif.exit property (set by this.error()), exit the process
|
|
10
|
+
* with that code. This prevents oclif from re-logging errors that were already displayed.
|
|
11
|
+
*
|
|
12
|
+
* @param error - Error with optional oclif metadata
|
|
13
|
+
* @returns true if error was handled (process exited), false if error should be re-thrown
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* public async catch(error: Error & {oclif?: {exit: number}}): Promise<void> {
|
|
17
|
+
* if (handleOclifExit(error)) return
|
|
18
|
+
* // Handle other error cases...
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export function handleOclifExit(error) {
|
|
22
|
+
if (error.oclif?.exit !== undefined) {
|
|
23
|
+
// eslint-disable-next-line n/no-process-exit, unicorn/no-process-exit
|
|
24
|
+
process.exit(error.oclif.exit);
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Check if error is an oclif validation error
|
|
30
|
+
*
|
|
31
|
+
* Validation errors include missing arguments, unexpected arguments, and missing flags.
|
|
32
|
+
* These should be re-thrown to let oclif's error handler display them properly.
|
|
33
|
+
*
|
|
34
|
+
* @param error - Error to check
|
|
35
|
+
* @returns true if error is a validation error
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* if (isValidationError(error)) {
|
|
39
|
+
* throw error // Let oclif handle it
|
|
40
|
+
* }
|
|
41
|
+
*/
|
|
42
|
+
export function isValidationError(error) {
|
|
43
|
+
return (error.message.includes('Unexpected argument') ||
|
|
44
|
+
error.message.includes('Missing') ||
|
|
45
|
+
error.message.includes('required'));
|
|
46
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Display Formatter
|
|
3
|
+
*
|
|
4
|
+
* Utilities for formatting tool call arguments and results in a concise,
|
|
5
|
+
* readable format for CLI display.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Format a tool call with its arguments for display.
|
|
9
|
+
*
|
|
10
|
+
* Creates a concise, single-line representation of a tool call:
|
|
11
|
+
* - Truncates long strings with ellipsis
|
|
12
|
+
* - Shows relative paths or basenames for file paths
|
|
13
|
+
* - Omits undefined/null optional parameters
|
|
14
|
+
* - Formats arrays and objects as summaries
|
|
15
|
+
*
|
|
16
|
+
* @param toolName - Name of the tool being called
|
|
17
|
+
* @param args - Tool arguments object
|
|
18
|
+
* @returns Formatted string like "tool_name(arg1: value1, arg2: value2)"
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* formatToolCall('read_file', { filePath: '/long/path/to/file.ts', limit: 100 })
|
|
23
|
+
* // Returns: 'read_file(filePath: "file.ts", limit: 100)'
|
|
24
|
+
*
|
|
25
|
+
* formatToolCall('write_file', { filePath: 'test.ts', content: 'very long content...', createDirs: true })
|
|
26
|
+
* // Returns: 'write_file(filePath: "test.ts", content: "very long conte...", createDirs: true)'
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatToolCall(toolName: string, args: Record<string, unknown>): string;
|
|
30
|
+
/**
|
|
31
|
+
* Format a tool result for display.
|
|
32
|
+
*
|
|
33
|
+
* Creates a concise summary of the tool execution result:
|
|
34
|
+
* - For success: shows relevant metrics (file size, match count, etc.)
|
|
35
|
+
* - For errors: shows error message
|
|
36
|
+
* - Truncates long values
|
|
37
|
+
*
|
|
38
|
+
* @param toolName - Name of the tool that was executed
|
|
39
|
+
* @param success - Whether the tool execution succeeded
|
|
40
|
+
* @param result - Tool result (if successful)
|
|
41
|
+
* @param error - Error message (if failed)
|
|
42
|
+
* @returns Formatted result string
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* formatToolResult('write_file', true, { bytesWritten: 245 })
|
|
47
|
+
* // Returns: 'File written (245 bytes)'
|
|
48
|
+
*
|
|
49
|
+
* formatToolResult('read_file', false, undefined, 'ENOENT: no such file or directory')
|
|
50
|
+
* // Returns: 'ENOENT: no such file or directory'
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare function formatToolResult(toolName: string, success: boolean, result?: unknown, error?: string): string;
|