byterover-cli 0.2.0 → 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 +53 -2
- package/dist/commands/init.js +279 -66
- package/dist/commands/login.js +9 -4
- package/dist/commands/logout.d.ts +16 -0
- package/dist/commands/logout.js +61 -0
- 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 +4 -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/i-rule-template-service.d.ts +0 -4
- package/dist/core/interfaces/i-rule-template-service.js +1 -4
- 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/rule/constants.d.ts +4 -0
- package/dist/infra/rule/constants.js +4 -0
- package/dist/infra/rule/rule-template-service.js +1 -1
- package/dist/infra/rule/rule-writer-service.js +1 -5
- 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 -93
- 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 +422 -142
- package/package.json +29 -10
- 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,419 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-level event names for CipherAgent.
|
|
3
|
+
* These events are emitted at the agent level and include sessionId in payloads.
|
|
4
|
+
*/
|
|
5
|
+
export declare const AGENT_EVENT_NAMES: readonly ["cipher:conversationReset", "cipher:executionStarted", "cipher:executionTerminated", "cipher:log", "cipher:stateChanged", "cipher:stateReset", "cipher:ui"];
|
|
6
|
+
/**
|
|
7
|
+
* Session-level event names for LLM service operations.
|
|
8
|
+
* These events are emitted at the session level and do not include sessionId in payloads.
|
|
9
|
+
*/
|
|
10
|
+
export declare const SESSION_EVENT_NAMES: readonly ["llmservice:chunk", "llmservice:error", "llmservice:outputTruncated", "llmservice:response", "llmservice:thinking", "llmservice:thought", "llmservice:toolCall", "llmservice:toolResult", "llmservice:unsupportedInput", "llmservice:warning"];
|
|
11
|
+
/**
|
|
12
|
+
* All event names (union of agent and session events).
|
|
13
|
+
*/
|
|
14
|
+
export declare const EVENT_NAMES: readonly ["cipher:conversationReset", "cipher:executionStarted", "cipher:executionTerminated", "cipher:log", "cipher:stateChanged", "cipher:stateReset", "cipher:ui", "llmservice:chunk", "llmservice:error", "llmservice:outputTruncated", "llmservice:response", "llmservice:thinking", "llmservice:thought", "llmservice:toolCall", "llmservice:toolResult", "llmservice:unsupportedInput", "llmservice:warning"];
|
|
15
|
+
/**
|
|
16
|
+
* Union type of all agent event names.
|
|
17
|
+
*/
|
|
18
|
+
export type AgentEventName = (typeof AGENT_EVENT_NAMES)[number];
|
|
19
|
+
/**
|
|
20
|
+
* Union type of all session event names.
|
|
21
|
+
*/
|
|
22
|
+
export type SessionEventName = (typeof SESSION_EVENT_NAMES)[number];
|
|
23
|
+
/**
|
|
24
|
+
* Union type of all event names.
|
|
25
|
+
*/
|
|
26
|
+
export type EventName = (typeof EVENT_NAMES)[number];
|
|
27
|
+
/**
|
|
28
|
+
* Token usage information for LLM responses.
|
|
29
|
+
*/
|
|
30
|
+
export interface TokenUsage {
|
|
31
|
+
inputTokens: number;
|
|
32
|
+
outputTokens: number;
|
|
33
|
+
totalTokens: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Log level for structured logging events.
|
|
37
|
+
*/
|
|
38
|
+
export type LogLevel = 'debug' | 'error' | 'info' | 'warn';
|
|
39
|
+
/**
|
|
40
|
+
* UI event type for user interface actions.
|
|
41
|
+
*/
|
|
42
|
+
export type UIEventType = 'banner' | 'help' | 'prompt' | 'response' | 'separator' | 'shutdown';
|
|
43
|
+
/**
|
|
44
|
+
* Tool error type classification.
|
|
45
|
+
* Used for structured error reporting in tool execution.
|
|
46
|
+
*/
|
|
47
|
+
export type ToolErrorType = 'CANCELLED' | 'CONFIRMATION_REJECTED' | 'EXECUTION_FAILED' | 'INTERNAL_ERROR' | 'INVALID_PARAM_TYPE' | 'INVALID_PARAMS' | 'MISSING_REQUIRED_PARAM' | 'PARAM_VALIDATION_FAILED' | 'PERMISSION_DENIED' | 'PROVIDER_ERROR' | 'TIMEOUT' | 'TOOL_DISABLED' | 'TOOL_NOT_FOUND';
|
|
48
|
+
/**
|
|
49
|
+
* Termination reason type for agent execution.
|
|
50
|
+
* Matches TerminationReason enum values as strings.
|
|
51
|
+
*/
|
|
52
|
+
export type AgentTerminationReason = 'ABORTED' | 'ERROR' | 'GOAL' | 'MAX_TURNS' | 'PROTOCOL_VIOLATION' | 'TIMEOUT';
|
|
53
|
+
/**
|
|
54
|
+
* Agent execution state type.
|
|
55
|
+
* Matches AgentState enum values as strings.
|
|
56
|
+
*/
|
|
57
|
+
export type AgentExecutionStateType = 'ABORTED' | 'COMPLETE' | 'ERROR' | 'EXECUTING' | 'IDLE' | 'TOOL_CALLING';
|
|
58
|
+
/**
|
|
59
|
+
* Agent-level event payloads.
|
|
60
|
+
* All agent events include sessionId for tracking which session triggered the event.
|
|
61
|
+
*/
|
|
62
|
+
export interface AgentEventMap {
|
|
63
|
+
/**
|
|
64
|
+
* Emitted when a conversation is reset.
|
|
65
|
+
* @property {string} sessionId - ID of the session being reset
|
|
66
|
+
*/
|
|
67
|
+
'cipher:conversationReset': {
|
|
68
|
+
sessionId: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Emitted when agent execution starts.
|
|
72
|
+
* @property {number} maxIterations - Maximum iterations allowed
|
|
73
|
+
* @property {number} [maxTimeMs] - Maximum execution time in milliseconds
|
|
74
|
+
* @property {string} sessionId - ID of the session
|
|
75
|
+
* @property {Date} startTime - When execution started
|
|
76
|
+
*/
|
|
77
|
+
'cipher:executionStarted': {
|
|
78
|
+
maxIterations: number;
|
|
79
|
+
maxTimeMs?: number;
|
|
80
|
+
sessionId: string;
|
|
81
|
+
startTime: Date;
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Emitted when agent execution terminates.
|
|
85
|
+
* @property {number} [durationMs] - Execution duration in milliseconds
|
|
86
|
+
* @property {Date} endTime - When execution ended
|
|
87
|
+
* @property {Error} [error] - Error if terminated due to error
|
|
88
|
+
* @property {AgentTerminationReason} reason - Why execution terminated
|
|
89
|
+
* @property {string} sessionId - ID of the session
|
|
90
|
+
* @property {number} toolCallsExecuted - Number of tool calls made
|
|
91
|
+
* @property {number} turnCount - Number of turns completed
|
|
92
|
+
*/
|
|
93
|
+
'cipher:executionTerminated': {
|
|
94
|
+
durationMs?: number;
|
|
95
|
+
endTime: Date;
|
|
96
|
+
error?: Error;
|
|
97
|
+
reason: AgentTerminationReason;
|
|
98
|
+
sessionId: string;
|
|
99
|
+
toolCallsExecuted: number;
|
|
100
|
+
turnCount: number;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Emitted for structured logging from any layer.
|
|
104
|
+
* @property {Record<string, unknown>} [context] - Optional structured context data
|
|
105
|
+
* @property {LogLevel} level - Log level (debug, info, warn, error)
|
|
106
|
+
* @property {string} message - Human-readable log message
|
|
107
|
+
* @property {string} [sessionId] - Optional session ID (if log is session-specific)
|
|
108
|
+
* @property {string} [source] - Optional source identifier (e.g., class name, module)
|
|
109
|
+
*/
|
|
110
|
+
'cipher:log': {
|
|
111
|
+
context?: Record<string, unknown>;
|
|
112
|
+
level: LogLevel;
|
|
113
|
+
message: string;
|
|
114
|
+
sessionId?: string;
|
|
115
|
+
source?: string;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* Emitted when agent state changes.
|
|
119
|
+
* @property {string} field - Name of the state field that changed
|
|
120
|
+
* @property {unknown} newValue - New value
|
|
121
|
+
* @property {unknown} [oldValue] - Previous value (if applicable)
|
|
122
|
+
* @property {string} [sessionId] - ID of the session (optional for global state changes)
|
|
123
|
+
*/
|
|
124
|
+
'cipher:stateChanged': {
|
|
125
|
+
field: string;
|
|
126
|
+
newValue: unknown;
|
|
127
|
+
oldValue?: unknown;
|
|
128
|
+
sessionId?: string;
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Emitted when agent state is completely reset.
|
|
132
|
+
* @property {string} [sessionId] - ID of the session (optional for global state resets)
|
|
133
|
+
*/
|
|
134
|
+
'cipher:stateReset': {
|
|
135
|
+
sessionId?: string;
|
|
136
|
+
};
|
|
137
|
+
/**
|
|
138
|
+
* Emitted for UI-related actions (banners, prompts, responses, etc.).
|
|
139
|
+
* This separates UI concerns from business logic logging.
|
|
140
|
+
* @property {Record<string, unknown>} [context] - Optional context (e.g., colors, formatting data)
|
|
141
|
+
* @property {string} [message] - Optional human-readable message
|
|
142
|
+
* @property {string} [sessionId] - Optional session ID
|
|
143
|
+
* @property {UIEventType} type - Type of UI event
|
|
144
|
+
*/
|
|
145
|
+
'cipher:ui': {
|
|
146
|
+
context?: Record<string, unknown>;
|
|
147
|
+
message?: string;
|
|
148
|
+
sessionId?: string;
|
|
149
|
+
type: UIEventType;
|
|
150
|
+
};
|
|
151
|
+
/**
|
|
152
|
+
* Session events forwarded to agent bus with sessionId added.
|
|
153
|
+
*/
|
|
154
|
+
/**
|
|
155
|
+
* Emitted when a chunk of content is received (streaming).
|
|
156
|
+
* @property {string} content - Content of the chunk
|
|
157
|
+
* @property {boolean} [isComplete] - Whether this is the final chunk
|
|
158
|
+
* @property {string} sessionId - ID of the session
|
|
159
|
+
* @property {'reasoning' | 'text'} type - Type of chunk (text or reasoning)
|
|
160
|
+
*/
|
|
161
|
+
'llmservice:chunk': {
|
|
162
|
+
content: string;
|
|
163
|
+
isComplete?: boolean;
|
|
164
|
+
sessionId: string;
|
|
165
|
+
type: 'reasoning' | 'text';
|
|
166
|
+
};
|
|
167
|
+
/**
|
|
168
|
+
* Emitted when an error occurs during LLM service operation.
|
|
169
|
+
* @property {string} [code] - Error code (optional)
|
|
170
|
+
* @property {string} error - Error message
|
|
171
|
+
* @property {string} sessionId - ID of the session
|
|
172
|
+
*/
|
|
173
|
+
'llmservice:error': {
|
|
174
|
+
code?: string;
|
|
175
|
+
error: string;
|
|
176
|
+
sessionId: string;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Emitted when tool output is truncated due to size.
|
|
180
|
+
* @property {number} originalLength - Original output length before truncation
|
|
181
|
+
* @property {string} savedToFile - Path to file where full output was saved
|
|
182
|
+
* @property {string} sessionId - ID of the session
|
|
183
|
+
* @property {string} toolName - Name of the tool that produced the output
|
|
184
|
+
*/
|
|
185
|
+
'llmservice:outputTruncated': {
|
|
186
|
+
originalLength: number;
|
|
187
|
+
savedToFile: string;
|
|
188
|
+
sessionId: string;
|
|
189
|
+
toolName: string;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* Emitted when LLM completes a response.
|
|
193
|
+
* @property {string} content - Full response content
|
|
194
|
+
* @property {string} [model] - Model identifier
|
|
195
|
+
* @property {boolean} [partial] - Whether this is a partial response (e.g., max iterations reached)
|
|
196
|
+
* @property {string} [provider] - LLM provider name
|
|
197
|
+
* @property {string} [reasoning] - Internal reasoning (if available)
|
|
198
|
+
* @property {string} sessionId - ID of the session
|
|
199
|
+
* @property {TokenUsage} [tokenUsage] - Token usage statistics
|
|
200
|
+
*/
|
|
201
|
+
'llmservice:response': {
|
|
202
|
+
content: string;
|
|
203
|
+
model?: string;
|
|
204
|
+
partial?: boolean;
|
|
205
|
+
provider?: string;
|
|
206
|
+
reasoning?: string;
|
|
207
|
+
sessionId: string;
|
|
208
|
+
tokenUsage?: TokenUsage;
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Emitted when LLM service starts thinking/processing.
|
|
212
|
+
* @property {string} sessionId - ID of the session
|
|
213
|
+
*/
|
|
214
|
+
'llmservice:thinking': {
|
|
215
|
+
sessionId: string;
|
|
216
|
+
};
|
|
217
|
+
/**
|
|
218
|
+
* Emitted when LLM generates a thought (Gemini models only).
|
|
219
|
+
* @property {string} description - Detailed thought description
|
|
220
|
+
* @property {string} sessionId - ID of the session
|
|
221
|
+
* @property {string} subject - Brief thought subject
|
|
222
|
+
*/
|
|
223
|
+
'llmservice:thought': {
|
|
224
|
+
description: string;
|
|
225
|
+
sessionId: string;
|
|
226
|
+
subject: string;
|
|
227
|
+
};
|
|
228
|
+
/**
|
|
229
|
+
* Emitted when the todo list is updated via write_todos tool.
|
|
230
|
+
* @property {string} sessionId - ID of the session
|
|
231
|
+
* @property {Array<{content: string, status: string, activeForm: string}>} todos - Updated todo list
|
|
232
|
+
*/
|
|
233
|
+
'llmservice:todoUpdated': {
|
|
234
|
+
sessionId: string;
|
|
235
|
+
todos: Array<{
|
|
236
|
+
activeForm: string;
|
|
237
|
+
content: string;
|
|
238
|
+
status: 'cancelled' | 'completed' | 'in_progress' | 'pending';
|
|
239
|
+
}>;
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Emitted when LLM requests a tool call.
|
|
243
|
+
* @property {Record<string, unknown>} args - Arguments for the tool
|
|
244
|
+
* @property {string} [callId] - Unique identifier for this tool call
|
|
245
|
+
* @property {string} sessionId - ID of the session
|
|
246
|
+
* @property {string} toolName - Name of the tool to execute
|
|
247
|
+
*/
|
|
248
|
+
'llmservice:toolCall': {
|
|
249
|
+
args: Record<string, unknown>;
|
|
250
|
+
callId?: string;
|
|
251
|
+
sessionId: string;
|
|
252
|
+
toolName: string;
|
|
253
|
+
};
|
|
254
|
+
/**
|
|
255
|
+
* Emitted when a tool execution completes.
|
|
256
|
+
* @property {string} [callId] - Tool call identifier
|
|
257
|
+
* @property {string} [error] - Error message (if failed)
|
|
258
|
+
* @property {ToolErrorType} [errorType] - Classified error type (if failed)
|
|
259
|
+
* @property {Record<string, unknown>} [metadata] - Execution metadata (duration, tokens, etc.)
|
|
260
|
+
* @property {unknown} [result] - Tool execution result
|
|
261
|
+
* @property {string} sessionId - ID of the session
|
|
262
|
+
* @property {boolean} success - Whether execution succeeded
|
|
263
|
+
* @property {string} toolName - Name of the executed tool
|
|
264
|
+
*/
|
|
265
|
+
'llmservice:toolResult': {
|
|
266
|
+
callId?: string;
|
|
267
|
+
error?: string;
|
|
268
|
+
errorType?: ToolErrorType;
|
|
269
|
+
metadata?: Record<string, unknown>;
|
|
270
|
+
result?: unknown;
|
|
271
|
+
sessionId: string;
|
|
272
|
+
success: boolean;
|
|
273
|
+
toolName: string;
|
|
274
|
+
};
|
|
275
|
+
/**
|
|
276
|
+
* Emitted when LLM receives unsupported input.
|
|
277
|
+
* @property {string} reason - Reason why input is unsupported
|
|
278
|
+
* @property {string} sessionId - ID of the session
|
|
279
|
+
*/
|
|
280
|
+
'llmservice:unsupportedInput': {
|
|
281
|
+
reason: string;
|
|
282
|
+
sessionId: string;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* Emitted when LLM service encounters a warning (e.g., max iterations reached).
|
|
286
|
+
* @property {string} message - Warning message
|
|
287
|
+
* @property {string} [model] - Model identifier
|
|
288
|
+
* @property {string} [provider] - LLM provider name
|
|
289
|
+
* @property {string} sessionId - ID of the session
|
|
290
|
+
*/
|
|
291
|
+
'llmservice:warning': {
|
|
292
|
+
message: string;
|
|
293
|
+
model?: string;
|
|
294
|
+
provider?: string;
|
|
295
|
+
sessionId: string;
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Session-level event payloads.
|
|
300
|
+
* These are scoped to a specific session and do not include sessionId.
|
|
301
|
+
*/
|
|
302
|
+
export interface SessionEventMap {
|
|
303
|
+
/**
|
|
304
|
+
* Emitted when a chunk of content is received (streaming).
|
|
305
|
+
* @property {string} content - Content of the chunk
|
|
306
|
+
* @property {boolean} [isComplete] - Whether this is the final chunk
|
|
307
|
+
* @property {'reasoning' | 'text'} type - Type of chunk (text or reasoning)
|
|
308
|
+
*/
|
|
309
|
+
'llmservice:chunk': {
|
|
310
|
+
content: string;
|
|
311
|
+
isComplete?: boolean;
|
|
312
|
+
type: 'reasoning' | 'text';
|
|
313
|
+
};
|
|
314
|
+
/**
|
|
315
|
+
* Emitted when an error occurs during LLM service operation.
|
|
316
|
+
* @property {string} [code] - Error code (optional)
|
|
317
|
+
* @property {string} error - Error message
|
|
318
|
+
*/
|
|
319
|
+
'llmservice:error': {
|
|
320
|
+
code?: string;
|
|
321
|
+
error: string;
|
|
322
|
+
};
|
|
323
|
+
/**
|
|
324
|
+
* Emitted when tool output is truncated due to size.
|
|
325
|
+
* @property {number} originalLength - Original output length before truncation
|
|
326
|
+
* @property {string} savedToFile - Path to file where full output was saved
|
|
327
|
+
* @property {string} toolName - Name of the tool that produced the output
|
|
328
|
+
*/
|
|
329
|
+
'llmservice:outputTruncated': {
|
|
330
|
+
originalLength: number;
|
|
331
|
+
savedToFile: string;
|
|
332
|
+
toolName: string;
|
|
333
|
+
};
|
|
334
|
+
/**
|
|
335
|
+
* Emitted when LLM completes a response.
|
|
336
|
+
* @property {string} content - Full response content
|
|
337
|
+
* @property {string} [model] - Model identifier
|
|
338
|
+
* @property {boolean} [partial] - Whether this is a partial response (e.g., max iterations reached)
|
|
339
|
+
* @property {string} [provider] - LLM provider name
|
|
340
|
+
* @property {string} [reasoning] - Internal reasoning (if available)
|
|
341
|
+
* @property {TokenUsage} [tokenUsage] - Token usage statistics
|
|
342
|
+
*/
|
|
343
|
+
'llmservice:response': {
|
|
344
|
+
content: string;
|
|
345
|
+
model?: string;
|
|
346
|
+
partial?: boolean;
|
|
347
|
+
provider?: string;
|
|
348
|
+
reasoning?: string;
|
|
349
|
+
tokenUsage?: TokenUsage;
|
|
350
|
+
};
|
|
351
|
+
/**
|
|
352
|
+
* Emitted when LLM service starts thinking/processing.
|
|
353
|
+
*/
|
|
354
|
+
'llmservice:thinking': void;
|
|
355
|
+
/**
|
|
356
|
+
* Emitted when LLM generates a thought (Gemini models only).
|
|
357
|
+
* @property {string} description - Detailed thought description
|
|
358
|
+
* @property {string} subject - Brief thought subject
|
|
359
|
+
*/
|
|
360
|
+
'llmservice:thought': {
|
|
361
|
+
description: string;
|
|
362
|
+
subject: string;
|
|
363
|
+
};
|
|
364
|
+
/**
|
|
365
|
+
* Emitted when LLM requests a tool call.
|
|
366
|
+
* @property {Record<string, unknown>} args - Arguments for the tool
|
|
367
|
+
* @property {string} [callId] - Unique identifier for this tool call
|
|
368
|
+
* @property {string} toolName - Name of the tool to execute
|
|
369
|
+
*/
|
|
370
|
+
'llmservice:toolCall': {
|
|
371
|
+
args: Record<string, unknown>;
|
|
372
|
+
callId?: string;
|
|
373
|
+
toolName: string;
|
|
374
|
+
};
|
|
375
|
+
/**
|
|
376
|
+
* Emitted when a tool execution completes.
|
|
377
|
+
* @property {string} [callId] - Tool call identifier
|
|
378
|
+
* @property {string} [error] - Error message (if failed)
|
|
379
|
+
* @property {ToolErrorType} [errorType] - Classified error type (if failed)
|
|
380
|
+
* @property {Record<string, unknown>} [metadata] - Execution metadata (duration, tokens, etc.)
|
|
381
|
+
* @property {unknown} [result] - Tool execution result
|
|
382
|
+
* @property {boolean} success - Whether execution succeeded
|
|
383
|
+
* @property {string} toolName - Name of the executed tool
|
|
384
|
+
*/
|
|
385
|
+
'llmservice:toolResult': {
|
|
386
|
+
callId?: string;
|
|
387
|
+
error?: string;
|
|
388
|
+
errorType?: ToolErrorType;
|
|
389
|
+
metadata?: Record<string, unknown>;
|
|
390
|
+
result?: unknown;
|
|
391
|
+
success: boolean;
|
|
392
|
+
toolName: string;
|
|
393
|
+
};
|
|
394
|
+
/**
|
|
395
|
+
* Emitted when LLM receives unsupported input.
|
|
396
|
+
* @property {string} reason - Reason why input is unsupported
|
|
397
|
+
*/
|
|
398
|
+
'llmservice:unsupportedInput': {
|
|
399
|
+
reason: string;
|
|
400
|
+
};
|
|
401
|
+
/**
|
|
402
|
+
* Emitted when LLM service encounters a warning (e.g., max iterations reached).
|
|
403
|
+
* @property {string} message - Warning message
|
|
404
|
+
* @property {string} [model] - Model identifier
|
|
405
|
+
* @property {string} [provider] - LLM provider name
|
|
406
|
+
*/
|
|
407
|
+
'llmservice:warning': {
|
|
408
|
+
message: string;
|
|
409
|
+
model?: string;
|
|
410
|
+
provider?: string;
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Prevent unused variable warnings for compile-time checks.
|
|
415
|
+
*/
|
|
416
|
+
export declare const __compileTimeChecks: {
|
|
417
|
+
_checkAgentEventNames: true;
|
|
418
|
+
_checkSessionEventNames: true;
|
|
419
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-level event names for CipherAgent.
|
|
3
|
+
* These events are emitted at the agent level and include sessionId in payloads.
|
|
4
|
+
*/
|
|
5
|
+
export const AGENT_EVENT_NAMES = [
|
|
6
|
+
'cipher:conversationReset',
|
|
7
|
+
'cipher:executionStarted',
|
|
8
|
+
'cipher:executionTerminated',
|
|
9
|
+
'cipher:log',
|
|
10
|
+
'cipher:stateChanged',
|
|
11
|
+
'cipher:stateReset',
|
|
12
|
+
'cipher:ui',
|
|
13
|
+
];
|
|
14
|
+
/**
|
|
15
|
+
* Session-level event names for LLM service operations.
|
|
16
|
+
* These events are emitted at the session level and do not include sessionId in payloads.
|
|
17
|
+
*/
|
|
18
|
+
export const SESSION_EVENT_NAMES = [
|
|
19
|
+
'llmservice:chunk',
|
|
20
|
+
'llmservice:error',
|
|
21
|
+
'llmservice:outputTruncated',
|
|
22
|
+
'llmservice:response',
|
|
23
|
+
'llmservice:thinking',
|
|
24
|
+
'llmservice:thought',
|
|
25
|
+
'llmservice:toolCall',
|
|
26
|
+
'llmservice:toolResult',
|
|
27
|
+
'llmservice:unsupportedInput',
|
|
28
|
+
'llmservice:warning',
|
|
29
|
+
];
|
|
30
|
+
/**
|
|
31
|
+
* All event names (union of agent and session events).
|
|
32
|
+
*/
|
|
33
|
+
export const EVENT_NAMES = [...AGENT_EVENT_NAMES, ...SESSION_EVENT_NAMES];
|
|
34
|
+
const _checkAgentEventNames = true;
|
|
35
|
+
const _checkSessionEventNames = true;
|
|
36
|
+
/**
|
|
37
|
+
* Prevent unused variable warnings for compile-time checks.
|
|
38
|
+
*/
|
|
39
|
+
export const __compileTimeChecks = {
|
|
40
|
+
_checkAgentEventNames,
|
|
41
|
+
_checkSessionEventNames,
|
|
42
|
+
};
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blob metadata type
|
|
3
|
+
* Contains information about a stored blob
|
|
4
|
+
*/
|
|
5
|
+
export type BlobMetadata = {
|
|
6
|
+
/**
|
|
7
|
+
* MIME type of the blob content
|
|
8
|
+
* @example 'image/png', 'application/pdf', 'text/plain'
|
|
9
|
+
*/
|
|
10
|
+
contentType?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Timestamp when the blob was created (Unix timestamp in milliseconds)
|
|
13
|
+
*/
|
|
14
|
+
createdAt: number;
|
|
15
|
+
/**
|
|
16
|
+
* Original filename if the blob was created from a file
|
|
17
|
+
* @example 'screenshot.png', 'document.pdf'
|
|
18
|
+
*/
|
|
19
|
+
originalName?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Size of the blob in bytes
|
|
22
|
+
*/
|
|
23
|
+
size: number;
|
|
24
|
+
/**
|
|
25
|
+
* Custom metadata tags for categorization and filtering
|
|
26
|
+
* @example { category: 'screenshot', project: 'myapp' }
|
|
27
|
+
*/
|
|
28
|
+
tags?: Record<string, string>;
|
|
29
|
+
/**
|
|
30
|
+
* Timestamp when the blob was last updated (Unix timestamp in milliseconds)
|
|
31
|
+
*/
|
|
32
|
+
updatedAt: number;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* Stored blob with content and metadata
|
|
36
|
+
* Represents a complete blob retrieved from storage
|
|
37
|
+
*/
|
|
38
|
+
export type StoredBlob = {
|
|
39
|
+
/**
|
|
40
|
+
* Binary content of the blob
|
|
41
|
+
*/
|
|
42
|
+
content: Buffer;
|
|
43
|
+
/**
|
|
44
|
+
* Unique identifier for the blob
|
|
45
|
+
* Must be alphanumeric with hyphens and underscores only
|
|
46
|
+
*/
|
|
47
|
+
key: string;
|
|
48
|
+
/**
|
|
49
|
+
* Associated metadata
|
|
50
|
+
*/
|
|
51
|
+
metadata: BlobMetadata;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Simple logger interface for blob storage operations
|
|
55
|
+
*/
|
|
56
|
+
export interface BlobLogger {
|
|
57
|
+
error: (message: string) => void;
|
|
58
|
+
info: (message: string) => void;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Configuration options for blob storage
|
|
62
|
+
* SQLite is always used as the backend
|
|
63
|
+
*/
|
|
64
|
+
export type BlobStorageConfig = {
|
|
65
|
+
/**
|
|
66
|
+
* Use in-memory storage (useful for testing)
|
|
67
|
+
* When true, no file is created - data lives only in memory
|
|
68
|
+
* @default false
|
|
69
|
+
*/
|
|
70
|
+
inMemory?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Logger for blob storage operations
|
|
73
|
+
* If not provided, console will be used as fallback
|
|
74
|
+
*/
|
|
75
|
+
logger?: BlobLogger;
|
|
76
|
+
/**
|
|
77
|
+
* Maximum size for a single blob in bytes
|
|
78
|
+
* @default 104857600 (100MB)
|
|
79
|
+
*/
|
|
80
|
+
maxBlobSize?: number;
|
|
81
|
+
/**
|
|
82
|
+
* Maximum total size for all blobs in bytes
|
|
83
|
+
* @default 1073741824 (1GB)
|
|
84
|
+
*/
|
|
85
|
+
maxTotalSize?: number;
|
|
86
|
+
/**
|
|
87
|
+
* Base directory where blobs/database will be stored
|
|
88
|
+
* @default '.brv/blobs'
|
|
89
|
+
*/
|
|
90
|
+
storageDir?: string;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Statistics about blob storage
|
|
94
|
+
*/
|
|
95
|
+
export type BlobStats = {
|
|
96
|
+
/**
|
|
97
|
+
* Timestamp when stats were last calculated (Unix timestamp in milliseconds)
|
|
98
|
+
*/
|
|
99
|
+
lastUpdated: number;
|
|
100
|
+
/**
|
|
101
|
+
* Total number of blobs stored
|
|
102
|
+
*/
|
|
103
|
+
totalBlobs: number;
|
|
104
|
+
/**
|
|
105
|
+
* Total size of all blobs in bytes
|
|
106
|
+
*/
|
|
107
|
+
totalSize: number;
|
|
108
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for blob storage operations
|
|
3
|
+
*/
|
|
4
|
+
export declare enum BlobErrorCode {
|
|
5
|
+
BLOB_ALREADY_EXISTS = "BLOB_ALREADY_EXISTS",
|
|
6
|
+
BLOB_DELETE_ERROR = "BLOB_DELETE_ERROR",
|
|
7
|
+
BLOB_INITIALIZATION_ERROR = "BLOB_INITIALIZATION_ERROR",
|
|
8
|
+
BLOB_INVALID_CONTENT = "BLOB_INVALID_CONTENT",
|
|
9
|
+
BLOB_INVALID_KEY = "BLOB_INVALID_KEY",
|
|
10
|
+
BLOB_NOT_FOUND = "BLOB_NOT_FOUND",
|
|
11
|
+
BLOB_NOT_INITIALIZED = "BLOB_NOT_INITIALIZED",
|
|
12
|
+
BLOB_RETRIEVAL_ERROR = "BLOB_RETRIEVAL_ERROR",
|
|
13
|
+
BLOB_STORAGE_ERROR = "BLOB_STORAGE_ERROR",
|
|
14
|
+
BLOB_TOO_LARGE = "BLOB_TOO_LARGE",
|
|
15
|
+
BLOB_TOTAL_SIZE_EXCEEDED = "BLOB_TOTAL_SIZE_EXCEEDED"
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Blob error class with factory methods for creating specific error instances
|
|
19
|
+
*/
|
|
20
|
+
export declare class BlobError extends Error {
|
|
21
|
+
readonly code: BlobErrorCode;
|
|
22
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
23
|
+
readonly suggestion?: string | undefined;
|
|
24
|
+
constructor(message: string, code: BlobErrorCode, details?: Record<string, unknown> | undefined, suggestion?: string | undefined);
|
|
25
|
+
static alreadyExists(key: string): BlobError;
|
|
26
|
+
static deleteError(message: string, cause?: Error): BlobError;
|
|
27
|
+
static initializationError(message: string, cause?: Error): BlobError;
|
|
28
|
+
static invalidContent(reason: string): BlobError;
|
|
29
|
+
static invalidKey(key: string, reason: string): BlobError;
|
|
30
|
+
static notFound(key: string): BlobError;
|
|
31
|
+
static notInitialized(): BlobError;
|
|
32
|
+
static retrievalError(message: string, cause?: Error): BlobError;
|
|
33
|
+
static storageError(message: string, cause?: Error): BlobError;
|
|
34
|
+
static tooLarge(size: number, maxSize: number): BlobError;
|
|
35
|
+
static totalSizeExceeded(currentSize: number, blobSize: number, maxTotalSize: number): BlobError;
|
|
36
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for blob storage operations
|
|
3
|
+
*/
|
|
4
|
+
export var BlobErrorCode;
|
|
5
|
+
(function (BlobErrorCode) {
|
|
6
|
+
BlobErrorCode["BLOB_ALREADY_EXISTS"] = "BLOB_ALREADY_EXISTS";
|
|
7
|
+
BlobErrorCode["BLOB_DELETE_ERROR"] = "BLOB_DELETE_ERROR";
|
|
8
|
+
BlobErrorCode["BLOB_INITIALIZATION_ERROR"] = "BLOB_INITIALIZATION_ERROR";
|
|
9
|
+
BlobErrorCode["BLOB_INVALID_CONTENT"] = "BLOB_INVALID_CONTENT";
|
|
10
|
+
BlobErrorCode["BLOB_INVALID_KEY"] = "BLOB_INVALID_KEY";
|
|
11
|
+
// Blob errors
|
|
12
|
+
BlobErrorCode["BLOB_NOT_FOUND"] = "BLOB_NOT_FOUND";
|
|
13
|
+
// State errors
|
|
14
|
+
BlobErrorCode["BLOB_NOT_INITIALIZED"] = "BLOB_NOT_INITIALIZED";
|
|
15
|
+
BlobErrorCode["BLOB_RETRIEVAL_ERROR"] = "BLOB_RETRIEVAL_ERROR";
|
|
16
|
+
// Storage operation errors
|
|
17
|
+
BlobErrorCode["BLOB_STORAGE_ERROR"] = "BLOB_STORAGE_ERROR";
|
|
18
|
+
BlobErrorCode["BLOB_TOO_LARGE"] = "BLOB_TOO_LARGE";
|
|
19
|
+
BlobErrorCode["BLOB_TOTAL_SIZE_EXCEEDED"] = "BLOB_TOTAL_SIZE_EXCEEDED";
|
|
20
|
+
})(BlobErrorCode || (BlobErrorCode = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Blob error class with factory methods for creating specific error instances
|
|
23
|
+
*/
|
|
24
|
+
export class BlobError extends Error {
|
|
25
|
+
code;
|
|
26
|
+
details;
|
|
27
|
+
suggestion;
|
|
28
|
+
constructor(message, code, details, suggestion) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.code = code;
|
|
31
|
+
this.details = details;
|
|
32
|
+
this.suggestion = suggestion;
|
|
33
|
+
this.name = 'BlobError';
|
|
34
|
+
}
|
|
35
|
+
static alreadyExists(key) {
|
|
36
|
+
return new BlobError(`Blob already exists: ${key}`, BlobErrorCode.BLOB_ALREADY_EXISTS, { key }, 'Use a different key or delete the existing blob first.');
|
|
37
|
+
}
|
|
38
|
+
static deleteError(message, cause) {
|
|
39
|
+
return new BlobError(`Blob deletion error: ${message}`, BlobErrorCode.BLOB_DELETE_ERROR, { cause }, 'Check if the blob file exists and you have write permissions.');
|
|
40
|
+
}
|
|
41
|
+
static initializationError(message, cause) {
|
|
42
|
+
return new BlobError(`Blob storage initialization error: ${message}`, BlobErrorCode.BLOB_INITIALIZATION_ERROR, { cause }, 'Check if the storage directory can be created and you have necessary permissions.');
|
|
43
|
+
}
|
|
44
|
+
static invalidContent(reason) {
|
|
45
|
+
return new BlobError(`Invalid blob content: ${reason}`, BlobErrorCode.BLOB_INVALID_CONTENT, { reason }, 'Provide valid Buffer or string content.');
|
|
46
|
+
}
|
|
47
|
+
static invalidKey(key, reason) {
|
|
48
|
+
return new BlobError(`Invalid blob key: ${key} - ${reason}`, BlobErrorCode.BLOB_INVALID_KEY, { key, reason }, 'Use only alphanumeric characters, hyphens, and underscores in blob keys.');
|
|
49
|
+
}
|
|
50
|
+
static notFound(key) {
|
|
51
|
+
return new BlobError(`Blob not found: ${key}`, BlobErrorCode.BLOB_NOT_FOUND, { key }, 'Check if the blob key is correct or use list() to find available blobs.');
|
|
52
|
+
}
|
|
53
|
+
static notInitialized() {
|
|
54
|
+
return new BlobError('Blob storage not initialized', BlobErrorCode.BLOB_NOT_INITIALIZED, undefined, 'Call initialize() before performing any blob operations.');
|
|
55
|
+
}
|
|
56
|
+
static retrievalError(message, cause) {
|
|
57
|
+
return new BlobError(`Blob retrieval error: ${message}`, BlobErrorCode.BLOB_RETRIEVAL_ERROR, { cause }, 'Check if the blob storage is accessible and readable.');
|
|
58
|
+
}
|
|
59
|
+
static storageError(message, cause) {
|
|
60
|
+
return new BlobError(`Blob storage error: ${message}`, BlobErrorCode.BLOB_STORAGE_ERROR, { cause }, 'Check if the storage directory exists and you have write permissions.');
|
|
61
|
+
}
|
|
62
|
+
static tooLarge(size, maxSize) {
|
|
63
|
+
return new BlobError(`Blob too large: ${size} bytes exceeds maximum ${maxSize} bytes`, BlobErrorCode.BLOB_TOO_LARGE, { maxSize, size }, `Reduce the blob size to ${maxSize} bytes or less, or increase the maxBlobSize configuration.`);
|
|
64
|
+
}
|
|
65
|
+
static totalSizeExceeded(currentSize, blobSize, maxTotalSize) {
|
|
66
|
+
return new BlobError(`Total storage size exceeded: ${currentSize + blobSize} bytes would exceed maximum ${maxTotalSize} bytes`, BlobErrorCode.BLOB_TOTAL_SIZE_EXCEEDED, { blobSize, currentSize, maxTotalSize, wouldBe: currentSize + blobSize }, 'Delete some blobs to free up space or increase the maxTotalSize configuration.');
|
|
67
|
+
}
|
|
68
|
+
}
|