byterover-cli 0.4.0 → 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/entities/event.d.ts +1 -1
- package/dist/core/domain/entities/event.js +3 -1
- 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/hooks/init/welcome.js +9 -24
- 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 +10 -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 +73 -259
- package/dist/infra/usecase/init-use-case.js +19 -8
- package/dist/infra/usecase/login-use-case.js +9 -3
- package/dist/infra/usecase/query-use-case.d.ts +18 -45
- package/dist/infra/usecase/query-use-case.js +251 -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} +6 -5
- 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,58 @@
|
|
|
1
|
+
import type { InstanceInfo } from '../../domain/instance/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Result of attempting to acquire an instance lock.
|
|
4
|
+
*/
|
|
5
|
+
export type AcquireResult = {
|
|
6
|
+
acquired: false;
|
|
7
|
+
existingInstance: InstanceInfo;
|
|
8
|
+
reason: 'already_running';
|
|
9
|
+
} | {
|
|
10
|
+
acquired: true;
|
|
11
|
+
instance: InstanceInfo;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Interface for managing instance lifecycle.
|
|
15
|
+
*
|
|
16
|
+
* Architecture notes (Section 6 - Instance Lock):
|
|
17
|
+
* - 1 FOLDER = 1 TRANSPORT SERVER
|
|
18
|
+
* - Handles acquire/release semantics for instance.json
|
|
19
|
+
* - Verifies PID to detect crashed instances (no status field needed)
|
|
20
|
+
*/
|
|
21
|
+
export interface IInstanceManager {
|
|
22
|
+
/**
|
|
23
|
+
* Attempts to acquire an instance lock for the given project root.
|
|
24
|
+
*
|
|
25
|
+
* Flow:
|
|
26
|
+
* 1. Check if instance.json exists
|
|
27
|
+
* 2. If exists and pid alive → return already_running
|
|
28
|
+
* 3. If exists but stale (pid dead) → overwrite
|
|
29
|
+
* 4. Create new instance.json
|
|
30
|
+
*
|
|
31
|
+
* @param projectRoot - Root directory containing .brv/
|
|
32
|
+
* @param port - Port the transport server will use
|
|
33
|
+
* @returns AcquireResult indicating success or existing instance
|
|
34
|
+
*/
|
|
35
|
+
acquire: (projectRoot: string, port: number) => Promise<AcquireResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Reads instance info from the project root.
|
|
38
|
+
* Returns undefined if instance.json doesn't exist.
|
|
39
|
+
*
|
|
40
|
+
* @param projectRoot - Root directory containing .brv/
|
|
41
|
+
*/
|
|
42
|
+
load: (projectRoot: string) => Promise<InstanceInfo | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Releases the instance lock by deleting instance.json.
|
|
45
|
+
*
|
|
46
|
+
* Called during graceful shutdown.
|
|
47
|
+
*
|
|
48
|
+
* @param projectRoot - Root directory containing .brv/
|
|
49
|
+
*/
|
|
50
|
+
release: (projectRoot: string) => Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Updates the current session ID in instance.json.
|
|
53
|
+
*
|
|
54
|
+
* @param projectRoot - Root directory containing .brv/
|
|
55
|
+
* @param sessionId - New session ID to set
|
|
56
|
+
*/
|
|
57
|
+
updateSessionId: (projectRoot: string, sessionId: string) => Promise<void>;
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NoOp Implementations for Core Interfaces
|
|
3
|
+
*
|
|
4
|
+
* These are used by CoreProcess when creating UseCases for Transport mode.
|
|
5
|
+
* Transport mode receives auth/config directly and doesn't use these stores,
|
|
6
|
+
* so NoOp implementations are sufficient.
|
|
7
|
+
*/
|
|
8
|
+
import type { AuthToken } from '../domain/entities/auth-token.js';
|
|
9
|
+
import type { BrvConfig } from '../domain/entities/brv-config.js';
|
|
10
|
+
import type { EventName, PropertyDict } from '../domain/entities/event.js';
|
|
11
|
+
import type { IProjectConfigStore } from './i-project-config-store.js';
|
|
12
|
+
import type { ConfirmOptions, FileSelectorItem, FileSelectorOptions, InputOptions, ITerminal, SearchOptions, SelectOptions } from './i-terminal.js';
|
|
13
|
+
import type { ITokenStore } from './i-token-store.js';
|
|
14
|
+
import type { ITrackingService } from './i-tracking-service.js';
|
|
15
|
+
/**
|
|
16
|
+
* NoOp Terminal - Does nothing, used for headless Transport mode.
|
|
17
|
+
*/
|
|
18
|
+
export declare class NoOpTerminal implements ITerminal {
|
|
19
|
+
actionStart(_message: string): void;
|
|
20
|
+
actionStop(_message?: string): void;
|
|
21
|
+
confirm(_options: ConfirmOptions): Promise<boolean>;
|
|
22
|
+
error(_message: string): void;
|
|
23
|
+
fileSelector(_options: FileSelectorOptions): Promise<FileSelectorItem | null>;
|
|
24
|
+
input(_options: InputOptions): Promise<string>;
|
|
25
|
+
log(_message?: string): void;
|
|
26
|
+
search<T>(_options: SearchOptions<T>): Promise<T>;
|
|
27
|
+
select<T>(_options: SelectOptions<T>): Promise<T>;
|
|
28
|
+
warn(_message: string): void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* NoOp Tracking Service - Does nothing, used for headless Transport mode.
|
|
32
|
+
*/
|
|
33
|
+
export declare class NoOpTrackingService implements ITrackingService {
|
|
34
|
+
track(_eventName: EventName, _properties?: PropertyDict): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* NoOp Token Store - Always returns undefined, used when Core loads auth separately.
|
|
38
|
+
* In Transport mode, auth is passed directly to UseCases.
|
|
39
|
+
*/
|
|
40
|
+
export declare class NoOpTokenStore implements ITokenStore {
|
|
41
|
+
clear(): Promise<void>;
|
|
42
|
+
load(): Promise<AuthToken | undefined>;
|
|
43
|
+
save(_token: AuthToken): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* NoOp Project Config Store - Always returns undefined, used when Core loads config separately.
|
|
47
|
+
* In Transport mode, brvConfig is passed directly to UseCases.
|
|
48
|
+
*/
|
|
49
|
+
export declare class NoOpProjectConfigStore implements IProjectConfigStore {
|
|
50
|
+
exists(_directory?: string): Promise<boolean>;
|
|
51
|
+
read(_directory?: string): Promise<BrvConfig | undefined>;
|
|
52
|
+
write(_config: BrvConfig, _directory?: string): Promise<void>;
|
|
53
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NoOp Implementations for Core Interfaces
|
|
3
|
+
*
|
|
4
|
+
* These are used by CoreProcess when creating UseCases for Transport mode.
|
|
5
|
+
* Transport mode receives auth/config directly and doesn't use these stores,
|
|
6
|
+
* so NoOp implementations are sufficient.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* NoOp Terminal - Does nothing, used for headless Transport mode.
|
|
10
|
+
*/
|
|
11
|
+
export class NoOpTerminal {
|
|
12
|
+
actionStart(_message) { }
|
|
13
|
+
actionStop(_message) { }
|
|
14
|
+
async confirm(_options) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
error(_message) { }
|
|
18
|
+
async fileSelector(_options) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
async input(_options) {
|
|
22
|
+
return '';
|
|
23
|
+
}
|
|
24
|
+
log(_message) { }
|
|
25
|
+
async search(_options) {
|
|
26
|
+
throw new Error('NoOpTerminal: search not supported in headless mode');
|
|
27
|
+
}
|
|
28
|
+
async select(_options) {
|
|
29
|
+
throw new Error('NoOpTerminal: select not supported in headless mode');
|
|
30
|
+
}
|
|
31
|
+
warn(_message) { }
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* NoOp Tracking Service - Does nothing, used for headless Transport mode.
|
|
35
|
+
*/
|
|
36
|
+
export class NoOpTrackingService {
|
|
37
|
+
async track(_eventName, _properties) { }
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* NoOp Token Store - Always returns undefined, used when Core loads auth separately.
|
|
41
|
+
* In Transport mode, auth is passed directly to UseCases.
|
|
42
|
+
*/
|
|
43
|
+
export class NoOpTokenStore {
|
|
44
|
+
async clear() { }
|
|
45
|
+
async load() {
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
async save(_token) { }
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* NoOp Project Config Store - Always returns undefined, used when Core loads config separately.
|
|
52
|
+
* In Transport mode, brvConfig is passed directly to UseCases.
|
|
53
|
+
*/
|
|
54
|
+
export class NoOpProjectConfigStore {
|
|
55
|
+
async exists(_directory) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
async read(_directory) {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
async write(_config, _directory) { }
|
|
62
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for server-broadcasted events.
|
|
3
|
+
* @param data - The event payload from server
|
|
4
|
+
*/
|
|
5
|
+
export type EventHandler<T = unknown> = (data: T) => void;
|
|
6
|
+
/**
|
|
7
|
+
* Connection state of the transport client.
|
|
8
|
+
*/
|
|
9
|
+
export type ConnectionState = 'connected' | 'connecting' | 'disconnected' | 'reconnecting';
|
|
10
|
+
/**
|
|
11
|
+
* Handler for connection state changes.
|
|
12
|
+
* @param state - The new connection state
|
|
13
|
+
*/
|
|
14
|
+
export type ConnectionStateHandler = (state: ConnectionState) => void;
|
|
15
|
+
/**
|
|
16
|
+
* Options for client requests.
|
|
17
|
+
*/
|
|
18
|
+
export type RequestOptions = {
|
|
19
|
+
/**
|
|
20
|
+
* Timeout in milliseconds for the request.
|
|
21
|
+
* If not specified, uses the default timeout.
|
|
22
|
+
*/
|
|
23
|
+
timeout?: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Interface for transport client operations.
|
|
27
|
+
* Provides abstraction over real-time communication protocols (Socket.IO, WebSocket, etc.)
|
|
28
|
+
* following Clean Architecture principles.
|
|
29
|
+
*
|
|
30
|
+
* The client:
|
|
31
|
+
* - Connects to a transport server
|
|
32
|
+
* - Sends requests and receives responses
|
|
33
|
+
* - Listens for broadcast events
|
|
34
|
+
* - Joins rooms for targeted broadcasts
|
|
35
|
+
*/
|
|
36
|
+
export interface ITransportClient {
|
|
37
|
+
/**
|
|
38
|
+
* Connects to the transport server at the specified URL.
|
|
39
|
+
* @param url - The server URL to connect to (e.g., "http://localhost:9847")
|
|
40
|
+
* @throws Error if connection fails
|
|
41
|
+
*/
|
|
42
|
+
connect: (url: string) => Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Disconnects from the transport server.
|
|
45
|
+
* Cleans up resources and stops reconnection attempts.
|
|
46
|
+
*/
|
|
47
|
+
disconnect: () => Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Returns the unique client ID assigned by the server.
|
|
50
|
+
* Returns undefined if not connected.
|
|
51
|
+
*/
|
|
52
|
+
getClientId: () => string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Returns the current connection state.
|
|
55
|
+
*/
|
|
56
|
+
getState: () => ConnectionState;
|
|
57
|
+
/**
|
|
58
|
+
* Joins a room for targeted broadcasts.
|
|
59
|
+
* @param room - The room identifier to join
|
|
60
|
+
*/
|
|
61
|
+
joinRoom: (room: string) => Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Leaves a room.
|
|
64
|
+
* @param room - The room identifier to leave
|
|
65
|
+
*/
|
|
66
|
+
leaveRoom: (room: string) => Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* Registers a handler for a specific event from the server.
|
|
69
|
+
* Multiple handlers can be registered for the same event.
|
|
70
|
+
* @param event - The event name to listen for
|
|
71
|
+
* @param handler - The function to handle incoming events
|
|
72
|
+
* @returns A function to unsubscribe the handler
|
|
73
|
+
*/
|
|
74
|
+
on: <T = unknown>(event: string, handler: EventHandler<T>) => () => void;
|
|
75
|
+
/**
|
|
76
|
+
* Registers a one-time handler for a specific event.
|
|
77
|
+
* The handler will be automatically removed after first invocation.
|
|
78
|
+
* @param event - The event name to listen for
|
|
79
|
+
* @param handler - The function to handle the event
|
|
80
|
+
*/
|
|
81
|
+
once: <T = unknown>(event: string, handler: EventHandler<T>) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Registers a handler for connection state changes.
|
|
84
|
+
* @param handler - Called when connection state changes
|
|
85
|
+
* @returns A function to unsubscribe the handler
|
|
86
|
+
*/
|
|
87
|
+
onStateChange: (handler: ConnectionStateHandler) => () => void;
|
|
88
|
+
/**
|
|
89
|
+
* Sends a request to the server and waits for a response.
|
|
90
|
+
* @param event - The event name
|
|
91
|
+
* @param data - The request payload
|
|
92
|
+
* @param options - Optional request configuration
|
|
93
|
+
* @returns The server's response
|
|
94
|
+
* @throws Error if request times out or server returns an error
|
|
95
|
+
*/
|
|
96
|
+
request: <TResponse = unknown, TRequest = unknown>(event: string, data?: TRequest, options?: RequestOptions) => Promise<TResponse>;
|
|
97
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Handler for incoming client requests.
|
|
3
|
+
* @param data - The request payload from client
|
|
4
|
+
* @param clientId - Unique identifier of the requesting client
|
|
5
|
+
* @returns Response data or void for fire-and-forget events
|
|
6
|
+
*/
|
|
7
|
+
export type RequestHandler<TRequest = unknown, TResponse = unknown> = (data: TRequest, clientId: string) => Promise<TResponse> | TResponse;
|
|
8
|
+
/**
|
|
9
|
+
* Connection event handler.
|
|
10
|
+
* @param clientId - Unique identifier of the connected/disconnected client
|
|
11
|
+
*/
|
|
12
|
+
export type ConnectionHandler = (clientId: string) => void;
|
|
13
|
+
/**
|
|
14
|
+
* Interface for transport server operations.
|
|
15
|
+
* Provides abstraction over real-time communication protocols (Socket.IO, WebSocket, etc.)
|
|
16
|
+
* following Clean Architecture principles.
|
|
17
|
+
*
|
|
18
|
+
* The server acts as a hub that:
|
|
19
|
+
* - Accepts client connections
|
|
20
|
+
* - Routes requests to handlers
|
|
21
|
+
* - Broadcasts events to connected clients
|
|
22
|
+
*/
|
|
23
|
+
export interface ITransportServer {
|
|
24
|
+
/**
|
|
25
|
+
* Adds a client to a room for targeted broadcasts.
|
|
26
|
+
* @param clientId - The client to add
|
|
27
|
+
* @param room - The room to join
|
|
28
|
+
*/
|
|
29
|
+
addToRoom: (clientId: string, room: string) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Broadcasts an event to all connected clients.
|
|
32
|
+
* @param event - The event name
|
|
33
|
+
* @param data - The data to send
|
|
34
|
+
*/
|
|
35
|
+
broadcast: <T = unknown>(event: string, data: T) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Broadcasts an event to clients in a specific room.
|
|
38
|
+
* @param room - The room identifier
|
|
39
|
+
* @param event - The event name
|
|
40
|
+
* @param data - The data to send
|
|
41
|
+
*/
|
|
42
|
+
broadcastTo: <T = unknown>(room: string, event: string, data: T) => void;
|
|
43
|
+
/**
|
|
44
|
+
* Returns the port the server is listening on.
|
|
45
|
+
* Returns undefined if server is not started.
|
|
46
|
+
*/
|
|
47
|
+
getPort: () => number | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Returns whether the server is currently running.
|
|
50
|
+
*/
|
|
51
|
+
isRunning: () => boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Registers a handler for client connection events.
|
|
54
|
+
* @param handler - Called when a client connects
|
|
55
|
+
*/
|
|
56
|
+
onConnection: (handler: ConnectionHandler) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Registers a handler for client disconnection events.
|
|
59
|
+
* @param handler - Called when a client disconnects
|
|
60
|
+
*/
|
|
61
|
+
onDisconnection: (handler: ConnectionHandler) => void;
|
|
62
|
+
/**
|
|
63
|
+
* Registers a handler for a specific event type.
|
|
64
|
+
* The handler will be called when any client emits that event.
|
|
65
|
+
* @param event - The event name to listen for
|
|
66
|
+
* @param handler - The function to handle incoming requests
|
|
67
|
+
*/
|
|
68
|
+
onRequest: <TRequest = unknown, TResponse = unknown>(event: string, handler: RequestHandler<TRequest, TResponse>) => void;
|
|
69
|
+
/**
|
|
70
|
+
* Removes a client from a room.
|
|
71
|
+
* @param clientId - The client to remove
|
|
72
|
+
* @param room - The room to leave
|
|
73
|
+
*/
|
|
74
|
+
removeFromRoom: (clientId: string, room: string) => void;
|
|
75
|
+
/**
|
|
76
|
+
* Sends an event directly to a specific client.
|
|
77
|
+
* @param clientId - The target client ID
|
|
78
|
+
* @param event - The event name
|
|
79
|
+
* @param data - The data to send
|
|
80
|
+
*/
|
|
81
|
+
sendTo: <T = unknown>(clientId: string, event: string, data: T) => void;
|
|
82
|
+
/**
|
|
83
|
+
* Starts the transport server on the specified port.
|
|
84
|
+
* @param port - The port number to listen on
|
|
85
|
+
* @throws Error if server fails to start (e.g., port in use)
|
|
86
|
+
*/
|
|
87
|
+
start: (port: number) => Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Gracefully stops the transport server.
|
|
90
|
+
* Closes all client connections and releases resources.
|
|
91
|
+
*/
|
|
92
|
+
stop: () => Promise<void>;
|
|
93
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -16,11 +16,11 @@ function checkNodeVersion() {
|
|
|
16
16
|
const [, major, minor] = versionMatch;
|
|
17
17
|
const majorVersion = Number.parseInt(major, 10);
|
|
18
18
|
const minorVersion = Number.parseInt(minor, 10);
|
|
19
|
-
// Minimum supported version: Node
|
|
20
|
-
if (majorVersion <
|
|
19
|
+
// Minimum supported version: Node 20
|
|
20
|
+
if (majorVersion < 20) {
|
|
21
21
|
return {
|
|
22
22
|
message: `Node.js ${majorVersion}.${minorVersion} is not supported.\n` +
|
|
23
|
-
'ByteRover CLI requires Node.js
|
|
23
|
+
'ByteRover CLI requires Node.js 20 or higher.\n' +
|
|
24
24
|
`Current version: ${nodeVersion}\n\n` +
|
|
25
25
|
'Please upgrade Node.js:\n' +
|
|
26
26
|
' - Using nvm: nvm install 22 && nvm use 22\n' +
|
|
@@ -28,21 +28,21 @@ function checkNodeVersion() {
|
|
|
28
28
|
type: 'error',
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
|
-
// Recommended versions: Node
|
|
32
|
-
// Node 24+ may have compatibility issues with native modules
|
|
31
|
+
// Recommended versions: Node 20, 22
|
|
32
|
+
// Node 24+ may have compatibility issues with native modules
|
|
33
33
|
if (majorVersion >= 24) {
|
|
34
34
|
return {
|
|
35
35
|
message: `Node.js ${majorVersion}.${minorVersion} has not been fully tested with ByteRover CLI.\n` +
|
|
36
36
|
`Current version: ${nodeVersion}\n` +
|
|
37
|
-
'Recommended versions: Node.js
|
|
38
|
-
'Some native dependencies
|
|
37
|
+
'Recommended versions: Node.js 20.x or 22.x\n\n' +
|
|
38
|
+
'Some native dependencies may not work correctly.\n' +
|
|
39
39
|
'If you encounter errors, please switch to a recommended version:\n' +
|
|
40
40
|
' - Using nvm: nvm install 22 && nvm use 22',
|
|
41
41
|
type: 'warning',
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
// All checks passed
|
|
45
|
-
return
|
|
45
|
+
return undefined;
|
|
46
46
|
}
|
|
47
47
|
const hook = async function (options) {
|
|
48
48
|
// Check Node.js version compatibility first
|
|
@@ -79,23 +79,8 @@ const hook = async function (options) {
|
|
|
79
79
|
chalk.cyan(String.raw ` |____/ \__, |\__\___|_| \_\___/ \_/ \___|_| `),
|
|
80
80
|
chalk.cyan(' |___/ '),
|
|
81
81
|
].join('\n');
|
|
82
|
-
const onboardingText = [
|
|
83
|
-
'ByteRover CLI quick start:',
|
|
84
|
-
'',
|
|
85
|
-
' 1. Authenticate with ByteRover:',
|
|
86
|
-
' brv login',
|
|
87
|
-
' 2. Link your workspace:',
|
|
88
|
-
' brv init',
|
|
89
|
-
'',
|
|
90
|
-
'After setup, run `brv status` to confirm your connection.',
|
|
91
|
-
'',
|
|
92
|
-
' Explore commands:',
|
|
93
|
-
' • `brv curate` - Organize and curate your context tree',
|
|
94
|
-
' • `brv query` - Search and query your context tree',
|
|
95
|
-
' • `brv push` - Push your context tree to ByteRover',
|
|
96
|
-
].join('\n');
|
|
97
82
|
const docsLink = `For more information, run 'brv --help', 'brv [command] --help' or visit ${DOCS_URL}`;
|
|
98
|
-
this.log(`\n${logo}\n\n${
|
|
83
|
+
this.log(`\n${logo}\n\n${docsLink}\n\n`);
|
|
99
84
|
}
|
|
100
85
|
};
|
|
101
86
|
export default hook;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-specific error codes.
|
|
3
|
+
* Follows DextoAgent pattern for typed error identification.
|
|
4
|
+
*/
|
|
5
|
+
export declare enum AgentErrorCode {
|
|
6
|
+
ALREADY_STARTED = "agent_already_started",
|
|
7
|
+
EXECUTION_FAILED = "agent_execution_failed",
|
|
8
|
+
INITIALIZATION_FAILED = "agent_initialization_failed",
|
|
9
|
+
INVALID_CONFIG = "agent_invalid_config",
|
|
10
|
+
MISSING_REQUIRED_SERVICE = "agent_missing_required_service",
|
|
11
|
+
NOT_STARTED = "agent_not_started",
|
|
12
|
+
SERVICE_NOT_INITIALIZED = "agent_service_not_initialized",
|
|
13
|
+
SESSION_LIMIT_EXCEEDED = "agent_session_limit_exceeded",
|
|
14
|
+
SESSION_NOT_FOUND = "agent_session_not_found",
|
|
15
|
+
STOPPED = "agent_stopped"
|
|
16
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-specific error codes.
|
|
3
|
+
* Follows DextoAgent pattern for typed error identification.
|
|
4
|
+
*/
|
|
5
|
+
export var AgentErrorCode;
|
|
6
|
+
(function (AgentErrorCode) {
|
|
7
|
+
AgentErrorCode["ALREADY_STARTED"] = "agent_already_started";
|
|
8
|
+
AgentErrorCode["EXECUTION_FAILED"] = "agent_execution_failed";
|
|
9
|
+
AgentErrorCode["INITIALIZATION_FAILED"] = "agent_initialization_failed";
|
|
10
|
+
AgentErrorCode["INVALID_CONFIG"] = "agent_invalid_config";
|
|
11
|
+
AgentErrorCode["MISSING_REQUIRED_SERVICE"] = "agent_missing_required_service";
|
|
12
|
+
AgentErrorCode["NOT_STARTED"] = "agent_not_started";
|
|
13
|
+
AgentErrorCode["SERVICE_NOT_INITIALIZED"] = "agent_service_not_initialized";
|
|
14
|
+
AgentErrorCode["SESSION_LIMIT_EXCEEDED"] = "agent_session_limit_exceeded";
|
|
15
|
+
AgentErrorCode["SESSION_NOT_FOUND"] = "agent_session_not_found";
|
|
16
|
+
AgentErrorCode["STOPPED"] = "agent_stopped";
|
|
17
|
+
})(AgentErrorCode || (AgentErrorCode = {}));
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ExitCode, ExitError } from '../exit-codes.js';
|
|
2
|
+
import { AgentErrorCode } from './agent-error-codes.js';
|
|
3
|
+
/**
|
|
4
|
+
* Agent-specific error with typed error codes.
|
|
5
|
+
* Extends ExitError for oclif CLI integration.
|
|
6
|
+
*
|
|
7
|
+
* Follows DextoAgent pattern with static factory methods
|
|
8
|
+
* for creating well-typed errors.
|
|
9
|
+
*/
|
|
10
|
+
export declare class AgentError extends ExitError {
|
|
11
|
+
readonly agentErrorCode: AgentErrorCode;
|
|
12
|
+
readonly details?: unknown;
|
|
13
|
+
constructor(agentErrorCode: AgentErrorCode, exitCode: ExitCode, message: string, details?: unknown);
|
|
14
|
+
/**
|
|
15
|
+
* Agent is already started and cannot be started again.
|
|
16
|
+
*/
|
|
17
|
+
static alreadyStarted(): AgentError;
|
|
18
|
+
/**
|
|
19
|
+
* Agent execution failed.
|
|
20
|
+
*/
|
|
21
|
+
static executionFailed(reason: string, details?: unknown): AgentError;
|
|
22
|
+
/**
|
|
23
|
+
* Agent initialization failed.
|
|
24
|
+
*/
|
|
25
|
+
static initializationFailed(reason: string, details?: unknown): AgentError;
|
|
26
|
+
/**
|
|
27
|
+
* Invalid agent configuration.
|
|
28
|
+
*/
|
|
29
|
+
static invalidConfig(reason: string, details?: unknown): AgentError;
|
|
30
|
+
/**
|
|
31
|
+
* Required service is missing during agent start.
|
|
32
|
+
*/
|
|
33
|
+
static missingRequiredService(serviceName: string): AgentError;
|
|
34
|
+
/**
|
|
35
|
+
* Agent must be started before performing operations.
|
|
36
|
+
*/
|
|
37
|
+
static notStarted(): AgentError;
|
|
38
|
+
/**
|
|
39
|
+
* Service not initialized (internal bug).
|
|
40
|
+
*/
|
|
41
|
+
static serviceNotInitialized(serviceName: string): AgentError;
|
|
42
|
+
/**
|
|
43
|
+
* Maximum session limit exceeded.
|
|
44
|
+
*/
|
|
45
|
+
static sessionLimitExceeded(limit: number): AgentError;
|
|
46
|
+
/**
|
|
47
|
+
* Session not found.
|
|
48
|
+
*/
|
|
49
|
+
static sessionNotFound(sessionId: string): AgentError;
|
|
50
|
+
/**
|
|
51
|
+
* Agent has been stopped and cannot be used.
|
|
52
|
+
*/
|
|
53
|
+
static stopped(): AgentError;
|
|
54
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ExitCode, ExitError } from '../exit-codes.js';
|
|
2
|
+
import { AgentErrorCode } from './agent-error-codes.js';
|
|
3
|
+
/**
|
|
4
|
+
* Agent-specific error with typed error codes.
|
|
5
|
+
* Extends ExitError for oclif CLI integration.
|
|
6
|
+
*
|
|
7
|
+
* Follows DextoAgent pattern with static factory methods
|
|
8
|
+
* for creating well-typed errors.
|
|
9
|
+
*/
|
|
10
|
+
export class AgentError extends ExitError {
|
|
11
|
+
agentErrorCode;
|
|
12
|
+
details;
|
|
13
|
+
constructor(agentErrorCode, exitCode, message, details) {
|
|
14
|
+
super(exitCode, message);
|
|
15
|
+
this.name = 'AgentError';
|
|
16
|
+
this.agentErrorCode = agentErrorCode;
|
|
17
|
+
this.details = details;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Agent is already started and cannot be started again.
|
|
21
|
+
*/
|
|
22
|
+
static alreadyStarted() {
|
|
23
|
+
return new AgentError(AgentErrorCode.ALREADY_STARTED, ExitCode.RUNTIME_ERROR, 'Agent is already started. Call stop() before restarting.');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Agent execution failed.
|
|
27
|
+
*/
|
|
28
|
+
static executionFailed(reason, details) {
|
|
29
|
+
return new AgentError(AgentErrorCode.EXECUTION_FAILED, ExitCode.RUNTIME_ERROR, `Agent execution failed: ${reason}`, details);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Agent initialization failed.
|
|
33
|
+
*/
|
|
34
|
+
static initializationFailed(reason, details) {
|
|
35
|
+
return new AgentError(AgentErrorCode.INITIALIZATION_FAILED, ExitCode.RUNTIME_ERROR, `Agent initialization failed: ${reason}`, details);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Invalid agent configuration.
|
|
39
|
+
*/
|
|
40
|
+
static invalidConfig(reason, details) {
|
|
41
|
+
return new AgentError(AgentErrorCode.INVALID_CONFIG, ExitCode.CONFIG_ERROR, `Invalid agent configuration: ${reason}`, details);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Required service is missing during agent start.
|
|
45
|
+
*/
|
|
46
|
+
static missingRequiredService(serviceName) {
|
|
47
|
+
return new AgentError(AgentErrorCode.MISSING_REQUIRED_SERVICE, ExitCode.RUNTIME_ERROR, `Required service '${serviceName}' is missing during agent start.`);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Agent must be started before performing operations.
|
|
51
|
+
*/
|
|
52
|
+
static notStarted() {
|
|
53
|
+
return new AgentError(AgentErrorCode.NOT_STARTED, ExitCode.RUNTIME_ERROR, 'Agent must be started before use. Call start() first.');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Service not initialized (internal bug).
|
|
57
|
+
*/
|
|
58
|
+
static serviceNotInitialized(serviceName) {
|
|
59
|
+
return new AgentError(AgentErrorCode.SERVICE_NOT_INITIALIZED, ExitCode.RUNTIME_ERROR, `Service '${serviceName}' not initialized. This is a bug.`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Maximum session limit exceeded.
|
|
63
|
+
*/
|
|
64
|
+
static sessionLimitExceeded(limit) {
|
|
65
|
+
return new AgentError(AgentErrorCode.SESSION_LIMIT_EXCEEDED, ExitCode.RUNTIME_ERROR, `Maximum sessions (${limit}) reached. Delete unused sessions or increase limit.`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Session not found.
|
|
69
|
+
*/
|
|
70
|
+
static sessionNotFound(sessionId) {
|
|
71
|
+
return new AgentError(AgentErrorCode.SESSION_NOT_FOUND, ExitCode.VALIDATION_ERROR, `Session '${sessionId}' not found.`);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Agent has been stopped and cannot be used.
|
|
75
|
+
*/
|
|
76
|
+
static stopped() {
|
|
77
|
+
return new AgentError(AgentErrorCode.STOPPED, ExitCode.RUNTIME_ERROR, 'Agent has been stopped and cannot be used. Create a new instance or call start() again.');
|
|
78
|
+
}
|
|
79
|
+
}
|