byterover-cli 0.4.1 → 1.0.1
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
|
@@ -1,47 +1,73 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
20
|
-
import {
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
1
|
+
/**
|
|
2
|
+
* Service Initializer: Centralized Wiring for Cipher Agent Services
|
|
3
|
+
*
|
|
4
|
+
* This module is responsible for initializing and wiring together all core agent services.
|
|
5
|
+
* It provides a single entry point for constructing the service graph.
|
|
6
|
+
*
|
|
7
|
+
* Following DextoAgent pattern:
|
|
8
|
+
* - Config file is source of truth (ValidatedAgentConfig)
|
|
9
|
+
* - Centralized function (not factory class) for service creation
|
|
10
|
+
* - Explicit dependency order with numbered steps
|
|
11
|
+
* - Event bus passed in as parameter (created in agent constructor)
|
|
12
|
+
*/
|
|
13
|
+
import { dirname, join } from 'node:path';
|
|
14
|
+
import { fileURLToPath } from 'node:url';
|
|
15
|
+
import { createBlobStorage } from '../blob/blob-storage-factory.js';
|
|
16
|
+
import { SessionEventBus } from '../events/event-emitter.js';
|
|
17
|
+
import { FileSystemService } from '../file-system/file-system-service.js';
|
|
18
|
+
import { ByteRoverLlmHttpService } from '../http/internal-llm-http-service.js';
|
|
19
|
+
import { CompactionService } from '../llm/context/compaction/compaction-service.js';
|
|
20
|
+
import { ByteRoverContentGenerator, LoggingContentGenerator, RetryableContentGenerator } from '../llm/generators/index.js';
|
|
21
|
+
import { ByteRoverLLMService } from '../llm/internal-llm-service.js';
|
|
22
|
+
import { OpenRouterLLMService } from '../llm/openrouter-llm-service.js';
|
|
23
|
+
import { DEFAULT_RETRY_POLICY } from '../llm/retry/retry-policy.js';
|
|
24
|
+
import { GeminiTokenizer } from '../llm/tokenizers/gemini-tokenizer.js';
|
|
25
|
+
import { EventBasedLogger } from '../logger/event-based-logger.js';
|
|
26
|
+
import { MemoryManager } from '../memory/memory-manager.js';
|
|
27
|
+
import { ProcessService } from '../process/process-service.js';
|
|
28
|
+
import { BlobHistoryStorage } from '../storage/blob-history-storage.js';
|
|
29
|
+
import { DualFormatHistoryStorage } from '../storage/dual-format-history-storage.js';
|
|
30
|
+
import { GranularHistoryStorage } from '../storage/granular-history-storage.js';
|
|
31
|
+
import { MessageStorageService } from '../storage/message-storage-service.js';
|
|
32
|
+
import { SqliteKeyStorage } from '../storage/sqlite-key-storage.js';
|
|
33
|
+
import { ContextTreeStructureContributor } from '../system-prompt/contributors/context-tree-structure-contributor.js';
|
|
34
|
+
import { SystemPromptManager } from '../system-prompt/system-prompt-manager.js';
|
|
35
|
+
import { CoreToolScheduler } from '../tools/core-tool-scheduler.js';
|
|
36
|
+
import { DEFAULT_POLICY_RULES } from '../tools/default-policy-rules.js';
|
|
37
|
+
import { PolicyEngine } from '../tools/policy-engine.js';
|
|
38
|
+
import { ToolDescriptionLoader } from '../tools/tool-description-loader.js';
|
|
39
|
+
import { ToolManager } from '../tools/tool-manager.js';
|
|
40
|
+
import { ToolProvider } from '../tools/tool-provider.js';
|
|
24
41
|
/**
|
|
25
42
|
* Creates shared services for CipherAgent.
|
|
26
43
|
* These services are singletons shared across all sessions.
|
|
27
44
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
45
|
+
* Initialization order follows DextoAgent pattern (explicit numbered steps):
|
|
46
|
+
* 1. Logger (uses provided event bus)
|
|
47
|
+
* 2. File system service (no dependencies)
|
|
48
|
+
* 3. Process service (no dependencies)
|
|
49
|
+
* 4. Blob storage (no dependencies)
|
|
50
|
+
* 5. Memory system (depends on BlobStorage, Logger)
|
|
51
|
+
* 6. System prompt manager (no dependencies)
|
|
52
|
+
* 7. Tool provider (depends on FileSystemService, ProcessService, MemoryManager)
|
|
53
|
+
* 8. Policy engine (no dependencies)
|
|
54
|
+
* 9. Tool scheduler (depends on ToolProvider, PolicyEngine)
|
|
55
|
+
* 10. Tool manager (depends on ToolProvider, ToolScheduler)
|
|
56
|
+
* 11. History storage (depends on BlobStorage)
|
|
57
|
+
* 12. Return all services
|
|
30
58
|
*
|
|
31
|
-
* @param
|
|
59
|
+
* @param config - Validated agent configuration (Zod-validated)
|
|
60
|
+
* @param agentEventBus - Pre-created event bus from agent constructor (DextoAgent pattern)
|
|
32
61
|
* @returns Initialized shared services
|
|
33
62
|
*/
|
|
34
|
-
export async function createCipherAgentServices(
|
|
35
|
-
// 1.
|
|
36
|
-
const agentEventBus = new AgentEventBus();
|
|
37
|
-
// 2. Logger (depends on event bus)
|
|
63
|
+
export async function createCipherAgentServices(config, agentEventBus) {
|
|
64
|
+
// 1. Logger (uses provided event bus - DextoAgent pattern)
|
|
38
65
|
const logger = new EventBasedLogger(agentEventBus, 'CipherAgent');
|
|
39
|
-
//
|
|
40
|
-
const fileSystemService = new FileSystemService(
|
|
66
|
+
// 2. File system service (no dependencies)
|
|
67
|
+
const fileSystemService = new FileSystemService(config.fileSystem);
|
|
41
68
|
await fileSystemService.initialize();
|
|
42
|
-
//
|
|
43
|
-
|
|
44
|
-
const workingDirectory = llmConfig.fileSystemConfig?.workingDirectory ?? process.cwd();
|
|
69
|
+
// 3. Process service (no dependencies)
|
|
70
|
+
const workingDirectory = config.fileSystem?.workingDirectory ?? process.cwd();
|
|
45
71
|
const processService = new ProcessService({
|
|
46
72
|
allowedCommands: [],
|
|
47
73
|
blockedCommands: [],
|
|
@@ -53,27 +79,50 @@ export async function createCipherAgentServices(llmConfig) {
|
|
|
53
79
|
workingDirectory,
|
|
54
80
|
});
|
|
55
81
|
await processService.initialize();
|
|
56
|
-
//
|
|
57
|
-
|
|
58
|
-
const blobStorage = createBlobStorage(llmConfig.blobStorageConfig ?? {
|
|
82
|
+
// 4. Blob storage (no dependencies)
|
|
83
|
+
const blobStorage = createBlobStorage(config.blobStorage ?? {
|
|
59
84
|
maxBlobSize: 100 * 1024 * 1024, // 100MB
|
|
60
85
|
maxTotalSize: 1024 * 1024 * 1024, // 1GB
|
|
61
86
|
storageDir: join(workingDirectory, '.brv', 'blobs'),
|
|
62
87
|
});
|
|
63
88
|
await blobStorage.initialize();
|
|
64
|
-
//
|
|
89
|
+
// 5. Memory system (depends on BlobStorage, Logger)
|
|
65
90
|
const memoryLogger = logger.withSource('MemoryManager');
|
|
66
91
|
const memoryManager = new MemoryManager(blobStorage, memoryLogger);
|
|
67
|
-
//
|
|
68
|
-
//
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
92
|
+
// 6. System prompt manager - SHARED across sessions
|
|
93
|
+
// Calculate path to prompts directory relative to this file's location
|
|
94
|
+
// This file is at dist/infra/cipher/agent/service-initializer.js
|
|
95
|
+
// Resources are at dist/resources/prompts/
|
|
96
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
97
|
+
const promptsBasePath = join(currentDir, '../../../resources/prompts');
|
|
98
|
+
const systemPromptManager = new SystemPromptManager({
|
|
99
|
+
basePath: promptsBasePath,
|
|
100
|
+
validateConfig: true,
|
|
101
|
+
});
|
|
102
|
+
// Register default contributors
|
|
103
|
+
systemPromptManager.registerContributors([
|
|
104
|
+
{ enabled: true, filepath: 'system-prompt.yml', id: 'base', priority: 0, type: 'file' },
|
|
105
|
+
{ enabled: true, id: 'env', priority: 10, type: 'environment' },
|
|
106
|
+
{ enabled: true, id: 'memories', priority: 20, type: 'memory' },
|
|
107
|
+
{ enabled: true, id: 'datetime', priority: 30, type: 'dateTime' },
|
|
108
|
+
]);
|
|
109
|
+
// Register context tree structure contributor for query/curate commands
|
|
110
|
+
// This injects the .brv/context-tree structure into the system prompt,
|
|
111
|
+
// giving agents immediate awareness of available curated knowledge.
|
|
112
|
+
// Priority 15 ensures it appears after environment but before memories.
|
|
113
|
+
const contextTreeContributor = new ContextTreeStructureContributor('contextTree', 15, {
|
|
114
|
+
workingDirectory,
|
|
115
|
+
});
|
|
116
|
+
systemPromptManager.registerContributor(contextTreeContributor);
|
|
117
|
+
// 7. Tool provider (depends on FileSystemService, ProcessService, MemoryManager, SystemPromptManager)
|
|
118
|
+
const verbose = config.llm.verbose ?? false;
|
|
119
|
+
const descriptionLoader = new ToolDescriptionLoader();
|
|
72
120
|
const toolProvider = new ToolProvider({
|
|
73
121
|
fileSystemService,
|
|
122
|
+
getToolProvider: () => toolProvider,
|
|
74
123
|
memoryManager,
|
|
75
124
|
processService,
|
|
76
|
-
},
|
|
125
|
+
}, systemPromptManager, descriptionLoader);
|
|
77
126
|
await toolProvider.initialize();
|
|
78
127
|
// 8. Policy engine with default rules for autonomous execution
|
|
79
128
|
const policyEngine = new PolicyEngine({ defaultDecision: 'ALLOW' });
|
|
@@ -86,42 +135,54 @@ export async function createCipherAgentServices(llmConfig) {
|
|
|
86
135
|
const toolManager = new ToolManager(toolProvider, toolScheduler);
|
|
87
136
|
await toolManager.initialize();
|
|
88
137
|
// 11. History storage (depends on BlobStorage) - SHARED across sessions
|
|
89
|
-
// Use DualFormatHistoryStorage when granular storage is enabled
|
|
90
138
|
let historyStorage;
|
|
91
|
-
|
|
139
|
+
let compactionService;
|
|
140
|
+
let messageStorageService;
|
|
141
|
+
if (config.useGranularStorage) {
|
|
92
142
|
// Create granular storage infrastructure
|
|
93
143
|
const keyStorage = new SqliteKeyStorage({
|
|
94
144
|
storageDir: join(workingDirectory, '.brv'),
|
|
95
145
|
});
|
|
96
146
|
await keyStorage.initialize();
|
|
97
147
|
const messageStorage = new MessageStorageService(keyStorage);
|
|
148
|
+
messageStorageService = messageStorage;
|
|
98
149
|
const granularStorage = new GranularHistoryStorage(messageStorage);
|
|
99
150
|
const blobHistoryStorage = new BlobHistoryStorage(blobStorage);
|
|
100
151
|
// DualFormatHistoryStorage routes between formats:
|
|
101
152
|
// - New sessions → GranularHistoryStorage
|
|
102
153
|
// - Existing sessions → BlobHistoryStorage (no migration)
|
|
103
154
|
historyStorage = new DualFormatHistoryStorage(blobHistoryStorage, granularStorage);
|
|
155
|
+
// Create CompactionService for context overflow management
|
|
156
|
+
const tokenizer = new GeminiTokenizer(config.model ?? 'gemini-2.5-pro');
|
|
157
|
+
compactionService = new CompactionService(messageStorage, tokenizer, {
|
|
158
|
+
overflowThreshold: 0.85, // 85% triggers compaction check
|
|
159
|
+
protectedTurns: 2, // Protect first 2 user turns from pruning
|
|
160
|
+
pruneKeepTokens: 40_000, // Keep 40k tokens in tool outputs
|
|
161
|
+
pruneMinimumTokens: 20_000, // Only prune if 20k+ tokens can be saved
|
|
162
|
+
});
|
|
104
163
|
logger.info('Granular history storage enabled for new sessions');
|
|
105
164
|
}
|
|
106
165
|
else {
|
|
107
166
|
// Default: use blob storage for all sessions
|
|
108
167
|
historyStorage = new BlobHistoryStorage(blobStorage);
|
|
109
168
|
}
|
|
110
|
-
// Log successful initialization
|
|
169
|
+
// 12. Log successful initialization
|
|
111
170
|
logger.info('CipherAgent services initialized successfully', {
|
|
112
|
-
model:
|
|
113
|
-
verbose:
|
|
171
|
+
model: config.model,
|
|
172
|
+
verbose: config.llm.verbose,
|
|
114
173
|
workingDirectory,
|
|
115
174
|
});
|
|
116
175
|
return {
|
|
117
176
|
agentEventBus,
|
|
118
177
|
blobStorage,
|
|
178
|
+
compactionService,
|
|
119
179
|
fileSystemService,
|
|
120
180
|
historyStorage,
|
|
121
181
|
memoryManager,
|
|
182
|
+
messageStorageService,
|
|
122
183
|
policyEngine,
|
|
123
184
|
processService,
|
|
124
|
-
|
|
185
|
+
systemPromptManager,
|
|
125
186
|
toolManager,
|
|
126
187
|
toolProvider,
|
|
127
188
|
toolScheduler,
|
|
@@ -129,10 +190,6 @@ export async function createCipherAgentServices(llmConfig) {
|
|
|
129
190
|
}
|
|
130
191
|
/**
|
|
131
192
|
* Creates session-specific services for a ChatSession.
|
|
132
|
-
*
|
|
133
|
-
* Following Dexto's pattern: each session gets its own LLM service and event bus
|
|
134
|
-
* for conversation isolation, while using shared services for tools/prompts.
|
|
135
|
-
*
|
|
136
193
|
* Generator composition order (innermost to outermost):
|
|
137
194
|
* 1. Base generator (ByteRoverContentGenerator or OpenRouterContentGenerator)
|
|
138
195
|
* 2. RetryableContentGenerator - handles transient errors with backoff
|
|
@@ -142,14 +199,6 @@ export async function createCipherAgentServices(llmConfig) {
|
|
|
142
199
|
* @param sharedServices - Shared services from agent
|
|
143
200
|
* @param httpConfig - HTTP configuration
|
|
144
201
|
* @param llmConfig - LLM service configuration
|
|
145
|
-
* @param llmConfig.openRouterApiKey - Optional OpenRouter API key for OpenRouter service
|
|
146
|
-
* @param llmConfig.httpReferer - Optional HTTP Referer for OpenRouter rankings
|
|
147
|
-
* @param llmConfig.siteName - Optional site name for OpenRouter rankings
|
|
148
|
-
* @param llmConfig.maxIterations - Maximum iterations for agentic loop
|
|
149
|
-
* @param llmConfig.maxTokens - Maximum output tokens
|
|
150
|
-
* @param llmConfig.model - LLM model identifier
|
|
151
|
-
* @param llmConfig.temperature - Temperature for generation
|
|
152
|
-
* @param llmConfig.verbose - Enable verbose debug output
|
|
153
202
|
* @returns Initialized session services
|
|
154
203
|
*/
|
|
155
204
|
export function createSessionServices(sessionId, sharedServices, httpConfig, llmConfig) {
|
|
@@ -158,11 +207,10 @@ export function createSessionServices(sessionId, sharedServices, httpConfig, llm
|
|
|
158
207
|
// 2. Create session-scoped logger
|
|
159
208
|
const sessionLogger = new EventBasedLogger(sharedServices.agentEventBus, 'LLMService', sessionId);
|
|
160
209
|
// 3. Create LLM service based on configuration
|
|
161
|
-
// Priority: OpenRouter > ByteRover
|
|
210
|
+
// Priority: OpenRouter > ByteRover HTTP
|
|
162
211
|
let llmService;
|
|
163
212
|
if (llmConfig.openRouterApiKey) {
|
|
164
213
|
// Use OpenRouter service when OpenRouter API key is provided
|
|
165
|
-
// OpenRouterLLMService still uses old pattern (to be migrated later)
|
|
166
214
|
llmService = new OpenRouterLLMService(sessionId, {
|
|
167
215
|
apiKey: llmConfig.openRouterApiKey,
|
|
168
216
|
httpReferer: llmConfig.httpReferer,
|
|
@@ -176,12 +224,12 @@ export function createSessionServices(sessionId, sharedServices, httpConfig, llm
|
|
|
176
224
|
logger: sessionLogger,
|
|
177
225
|
memoryManager: sharedServices.memoryManager, // SHARED
|
|
178
226
|
sessionEventBus,
|
|
179
|
-
systemPromptManager: sharedServices.
|
|
227
|
+
systemPromptManager: sharedServices.systemPromptManager, // SHARED
|
|
180
228
|
toolManager: sharedServices.toolManager, // SHARED
|
|
181
229
|
});
|
|
182
230
|
}
|
|
183
231
|
else {
|
|
184
|
-
// Use HTTP backend service (default) with
|
|
232
|
+
// Use HTTP backend service (default) with generator pattern
|
|
185
233
|
// Step 1: Create HTTP service
|
|
186
234
|
const httpService = new ByteRoverLlmHttpService({
|
|
187
235
|
accessToken: httpConfig.accessToken,
|
|
@@ -219,11 +267,12 @@ export function createSessionServices(sessionId, sharedServices, httpConfig, llm
|
|
|
219
267
|
temperature: llmConfig.temperature ?? 0.7,
|
|
220
268
|
verbose: llmConfig.verbose ?? false,
|
|
221
269
|
}, {
|
|
270
|
+
compactionService: sharedServices.compactionService, // SHARED - for context overflow management
|
|
222
271
|
historyStorage: sharedServices.historyStorage, // SHARED
|
|
223
272
|
logger: sessionLogger,
|
|
224
273
|
memoryManager: sharedServices.memoryManager, // SHARED
|
|
225
|
-
promptFactory: sharedServices.promptFactory, // SHARED
|
|
226
274
|
sessionEventBus,
|
|
275
|
+
systemPromptManager: sharedServices.systemPromptManager, // SHARED
|
|
227
276
|
toolManager: sharedServices.toolManager, // SHARED
|
|
228
277
|
});
|
|
229
278
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { AgentExecutionState } from '../../../core/interfaces/cipher/i-cipher-agent.js';
|
|
2
|
+
import type { AgentEventBus } from '../events/event-emitter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Termination reason type for agent execution.
|
|
5
|
+
*/
|
|
6
|
+
export type TerminationReason = 'ABORTED' | 'ERROR' | 'GOAL' | 'MAX_TURNS' | 'PROTOCOL_VIOLATION' | 'TIMEOUT';
|
|
7
|
+
/**
|
|
8
|
+
* Agent execution context with enhanced state tracking.
|
|
9
|
+
*/
|
|
10
|
+
export interface AgentExecutionContext {
|
|
11
|
+
currentIteration: number;
|
|
12
|
+
durationMs?: number;
|
|
13
|
+
endTime?: Date;
|
|
14
|
+
executionState: AgentExecutionState;
|
|
15
|
+
startTime?: Date;
|
|
16
|
+
terminationReason?: TerminationReason;
|
|
17
|
+
toolCallsExecuted: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Agent event subscriber interface.
|
|
21
|
+
* Objects implementing this can be registered for event subscription.
|
|
22
|
+
* Follows DextoAgent's AgentEventSubscriber pattern.
|
|
23
|
+
*/
|
|
24
|
+
export interface AgentEventSubscriber {
|
|
25
|
+
/**
|
|
26
|
+
* Subscribe to events on the agent event bus.
|
|
27
|
+
* Called when the agent starts and after restart.
|
|
28
|
+
*/
|
|
29
|
+
subscribe(eventBus: AgentEventBus): void;
|
|
30
|
+
/**
|
|
31
|
+
* Optional cleanup method called when unsubscribing.
|
|
32
|
+
*/
|
|
33
|
+
unsubscribe?(): void;
|
|
34
|
+
}
|
|
35
|
+
export type { AgentConfig, BlobStorageConfig, FileSystemConfig, LLMConfig, LLMUpdates, SessionConfig, ValidatedAgentConfig, ValidatedBlobStorageConfig, ValidatedFileSystemConfig, ValidatedLLMConfig, ValidatedSessionConfig, } from './agent-schemas.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Blob reference resolver for lazy media evaluation.
|
|
3
|
+
*
|
|
4
|
+
* This service resolves @blob:id references in message content to actual data
|
|
5
|
+
* at format-time (when sending to LLM), enabling lazy evaluation of large media.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Lazy expansion: Blob references only resolved when needed
|
|
9
|
+
* - MIME type filtering: Exclude unsupported media types
|
|
10
|
+
* - Placeholder generation: Replace filtered media with descriptive placeholders
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
import type { IBlobStorage } from '../../../core/interfaces/cipher/i-blob-storage.js';
|
|
14
|
+
import type { MessagePart } from '../../../core/interfaces/cipher/message-types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Options for blob reference expansion.
|
|
17
|
+
*/
|
|
18
|
+
export interface BlobResolutionOptions {
|
|
19
|
+
/**
|
|
20
|
+
* MIME patterns to allow (e.g., ["image/*", "application/pdf"]).
|
|
21
|
+
* Media not matching any pattern will be replaced with placeholders.
|
|
22
|
+
* If not specified, all media types are allowed.
|
|
23
|
+
*/
|
|
24
|
+
allowedMimeTypes?: string[];
|
|
25
|
+
/**
|
|
26
|
+
* Whether to include metadata in resolved parts.
|
|
27
|
+
* Default: false
|
|
28
|
+
*/
|
|
29
|
+
includeMetadata?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result of resolving a single blob reference.
|
|
33
|
+
*/
|
|
34
|
+
export interface ResolvedBlobResult {
|
|
35
|
+
/** Error message if resolution failed */
|
|
36
|
+
error?: string;
|
|
37
|
+
/** Resolved message parts (may be multiple if embedded in text) */
|
|
38
|
+
parts: MessagePart[];
|
|
39
|
+
/** Whether resolution was successful */
|
|
40
|
+
success: boolean;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Blob reference resolver.
|
|
44
|
+
*
|
|
45
|
+
* Resolves @blob:id references to actual content at format-time.
|
|
46
|
+
*/
|
|
47
|
+
export declare class BlobReferenceResolver {
|
|
48
|
+
private readonly blobStorage;
|
|
49
|
+
constructor(blobStorage: IBlobStorage);
|
|
50
|
+
/**
|
|
51
|
+
* Expand blob references in message content.
|
|
52
|
+
*
|
|
53
|
+
* Processes an array of message parts and resolves any @blob:id references
|
|
54
|
+
* to actual content. Supports blob refs in:
|
|
55
|
+
* - TextPart.text (inline references)
|
|
56
|
+
* - ImagePart.image (blob ref instead of base64)
|
|
57
|
+
* - FilePart.data (blob ref instead of base64)
|
|
58
|
+
*
|
|
59
|
+
* @param content - Array of message parts to expand
|
|
60
|
+
* @param options - Resolution options
|
|
61
|
+
* @returns Array of message parts with blob refs resolved
|
|
62
|
+
*/
|
|
63
|
+
expandBlobReferences(content: MessagePart[], options?: BlobResolutionOptions): Promise<MessagePart[]>;
|
|
64
|
+
/**
|
|
65
|
+
* Get all blob IDs referenced in content.
|
|
66
|
+
*/
|
|
67
|
+
getBlobIds(content: MessagePart[]): string[];
|
|
68
|
+
/**
|
|
69
|
+
* Check if content contains any blob references.
|
|
70
|
+
*
|
|
71
|
+
* Useful for determining if expansion is needed before calling expandBlobReferences.
|
|
72
|
+
*/
|
|
73
|
+
hasAnyBlobReferences(content: MessagePart[]): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Prefetch blobs for a set of message parts.
|
|
76
|
+
*
|
|
77
|
+
* Useful for warming the cache before expansion.
|
|
78
|
+
*/
|
|
79
|
+
prefetchBlobs(content: MessagePart[]): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Expand blob references embedded in text.
|
|
82
|
+
*
|
|
83
|
+
* Text like "Here is the image: @blob:abc123" will be split into
|
|
84
|
+
* multiple parts: text before, image part, text after.
|
|
85
|
+
*/
|
|
86
|
+
private expandBlobsInText;
|
|
87
|
+
/**
|
|
88
|
+
* Expand a single message part.
|
|
89
|
+
*/
|
|
90
|
+
private expandPart;
|
|
91
|
+
/**
|
|
92
|
+
* Resolve a blob ID to message parts.
|
|
93
|
+
*/
|
|
94
|
+
private resolveBlobToParts;
|
|
95
|
+
/**
|
|
96
|
+
* Resolve a file part with blob reference.
|
|
97
|
+
*/
|
|
98
|
+
private resolveFileBlob;
|
|
99
|
+
/**
|
|
100
|
+
* Resolve an image part with blob reference.
|
|
101
|
+
*/
|
|
102
|
+
private resolveImageBlob;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create a BlobReferenceResolver instance.
|
|
106
|
+
*/
|
|
107
|
+
export declare function createBlobReferenceResolver(blobStorage: IBlobStorage): BlobReferenceResolver;
|