byterover-cli 0.4.1 → 1.0.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 +1 -9
- package/dist/commands/curate.d.ts +1 -3
- package/dist/commands/curate.js +14 -51
- package/dist/commands/main.d.ts +8 -0
- package/dist/commands/main.js +29 -8
- package/dist/commands/query.d.ts +1 -3
- package/dist/commands/query.js +8 -35
- package/dist/config/context-tree-domains.d.ts +5 -0
- package/dist/config/context-tree-domains.js +6 -1
- package/dist/config/environment.js +9 -9
- package/dist/constants.d.ts +14 -0
- package/dist/constants.js +18 -0
- package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
- package/dist/core/domain/cipher/agent/agent-info.js +143 -0
- package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
- package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
- package/dist/core/domain/cipher/agent/index.d.ts +4 -1
- package/dist/core/domain/cipher/agent/index.js +7 -1
- package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
- package/dist/core/domain/cipher/agent-events/types.js +11 -0
- package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
- package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
- package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
- package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
- package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
- package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
- package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
- package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
- package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
- package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
- package/dist/core/domain/cipher/llm/error-codes.js +51 -0
- package/dist/core/domain/cipher/llm/index.d.ts +9 -0
- package/dist/core/domain/cipher/llm/index.js +13 -0
- package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
- package/dist/core/domain/cipher/llm/registry.js +244 -0
- package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
- package/dist/core/domain/cipher/llm/schemas.js +151 -0
- package/dist/core/domain/cipher/llm/types.d.ts +121 -0
- package/dist/core/domain/cipher/llm/types.js +60 -0
- package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
- package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
- package/dist/core/domain/cipher/streaming/types.js +16 -0
- package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
- package/dist/core/domain/cipher/todos/types.d.ts +34 -0
- package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
- package/dist/core/domain/cipher/tools/constants.js +5 -2
- package/dist/core/domain/cipher/tools/types.d.ts +31 -0
- package/dist/core/domain/errors/connection-error.d.ts +33 -0
- package/dist/core/domain/errors/connection-error.js +54 -0
- package/dist/core/domain/errors/core-process-error.d.ts +27 -0
- package/dist/core/domain/errors/core-process-error.js +43 -0
- package/dist/core/domain/errors/task-error.d.ts +64 -0
- package/dist/core/domain/errors/task-error.js +116 -0
- package/dist/core/domain/errors/transport-error.d.ts +72 -0
- package/dist/core/domain/errors/transport-error.js +114 -0
- package/dist/core/domain/instance/index.d.ts +1 -0
- package/dist/core/domain/instance/index.js +1 -0
- package/dist/core/domain/instance/types.d.ts +57 -0
- package/dist/core/domain/instance/types.js +72 -0
- package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
- package/dist/core/domain/knowledge/directory-manager.js +31 -0
- package/dist/core/domain/transport/index.d.ts +2 -0
- package/dist/core/domain/transport/index.js +2 -0
- package/dist/core/domain/transport/schemas.d.ts +1149 -0
- package/dist/core/domain/transport/schemas.js +554 -0
- package/dist/core/domain/transport/types.d.ts +67 -0
- package/dist/core/domain/transport/types.js +7 -0
- package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
- package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
- package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
- package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
- package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
- package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
- package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
- package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
- package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
- package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
- package/dist/core/interfaces/cipher/index.d.ts +35 -0
- package/dist/core/interfaces/cipher/index.js +11 -0
- package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
- package/dist/core/interfaces/cipher/message-factory.js +252 -0
- package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
- package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
- package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
- package/dist/core/interfaces/cipher/message-types.js +6 -0
- package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
- package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
- package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
- package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
- package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
- package/dist/core/interfaces/executor/i-query-executor.js +1 -0
- package/dist/core/interfaces/executor/index.d.ts +2 -0
- package/dist/core/interfaces/executor/index.js +2 -0
- package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
- package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
- package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
- package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
- package/dist/core/interfaces/instance/index.d.ts +2 -0
- package/dist/core/interfaces/instance/index.js +2 -0
- package/dist/core/interfaces/noop-implementations.d.ts +53 -0
- package/dist/core/interfaces/noop-implementations.js +62 -0
- package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
- package/dist/core/interfaces/transport/i-transport-client.js +1 -0
- package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
- package/dist/core/interfaces/transport/i-transport-server.js +1 -0
- package/dist/core/interfaces/transport/index.d.ts +2 -0
- package/dist/core/interfaces/transport/index.js +2 -0
- package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
- package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
- package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
- package/dist/infra/cipher/agent/agent-error.js +79 -0
- package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
- package/dist/infra/cipher/agent/agent-schemas.js +97 -0
- package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
- package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
- package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
- package/dist/infra/cipher/agent/base-agent.js +240 -0
- package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
- package/dist/infra/cipher/agent/cipher-agent.js +546 -0
- package/dist/infra/cipher/agent/index.d.ts +22 -0
- package/dist/infra/cipher/agent/index.js +24 -0
- package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
- package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
- package/dist/infra/cipher/agent/types.d.ts +35 -0
- package/dist/infra/cipher/agent/types.js +1 -0
- package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
- package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
- package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
- package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
- package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
- package/dist/infra/cipher/consumer/consumer-service.js +1 -0
- package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
- package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
- package/dist/infra/cipher/consumer/index.d.ts +1 -1
- package/dist/infra/cipher/consumer/index.js +2 -1
- package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
- package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
- package/dist/infra/cipher/file-system/binary-utils.js +164 -0
- package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
- package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
- package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
- package/dist/infra/cipher/file-system/file-system-service.js +327 -36
- package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
- package/dist/infra/cipher/file-system/path-validator.js +111 -6
- package/dist/infra/cipher/interactive-loop.js +41 -33
- package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
- package/dist/infra/cipher/llm/capability-cache.js +125 -0
- package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
- package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
- package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
- package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
- package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
- package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
- package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
- package/dist/infra/cipher/llm/context/compression/index.js +6 -0
- package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
- package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
- package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
- package/dist/infra/cipher/llm/context/context-manager.js +129 -0
- package/dist/infra/cipher/llm/context/utils.js +17 -4
- package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
- package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
- package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
- package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
- package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
- package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
- package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
- package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
- package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
- package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
- package/dist/infra/cipher/llm/sanitization/index.js +13 -0
- package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
- package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
- package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
- package/dist/infra/cipher/llm/stream-processor.js +276 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
- package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
- package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
- package/dist/infra/cipher/process/command-validator.d.ts +23 -0
- package/dist/infra/cipher/process/command-validator.js +75 -0
- package/dist/infra/cipher/process/path-utils.d.ts +66 -0
- package/dist/infra/cipher/process/path-utils.js +94 -0
- package/dist/infra/cipher/process/process-service.d.ts +32 -0
- package/dist/infra/cipher/process/process-service.js +98 -17
- package/dist/infra/cipher/session/chat-session.d.ts +56 -7
- package/dist/infra/cipher/session/chat-session.js +163 -13
- package/dist/infra/cipher/session/index.d.ts +1 -0
- package/dist/infra/cipher/session/index.js +2 -0
- package/dist/infra/cipher/session/message-queue.d.ts +65 -0
- package/dist/infra/cipher/session/message-queue.js +90 -0
- package/dist/infra/cipher/session/session-manager.d.ts +106 -5
- package/dist/infra/cipher/session/session-manager.js +254 -7
- package/dist/infra/cipher/session/session-status.d.ts +137 -0
- package/dist/infra/cipher/session/session-status.js +184 -0
- package/dist/infra/cipher/session/title-generator.d.ts +8 -0
- package/dist/infra/cipher/session/title-generator.js +31 -0
- package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
- package/dist/infra/cipher/storage/message-storage-service.js +300 -54
- package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
- package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
- package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
- package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
- package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
- package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
- package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
- package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
- package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
- package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
- package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
- package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
- package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
- package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
- package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
- package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
- package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
- package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
- package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
- package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
- package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
- package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
- package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
- package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
- package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
- package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
- package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
- package/dist/infra/cipher/system-prompt/schemas.js +94 -0
- package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
- package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
- package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
- package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
- package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
- package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
- package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
- package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
- package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
- package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
- package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
- package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
- package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
- package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
- package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
- package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
- package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
- package/dist/infra/cipher/tools/index.d.ts +1 -1
- package/dist/infra/cipher/tools/index.js +1 -1
- package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
- package/dist/infra/cipher/tools/plugins/index.js +2 -0
- package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
- package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
- package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
- package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
- package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
- package/dist/infra/cipher/tools/streaming/index.js +1 -0
- package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
- package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
- package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
- package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
- package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
- package/dist/infra/cipher/tools/tool-manager.js +107 -11
- package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
- package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
- package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
- package/dist/infra/cipher/tools/tool-provider.js +81 -25
- package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
- package/dist/infra/cipher/tools/tool-registry.js +58 -16
- package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
- package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
- package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
- package/dist/infra/context-tree/path-utils.d.ts +7 -0
- package/dist/infra/context-tree/path-utils.js +7 -0
- package/dist/infra/core/executors/curate-executor.d.ts +35 -0
- package/dist/infra/core/executors/curate-executor.js +123 -0
- package/dist/infra/core/executors/index.d.ts +2 -0
- package/dist/infra/core/executors/index.js +2 -0
- package/dist/infra/core/executors/query-executor.d.ts +23 -0
- package/dist/infra/core/executors/query-executor.js +51 -0
- package/dist/infra/core/task-processor.d.ts +81 -0
- package/dist/infra/core/task-processor.js +115 -0
- package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
- package/dist/infra/instance/file-instance-discovery.js +84 -0
- package/dist/infra/instance/file-instance-manager.d.ts +46 -0
- package/dist/infra/instance/file-instance-manager.js +123 -0
- package/dist/infra/instance/index.d.ts +3 -0
- package/dist/infra/instance/index.js +3 -0
- package/dist/infra/instance/process-utils.d.ts +14 -0
- package/dist/infra/instance/process-utils.js +39 -0
- package/dist/infra/process/agent-worker.d.ts +20 -0
- package/dist/infra/process/agent-worker.js +602 -0
- package/dist/infra/process/index.d.ts +12 -0
- package/dist/infra/process/index.js +11 -0
- package/dist/infra/process/ipc-types.d.ts +55 -0
- package/dist/infra/process/ipc-types.js +12 -0
- package/dist/infra/process/process-manager.d.ts +154 -0
- package/dist/infra/process/process-manager.js +471 -0
- package/dist/infra/process/task-queue-manager.d.ts +123 -0
- package/dist/infra/process/task-queue-manager.js +226 -0
- package/dist/infra/process/transport-handlers.d.ts +124 -0
- package/dist/infra/process/transport-handlers.js +348 -0
- package/dist/infra/process/transport-worker.d.ts +20 -0
- package/dist/infra/process/transport-worker.js +168 -0
- package/dist/infra/repl/commands/curate-command.js +0 -5
- package/dist/infra/repl/commands/query-command.js +0 -3
- package/dist/infra/repl/repl-startup.d.ts +4 -0
- package/dist/infra/repl/repl-startup.js +8 -1
- package/dist/infra/repl/transport-client-helper.d.ts +9 -0
- package/dist/infra/repl/transport-client-helper.js +96 -0
- package/dist/infra/transport/index.d.ts +4 -0
- package/dist/infra/transport/index.js +4 -0
- package/dist/infra/transport/port-utils.d.ts +42 -0
- package/dist/infra/transport/port-utils.js +84 -0
- package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
- package/dist/infra/transport/socket-io-transport-client.js +270 -0
- package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
- package/dist/infra/transport/socket-io-transport-server.js +207 -0
- package/dist/infra/transport/transport-client-factory.d.ts +76 -0
- package/dist/infra/transport/transport-client-factory.js +168 -0
- package/dist/infra/transport/transport-factory.d.ts +33 -0
- package/dist/infra/transport/transport-factory.js +59 -0
- package/dist/infra/usecase/curate-use-case.d.ts +8 -55
- package/dist/infra/usecase/curate-use-case.js +71 -262
- package/dist/infra/usecase/init-use-case.js +3 -2
- package/dist/infra/usecase/query-use-case.d.ts +18 -45
- package/dist/infra/usecase/query-use-case.js +250 -326
- package/dist/infra/usecase/status-use-case.js +1 -1
- package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
- package/dist/resources/prompts/explore.yml +78 -0
- package/dist/resources/prompts/plan.yml +114 -0
- package/dist/resources/prompts/reflection.yml +1 -1
- package/dist/resources/prompts/system-prompt.yml +15 -8
- package/dist/resources/prompts/tool-outputs.yml +0 -5
- package/dist/resources/tools/bash_exec.txt +98 -0
- package/dist/resources/tools/bash_output.txt +40 -0
- package/dist/resources/tools/batch.txt +28 -0
- package/dist/resources/tools/create_knowledge_topic.txt +23 -0
- package/dist/resources/tools/curate.txt +22 -0
- package/dist/resources/tools/delete_memory.txt +1 -0
- package/dist/resources/tools/detect_domains.txt +11 -0
- package/dist/resources/tools/edit_file.txt +1 -0
- package/dist/resources/tools/edit_memory.txt +1 -0
- package/dist/resources/tools/glob_files.txt +20 -0
- package/dist/resources/tools/grep_content.txt +18 -0
- package/dist/resources/tools/kill_process.txt +16 -0
- package/dist/resources/tools/list_directory.txt +16 -0
- package/dist/resources/tools/list_memories.txt +1 -0
- package/dist/resources/tools/read_file.txt +31 -0
- package/dist/resources/tools/read_memory.txt +1 -0
- package/dist/resources/tools/read_todos.txt +17 -0
- package/dist/resources/tools/search_history.txt +1 -0
- package/dist/resources/tools/task.txt +23 -0
- package/dist/resources/tools/write_file.txt +1 -0
- package/dist/resources/tools/write_memory.txt +1 -0
- package/dist/resources/tools/write_todos.txt +29 -0
- package/dist/tui/app.js +9 -13
- package/dist/tui/components/command-details.d.ts +14 -0
- package/dist/tui/components/command-details.js +35 -0
- package/dist/tui/components/execution/execution-changes.d.ts +5 -0
- package/dist/tui/components/execution/execution-changes.js +19 -4
- package/dist/tui/components/execution/execution-content.d.ts +4 -2
- package/dist/tui/components/execution/execution-content.js +26 -13
- package/dist/tui/components/execution/execution-input.js +3 -3
- package/dist/tui/components/execution/execution-progress.d.ts +2 -2
- package/dist/tui/components/execution/execution-progress.js +8 -6
- package/dist/tui/components/execution/log-item.d.ts +3 -4
- package/dist/tui/components/execution/log-item.js +2 -5
- package/dist/tui/components/footer.js +9 -4
- package/dist/tui/components/header.d.ts +3 -3
- package/dist/tui/components/header.js +5 -3
- package/dist/tui/components/index.d.ts +1 -0
- package/dist/tui/components/index.js +1 -0
- package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
- package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
- package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
- package/dist/tui/components/scrollable-list.js +12 -10
- package/dist/tui/components/suggestions.js +39 -41
- package/dist/tui/components/tab-bar.d.ts +2 -1
- package/dist/tui/components/tab-bar.js +3 -4
- package/dist/tui/constants.d.ts +0 -5
- package/dist/tui/constants.js +0 -5
- package/dist/tui/contexts/auth-context.js +9 -2
- package/dist/tui/contexts/{use-commands.js → commands-context.js} +3 -3
- package/dist/tui/contexts/index.d.ts +6 -1
- package/dist/tui/contexts/index.js +6 -1
- package/dist/tui/contexts/onboarding-context.d.ts +1 -1
- package/dist/tui/contexts/onboarding-context.js +9 -9
- package/dist/tui/contexts/tasks-context.d.ts +84 -0
- package/dist/tui/contexts/tasks-context.js +218 -0
- package/dist/tui/contexts/transport-context.d.ts +29 -0
- package/dist/tui/contexts/transport-context.js +82 -0
- package/dist/tui/hooks/index.d.ts +10 -6
- package/dist/tui/hooks/index.js +7 -6
- package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
- package/dist/tui/hooks/use-activity-logs.js +87 -34
- package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
- package/dist/tui/hooks/use-auth-polling.js +104 -0
- package/dist/tui/hooks/use-slash-command-processor.js +0 -1
- package/dist/tui/hooks/use-slash-completion.js +1 -1
- package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
- package/dist/tui/hooks/use-tab-navigation.js +16 -7
- package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
- package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
- package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
- package/dist/tui/hooks/use-ui-heights.js +88 -0
- package/dist/tui/providers/app-providers.js +2 -6
- package/dist/tui/types/commands.d.ts +0 -26
- package/dist/tui/types/index.d.ts +1 -1
- package/dist/tui/types/ui.d.ts +9 -4
- package/dist/tui/utils/line.d.ts +11 -0
- package/dist/tui/utils/line.js +16 -0
- package/dist/tui/utils/log.d.ts +27 -0
- package/dist/tui/utils/log.js +114 -0
- package/dist/tui/views/command-view.d.ts +7 -0
- package/dist/tui/views/command-view.js +103 -80
- package/dist/tui/views/login-view.js +7 -4
- package/dist/tui/views/logs-view.d.ts +13 -0
- package/dist/tui/views/logs-view.js +27 -52
- package/dist/utils/connection-error-handler.d.ts +16 -0
- package/dist/utils/connection-error-handler.js +49 -0
- package/dist/utils/crash-log.d.ts +14 -0
- package/dist/utils/crash-log.js +19 -0
- package/dist/utils/file-helpers.d.ts +14 -0
- package/dist/utils/file-helpers.js +21 -0
- package/dist/utils/global-logs-path.d.ts +11 -0
- package/dist/utils/global-logs-path.js +37 -0
- package/dist/utils/process-logger.d.ts +53 -0
- package/dist/utils/process-logger.js +253 -0
- package/dist/utils/sandbox-detector.d.ts +31 -0
- package/dist/utils/sandbox-detector.js +122 -0
- package/oclif.manifest.json +10 -198
- package/package.json +5 -1
- package/dist/commands/cipher-agent/run.d.ts +0 -142
- package/dist/commands/cipher-agent/run.js +0 -555
- package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
- package/dist/commands/cipher-agent/set-prompt.js +0 -58
- package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
- package/dist/commands/cipher-agent/show-prompt.js +0 -53
- package/dist/commands/foo.d.ts +0 -14
- package/dist/commands/foo.js +0 -66
- package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
- package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
- package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
- package/dist/infra/cipher/cipher-agent.d.ts +0 -182
- package/dist/infra/cipher/cipher-agent.js +0 -317
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
- package/dist/resources/prompts/modes/autonomous.yml +0 -9
- package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
- package/dist/tui/contexts/consumer.d.ts +0 -31
- package/dist/tui/contexts/consumer.js +0 -56
- package/dist/tui/hooks/use-consumer.d.ts +0 -12
- package/dist/tui/hooks/use-consumer.js +0 -50
- package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
- package/dist/tui/hooks/use-queue-polling.js +0 -90
- /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
- /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Normalizer
|
|
3
|
+
*
|
|
4
|
+
* Converts various error types into a unified, normalized format.
|
|
5
|
+
* Following the OpenCode pattern of MessageV2.fromError() for consistent
|
|
6
|
+
* error handling across providers.
|
|
7
|
+
*
|
|
8
|
+
* Key features:
|
|
9
|
+
* - Discriminated union for error types
|
|
10
|
+
* - Provider-agnostic error representation
|
|
11
|
+
* - Retryable error detection
|
|
12
|
+
* - Consistent error structure for UI consumption
|
|
13
|
+
*/
|
|
14
|
+
import { LlmConfigurationError, LlmError, LlmGenerationError, LlmMaxIterationsError, LlmMissingToolExecutorError, LlmRateLimitError, LlmResponseParsingError, LlmToolExecutionError, } from './llm-error.js';
|
|
15
|
+
import { SessionCancelledError } from './session-error.js';
|
|
16
|
+
import { ToolError } from './tool-error.js';
|
|
17
|
+
/**
|
|
18
|
+
* Normalize abort-related errors.
|
|
19
|
+
*/
|
|
20
|
+
function normalizeAbortError(error) {
|
|
21
|
+
if (error instanceof DOMException && error.name === 'AbortError') {
|
|
22
|
+
return {
|
|
23
|
+
message: error.message || 'Operation was aborted',
|
|
24
|
+
type: 'aborted',
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
28
|
+
return {
|
|
29
|
+
message: error.message || 'Operation was aborted',
|
|
30
|
+
type: 'aborted',
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (error instanceof SessionCancelledError) {
|
|
34
|
+
return {
|
|
35
|
+
message: error.message,
|
|
36
|
+
type: 'aborted',
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Normalize LLM rate limit errors.
|
|
43
|
+
*/
|
|
44
|
+
function normalizeLlmRateLimitError(error, context) {
|
|
45
|
+
return {
|
|
46
|
+
message: error.message,
|
|
47
|
+
providerId: error.provider ?? context?.providerId ?? 'unknown',
|
|
48
|
+
retryAfter: error.retryAfter,
|
|
49
|
+
type: 'rate_limit',
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Normalize LLM configuration errors.
|
|
54
|
+
*/
|
|
55
|
+
function normalizeLlmConfigError(error, context) {
|
|
56
|
+
return {
|
|
57
|
+
configKey: error.configKey,
|
|
58
|
+
message: error.message,
|
|
59
|
+
providerId: error.provider ?? context?.providerId,
|
|
60
|
+
type: 'config',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Normalize LLM tool execution errors.
|
|
65
|
+
*/
|
|
66
|
+
function normalizeLlmToolExecutionError(error) {
|
|
67
|
+
return {
|
|
68
|
+
message: error.message,
|
|
69
|
+
toolName: error.toolName,
|
|
70
|
+
type: 'tool',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Normalize LLM max iterations errors.
|
|
75
|
+
*/
|
|
76
|
+
function normalizeLlmMaxIterationsError(error) {
|
|
77
|
+
return {
|
|
78
|
+
maxTokens: error.maxIterations,
|
|
79
|
+
message: error.message,
|
|
80
|
+
type: 'output_length',
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Normalize LLM response parsing errors.
|
|
85
|
+
*/
|
|
86
|
+
function normalizeLlmResponseParsingError(error, context) {
|
|
87
|
+
return {
|
|
88
|
+
isRetryable: false,
|
|
89
|
+
message: error.message,
|
|
90
|
+
model: error.model ?? context?.model,
|
|
91
|
+
providerId: error.provider ?? context?.providerId,
|
|
92
|
+
type: 'api',
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Normalize LLM missing tool executor errors.
|
|
97
|
+
*/
|
|
98
|
+
function normalizeLlmMissingToolExecutorError(error, context) {
|
|
99
|
+
return {
|
|
100
|
+
configKey: 'toolExecutor',
|
|
101
|
+
message: error.message,
|
|
102
|
+
providerId: error.provider ?? context?.providerId,
|
|
103
|
+
type: 'config',
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Normalize LLM generation errors.
|
|
108
|
+
*/
|
|
109
|
+
function normalizeLlmGenerationError(error, context) {
|
|
110
|
+
const isRetryable = isRetryableError(error);
|
|
111
|
+
return {
|
|
112
|
+
isRetryable,
|
|
113
|
+
message: error.message,
|
|
114
|
+
model: error.model ?? context?.model,
|
|
115
|
+
providerId: error.provider ?? context?.providerId,
|
|
116
|
+
type: 'api',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Normalize generic LLM errors.
|
|
121
|
+
*/
|
|
122
|
+
function normalizeGenericLlmError(error, context) {
|
|
123
|
+
const isRetryable = isRetryableError(error);
|
|
124
|
+
return {
|
|
125
|
+
isRetryable,
|
|
126
|
+
message: error.message,
|
|
127
|
+
model: error.model ?? context?.model,
|
|
128
|
+
providerId: error.provider ?? context?.providerId,
|
|
129
|
+
type: 'api',
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Normalize LLM-specific errors.
|
|
134
|
+
*/
|
|
135
|
+
function normalizeLlmError(error, context) {
|
|
136
|
+
if (error instanceof LlmRateLimitError) {
|
|
137
|
+
return normalizeLlmRateLimitError(error, context);
|
|
138
|
+
}
|
|
139
|
+
if (error instanceof LlmConfigurationError) {
|
|
140
|
+
return normalizeLlmConfigError(error, context);
|
|
141
|
+
}
|
|
142
|
+
if (error instanceof LlmToolExecutionError) {
|
|
143
|
+
return normalizeLlmToolExecutionError(error);
|
|
144
|
+
}
|
|
145
|
+
if (error instanceof LlmMaxIterationsError) {
|
|
146
|
+
return normalizeLlmMaxIterationsError(error);
|
|
147
|
+
}
|
|
148
|
+
if (error instanceof LlmResponseParsingError) {
|
|
149
|
+
return normalizeLlmResponseParsingError(error, context);
|
|
150
|
+
}
|
|
151
|
+
if (error instanceof LlmMissingToolExecutorError) {
|
|
152
|
+
return normalizeLlmMissingToolExecutorError(error, context);
|
|
153
|
+
}
|
|
154
|
+
if (error instanceof LlmGenerationError) {
|
|
155
|
+
return normalizeLlmGenerationError(error, context);
|
|
156
|
+
}
|
|
157
|
+
if (error instanceof LlmError) {
|
|
158
|
+
return normalizeGenericLlmError(error, context);
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Normalize tool-related errors.
|
|
164
|
+
*/
|
|
165
|
+
function normalizeToolError(error) {
|
|
166
|
+
if (error instanceof ToolError) {
|
|
167
|
+
const toolName = error.details?.toolName ?? 'unknown';
|
|
168
|
+
return {
|
|
169
|
+
message: error.message,
|
|
170
|
+
toolName,
|
|
171
|
+
type: 'tool',
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Normalize generic Error instances.
|
|
178
|
+
*/
|
|
179
|
+
function normalizeGenericError(error, context) {
|
|
180
|
+
if (isAuthError(error)) {
|
|
181
|
+
return {
|
|
182
|
+
message: error.message,
|
|
183
|
+
providerId: context?.providerId ?? 'unknown',
|
|
184
|
+
type: 'auth',
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
if (isRateLimitPattern(error.message)) {
|
|
188
|
+
return {
|
|
189
|
+
message: error.message,
|
|
190
|
+
providerId: context?.providerId ?? 'unknown',
|
|
191
|
+
type: 'rate_limit',
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
message: error.message,
|
|
196
|
+
originalError: error,
|
|
197
|
+
type: 'unknown',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Normalize any error into a consistent format.
|
|
202
|
+
*
|
|
203
|
+
* This function handles all known error types and converts them
|
|
204
|
+
* to a unified NormalizedError format for consistent handling.
|
|
205
|
+
*
|
|
206
|
+
* @param error - The error to normalize
|
|
207
|
+
* @param context - Optional context about the operation
|
|
208
|
+
* @returns Normalized error with consistent structure
|
|
209
|
+
*
|
|
210
|
+
* @example
|
|
211
|
+
* ```typescript
|
|
212
|
+
* try {
|
|
213
|
+
* await llm.generate(prompt)
|
|
214
|
+
* } catch (error) {
|
|
215
|
+
* const normalized = normalizeError(error, { providerId: 'claude' })
|
|
216
|
+
*
|
|
217
|
+
* switch (normalized.type) {
|
|
218
|
+
* case 'rate_limit':
|
|
219
|
+
* await sleep(normalized.retryAfter * 1000)
|
|
220
|
+
* break
|
|
221
|
+
* case 'auth':
|
|
222
|
+
* showLoginPrompt()
|
|
223
|
+
* break
|
|
224
|
+
* default:
|
|
225
|
+
* logError(normalized.message)
|
|
226
|
+
* }
|
|
227
|
+
* }
|
|
228
|
+
* ```
|
|
229
|
+
*/
|
|
230
|
+
export function normalizeError(error, context) {
|
|
231
|
+
if (error === null || error === undefined) {
|
|
232
|
+
return {
|
|
233
|
+
message: 'Unknown error occurred',
|
|
234
|
+
type: 'unknown',
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
const abortError = normalizeAbortError(error);
|
|
238
|
+
if (abortError) {
|
|
239
|
+
return abortError;
|
|
240
|
+
}
|
|
241
|
+
const llmError = normalizeLlmError(error, context);
|
|
242
|
+
if (llmError) {
|
|
243
|
+
return llmError;
|
|
244
|
+
}
|
|
245
|
+
const toolError = normalizeToolError(error);
|
|
246
|
+
if (toolError) {
|
|
247
|
+
return toolError;
|
|
248
|
+
}
|
|
249
|
+
if (error instanceof Error) {
|
|
250
|
+
return normalizeGenericError(error, context);
|
|
251
|
+
}
|
|
252
|
+
if (typeof error === 'string') {
|
|
253
|
+
return {
|
|
254
|
+
message: error,
|
|
255
|
+
type: 'unknown',
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (typeof error === 'object' && 'message' in error && typeof error.message === 'string') {
|
|
259
|
+
return {
|
|
260
|
+
message: error.message,
|
|
261
|
+
type: 'unknown',
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
message: String(error),
|
|
266
|
+
type: 'unknown',
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Check if an error is retryable.
|
|
271
|
+
*/
|
|
272
|
+
function isRetryableError(error) {
|
|
273
|
+
const message = error.message.toLowerCase();
|
|
274
|
+
// Network errors are usually retryable
|
|
275
|
+
if (message.includes('network') || message.includes('timeout') || message.includes('econnreset')) {
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
// Server errors (5xx) are usually retryable
|
|
279
|
+
if (message.includes('500') || message.includes('502') || message.includes('503') || message.includes('504')) {
|
|
280
|
+
return true;
|
|
281
|
+
}
|
|
282
|
+
// Rate limits are retryable
|
|
283
|
+
if (message.includes('rate limit') || message.includes('too many requests') || message.includes('429')) {
|
|
284
|
+
return true;
|
|
285
|
+
}
|
|
286
|
+
// Overloaded errors are retryable
|
|
287
|
+
if (message.includes('overloaded') || message.includes('capacity')) {
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
return false;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Check if an error looks like an auth error.
|
|
294
|
+
*/
|
|
295
|
+
function isAuthError(error) {
|
|
296
|
+
const message = error.message.toLowerCase();
|
|
297
|
+
return (message.includes('unauthorized') ||
|
|
298
|
+
message.includes('authentication') ||
|
|
299
|
+
message.includes('api key') ||
|
|
300
|
+
message.includes('invalid key') ||
|
|
301
|
+
message.includes('401') ||
|
|
302
|
+
message.includes('403'));
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Check if a message looks like a rate limit error.
|
|
306
|
+
*/
|
|
307
|
+
function isRateLimitPattern(message) {
|
|
308
|
+
const lower = message.toLowerCase();
|
|
309
|
+
return (lower.includes('rate limit') ||
|
|
310
|
+
lower.includes('too many requests') ||
|
|
311
|
+
lower.includes('429') ||
|
|
312
|
+
lower.includes('quota exceeded'));
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Check if a normalized error is retryable.
|
|
316
|
+
*/
|
|
317
|
+
export function isNormalizedErrorRetryable(error) {
|
|
318
|
+
switch (error.type) {
|
|
319
|
+
case 'aborted': {
|
|
320
|
+
return false;
|
|
321
|
+
}
|
|
322
|
+
case 'api': {
|
|
323
|
+
return error.isRetryable;
|
|
324
|
+
}
|
|
325
|
+
case 'auth': {
|
|
326
|
+
return false;
|
|
327
|
+
}
|
|
328
|
+
case 'config': {
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
case 'output_length': {
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
case 'rate_limit': {
|
|
335
|
+
return true;
|
|
336
|
+
}
|
|
337
|
+
case 'tool': {
|
|
338
|
+
return false;
|
|
339
|
+
}
|
|
340
|
+
case 'unknown': {
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* Get a user-friendly message for a normalized error.
|
|
347
|
+
*/
|
|
348
|
+
export function getErrorDisplayMessage(error) {
|
|
349
|
+
switch (error.type) {
|
|
350
|
+
case 'aborted': {
|
|
351
|
+
return 'Operation was cancelled.';
|
|
352
|
+
}
|
|
353
|
+
case 'api': {
|
|
354
|
+
return error.isRetryable
|
|
355
|
+
? 'Temporary error. Please try again.'
|
|
356
|
+
: `API error: ${error.message}`;
|
|
357
|
+
}
|
|
358
|
+
case 'auth': {
|
|
359
|
+
return `Authentication failed with ${error.providerId}. Please check your API key.`;
|
|
360
|
+
}
|
|
361
|
+
case 'config': {
|
|
362
|
+
return `Configuration error: ${error.message}`;
|
|
363
|
+
}
|
|
364
|
+
case 'output_length': {
|
|
365
|
+
return 'Response was too long and was truncated.';
|
|
366
|
+
}
|
|
367
|
+
case 'rate_limit': {
|
|
368
|
+
return error.retryAfter
|
|
369
|
+
? `Rate limit exceeded. Retry in ${error.retryAfter} seconds.`
|
|
370
|
+
: 'Rate limit exceeded. Please wait and try again.';
|
|
371
|
+
}
|
|
372
|
+
case 'tool': {
|
|
373
|
+
return `Tool "${error.toolName}" failed: ${error.message}`;
|
|
374
|
+
}
|
|
375
|
+
case 'unknown': {
|
|
376
|
+
return error.message || 'An unexpected error occurred.';
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
}
|
|
@@ -20,8 +20,9 @@ export declare class FileNotFoundError extends FileSystemError {
|
|
|
20
20
|
/**
|
|
21
21
|
* Creates a new file not found error
|
|
22
22
|
* @param path - Path to the file that was not found
|
|
23
|
+
* @param customMessage - Optional custom message (e.g., with suggestions)
|
|
23
24
|
*/
|
|
24
|
-
constructor(path: string);
|
|
25
|
+
constructor(path: string, customMessage?: string);
|
|
25
26
|
}
|
|
26
27
|
/**
|
|
27
28
|
* Error thrown when a directory is not found.
|
|
@@ -25,9 +25,10 @@ export class FileNotFoundError extends FileSystemError {
|
|
|
25
25
|
/**
|
|
26
26
|
* Creates a new file not found error
|
|
27
27
|
* @param path - Path to the file that was not found
|
|
28
|
+
* @param customMessage - Optional custom message (e.g., with suggestions)
|
|
28
29
|
*/
|
|
29
|
-
constructor(path) {
|
|
30
|
-
super(`File not found: ${path}`, 'FILE_NOT_FOUND', { path });
|
|
30
|
+
constructor(path, customMessage) {
|
|
31
|
+
super(customMessage ?? `File not found: ${path}`, 'FILE_NOT_FOUND', { path });
|
|
31
32
|
this.name = 'FileNotFoundError';
|
|
32
33
|
}
|
|
33
34
|
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for system prompt operations.
|
|
3
|
+
*
|
|
4
|
+
* Used by SystemPromptError factory to create structured error objects.
|
|
5
|
+
*/
|
|
6
|
+
export declare enum SystemPromptErrorCode {
|
|
7
|
+
/**
|
|
8
|
+
* Cache operation failed.
|
|
9
|
+
*
|
|
10
|
+
* Error during cache read, write, or invalidation.
|
|
11
|
+
*/
|
|
12
|
+
CACHE_OPERATION_FAILED = "CACHE_OPERATION_FAILED",
|
|
13
|
+
/**
|
|
14
|
+
* Prompt configuration is invalid.
|
|
15
|
+
*
|
|
16
|
+
* YAML structure doesn't match expected schema.
|
|
17
|
+
*/
|
|
18
|
+
CONFIG_INVALID = "CONFIG_INVALID",
|
|
19
|
+
/**
|
|
20
|
+
* Required field missing from configuration.
|
|
21
|
+
*
|
|
22
|
+
* A mandatory field like 'prompt' or 'prompts' is not present.
|
|
23
|
+
*/
|
|
24
|
+
CONFIG_MISSING_FIELD = "CONFIG_MISSING_FIELD",
|
|
25
|
+
/**
|
|
26
|
+
* Contributor execution failed.
|
|
27
|
+
*
|
|
28
|
+
* Error occurred while generating contributor content.
|
|
29
|
+
*/
|
|
30
|
+
CONTRIBUTOR_EXECUTION_FAILED = "CONTRIBUTOR_EXECUTION_FAILED",
|
|
31
|
+
/**
|
|
32
|
+
* Invalid contributor configuration.
|
|
33
|
+
*
|
|
34
|
+
* Contributor config doesn't match expected structure.
|
|
35
|
+
*/
|
|
36
|
+
CONTRIBUTOR_INVALID_CONFIG = "CONTRIBUTOR_INVALID_CONFIG",
|
|
37
|
+
/**
|
|
38
|
+
* Contributor not found in registry.
|
|
39
|
+
*
|
|
40
|
+
* The specified contributor ID is not registered.
|
|
41
|
+
*/
|
|
42
|
+
CONTRIBUTOR_NOT_FOUND = "CONTRIBUTOR_NOT_FOUND",
|
|
43
|
+
/**
|
|
44
|
+
* Invalid file type for prompt loading.
|
|
45
|
+
*
|
|
46
|
+
* File extension is not in the allowed list (e.g., .yml, .yaml).
|
|
47
|
+
*/
|
|
48
|
+
FILE_INVALID_TYPE = "FILE_INVALID_TYPE",
|
|
49
|
+
/**
|
|
50
|
+
* Prompt file not found.
|
|
51
|
+
*
|
|
52
|
+
* The specified YAML prompt file does not exist at the expected path.
|
|
53
|
+
*/
|
|
54
|
+
FILE_NOT_FOUND = "FILE_NOT_FOUND",
|
|
55
|
+
/**
|
|
56
|
+
* Failed to read prompt file.
|
|
57
|
+
*
|
|
58
|
+
* I/O error when attempting to read file contents.
|
|
59
|
+
*/
|
|
60
|
+
FILE_READ_FAILED = "FILE_READ_FAILED",
|
|
61
|
+
/**
|
|
62
|
+
* File exceeds maximum allowed size.
|
|
63
|
+
*
|
|
64
|
+
* Prompt files have a size limit to prevent memory issues.
|
|
65
|
+
*/
|
|
66
|
+
FILE_TOO_LARGE = "FILE_TOO_LARGE",
|
|
67
|
+
/**
|
|
68
|
+
* Template rendering failed.
|
|
69
|
+
*
|
|
70
|
+
* Error during variable substitution in template.
|
|
71
|
+
*/
|
|
72
|
+
TEMPLATE_RENDER_FAILED = "TEMPLATE_RENDER_FAILED",
|
|
73
|
+
/**
|
|
74
|
+
* Required template variable is missing.
|
|
75
|
+
*
|
|
76
|
+
* A placeholder in the template has no corresponding value.
|
|
77
|
+
*/
|
|
78
|
+
TEMPLATE_VARIABLE_MISSING = "TEMPLATE_VARIABLE_MISSING"
|
|
79
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error codes for system prompt operations.
|
|
3
|
+
*
|
|
4
|
+
* Used by SystemPromptError factory to create structured error objects.
|
|
5
|
+
*/
|
|
6
|
+
export var SystemPromptErrorCode;
|
|
7
|
+
(function (SystemPromptErrorCode) {
|
|
8
|
+
/**
|
|
9
|
+
* Cache operation failed.
|
|
10
|
+
*
|
|
11
|
+
* Error during cache read, write, or invalidation.
|
|
12
|
+
*/
|
|
13
|
+
SystemPromptErrorCode["CACHE_OPERATION_FAILED"] = "CACHE_OPERATION_FAILED";
|
|
14
|
+
/**
|
|
15
|
+
* Prompt configuration is invalid.
|
|
16
|
+
*
|
|
17
|
+
* YAML structure doesn't match expected schema.
|
|
18
|
+
*/
|
|
19
|
+
SystemPromptErrorCode["CONFIG_INVALID"] = "CONFIG_INVALID";
|
|
20
|
+
/**
|
|
21
|
+
* Required field missing from configuration.
|
|
22
|
+
*
|
|
23
|
+
* A mandatory field like 'prompt' or 'prompts' is not present.
|
|
24
|
+
*/
|
|
25
|
+
SystemPromptErrorCode["CONFIG_MISSING_FIELD"] = "CONFIG_MISSING_FIELD";
|
|
26
|
+
/**
|
|
27
|
+
* Contributor execution failed.
|
|
28
|
+
*
|
|
29
|
+
* Error occurred while generating contributor content.
|
|
30
|
+
*/
|
|
31
|
+
SystemPromptErrorCode["CONTRIBUTOR_EXECUTION_FAILED"] = "CONTRIBUTOR_EXECUTION_FAILED";
|
|
32
|
+
/**
|
|
33
|
+
* Invalid contributor configuration.
|
|
34
|
+
*
|
|
35
|
+
* Contributor config doesn't match expected structure.
|
|
36
|
+
*/
|
|
37
|
+
SystemPromptErrorCode["CONTRIBUTOR_INVALID_CONFIG"] = "CONTRIBUTOR_INVALID_CONFIG";
|
|
38
|
+
/**
|
|
39
|
+
* Contributor not found in registry.
|
|
40
|
+
*
|
|
41
|
+
* The specified contributor ID is not registered.
|
|
42
|
+
*/
|
|
43
|
+
SystemPromptErrorCode["CONTRIBUTOR_NOT_FOUND"] = "CONTRIBUTOR_NOT_FOUND";
|
|
44
|
+
/**
|
|
45
|
+
* Invalid file type for prompt loading.
|
|
46
|
+
*
|
|
47
|
+
* File extension is not in the allowed list (e.g., .yml, .yaml).
|
|
48
|
+
*/
|
|
49
|
+
SystemPromptErrorCode["FILE_INVALID_TYPE"] = "FILE_INVALID_TYPE";
|
|
50
|
+
/**
|
|
51
|
+
* Prompt file not found.
|
|
52
|
+
*
|
|
53
|
+
* The specified YAML prompt file does not exist at the expected path.
|
|
54
|
+
*/
|
|
55
|
+
SystemPromptErrorCode["FILE_NOT_FOUND"] = "FILE_NOT_FOUND";
|
|
56
|
+
/**
|
|
57
|
+
* Failed to read prompt file.
|
|
58
|
+
*
|
|
59
|
+
* I/O error when attempting to read file contents.
|
|
60
|
+
*/
|
|
61
|
+
SystemPromptErrorCode["FILE_READ_FAILED"] = "FILE_READ_FAILED";
|
|
62
|
+
/**
|
|
63
|
+
* File exceeds maximum allowed size.
|
|
64
|
+
*
|
|
65
|
+
* Prompt files have a size limit to prevent memory issues.
|
|
66
|
+
*/
|
|
67
|
+
SystemPromptErrorCode["FILE_TOO_LARGE"] = "FILE_TOO_LARGE";
|
|
68
|
+
/**
|
|
69
|
+
* Template rendering failed.
|
|
70
|
+
*
|
|
71
|
+
* Error during variable substitution in template.
|
|
72
|
+
*/
|
|
73
|
+
SystemPromptErrorCode["TEMPLATE_RENDER_FAILED"] = "TEMPLATE_RENDER_FAILED";
|
|
74
|
+
/**
|
|
75
|
+
* Required template variable is missing.
|
|
76
|
+
*
|
|
77
|
+
* A placeholder in the template has no corresponding value.
|
|
78
|
+
*/
|
|
79
|
+
SystemPromptErrorCode["TEMPLATE_VARIABLE_MISSING"] = "TEMPLATE_VARIABLE_MISSING";
|
|
80
|
+
})(SystemPromptErrorCode || (SystemPromptErrorCode = {}));
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { SystemPromptErrorCode } from './system-prompt-error-codes.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base error class for system prompt operations.
|
|
4
|
+
*
|
|
5
|
+
* All system prompt-specific errors use this class with factory methods.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SystemPromptError extends Error {
|
|
8
|
+
readonly code: SystemPromptErrorCode;
|
|
9
|
+
readonly details?: Record<string, unknown>;
|
|
10
|
+
readonly suggestion?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new system prompt 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: SystemPromptErrorCode, details?: Record<string, unknown>, suggestion?: string);
|
|
20
|
+
/**
|
|
21
|
+
* Factory method: Cache operation failed.
|
|
22
|
+
*
|
|
23
|
+
* @param operation - The cache operation that failed (get, set, invalidate)
|
|
24
|
+
* @param reason - Reason for the failure
|
|
25
|
+
* @returns SystemPromptError instance
|
|
26
|
+
*/
|
|
27
|
+
static cacheOperationFailed(operation: string, reason: string): SystemPromptError;
|
|
28
|
+
/**
|
|
29
|
+
* Factory method: Prompt configuration is invalid.
|
|
30
|
+
*
|
|
31
|
+
* @param reason - Reason why configuration is invalid
|
|
32
|
+
* @param validationErrors - Optional validation error details
|
|
33
|
+
* @returns SystemPromptError instance
|
|
34
|
+
*/
|
|
35
|
+
static configInvalid(reason: string, validationErrors?: unknown): SystemPromptError;
|
|
36
|
+
/**
|
|
37
|
+
* Factory method: Required field missing from configuration.
|
|
38
|
+
*
|
|
39
|
+
* @param field - Name of the missing field
|
|
40
|
+
* @param filepath - Path to the config file
|
|
41
|
+
* @returns SystemPromptError instance
|
|
42
|
+
*/
|
|
43
|
+
static configMissingField(field: string, filepath: string): SystemPromptError;
|
|
44
|
+
/**
|
|
45
|
+
* Factory method: Contributor execution failed.
|
|
46
|
+
*
|
|
47
|
+
* @param contributorId - ID of the failing contributor
|
|
48
|
+
* @param reason - Reason for the failure
|
|
49
|
+
* @returns SystemPromptError instance
|
|
50
|
+
*/
|
|
51
|
+
static contributorExecutionFailed(contributorId: string, reason: string): SystemPromptError;
|
|
52
|
+
/**
|
|
53
|
+
* Factory method: Invalid contributor configuration.
|
|
54
|
+
*
|
|
55
|
+
* @param config - The invalid configuration object
|
|
56
|
+
* @returns SystemPromptError instance
|
|
57
|
+
*/
|
|
58
|
+
static contributorInvalidConfig(config: unknown): SystemPromptError;
|
|
59
|
+
/**
|
|
60
|
+
* Factory method: Contributor not found in registry.
|
|
61
|
+
*
|
|
62
|
+
* @param contributorId - ID of the missing contributor
|
|
63
|
+
* @returns SystemPromptError instance
|
|
64
|
+
*/
|
|
65
|
+
static contributorNotFound(contributorId: string): SystemPromptError;
|
|
66
|
+
/**
|
|
67
|
+
* Factory method: Prompt file not found.
|
|
68
|
+
*
|
|
69
|
+
* @param filepath - Path to the missing file
|
|
70
|
+
* @returns SystemPromptError instance
|
|
71
|
+
*/
|
|
72
|
+
static fileNotFound(filepath: string): SystemPromptError;
|
|
73
|
+
/**
|
|
74
|
+
* Factory method: Failed to read prompt file.
|
|
75
|
+
*
|
|
76
|
+
* @param filepath - Path to the file
|
|
77
|
+
* @param reason - Reason for the failure
|
|
78
|
+
* @returns SystemPromptError instance
|
|
79
|
+
*/
|
|
80
|
+
static fileReadFailed(filepath: string, reason: string): SystemPromptError;
|
|
81
|
+
/**
|
|
82
|
+
* Factory method: File exceeds maximum allowed size.
|
|
83
|
+
*
|
|
84
|
+
* @param filepath - Path to the file
|
|
85
|
+
* @param size - Actual file size in bytes
|
|
86
|
+
* @param maxSize - Maximum allowed size in bytes
|
|
87
|
+
* @returns SystemPromptError instance
|
|
88
|
+
*/
|
|
89
|
+
static fileTooLarge(filepath: string, size: number, maxSize: number): SystemPromptError;
|
|
90
|
+
/**
|
|
91
|
+
* Factory method: Invalid file type for prompt loading.
|
|
92
|
+
*
|
|
93
|
+
* @param filepath - Path to the invalid file
|
|
94
|
+
* @param allowedExtensions - List of allowed file extensions
|
|
95
|
+
* @returns SystemPromptError instance
|
|
96
|
+
*/
|
|
97
|
+
static invalidFileType(filepath: string, allowedExtensions: string[]): SystemPromptError;
|
|
98
|
+
/**
|
|
99
|
+
* Factory method: Template rendering failed.
|
|
100
|
+
*
|
|
101
|
+
* @param reason - Reason for the failure
|
|
102
|
+
* @param templatePreview - Preview of the template (first 100 chars)
|
|
103
|
+
* @returns SystemPromptError instance
|
|
104
|
+
*/
|
|
105
|
+
static templateRenderFailed(reason: string, templatePreview?: string): SystemPromptError;
|
|
106
|
+
/**
|
|
107
|
+
* Factory method: Required template variable is missing.
|
|
108
|
+
*
|
|
109
|
+
* @param variable - Name of the missing variable
|
|
110
|
+
* @param template - Path or identifier of the template
|
|
111
|
+
* @returns SystemPromptError instance
|
|
112
|
+
*/
|
|
113
|
+
static templateVariableMissing(variable: string, template: string): SystemPromptError;
|
|
114
|
+
}
|