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,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for LLM-related operations.
|
|
3
|
+
* All LLM-specific errors extend this base class.
|
|
4
|
+
*/
|
|
5
|
+
export class LlmError extends Error {
|
|
6
|
+
code;
|
|
7
|
+
details;
|
|
8
|
+
model;
|
|
9
|
+
provider;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new LLM error
|
|
12
|
+
* @param message - Error message describing what went wrong
|
|
13
|
+
* @param code - Error code for categorization (e.g., 'LLM_GENERATION_FAILED')
|
|
14
|
+
* @param provider - LLM provider name (e.g., 'gemini', 'openai')
|
|
15
|
+
* @param model - Model name that was being used (e.g., 'gemini-2.5-flash')
|
|
16
|
+
*/
|
|
17
|
+
constructor(message, code, provider, model) {
|
|
18
|
+
super(message);
|
|
19
|
+
this.name = 'LlmError';
|
|
20
|
+
this.code = code;
|
|
21
|
+
this.provider = provider;
|
|
22
|
+
this.model = model;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Error thrown when LLM generation fails.
|
|
27
|
+
* This can happen due to API errors, network issues, or model failures.
|
|
28
|
+
*/
|
|
29
|
+
export class LlmGenerationError extends LlmError {
|
|
30
|
+
originalError;
|
|
31
|
+
/**
|
|
32
|
+
* Creates a new generation error
|
|
33
|
+
* @param error - The original error message from the LLM provider
|
|
34
|
+
* @param provider - LLM provider name
|
|
35
|
+
* @param model - Model name that was being used
|
|
36
|
+
*/
|
|
37
|
+
constructor(error, provider, model) {
|
|
38
|
+
// Don't add "Generation failed:" prefix if error already has emoji prefix (user-friendly message)
|
|
39
|
+
const message = error.startsWith('❌') ? error : `Generation failed: ${error}`;
|
|
40
|
+
super(message, 'LLM_GENERATION_FAILED', provider, model);
|
|
41
|
+
this.name = 'LlmGenerationError';
|
|
42
|
+
this.originalError = error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Error thrown when rate limits are exceeded.
|
|
47
|
+
* Includes optional retry delay information.
|
|
48
|
+
*/
|
|
49
|
+
export class LlmRateLimitError extends LlmError {
|
|
50
|
+
retryAfter;
|
|
51
|
+
/**
|
|
52
|
+
* Creates a new rate limit error
|
|
53
|
+
* @param provider - LLM provider name
|
|
54
|
+
* @param retryAfter - Optional number of seconds to wait before retrying
|
|
55
|
+
*/
|
|
56
|
+
constructor(provider, retryAfter) {
|
|
57
|
+
const message = retryAfter
|
|
58
|
+
? `Rate limit exceeded for ${provider}. Retry after ${retryAfter} seconds`
|
|
59
|
+
: `Rate limit exceeded for ${provider}. Please wait before retrying`;
|
|
60
|
+
super(message, 'LLM_RATE_LIMIT_EXCEEDED', provider);
|
|
61
|
+
this.name = 'LlmRateLimitError';
|
|
62
|
+
this.retryAfter = retryAfter;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Gets the retry delay in milliseconds
|
|
66
|
+
* @returns Delay in milliseconds, or undefined if not specified
|
|
67
|
+
*/
|
|
68
|
+
getRetryAfterMs() {
|
|
69
|
+
return this.retryAfter ? this.retryAfter * 1000 : undefined;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Error thrown when maximum iterations are exceeded in agentic loops.
|
|
74
|
+
* This prevents infinite loops when tool calling doesn't converge.
|
|
75
|
+
*/
|
|
76
|
+
export class LlmMaxIterationsError extends LlmError {
|
|
77
|
+
maxIterations;
|
|
78
|
+
/**
|
|
79
|
+
* Creates a new max iterations error
|
|
80
|
+
* @param maxIterations - The maximum number of iterations that was configured
|
|
81
|
+
* @param provider - LLM provider name
|
|
82
|
+
* @param model - Model name that was being used
|
|
83
|
+
*/
|
|
84
|
+
constructor(maxIterations, provider, model) {
|
|
85
|
+
super(`Maximum iterations (${maxIterations}) reached without completion`, 'LLM_MAX_ITERATIONS_EXCEEDED', provider, model);
|
|
86
|
+
this.name = 'LlmMaxIterationsError';
|
|
87
|
+
this.maxIterations = maxIterations;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Error thrown when tool execution fails during LLM operations.
|
|
92
|
+
* This occurs when the LLM requests a tool call but the execution fails.
|
|
93
|
+
*/
|
|
94
|
+
export class LlmToolExecutionError extends LlmError {
|
|
95
|
+
originalError;
|
|
96
|
+
toolName;
|
|
97
|
+
/**
|
|
98
|
+
* Creates a new tool execution error
|
|
99
|
+
* @param toolName - Name of the tool that failed
|
|
100
|
+
* @param error - The original error message
|
|
101
|
+
* @param provider - LLM provider name
|
|
102
|
+
* @param model - Model name that was being used
|
|
103
|
+
*/
|
|
104
|
+
constructor(toolName, error, provider, model) {
|
|
105
|
+
super(`Tool execution failed for '${toolName}': ${error}`, 'LLM_TOOL_EXECUTION_FAILED', provider, model);
|
|
106
|
+
this.name = 'LlmToolExecutionError';
|
|
107
|
+
this.toolName = toolName;
|
|
108
|
+
this.originalError = error;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Error thrown when LLM configuration is invalid or missing.
|
|
113
|
+
* This includes missing API keys, invalid settings, etc.
|
|
114
|
+
*/
|
|
115
|
+
export class LlmConfigurationError extends LlmError {
|
|
116
|
+
configKey;
|
|
117
|
+
/**
|
|
118
|
+
* Creates a new configuration error
|
|
119
|
+
* @param configKey - The configuration key that is problematic
|
|
120
|
+
* @param message - Description of the configuration issue
|
|
121
|
+
* @param provider - LLM provider name
|
|
122
|
+
*/
|
|
123
|
+
constructor(configKey, message, provider) {
|
|
124
|
+
super(`Configuration error for '${configKey}': ${message}`, 'LLM_CONFIGURATION_ERROR', provider);
|
|
125
|
+
this.name = 'LlmConfigurationError';
|
|
126
|
+
this.configKey = configKey;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Error thrown when parsing LLM responses fails.
|
|
131
|
+
* This occurs when the response format is unexpected or malformed.
|
|
132
|
+
*/
|
|
133
|
+
export class LlmResponseParsingError extends LlmError {
|
|
134
|
+
originalError;
|
|
135
|
+
/**
|
|
136
|
+
* Creates a new response parsing error
|
|
137
|
+
* @param error - Description of the parsing error
|
|
138
|
+
* @param provider - LLM provider name
|
|
139
|
+
* @param model - Model name that was being used
|
|
140
|
+
*/
|
|
141
|
+
constructor(error, provider, model) {
|
|
142
|
+
super(`Response parsing failed: ${error}`, 'LLM_RESPONSE_PARSING_FAILED', provider, model);
|
|
143
|
+
this.name = 'LlmResponseParsingError';
|
|
144
|
+
this.originalError = error;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Error thrown when no tool executor is provided but tools are requested.
|
|
149
|
+
* This is a configuration issue where the LLM wants to call tools but can't.
|
|
150
|
+
*/
|
|
151
|
+
export class LlmMissingToolExecutorError extends LlmError {
|
|
152
|
+
/**
|
|
153
|
+
* Creates a new missing tool executor error
|
|
154
|
+
* @param provider - LLM provider name
|
|
155
|
+
* @param model - Model name that was being used
|
|
156
|
+
*/
|
|
157
|
+
constructor(provider, model) {
|
|
158
|
+
super('Function calls requested but no tool executor provided', 'LLM_TOOL_EXECUTOR_MISSING', provider, model);
|
|
159
|
+
this.name = 'LlmMissingToolExecutorError';
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory error class with factory methods for creating specific error instances
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Error codes for memory operations
|
|
6
|
+
*/
|
|
7
|
+
export declare enum MemoryErrorCode {
|
|
8
|
+
MEMORY_ALREADY_EXISTS = "MEMORY_ALREADY_EXISTS",
|
|
9
|
+
MEMORY_CONTENT_REQUIRED = "MEMORY_CONTENT_REQUIRED",
|
|
10
|
+
MEMORY_CONTENT_TOO_LONG = "MEMORY_CONTENT_TOO_LONG",
|
|
11
|
+
MEMORY_DELETE_ERROR = "MEMORY_DELETE_ERROR",
|
|
12
|
+
MEMORY_INVALID_ID = "MEMORY_INVALID_ID",
|
|
13
|
+
MEMORY_INVALID_TAGS = "MEMORY_INVALID_TAGS",
|
|
14
|
+
MEMORY_NOT_FOUND = "MEMORY_NOT_FOUND",
|
|
15
|
+
MEMORY_RETRIEVAL_ERROR = "MEMORY_RETRIEVAL_ERROR",
|
|
16
|
+
MEMORY_STORAGE_ERROR = "MEMORY_STORAGE_ERROR"
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Memory error class with factory methods for creating specific error instances
|
|
20
|
+
*/
|
|
21
|
+
export declare class MemoryError extends Error {
|
|
22
|
+
readonly code: MemoryErrorCode;
|
|
23
|
+
readonly details?: Record<string, unknown> | undefined;
|
|
24
|
+
readonly suggestion?: string | undefined;
|
|
25
|
+
constructor(message: string, code: MemoryErrorCode, details?: Record<string, unknown> | undefined, suggestion?: string | undefined);
|
|
26
|
+
static alreadyExists(id: string): MemoryError;
|
|
27
|
+
static contentRequired(): MemoryError;
|
|
28
|
+
static contentTooLong(length: number, maxLength: number): MemoryError;
|
|
29
|
+
static deleteError(message: string, cause?: Error): MemoryError;
|
|
30
|
+
static invalidId(id: unknown): MemoryError;
|
|
31
|
+
static invalidTags(tags: unknown): MemoryError;
|
|
32
|
+
static notFound(id: string): MemoryError;
|
|
33
|
+
static retrievalError(message: string, cause?: Error): MemoryError;
|
|
34
|
+
static storageError(message: string, cause?: Error): MemoryError;
|
|
35
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory error class with factory methods for creating specific error instances
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Error codes for memory operations
|
|
6
|
+
*/
|
|
7
|
+
export var MemoryErrorCode;
|
|
8
|
+
(function (MemoryErrorCode) {
|
|
9
|
+
// General errors
|
|
10
|
+
MemoryErrorCode["MEMORY_ALREADY_EXISTS"] = "MEMORY_ALREADY_EXISTS";
|
|
11
|
+
MemoryErrorCode["MEMORY_CONTENT_REQUIRED"] = "MEMORY_CONTENT_REQUIRED";
|
|
12
|
+
MemoryErrorCode["MEMORY_CONTENT_TOO_LONG"] = "MEMORY_CONTENT_TOO_LONG";
|
|
13
|
+
MemoryErrorCode["MEMORY_DELETE_ERROR"] = "MEMORY_DELETE_ERROR";
|
|
14
|
+
MemoryErrorCode["MEMORY_INVALID_ID"] = "MEMORY_INVALID_ID";
|
|
15
|
+
MemoryErrorCode["MEMORY_INVALID_TAGS"] = "MEMORY_INVALID_TAGS";
|
|
16
|
+
MemoryErrorCode["MEMORY_NOT_FOUND"] = "MEMORY_NOT_FOUND";
|
|
17
|
+
// Storage errors
|
|
18
|
+
MemoryErrorCode["MEMORY_RETRIEVAL_ERROR"] = "MEMORY_RETRIEVAL_ERROR";
|
|
19
|
+
MemoryErrorCode["MEMORY_STORAGE_ERROR"] = "MEMORY_STORAGE_ERROR";
|
|
20
|
+
})(MemoryErrorCode || (MemoryErrorCode = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Memory error class with factory methods for creating specific error instances
|
|
23
|
+
*/
|
|
24
|
+
export class MemoryError 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 = 'MemoryError';
|
|
34
|
+
}
|
|
35
|
+
static alreadyExists(id) {
|
|
36
|
+
return new MemoryError(`Memory already exists: ${id}`, MemoryErrorCode.MEMORY_ALREADY_EXISTS, { id }, 'Use update() to modify existing memory or delete() first before creating a new one.');
|
|
37
|
+
}
|
|
38
|
+
static contentRequired() {
|
|
39
|
+
return new MemoryError('Memory content is required', MemoryErrorCode.MEMORY_CONTENT_REQUIRED, undefined, 'Provide a non-empty content string when creating or updating a memory.');
|
|
40
|
+
}
|
|
41
|
+
static contentTooLong(length, maxLength) {
|
|
42
|
+
return new MemoryError(`Memory content too long: ${length} characters (max: ${maxLength})`, MemoryErrorCode.MEMORY_CONTENT_TOO_LONG, { length, maxLength }, `Reduce the content to ${maxLength} characters or less.`);
|
|
43
|
+
}
|
|
44
|
+
static deleteError(message, cause) {
|
|
45
|
+
return new MemoryError(`Memory deletion error: ${message}`, MemoryErrorCode.MEMORY_DELETE_ERROR, { cause }, 'Check if the memory file exists and you have write permissions.');
|
|
46
|
+
}
|
|
47
|
+
static invalidId(id) {
|
|
48
|
+
return new MemoryError(`Invalid memory ID: ${String(id)}`, MemoryErrorCode.MEMORY_INVALID_ID, { id }, 'Provide a valid non-empty string as the memory ID.');
|
|
49
|
+
}
|
|
50
|
+
static invalidTags(tags) {
|
|
51
|
+
return new MemoryError(`Invalid tags format: ${JSON.stringify(tags)}`, MemoryErrorCode.MEMORY_INVALID_TAGS, { tags }, 'Tags must be an array of strings, each 1-50 characters long, with a maximum of 10 tags.');
|
|
52
|
+
}
|
|
53
|
+
static notFound(id) {
|
|
54
|
+
return new MemoryError(`Memory not found: ${id}`, MemoryErrorCode.MEMORY_NOT_FOUND, { id }, 'Check if the memory ID is correct or use list() to find available memories.');
|
|
55
|
+
}
|
|
56
|
+
static retrievalError(message, cause) {
|
|
57
|
+
return new MemoryError(`Memory retrieval error: ${message}`, MemoryErrorCode.MEMORY_RETRIEVAL_ERROR, { cause }, 'Check if the memory storage is accessible and readable.');
|
|
58
|
+
}
|
|
59
|
+
static storageError(message, cause) {
|
|
60
|
+
return new MemoryError(`Memory storage error: ${message}`, MemoryErrorCode.MEMORY_STORAGE_ERROR, { cause }, 'Check if the storage directory exists and you have write permissions.');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for process execution failures.
|
|
3
|
+
*
|
|
4
|
+
* Used by ProcessError factory to create structured error objects.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum ProcessErrorCode {
|
|
7
|
+
/**
|
|
8
|
+
* Command matches a blocked pattern.
|
|
9
|
+
*
|
|
10
|
+
* Command is explicitly forbidden by security policy.
|
|
11
|
+
*/
|
|
12
|
+
COMMAND_BLOCKED = "COMMAND_BLOCKED",
|
|
13
|
+
/**
|
|
14
|
+
* Command not found in PATH.
|
|
15
|
+
*
|
|
16
|
+
* System returned ENOENT error.
|
|
17
|
+
*/
|
|
18
|
+
COMMAND_NOT_FOUND = "COMMAND_NOT_FOUND",
|
|
19
|
+
/**
|
|
20
|
+
* Command exceeds maximum length.
|
|
21
|
+
*
|
|
22
|
+
* Commands longer than 10,000 characters are rejected.
|
|
23
|
+
*/
|
|
24
|
+
COMMAND_TOO_LONG = "COMMAND_TOO_LONG",
|
|
25
|
+
/**
|
|
26
|
+
* Command execution failed.
|
|
27
|
+
*
|
|
28
|
+
* Generic execution error (non-zero exit code, spawn failure, etc.).
|
|
29
|
+
*/
|
|
30
|
+
EXECUTION_FAILED = "EXECUTION_FAILED",
|
|
31
|
+
/**
|
|
32
|
+
* Command injection detected.
|
|
33
|
+
*
|
|
34
|
+
* Command contains unsafe patterns like command chaining or substitution.
|
|
35
|
+
*/
|
|
36
|
+
INJECTION_DETECTED = "INJECTION_DETECTED",
|
|
37
|
+
/**
|
|
38
|
+
* Command validation failed.
|
|
39
|
+
*
|
|
40
|
+
* Command is malformed or violates security policy.
|
|
41
|
+
*/
|
|
42
|
+
INVALID_COMMAND = "INVALID_COMMAND",
|
|
43
|
+
/**
|
|
44
|
+
* Process configuration is invalid.
|
|
45
|
+
*
|
|
46
|
+
* Invalid ProcessConfig provided to constructor.
|
|
47
|
+
*/
|
|
48
|
+
INVALID_CONFIG = "INVALID_CONFIG",
|
|
49
|
+
/**
|
|
50
|
+
* Failed to terminate background process.
|
|
51
|
+
*
|
|
52
|
+
* Process.kill() threw an error or process didn't stop.
|
|
53
|
+
*/
|
|
54
|
+
KILL_FAILED = "KILL_FAILED",
|
|
55
|
+
/**
|
|
56
|
+
* Output buffer exceeded size limit.
|
|
57
|
+
*
|
|
58
|
+
* Background process output exceeded maxOutputBuffer bytes.
|
|
59
|
+
*/
|
|
60
|
+
OUTPUT_BUFFER_FULL = "OUTPUT_BUFFER_FULL",
|
|
61
|
+
/**
|
|
62
|
+
* Permission denied executing command.
|
|
63
|
+
*
|
|
64
|
+
* System returned EACCES error.
|
|
65
|
+
*/
|
|
66
|
+
PERMISSION_DENIED = "PERMISSION_DENIED",
|
|
67
|
+
/**
|
|
68
|
+
* Background process not found.
|
|
69
|
+
*
|
|
70
|
+
* Invalid or expired processId.
|
|
71
|
+
*/
|
|
72
|
+
PROCESS_NOT_FOUND = "PROCESS_NOT_FOUND",
|
|
73
|
+
/**
|
|
74
|
+
* ProcessService not initialized.
|
|
75
|
+
*
|
|
76
|
+
* Must call initialize() before executing commands.
|
|
77
|
+
*/
|
|
78
|
+
SERVICE_NOT_INITIALIZED = "SERVICE_NOT_INITIALIZED",
|
|
79
|
+
/**
|
|
80
|
+
* Command execution timed out.
|
|
81
|
+
*
|
|
82
|
+
* Process exceeded timeout limit and was killed.
|
|
83
|
+
*/
|
|
84
|
+
TIMEOUT = "TIMEOUT",
|
|
85
|
+
/**
|
|
86
|
+
* Too many concurrent background processes.
|
|
87
|
+
*
|
|
88
|
+
* Exceeded maxConcurrentProcesses limit.
|
|
89
|
+
*/
|
|
90
|
+
TOO_MANY_PROCESSES = "TOO_MANY_PROCESSES",
|
|
91
|
+
/**
|
|
92
|
+
* Working directory is invalid or unsafe.
|
|
93
|
+
*
|
|
94
|
+
* Directory doesn't exist, is outside base directory, or contains path traversal.
|
|
95
|
+
*/
|
|
96
|
+
WORKING_DIRECTORY_INVALID = "WORKING_DIRECTORY_INVALID"
|
|
97
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for process execution failures.
|
|
3
|
+
*
|
|
4
|
+
* Used by ProcessError factory to create structured error objects.
|
|
5
|
+
*/
|
|
6
|
+
export var ProcessErrorCode;
|
|
7
|
+
(function (ProcessErrorCode) {
|
|
8
|
+
/**
|
|
9
|
+
* Command matches a blocked pattern.
|
|
10
|
+
*
|
|
11
|
+
* Command is explicitly forbidden by security policy.
|
|
12
|
+
*/
|
|
13
|
+
ProcessErrorCode["COMMAND_BLOCKED"] = "COMMAND_BLOCKED";
|
|
14
|
+
/**
|
|
15
|
+
* Command not found in PATH.
|
|
16
|
+
*
|
|
17
|
+
* System returned ENOENT error.
|
|
18
|
+
*/
|
|
19
|
+
ProcessErrorCode["COMMAND_NOT_FOUND"] = "COMMAND_NOT_FOUND";
|
|
20
|
+
/**
|
|
21
|
+
* Command exceeds maximum length.
|
|
22
|
+
*
|
|
23
|
+
* Commands longer than 10,000 characters are rejected.
|
|
24
|
+
*/
|
|
25
|
+
ProcessErrorCode["COMMAND_TOO_LONG"] = "COMMAND_TOO_LONG";
|
|
26
|
+
/**
|
|
27
|
+
* Command execution failed.
|
|
28
|
+
*
|
|
29
|
+
* Generic execution error (non-zero exit code, spawn failure, etc.).
|
|
30
|
+
*/
|
|
31
|
+
ProcessErrorCode["EXECUTION_FAILED"] = "EXECUTION_FAILED";
|
|
32
|
+
/**
|
|
33
|
+
* Command injection detected.
|
|
34
|
+
*
|
|
35
|
+
* Command contains unsafe patterns like command chaining or substitution.
|
|
36
|
+
*/
|
|
37
|
+
ProcessErrorCode["INJECTION_DETECTED"] = "INJECTION_DETECTED";
|
|
38
|
+
/**
|
|
39
|
+
* Command validation failed.
|
|
40
|
+
*
|
|
41
|
+
* Command is malformed or violates security policy.
|
|
42
|
+
*/
|
|
43
|
+
ProcessErrorCode["INVALID_COMMAND"] = "INVALID_COMMAND";
|
|
44
|
+
/**
|
|
45
|
+
* Process configuration is invalid.
|
|
46
|
+
*
|
|
47
|
+
* Invalid ProcessConfig provided to constructor.
|
|
48
|
+
*/
|
|
49
|
+
ProcessErrorCode["INVALID_CONFIG"] = "INVALID_CONFIG";
|
|
50
|
+
/**
|
|
51
|
+
* Failed to terminate background process.
|
|
52
|
+
*
|
|
53
|
+
* Process.kill() threw an error or process didn't stop.
|
|
54
|
+
*/
|
|
55
|
+
ProcessErrorCode["KILL_FAILED"] = "KILL_FAILED";
|
|
56
|
+
/**
|
|
57
|
+
* Output buffer exceeded size limit.
|
|
58
|
+
*
|
|
59
|
+
* Background process output exceeded maxOutputBuffer bytes.
|
|
60
|
+
*/
|
|
61
|
+
ProcessErrorCode["OUTPUT_BUFFER_FULL"] = "OUTPUT_BUFFER_FULL";
|
|
62
|
+
/**
|
|
63
|
+
* Permission denied executing command.
|
|
64
|
+
*
|
|
65
|
+
* System returned EACCES error.
|
|
66
|
+
*/
|
|
67
|
+
ProcessErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
|
|
68
|
+
/**
|
|
69
|
+
* Background process not found.
|
|
70
|
+
*
|
|
71
|
+
* Invalid or expired processId.
|
|
72
|
+
*/
|
|
73
|
+
ProcessErrorCode["PROCESS_NOT_FOUND"] = "PROCESS_NOT_FOUND";
|
|
74
|
+
/**
|
|
75
|
+
* ProcessService not initialized.
|
|
76
|
+
*
|
|
77
|
+
* Must call initialize() before executing commands.
|
|
78
|
+
*/
|
|
79
|
+
ProcessErrorCode["SERVICE_NOT_INITIALIZED"] = "SERVICE_NOT_INITIALIZED";
|
|
80
|
+
/**
|
|
81
|
+
* Command execution timed out.
|
|
82
|
+
*
|
|
83
|
+
* Process exceeded timeout limit and was killed.
|
|
84
|
+
*/
|
|
85
|
+
ProcessErrorCode["TIMEOUT"] = "TIMEOUT";
|
|
86
|
+
/**
|
|
87
|
+
* Too many concurrent background processes.
|
|
88
|
+
*
|
|
89
|
+
* Exceeded maxConcurrentProcesses limit.
|
|
90
|
+
*/
|
|
91
|
+
ProcessErrorCode["TOO_MANY_PROCESSES"] = "TOO_MANY_PROCESSES";
|
|
92
|
+
/**
|
|
93
|
+
* Working directory is invalid or unsafe.
|
|
94
|
+
*
|
|
95
|
+
* Directory doesn't exist, is outside base directory, or contains path traversal.
|
|
96
|
+
*/
|
|
97
|
+
ProcessErrorCode["WORKING_DIRECTORY_INVALID"] = "WORKING_DIRECTORY_INVALID";
|
|
98
|
+
})(ProcessErrorCode || (ProcessErrorCode = {}));
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { ProcessErrorCode } from './process-error-code.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base error class for process execution operations.
|
|
4
|
+
*
|
|
5
|
+
* All process-specific errors extend this base class.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ProcessError extends Error {
|
|
8
|
+
readonly code: ProcessErrorCode;
|
|
9
|
+
readonly details?: Record<string, unknown>;
|
|
10
|
+
readonly suggestion?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new process error.
|
|
13
|
+
*
|
|
14
|
+
* @param message - Error message describing what went wrong
|
|
15
|
+
* @param code - Error code for categorization
|
|
16
|
+
* @param details - Additional error context
|
|
17
|
+
* @param suggestion - Optional recovery suggestion
|
|
18
|
+
*/
|
|
19
|
+
constructor(message: string, code: ProcessErrorCode, details?: Record<string, unknown>, suggestion?: string);
|
|
20
|
+
/**
|
|
21
|
+
* Factory method: Command matches blocked pattern.
|
|
22
|
+
*
|
|
23
|
+
* @param command - Command that was blocked
|
|
24
|
+
* @param reason - Reason why command is blocked
|
|
25
|
+
* @returns ProcessError instance
|
|
26
|
+
*/
|
|
27
|
+
static commandBlocked(command: string, reason: string): ProcessError;
|
|
28
|
+
/**
|
|
29
|
+
* Factory method: Command injection detected.
|
|
30
|
+
*
|
|
31
|
+
* @param command - Command with injection pattern
|
|
32
|
+
* @param pattern - Detected injection pattern
|
|
33
|
+
* @returns ProcessError instance
|
|
34
|
+
*/
|
|
35
|
+
static commandInjection(command: string, pattern: string): ProcessError;
|
|
36
|
+
/**
|
|
37
|
+
* Factory method: Command not found in PATH.
|
|
38
|
+
*
|
|
39
|
+
* @param command - Command that was not found
|
|
40
|
+
* @returns ProcessError instance
|
|
41
|
+
*/
|
|
42
|
+
static commandNotFound(command: string): ProcessError;
|
|
43
|
+
/**
|
|
44
|
+
* Factory method: Command exceeds maximum length.
|
|
45
|
+
*
|
|
46
|
+
* @param length - Actual command length
|
|
47
|
+
* @param maxLength - Maximum allowed length
|
|
48
|
+
* @returns ProcessError instance
|
|
49
|
+
*/
|
|
50
|
+
static commandTooLong(length: number, maxLength: number): ProcessError;
|
|
51
|
+
/**
|
|
52
|
+
* Factory method: Command execution failed.
|
|
53
|
+
*
|
|
54
|
+
* @param command - Command that failed
|
|
55
|
+
* @param cause - Cause of failure
|
|
56
|
+
* @returns ProcessError instance
|
|
57
|
+
*/
|
|
58
|
+
static executionFailed(command: string, cause: string): ProcessError;
|
|
59
|
+
/**
|
|
60
|
+
* Factory method: Invalid command validation.
|
|
61
|
+
*
|
|
62
|
+
* @param command - Command that failed validation
|
|
63
|
+
* @param reason - Reason for validation failure
|
|
64
|
+
* @returns ProcessError instance
|
|
65
|
+
*/
|
|
66
|
+
static invalidCommand(command: string, reason: string): ProcessError;
|
|
67
|
+
/**
|
|
68
|
+
* Factory method: Invalid process configuration.
|
|
69
|
+
*
|
|
70
|
+
* @param reason - Reason why configuration is invalid
|
|
71
|
+
* @returns ProcessError instance
|
|
72
|
+
*/
|
|
73
|
+
static invalidConfig(reason: string): ProcessError;
|
|
74
|
+
/**
|
|
75
|
+
* Factory method: Invalid or unsafe working directory.
|
|
76
|
+
*
|
|
77
|
+
* @param path - Working directory path that failed validation
|
|
78
|
+
* @param reason - Reason why path is invalid
|
|
79
|
+
* @returns ProcessError instance
|
|
80
|
+
*/
|
|
81
|
+
static invalidWorkingDirectory(path: string, reason: string): ProcessError;
|
|
82
|
+
/**
|
|
83
|
+
* Factory method: Failed to terminate background process.
|
|
84
|
+
*
|
|
85
|
+
* @param processId - ID of process that failed to terminate
|
|
86
|
+
* @param cause - Cause of failure
|
|
87
|
+
* @returns ProcessError instance
|
|
88
|
+
*/
|
|
89
|
+
static killFailed(processId: string, cause: string): ProcessError;
|
|
90
|
+
/**
|
|
91
|
+
* Factory method: ProcessService not initialized.
|
|
92
|
+
*
|
|
93
|
+
* @returns ProcessError instance
|
|
94
|
+
*/
|
|
95
|
+
static notInitialized(): ProcessError;
|
|
96
|
+
/**
|
|
97
|
+
* Factory method: Output buffer exceeded size limit.
|
|
98
|
+
*
|
|
99
|
+
* @param processId - ID of process with full buffer
|
|
100
|
+
* @param size - Current buffer size
|
|
101
|
+
* @param maxSize - Maximum allowed size
|
|
102
|
+
* @returns ProcessError instance
|
|
103
|
+
*/
|
|
104
|
+
static outputBufferFull(processId: string, size: number, maxSize: number): ProcessError;
|
|
105
|
+
/**
|
|
106
|
+
* Factory method: Permission denied executing command.
|
|
107
|
+
*
|
|
108
|
+
* @param command - Command that was denied
|
|
109
|
+
* @returns ProcessError instance
|
|
110
|
+
*/
|
|
111
|
+
static permissionDenied(command: string): ProcessError;
|
|
112
|
+
/**
|
|
113
|
+
* Factory method: Background process not found.
|
|
114
|
+
*
|
|
115
|
+
* @param processId - ID of process that was not found
|
|
116
|
+
* @returns ProcessError instance
|
|
117
|
+
*/
|
|
118
|
+
static processNotFound(processId: string): ProcessError;
|
|
119
|
+
/**
|
|
120
|
+
* Factory method: Command execution timed out.
|
|
121
|
+
*
|
|
122
|
+
* @param command - Command that timed out
|
|
123
|
+
* @param timeout - Timeout value in milliseconds
|
|
124
|
+
* @returns ProcessError instance
|
|
125
|
+
*/
|
|
126
|
+
static timeout(command: string, timeout: number): ProcessError;
|
|
127
|
+
/**
|
|
128
|
+
* Factory method: Too many concurrent background processes.
|
|
129
|
+
*
|
|
130
|
+
* @param current - Current number of running processes
|
|
131
|
+
* @param max - Maximum allowed concurrent processes
|
|
132
|
+
* @returns ProcessError instance
|
|
133
|
+
*/
|
|
134
|
+
static tooManyProcesses(current: number, max: number): ProcessError;
|
|
135
|
+
}
|