byterover-cli 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -56
- package/bin/dev.js +1 -1
- package/dist/commands/cipher-agent/run.d.ts +111 -0
- package/dist/commands/cipher-agent/run.js +493 -0
- package/dist/commands/cipher-agent/set-prompt.d.ts +14 -0
- package/dist/commands/cipher-agent/set-prompt.js +53 -0
- package/dist/commands/cipher-agent/show-prompt.d.ts +11 -0
- package/dist/commands/cipher-agent/show-prompt.js +48 -0
- package/dist/commands/clear.d.ts +6 -0
- package/dist/commands/clear.js +36 -15
- package/dist/commands/curate.d.ts +74 -0
- package/dist/commands/curate.js +396 -0
- package/dist/commands/foo.d.ts +12 -0
- package/dist/commands/foo.js +61 -0
- package/dist/commands/gen-rules.d.ts +3 -0
- package/dist/commands/gen-rules.js +39 -20
- package/dist/commands/init.d.ts +48 -3
- package/dist/commands/init.js +242 -70
- package/dist/commands/login.js +9 -4
- package/dist/commands/pull.d.ts +33 -0
- package/dist/commands/pull.js +115 -0
- package/dist/commands/push.d.ts +13 -13
- package/dist/commands/push.js +81 -101
- package/dist/commands/query.d.ts +63 -0
- package/dist/commands/query.js +349 -0
- package/dist/commands/space/list.d.ts +5 -2
- package/dist/commands/space/list.js +60 -56
- package/dist/commands/space/switch.d.ts +16 -0
- package/dist/commands/space/switch.js +102 -53
- package/dist/commands/status.d.ts +5 -2
- package/dist/commands/status.js +43 -33
- package/dist/commands/watch.d.ts +23 -0
- package/dist/commands/watch.js +171 -0
- package/dist/config/auth.config.js +14 -2
- package/dist/config/context-tree-domains.d.ts +12 -0
- package/dist/config/context-tree-domains.js +29 -0
- package/dist/config/environment.d.ts +6 -0
- package/dist/config/environment.js +9 -2
- package/dist/constants.d.ts +5 -0
- package/dist/constants.js +6 -0
- package/dist/core/domain/cipher/agent/agent-state-machine.d.ts +128 -0
- package/dist/core/domain/cipher/agent/agent-state-machine.js +183 -0
- package/dist/core/domain/cipher/agent/agent-state.d.ts +77 -0
- package/dist/core/domain/cipher/agent/agent-state.js +59 -0
- package/dist/core/domain/cipher/agent/index.d.ts +7 -0
- package/dist/core/domain/cipher/agent/index.js +7 -0
- package/dist/core/domain/cipher/agent-events/index.d.ts +8 -0
- package/dist/core/domain/cipher/agent-events/index.js +7 -0
- package/dist/core/domain/cipher/agent-events/types.d.ts +419 -0
- package/dist/core/domain/cipher/agent-events/types.js +42 -0
- package/dist/core/domain/cipher/blob/types.d.ts +108 -0
- package/dist/core/domain/cipher/errors/blob-error.d.ts +36 -0
- package/dist/core/domain/cipher/errors/blob-error.js +68 -0
- package/dist/core/domain/cipher/errors/file-system-error.d.ts +211 -0
- package/dist/core/domain/cipher/errors/file-system-error.js +291 -0
- package/dist/core/domain/cipher/errors/llm-error.d.ts +120 -0
- package/dist/core/domain/cipher/errors/llm-error.js +161 -0
- package/dist/core/domain/cipher/errors/memory-error.d.ts +35 -0
- package/dist/core/domain/cipher/errors/memory-error.js +62 -0
- package/dist/core/domain/cipher/errors/process-error-code.d.ts +97 -0
- package/dist/core/domain/cipher/errors/process-error-code.js +98 -0
- package/dist/core/domain/cipher/errors/process-error.d.ts +135 -0
- package/dist/core/domain/cipher/errors/process-error.js +173 -0
- package/dist/core/domain/cipher/errors/session-error.d.ts +56 -0
- package/dist/core/domain/cipher/errors/session-error.js +74 -0
- package/dist/core/domain/cipher/errors/tool-error.d.ts +57 -0
- package/dist/core/domain/cipher/errors/tool-error.js +81 -0
- package/dist/core/domain/cipher/file-system/types.d.ts +203 -0
- package/dist/core/domain/cipher/memory/types.d.ts +102 -0
- package/dist/core/domain/cipher/memory/types.js +4 -0
- package/dist/core/domain/cipher/parsed-interaction.d.ts +47 -0
- package/dist/core/domain/cipher/parsed-interaction.js +25 -0
- package/dist/core/domain/cipher/process/types.d.ts +286 -0
- package/dist/core/domain/cipher/session/types.d.ts +54 -0
- package/dist/core/domain/cipher/storage/history-types.d.ts +38 -0
- package/dist/core/domain/cipher/system-prompt/types.d.ts +131 -0
- package/dist/core/domain/cipher/todos/index.d.ts +4 -0
- package/dist/core/domain/cipher/todos/index.js +4 -0
- package/dist/core/domain/cipher/todos/types.d.ts +57 -0
- package/dist/core/domain/cipher/todos/types.js +5 -0
- package/dist/core/domain/cipher/tools/constants.d.ts +28 -0
- package/dist/core/domain/cipher/tools/constants.js +24 -0
- package/dist/core/domain/cipher/tools/tool-error.d.ts +183 -0
- package/dist/core/domain/cipher/tools/tool-error.js +246 -0
- package/dist/core/domain/cipher/tools/types.d.ts +145 -0
- package/dist/core/domain/entities/brv-config.d.ts +42 -6
- package/dist/core/domain/entities/brv-config.js +115 -17
- package/dist/core/domain/entities/cogit-push-context.d.ts +38 -0
- package/dist/core/domain/entities/cogit-push-context.js +91 -0
- package/dist/core/domain/entities/cogit-push-response.d.ts +20 -0
- package/dist/core/domain/entities/cogit-push-response.js +31 -0
- package/dist/core/domain/entities/cogit-snapshot-author.d.ts +24 -0
- package/dist/core/domain/entities/cogit-snapshot-author.js +39 -0
- package/dist/core/domain/entities/cogit-snapshot-file.d.ts +34 -0
- package/dist/core/domain/entities/cogit-snapshot-file.js +59 -0
- package/dist/core/domain/entities/cogit-snapshot.d.ts +31 -0
- package/dist/core/domain/entities/cogit-snapshot.js +58 -0
- package/dist/core/domain/entities/context-tree-index.d.ts +26 -0
- package/dist/core/domain/entities/context-tree-index.js +27 -0
- package/dist/core/domain/entities/context-tree-snapshot.d.ts +56 -0
- package/dist/core/domain/entities/context-tree-snapshot.js +83 -0
- package/dist/core/domain/entities/event.d.ts +1 -1
- package/dist/core/domain/entities/event.js +3 -1
- package/dist/core/domain/entities/parser.d.ts +567 -0
- package/dist/core/domain/entities/parser.js +10 -0
- package/dist/core/domain/entities/playbook.d.ts +2 -23
- package/dist/core/domain/entities/playbook.js +2 -70
- package/dist/core/domain/errors/brv-config-version-error.d.ts +16 -0
- package/dist/core/domain/errors/brv-config-version-error.js +21 -0
- package/dist/core/domain/knowledge/directory-manager.d.ts +80 -0
- package/dist/core/domain/knowledge/directory-manager.js +145 -0
- package/dist/core/domain/knowledge/markdown-writer.d.ts +18 -0
- package/dist/core/domain/knowledge/markdown-writer.js +18 -0
- package/dist/core/domain/knowledge/relation-parser.d.ts +90 -0
- package/dist/core/domain/knowledge/relation-parser.js +131 -0
- package/dist/core/interfaces/cipher/cipher-services.d.ts +71 -0
- package/dist/core/interfaces/cipher/cipher-services.js +1 -0
- package/dist/core/interfaces/cipher/i-blob-storage.d.ts +78 -0
- package/dist/core/interfaces/cipher/i-blob-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-chat-session.d.ts +62 -0
- package/dist/core/interfaces/cipher/i-chat-session.js +1 -0
- package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +88 -0
- package/dist/core/interfaces/cipher/i-cipher-agent.js +1 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-parser.d.ts +20 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-parser.js +1 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.d.ts +31 -0
- package/dist/core/interfaces/cipher/i-coding-agent-log-watcher.js +1 -0
- package/dist/core/interfaces/cipher/i-content-generator.d.ts +120 -0
- package/dist/core/interfaces/cipher/i-content-generator.js +12 -0
- package/dist/core/interfaces/cipher/i-event-emitter.d.ts +76 -0
- package/dist/core/interfaces/cipher/i-event-emitter.js +1 -0
- package/dist/core/interfaces/cipher/i-file-system.d.ts +68 -0
- package/dist/core/interfaces/cipher/i-file-system.js +1 -0
- package/dist/core/interfaces/cipher/i-history-storage.d.ts +53 -0
- package/dist/core/interfaces/cipher/i-history-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-llm-provider.d.ts +14 -0
- package/dist/core/interfaces/cipher/i-llm-provider.js +1 -0
- package/dist/core/interfaces/cipher/i-llm-service.d.ts +62 -0
- package/dist/core/interfaces/cipher/i-llm-service.js +1 -0
- package/dist/core/interfaces/cipher/i-logger.d.ts +78 -0
- package/dist/core/interfaces/cipher/i-logger.js +28 -0
- package/dist/core/interfaces/cipher/i-message-formatter.d.ts +44 -0
- package/dist/core/interfaces/cipher/i-message-formatter.js +1 -0
- package/dist/core/interfaces/cipher/i-policy-engine.d.ts +102 -0
- package/dist/core/interfaces/cipher/i-policy-engine.js +9 -0
- package/dist/core/interfaces/cipher/i-process-service.d.ts +65 -0
- package/dist/core/interfaces/cipher/i-process-service.js +1 -0
- package/dist/core/interfaces/cipher/i-system-prompt-contributor.d.ts +25 -0
- package/dist/core/interfaces/cipher/i-system-prompt-contributor.js +1 -0
- package/dist/core/interfaces/cipher/i-tokenizer.d.ts +15 -0
- package/dist/core/interfaces/cipher/i-tokenizer.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-provider.d.ts +64 -0
- package/dist/core/interfaces/cipher/i-tool-provider.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +103 -0
- package/dist/core/interfaces/cipher/i-tool-scheduler.js +11 -0
- package/dist/core/interfaces/cipher/llm-types.d.ts +46 -0
- package/dist/core/interfaces/cipher/llm-types.js +5 -0
- package/dist/core/interfaces/cipher/message-types.d.ts +118 -0
- package/dist/core/interfaces/cipher/message-types.js +5 -0
- package/dist/core/interfaces/cipher/tokenizer-types.d.ts +11 -0
- package/dist/core/interfaces/cipher/tokenizer-types.js +14 -0
- package/dist/core/interfaces/i-cogit-pull-service.d.ts +24 -0
- package/dist/core/interfaces/i-cogit-pull-service.js +1 -0
- package/dist/core/interfaces/i-cogit-push-service.d.ts +27 -0
- package/dist/core/interfaces/i-cogit-push-service.js +1 -0
- package/dist/core/interfaces/i-context-file-reader.d.ts +32 -0
- package/dist/core/interfaces/i-context-file-reader.js +1 -0
- package/dist/core/interfaces/i-context-tree-service.d.ts +21 -0
- package/dist/core/interfaces/i-context-tree-service.js +1 -0
- package/dist/core/interfaces/i-context-tree-snapshot-service.d.ts +36 -0
- package/dist/core/interfaces/i-context-tree-snapshot-service.js +1 -0
- package/dist/core/interfaces/i-context-tree-writer-service.d.ts +32 -0
- package/dist/core/interfaces/i-context-tree-writer-service.js +1 -0
- package/dist/core/interfaces/i-file-watcher-service.d.ts +41 -0
- package/dist/core/interfaces/i-file-watcher-service.js +1 -0
- package/dist/core/interfaces/parser/i-clean-parser-service.d.ts +18 -0
- package/dist/core/interfaces/parser/i-clean-parser-service.js +1 -0
- package/dist/core/interfaces/parser/i-raw-parser-service.d.ts +17 -0
- package/dist/core/interfaces/parser/i-raw-parser-service.js +1 -0
- package/dist/core/interfaces/parser/i-session-normalizer.d.ts +56 -0
- package/dist/core/interfaces/parser/i-session-normalizer.js +1 -0
- package/dist/hooks/command_not_found/handle-invalid-commands.d.ts +7 -0
- package/dist/hooks/command_not_found/handle-invalid-commands.js +32 -0
- package/dist/hooks/error/clean-errors.d.ts +7 -0
- package/dist/hooks/error/clean-errors.js +50 -0
- package/dist/hooks/init/welcome.js +72 -1
- package/dist/hooks/prerun/validate-brv-config-version.d.ts +28 -0
- package/dist/hooks/prerun/validate-brv-config-version.js +43 -0
- package/dist/infra/cipher/agent-service-factory.d.ts +86 -0
- package/dist/infra/cipher/agent-service-factory.js +212 -0
- package/dist/infra/cipher/blob/blob-storage-factory.d.ts +13 -0
- package/dist/infra/cipher/blob/blob-storage-factory.js +14 -0
- package/dist/infra/cipher/blob/index.d.ts +10 -0
- package/dist/infra/cipher/blob/index.js +12 -0
- package/dist/infra/cipher/blob/migrations.d.ts +63 -0
- package/dist/infra/cipher/blob/migrations.js +148 -0
- package/dist/infra/cipher/blob/sqlite-blob-storage.d.ts +82 -0
- package/dist/infra/cipher/blob/sqlite-blob-storage.js +307 -0
- package/dist/infra/cipher/cipher-agent-state-manager.d.ts +63 -0
- package/dist/infra/cipher/cipher-agent-state-manager.js +108 -0
- package/dist/infra/cipher/cipher-agent.d.ts +182 -0
- package/dist/infra/cipher/cipher-agent.js +317 -0
- package/dist/infra/cipher/command-parser.d.ts +23 -0
- package/dist/infra/cipher/command-parser.js +85 -0
- package/dist/infra/cipher/display/todo-display.d.ts +23 -0
- package/dist/infra/cipher/display/todo-display.js +129 -0
- package/dist/infra/cipher/events/event-emitter.d.ts +137 -0
- package/dist/infra/cipher/events/event-emitter.js +158 -0
- package/dist/infra/cipher/exit-codes.d.ts +44 -0
- package/dist/infra/cipher/exit-codes.js +58 -0
- package/dist/infra/cipher/file-system/file-system-service.d.ts +105 -0
- package/dist/infra/cipher/file-system/file-system-service.js +641 -0
- package/dist/infra/cipher/file-system/gitignore-filter.d.ts +77 -0
- package/dist/infra/cipher/file-system/gitignore-filter.js +120 -0
- package/dist/infra/cipher/file-system/glob-utils.d.ts +60 -0
- package/dist/infra/cipher/file-system/glob-utils.js +120 -0
- package/dist/infra/cipher/file-system/path-validator.d.ts +69 -0
- package/dist/infra/cipher/file-system/path-validator.js +184 -0
- package/dist/infra/cipher/grpc/internal-llm-grpc-service.d.ts +149 -0
- package/dist/infra/cipher/grpc/internal-llm-grpc-service.js +364 -0
- package/dist/infra/cipher/grpc/internal-llm-grpc.proto +94 -0
- package/dist/infra/cipher/interactive-commands.d.ts +16 -0
- package/dist/infra/cipher/interactive-commands.js +198 -0
- package/dist/infra/cipher/interactive-loop.d.ts +24 -0
- package/dist/infra/cipher/interactive-loop.js +352 -0
- package/dist/infra/cipher/llm/context/async-mutex.d.ts +59 -0
- package/dist/infra/cipher/llm/context/async-mutex.js +92 -0
- package/dist/infra/cipher/llm/context/compression/index.d.ts +6 -0
- package/dist/infra/cipher/llm/context/compression/index.js +5 -0
- package/dist/infra/cipher/llm/context/compression/middle-removal.d.ts +40 -0
- package/dist/infra/cipher/llm/context/compression/middle-removal.js +76 -0
- package/dist/infra/cipher/llm/context/compression/oldest-removal.d.ts +38 -0
- package/dist/infra/cipher/llm/context/compression/oldest-removal.js +53 -0
- package/dist/infra/cipher/llm/context/compression/types.d.ts +36 -0
- package/dist/infra/cipher/llm/context/compression/types.js +1 -0
- package/dist/infra/cipher/llm/context/context-manager.d.ts +234 -0
- package/dist/infra/cipher/llm/context/context-manager.js +419 -0
- package/dist/infra/cipher/llm/context/index.d.ts +2 -0
- package/dist/infra/cipher/llm/context/index.js +2 -0
- package/dist/infra/cipher/llm/context/loop-detector.d.ts +125 -0
- package/dist/infra/cipher/llm/context/loop-detector.js +194 -0
- package/dist/infra/cipher/llm/context/utils.d.ts +17 -0
- package/dist/infra/cipher/llm/context/utils.js +89 -0
- package/dist/infra/cipher/llm/formatters/claude-formatter.d.ts +54 -0
- package/dist/infra/cipher/llm/formatters/claude-formatter.js +182 -0
- package/dist/infra/cipher/llm/formatters/gemini-formatter.d.ts +69 -0
- package/dist/infra/cipher/llm/formatters/gemini-formatter.js +253 -0
- package/dist/infra/cipher/llm/formatters/openrouter-formatter.d.ts +47 -0
- package/dist/infra/cipher/llm/formatters/openrouter-formatter.js +238 -0
- package/dist/infra/cipher/llm/generators/byterover-content-generator.d.ts +92 -0
- package/dist/infra/cipher/llm/generators/byterover-content-generator.js +211 -0
- package/dist/infra/cipher/llm/generators/index.d.ts +13 -0
- package/dist/infra/cipher/llm/generators/index.js +13 -0
- package/dist/infra/cipher/llm/generators/logging-content-generator.d.ts +104 -0
- package/dist/infra/cipher/llm/generators/logging-content-generator.js +182 -0
- package/dist/infra/cipher/llm/generators/openrouter-content-generator.d.ts +93 -0
- package/dist/infra/cipher/llm/generators/openrouter-content-generator.js +254 -0
- package/dist/infra/cipher/llm/generators/retryable-content-generator.d.ts +90 -0
- package/dist/infra/cipher/llm/generators/retryable-content-generator.js +157 -0
- package/dist/infra/cipher/llm/index.d.ts +9 -0
- package/dist/infra/cipher/llm/index.js +13 -0
- package/dist/infra/cipher/llm/internal-llm-service.d.ts +308 -0
- package/dist/infra/cipher/llm/internal-llm-service.js +724 -0
- package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +183 -0
- package/dist/infra/cipher/llm/openrouter-llm-service.js +386 -0
- package/dist/infra/cipher/llm/response-validator.d.ts +89 -0
- package/dist/infra/cipher/llm/response-validator.js +157 -0
- package/dist/infra/cipher/llm/retry/index.d.ts +10 -0
- package/dist/infra/cipher/llm/retry/index.js +10 -0
- package/dist/infra/cipher/llm/retry/retry-policy.d.ts +74 -0
- package/dist/infra/cipher/llm/retry/retry-policy.js +146 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.d.ts +113 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.js +247 -0
- package/dist/infra/cipher/llm/thought-parser.d.ts +145 -0
- package/dist/infra/cipher/llm/thought-parser.js +190 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +47 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +55 -0
- package/dist/infra/cipher/llm/tokenizers/default-tokenizer.d.ts +31 -0
- package/dist/infra/cipher/llm/tokenizers/default-tokenizer.js +38 -0
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +37 -0
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +45 -0
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +29 -0
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +37 -0
- package/dist/infra/cipher/llm/tool-output-processor.d.ts +117 -0
- package/dist/infra/cipher/llm/tool-output-processor.js +153 -0
- package/dist/infra/cipher/logger/console-logger.d.ts +42 -0
- package/dist/infra/cipher/logger/console-logger.js +63 -0
- package/dist/infra/cipher/logger/event-based-logger.d.ts +54 -0
- package/dist/infra/cipher/logger/event-based-logger.js +92 -0
- package/dist/infra/cipher/memory/index.d.ts +6 -0
- package/dist/infra/cipher/memory/index.js +7 -0
- package/dist/infra/cipher/memory/memory-manager.d.ts +136 -0
- package/dist/infra/cipher/memory/memory-manager.js +523 -0
- package/dist/infra/cipher/parsers/coding-agent-log-parser.d.ts +24 -0
- package/dist/infra/cipher/parsers/coding-agent-log-parser.js +51 -0
- package/dist/infra/cipher/process/command-validator.d.ts +59 -0
- package/dist/infra/cipher/process/command-validator.js +266 -0
- package/dist/infra/cipher/process/index.d.ts +8 -0
- package/dist/infra/cipher/process/index.js +8 -0
- package/dist/infra/cipher/process/process-service.d.ts +95 -0
- package/dist/infra/cipher/process/process-service.js +439 -0
- package/dist/infra/cipher/session/chat-session.d.ts +80 -0
- package/dist/infra/cipher/session/chat-session.js +165 -0
- package/dist/infra/cipher/session/index.d.ts +6 -0
- package/dist/infra/cipher/session/index.js +5 -0
- package/dist/infra/cipher/session/session-event-forwarder.d.ts +37 -0
- package/dist/infra/cipher/session/session-event-forwarder.js +83 -0
- package/dist/infra/cipher/session/session-manager.d.ts +109 -0
- package/dist/infra/cipher/session/session-manager.js +172 -0
- package/dist/infra/cipher/storage/blob-history-storage.d.ts +76 -0
- package/dist/infra/cipher/storage/blob-history-storage.js +178 -0
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +105 -0
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +290 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.d.ts +99 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.js +161 -0
- package/dist/infra/cipher/tools/default-policy-rules.d.ts +26 -0
- package/dist/infra/cipher/tools/default-policy-rules.js +125 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +93 -0
- package/dist/infra/cipher/tools/implementations/bash-output-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/bash-output-tool.js +47 -0
- package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.d.ts +11 -0
- package/dist/infra/cipher/tools/implementations/create-knowledge-topic-tool.js +142 -0
- package/dist/infra/cipher/tools/implementations/delete-memory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/delete-memory-tool.js +37 -0
- package/dist/infra/cipher/tools/implementations/detect-domains-tool.d.ts +7 -0
- package/dist/infra/cipher/tools/implementations/detect-domains-tool.js +73 -0
- package/dist/infra/cipher/tools/implementations/edit-file-tool.d.ts +13 -0
- package/dist/infra/cipher/tools/implementations/edit-file-tool.js +50 -0
- package/dist/infra/cipher/tools/implementations/edit-memory-tool.d.ts +13 -0
- package/dist/infra/cipher/tools/implementations/edit-memory-tool.js +53 -0
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +7 -0
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +421 -0
- package/dist/infra/cipher/tools/implementations/glob-files-tool.d.ts +18 -0
- package/dist/infra/cipher/tools/implementations/glob-files-tool.js +70 -0
- package/dist/infra/cipher/tools/implementations/grep-content-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/grep-content-tool.js +77 -0
- package/dist/infra/cipher/tools/implementations/kill-process-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/kill-process-tool.js +55 -0
- package/dist/infra/cipher/tools/implementations/list-memories-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/list-memories-tool.js +63 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.js +54 -0
- package/dist/infra/cipher/tools/implementations/read-memory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/read-memory-tool.js +39 -0
- package/dist/infra/cipher/tools/implementations/search-history-tool.d.ts +10 -0
- package/dist/infra/cipher/tools/implementations/search-history-tool.js +36 -0
- package/dist/infra/cipher/tools/implementations/write-file-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/write-file-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/write-memory-tool.d.ts +13 -0
- package/dist/infra/cipher/tools/implementations/write-memory-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +10 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.js +165 -0
- package/dist/infra/cipher/tools/index.d.ts +18 -0
- package/dist/infra/cipher/tools/index.js +19 -0
- package/dist/infra/cipher/tools/policy-engine.d.ts +80 -0
- package/dist/infra/cipher/tools/policy-engine.js +110 -0
- package/dist/infra/cipher/tools/tool-invocation-queue.d.ts +191 -0
- package/dist/infra/cipher/tools/tool-invocation-queue.js +254 -0
- package/dist/infra/cipher/tools/tool-invocation.d.ts +216 -0
- package/dist/infra/cipher/tools/tool-invocation.js +294 -0
- package/dist/infra/cipher/tools/tool-manager.d.ts +135 -0
- package/dist/infra/cipher/tools/tool-manager.js +209 -0
- package/dist/infra/cipher/tools/tool-markers.d.ts +48 -0
- package/dist/infra/cipher/tools/tool-markers.js +49 -0
- package/dist/infra/cipher/tools/tool-provider.d.ts +77 -0
- package/dist/infra/cipher/tools/tool-provider.js +196 -0
- package/dist/infra/cipher/tools/tool-registry.d.ts +52 -0
- package/dist/infra/cipher/tools/tool-registry.js +144 -0
- package/dist/infra/cipher/tools/utils/schema-converter.d.ts +10 -0
- package/dist/infra/cipher/tools/utils/schema-converter.js +29 -0
- package/dist/infra/cipher/validation/workspace-validator.d.ts +19 -0
- package/dist/infra/cipher/validation/workspace-validator.js +37 -0
- package/dist/infra/cipher/watcher/coding-agent-log-watcher.d.ts +14 -0
- package/dist/infra/cipher/watcher/coding-agent-log-watcher.js +55 -0
- package/dist/infra/cogit/context-tree-to-push-context-mapper.d.ts +21 -0
- package/dist/infra/cogit/context-tree-to-push-context-mapper.js +32 -0
- package/dist/infra/cogit/http-cogit-pull-service.d.ts +15 -0
- package/dist/infra/cogit/http-cogit-pull-service.js +30 -0
- package/dist/infra/cogit/http-cogit-push-service.d.ts +17 -0
- package/dist/infra/cogit/http-cogit-push-service.js +104 -0
- package/dist/infra/config/file-config-store.js +9 -3
- package/dist/infra/context-tree/file-context-file-reader.d.ts +14 -0
- package/dist/infra/context-tree/file-context-file-reader.js +46 -0
- package/dist/infra/context-tree/file-context-tree-service.d.ts +14 -0
- package/dist/infra/context-tree/file-context-tree-service.js +46 -0
- package/dist/infra/context-tree/file-context-tree-snapshot-service.d.ts +34 -0
- package/dist/infra/context-tree/file-context-tree-snapshot-service.js +117 -0
- package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +22 -0
- package/dist/infra/context-tree/file-context-tree-writer-service.js +61 -0
- package/dist/infra/memory/http-memory-retrieval-service.js +2 -1
- package/dist/infra/memory/http-memory-storage-service.js +4 -3
- package/dist/infra/parsers/clean/clean-claude-service.d.ts +111 -0
- package/dist/infra/parsers/clean/clean-claude-service.js +271 -0
- package/dist/infra/parsers/clean/clean-codex-service.d.ts +231 -0
- package/dist/infra/parsers/clean/clean-codex-service.js +534 -0
- package/dist/infra/parsers/clean/clean-copilot-service.d.ts +255 -0
- package/dist/infra/parsers/clean/clean-copilot-service.js +729 -0
- package/dist/infra/parsers/clean/clean-cursor-service.d.ts +161 -0
- package/dist/infra/parsers/clean/clean-cursor-service.js +432 -0
- package/dist/infra/parsers/clean/clean-parser-service-factory.d.ts +54 -0
- package/dist/infra/parsers/clean/clean-parser-service-factory.js +80 -0
- package/dist/infra/parsers/clean/shared.d.ts +84 -0
- package/dist/infra/parsers/clean/shared.js +273 -0
- package/dist/infra/parsers/raw/raw-claude-service.d.ts +195 -0
- package/dist/infra/parsers/raw/raw-claude-service.js +548 -0
- package/dist/infra/parsers/raw/raw-codex-service.d.ts +313 -0
- package/dist/infra/parsers/raw/raw-codex-service.js +782 -0
- package/dist/infra/parsers/raw/raw-copilot-service.d.ts +196 -0
- package/dist/infra/parsers/raw/raw-copilot-service.js +558 -0
- package/dist/infra/parsers/raw/raw-cursor-service.d.ts +316 -0
- package/dist/infra/parsers/raw/raw-cursor-service.js +818 -0
- package/dist/infra/parsers/raw/raw-parser-service-factory.d.ts +54 -0
- package/dist/infra/parsers/raw/raw-parser-service-factory.js +81 -0
- package/dist/infra/space/http-space-service.js +2 -1
- package/dist/infra/team/http-team-service.js +2 -1
- package/dist/infra/user/http-user-service.js +2 -1
- package/dist/infra/watcher/file-watcher-service.d.ts +10 -0
- package/dist/infra/watcher/file-watcher-service.js +81 -0
- package/dist/infra/workspace/workspace-detector-service.d.ts +60 -0
- package/dist/infra/workspace/workspace-detector-service.js +165 -0
- package/dist/resources/prompts/curate-context-tree-curation.yml +48 -0
- package/dist/resources/prompts/modes/autonomous.yml +9 -0
- package/dist/resources/prompts/query-context-tree-retrieval.yml +49 -0
- package/dist/resources/prompts/reflection.yml +27 -0
- package/dist/resources/prompts/system-prompt.yml +82 -0
- package/dist/resources/prompts/tool-outputs.yml +30 -0
- package/dist/templates/README.md +6 -7
- package/dist/templates/sections/command-reference.md +40 -111
- package/dist/templates/sections/workflow.md +3 -30
- package/dist/utils/emoji-helpers.d.ts +38 -0
- package/dist/utils/emoji-helpers.js +42 -0
- package/dist/utils/error-handler.d.ts +51 -0
- package/dist/utils/error-handler.js +169 -0
- package/dist/utils/error-helpers.d.ts +30 -0
- package/dist/utils/error-helpers.js +47 -0
- package/dist/utils/file-helpers.d.ts +15 -0
- package/dist/utils/file-helpers.js +44 -0
- package/dist/utils/oclif-error-helpers.d.ts +40 -0
- package/dist/utils/oclif-error-helpers.js +46 -0
- package/dist/utils/tool-display-formatter.d.ts +53 -0
- package/dist/utils/tool-display-formatter.js +257 -0
- package/oclif.manifest.json +381 -141
- package/package.json +27 -6
- package/dist/commands/add.d.ts +0 -49
- package/dist/commands/add.js +0 -192
- package/dist/commands/complete.d.ts +0 -108
- package/dist/commands/complete.js +0 -340
- package/dist/commands/retrieve.d.ts +0 -26
- package/dist/commands/retrieve.js +0 -101
- package/dist/core/domain/entities/curator-output.d.ts +0 -14
- package/dist/core/domain/entities/curator-output.js +0 -23
- package/dist/core/domain/entities/delta-batch.d.ts +0 -30
- package/dist/core/domain/entities/delta-batch.js +0 -52
- package/dist/core/domain/entities/delta-operation.d.ts +0 -31
- package/dist/core/domain/entities/delta-operation.js +0 -50
- package/dist/core/domain/entities/executor-output.d.ts +0 -27
- package/dist/core/domain/entities/executor-output.js +0 -33
- package/dist/core/domain/entities/reflector-output.d.ts +0 -38
- package/dist/core/domain/entities/reflector-output.js +0 -44
- package/dist/core/interfaces/i-ace-prompt-builder.d.ts +0 -48
- package/dist/core/interfaces/i-bullet-content-store.d.ts +0 -36
- package/dist/core/interfaces/i-delta-store.d.ts +0 -15
- package/dist/core/interfaces/i-executor-output-store.d.ts +0 -14
- package/dist/core/interfaces/i-playbook-service.d.ts +0 -69
- package/dist/core/interfaces/i-playbook-store.d.ts +0 -38
- package/dist/core/interfaces/i-reflection-store.d.ts +0 -21
- package/dist/infra/ace/ace-file-utils.d.ts +0 -46
- package/dist/infra/ace/ace-file-utils.js +0 -83
- package/dist/infra/ace/ace-prompt-templates.d.ts +0 -13
- package/dist/infra/ace/ace-prompt-templates.js +0 -177
- package/dist/infra/ace/file-bullet-content-store.d.ts +0 -27
- package/dist/infra/ace/file-bullet-content-store.js +0 -89
- package/dist/infra/ace/file-delta-store.d.ts +0 -9
- package/dist/infra/ace/file-delta-store.js +0 -26
- package/dist/infra/ace/file-executor-output-store.d.ts +0 -9
- package/dist/infra/ace/file-executor-output-store.js +0 -26
- package/dist/infra/ace/file-playbook-store.d.ts +0 -29
- package/dist/infra/ace/file-playbook-store.js +0 -107
- package/dist/infra/ace/file-reflection-store.d.ts +0 -10
- package/dist/infra/ace/file-reflection-store.js +0 -55
- package/dist/infra/playbook/file-playbook-service.d.ts +0 -42
- package/dist/infra/playbook/file-playbook-service.js +0 -132
- /package/dist/core/{interfaces/i-ace-prompt-builder.js → domain/cipher/blob/types.js} +0 -0
- /package/dist/core/{interfaces/i-bullet-content-store.js → domain/cipher/file-system/types.js} +0 -0
- /package/dist/core/{interfaces/i-delta-store.js → domain/cipher/process/types.js} +0 -0
- /package/dist/core/{interfaces/i-executor-output-store.js → domain/cipher/session/types.js} +0 -0
- /package/dist/core/{interfaces/i-playbook-service.js → domain/cipher/storage/history-types.js} +0 -0
- /package/dist/core/{interfaces/i-playbook-store.js → domain/cipher/system-prompt/types.js} +0 -0
- /package/dist/core/{interfaces/i-reflection-store.js → domain/cipher/tools/types.js} +0 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manages the runtime state of the CipherAgent.
|
|
3
|
+
*
|
|
4
|
+
* Enhanced to track execution state, termination reasons, timing,
|
|
5
|
+
* and tool metrics following gemini-cli patterns. Maintains backward
|
|
6
|
+
* compatibility with legacy fields (executionHistory).
|
|
7
|
+
*/
|
|
8
|
+
export class CipherAgentStateManager {
|
|
9
|
+
currentIteration = 0;
|
|
10
|
+
durationMs;
|
|
11
|
+
endTime;
|
|
12
|
+
executionHistory = [];
|
|
13
|
+
executionState = 'idle';
|
|
14
|
+
startTime;
|
|
15
|
+
terminationReason;
|
|
16
|
+
toolCallsExecuted = 0;
|
|
17
|
+
/**
|
|
18
|
+
* Add an execution record to history (legacy method).
|
|
19
|
+
* @param record - Execution record to add
|
|
20
|
+
*/
|
|
21
|
+
addExecutionRecord(record) {
|
|
22
|
+
this.executionHistory.push(record);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Mark execution as complete with reason.
|
|
26
|
+
* @param reason - Why execution terminated
|
|
27
|
+
*/
|
|
28
|
+
complete(reason) {
|
|
29
|
+
this.executionState = 'complete';
|
|
30
|
+
this.terminationReason = reason;
|
|
31
|
+
this.endTime = new Date();
|
|
32
|
+
if (this.startTime) {
|
|
33
|
+
this.durationMs = this.endTime.getTime() - this.startTime.getTime();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Mark execution as errored.
|
|
38
|
+
* @param reason - Error termination reason
|
|
39
|
+
*/
|
|
40
|
+
fail(reason) {
|
|
41
|
+
this.executionState = 'error';
|
|
42
|
+
this.terminationReason = reason;
|
|
43
|
+
this.endTime = new Date();
|
|
44
|
+
if (this.startTime) {
|
|
45
|
+
this.durationMs = this.endTime.getTime() - this.startTime.getTime();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get the current state.
|
|
50
|
+
* @returns Current agent state with all enhanced fields
|
|
51
|
+
*/
|
|
52
|
+
getState() {
|
|
53
|
+
return {
|
|
54
|
+
currentIteration: this.currentIteration,
|
|
55
|
+
durationMs: this.durationMs,
|
|
56
|
+
endTime: this.endTime,
|
|
57
|
+
executionHistory: [...this.executionHistory],
|
|
58
|
+
executionState: this.executionState,
|
|
59
|
+
startTime: this.startTime,
|
|
60
|
+
terminationReason: this.terminationReason,
|
|
61
|
+
toolCallsExecuted: this.toolCallsExecuted,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Increment the iteration counter.
|
|
66
|
+
* @returns The new iteration count
|
|
67
|
+
*/
|
|
68
|
+
incrementIteration() {
|
|
69
|
+
this.currentIteration++;
|
|
70
|
+
return this.currentIteration;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Increment the tool calls counter.
|
|
74
|
+
* @returns The new tool calls count
|
|
75
|
+
*/
|
|
76
|
+
incrementToolCalls() {
|
|
77
|
+
this.toolCallsExecuted++;
|
|
78
|
+
return this.toolCallsExecuted;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Reset the state to initial values.
|
|
82
|
+
*/
|
|
83
|
+
reset() {
|
|
84
|
+
this.currentIteration = 0;
|
|
85
|
+
this.durationMs = undefined;
|
|
86
|
+
this.endTime = undefined;
|
|
87
|
+
this.executionHistory = [];
|
|
88
|
+
this.executionState = 'idle';
|
|
89
|
+
this.startTime = undefined;
|
|
90
|
+
this.terminationReason = undefined;
|
|
91
|
+
this.toolCallsExecuted = 0;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Set the current execution state.
|
|
95
|
+
* @param state - New execution state
|
|
96
|
+
*/
|
|
97
|
+
setExecutionState(state) {
|
|
98
|
+
this.executionState = state;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Start execution tracking.
|
|
102
|
+
* Sets startTime and transitions to executing state.
|
|
103
|
+
*/
|
|
104
|
+
startExecution() {
|
|
105
|
+
this.startTime = new Date();
|
|
106
|
+
this.executionState = 'executing';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import type { BrvConfig } from '../../core/domain/entities/brv-config.js';
|
|
2
|
+
import type { IChatSession } from '../../core/interfaces/cipher/i-chat-session.js';
|
|
3
|
+
import type { AgentState, ExecutionContext, ICipherAgent } from '../../core/interfaces/cipher/i-cipher-agent.js';
|
|
4
|
+
import type { IHistoryStorage } from '../../core/interfaces/cipher/i-history-storage.js';
|
|
5
|
+
import type { CipherLLMConfig } from './agent-service-factory.js';
|
|
6
|
+
import type { AgentEventBus } from './events/event-emitter.js';
|
|
7
|
+
import type { FileSystemService } from './file-system/file-system-service.js';
|
|
8
|
+
import type { MemoryManager } from './memory/memory-manager.js';
|
|
9
|
+
import type { ProcessService } from './process/process-service.js';
|
|
10
|
+
import type { SimplePromptFactory } from './system-prompt/simple-prompt-factory.js';
|
|
11
|
+
import type { ToolManager } from './tools/tool-manager.js';
|
|
12
|
+
import type { ToolProvider } from './tools/tool-provider.js';
|
|
13
|
+
/**
|
|
14
|
+
* CipherAgent - Main agent implementation
|
|
15
|
+
*
|
|
16
|
+
* Following Dexto's pattern: CipherAgent orchestrates sessions and delegates
|
|
17
|
+
* execution to ChatSession instances. Each session maintains isolated conversation
|
|
18
|
+
* context while sharing global services (tools, prompts, file system, etc.).
|
|
19
|
+
*
|
|
20
|
+
* Architecture:
|
|
21
|
+
* - Agent creates and owns shared services (ToolManager, SystemPromptManager, etc.)
|
|
22
|
+
* - SessionManager creates session-specific services (LLM, EventBus)
|
|
23
|
+
* - Agent delegates execution to sessions via session.run()
|
|
24
|
+
*
|
|
25
|
+
* Follows two-phase initialization:
|
|
26
|
+
* 1. Constructor: validates and stores config
|
|
27
|
+
* 2. start(): asynchronously creates all services and SessionManager
|
|
28
|
+
*
|
|
29
|
+
* Backward compatible:
|
|
30
|
+
* - execute(input) uses default session automatically
|
|
31
|
+
* - New: execute(input, sessionId) for multi-session support
|
|
32
|
+
*/
|
|
33
|
+
export declare class CipherAgent implements ICipherAgent {
|
|
34
|
+
readonly agentEventBus?: AgentEventBus;
|
|
35
|
+
readonly fileSystemService?: FileSystemService;
|
|
36
|
+
readonly historyStorage?: IHistoryStorage;
|
|
37
|
+
readonly memoryManager?: MemoryManager;
|
|
38
|
+
readonly processService?: ProcessService;
|
|
39
|
+
readonly promptFactory?: SimplePromptFactory;
|
|
40
|
+
readonly toolManager?: ToolManager;
|
|
41
|
+
readonly toolProvider?: ToolProvider;
|
|
42
|
+
private readonly _brvConfig?;
|
|
43
|
+
private _isStarted;
|
|
44
|
+
private readonly currentDefaultSessionId;
|
|
45
|
+
private defaultSession;
|
|
46
|
+
private readonly llmConfig;
|
|
47
|
+
private sessionManager?;
|
|
48
|
+
private readonly stateManager;
|
|
49
|
+
/**
|
|
50
|
+
* Creates a new CipherAgent instance
|
|
51
|
+
* Does NOT initialize services - call start() for async initialization
|
|
52
|
+
*
|
|
53
|
+
* @param llmConfig - LLM configuration (API key, model settings)
|
|
54
|
+
* @param brvConfig - Optional ByteRover config (for custom system prompt)
|
|
55
|
+
*/
|
|
56
|
+
constructor(llmConfig: CipherLLMConfig, brvConfig?: BrvConfig);
|
|
57
|
+
/**
|
|
58
|
+
* Create a new session.
|
|
59
|
+
*
|
|
60
|
+
* @param sessionId - Optional session ID (generates UUID if not provided)
|
|
61
|
+
* @returns New or existing chat session
|
|
62
|
+
*/
|
|
63
|
+
createSession(sessionId?: string): Promise<IChatSession>;
|
|
64
|
+
/**
|
|
65
|
+
* Delete a session completely (memory + history).
|
|
66
|
+
*
|
|
67
|
+
* @param sessionId - Session ID to delete
|
|
68
|
+
* @returns True if session existed and was deleted
|
|
69
|
+
*/
|
|
70
|
+
deleteSession(sessionId: string): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Execute the agent with user input.
|
|
73
|
+
*
|
|
74
|
+
* Following Dexto's pattern: determine target session, get or create it,
|
|
75
|
+
* then delegate to session.run().
|
|
76
|
+
*
|
|
77
|
+
* @param input - User input string
|
|
78
|
+
* @param sessionId - Optional session ID (uses 'default' if not provided)
|
|
79
|
+
* @param options - Optional execution options
|
|
80
|
+
* @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
|
|
81
|
+
* @param options.executionContext - Optional execution context
|
|
82
|
+
* @returns Agent response from LLM
|
|
83
|
+
* @throws Error if agent is not started
|
|
84
|
+
*/
|
|
85
|
+
execute(input: string, sessionId?: string, options?: {
|
|
86
|
+
executionContext?: ExecutionContext;
|
|
87
|
+
mode?: 'autonomous' | 'default' | 'query';
|
|
88
|
+
}): Promise<string>;
|
|
89
|
+
/**
|
|
90
|
+
* Get an existing session or create a new one.
|
|
91
|
+
* Useful for ensuring a session exists before pre-loading history.
|
|
92
|
+
*
|
|
93
|
+
* @param sessionId - Session ID to get or create
|
|
94
|
+
* @returns Existing or newly created chat session
|
|
95
|
+
*/
|
|
96
|
+
getOrCreateSession(sessionId: string): Promise<IChatSession>;
|
|
97
|
+
/**
|
|
98
|
+
* Get a session by ID.
|
|
99
|
+
*
|
|
100
|
+
* @param sessionId - Session ID
|
|
101
|
+
* @returns Session instance or undefined if not found
|
|
102
|
+
*/
|
|
103
|
+
getSession(sessionId: string): IChatSession | undefined;
|
|
104
|
+
/**
|
|
105
|
+
* Get session metadata without loading full history.
|
|
106
|
+
*
|
|
107
|
+
* @param sessionId - Session ID
|
|
108
|
+
* @returns Session metadata or undefined if not found
|
|
109
|
+
*/
|
|
110
|
+
getSessionMetadata(sessionId: string): Promise<import('../../core/domain/cipher/storage/history-types.js').SessionMetadata | undefined>;
|
|
111
|
+
/**
|
|
112
|
+
* Get current agent state
|
|
113
|
+
*
|
|
114
|
+
* @returns Current state information
|
|
115
|
+
*/
|
|
116
|
+
getState(): AgentState;
|
|
117
|
+
/**
|
|
118
|
+
* Get the current system prompt from SimplePromptFactory
|
|
119
|
+
* Useful for debugging and inspection
|
|
120
|
+
*
|
|
121
|
+
* @returns Current system prompt (built dynamically)
|
|
122
|
+
*/
|
|
123
|
+
getSystemPrompt(): Promise<string>;
|
|
124
|
+
/**
|
|
125
|
+
* List all persisted session IDs from history storage.
|
|
126
|
+
*
|
|
127
|
+
* @returns Array of session IDs
|
|
128
|
+
*/
|
|
129
|
+
listPersistedSessions(): Promise<string[]>;
|
|
130
|
+
/**
|
|
131
|
+
* List all session IDs (in-memory only).
|
|
132
|
+
*
|
|
133
|
+
* @returns Array of session IDs
|
|
134
|
+
*/
|
|
135
|
+
listSessions(): string[];
|
|
136
|
+
/**
|
|
137
|
+
* Reset the agent to initial state.
|
|
138
|
+
* Clears execution history, resets iteration counter, and resets default session.
|
|
139
|
+
*/
|
|
140
|
+
reset(): void;
|
|
141
|
+
/**
|
|
142
|
+
* Start the agent - initializes all services asynchronously
|
|
143
|
+
* Must be called before execute()
|
|
144
|
+
*
|
|
145
|
+
* @throws Error if agent is already started
|
|
146
|
+
*/
|
|
147
|
+
start(): Promise<void>;
|
|
148
|
+
/**
|
|
149
|
+
* Ensure the agent has been started and all services are initialized
|
|
150
|
+
*
|
|
151
|
+
* @throws Error if agent is not started or services are not initialized
|
|
152
|
+
*/
|
|
153
|
+
private ensureStarted;
|
|
154
|
+
/**
|
|
155
|
+
* Get initialized agent event bus (guaranteed to be defined after start())
|
|
156
|
+
*
|
|
157
|
+
* @returns AgentEventBus instance
|
|
158
|
+
* @throws Error if not initialized
|
|
159
|
+
*/
|
|
160
|
+
private getAgentEventBus;
|
|
161
|
+
/**
|
|
162
|
+
* Get initialized history storage (guaranteed to be defined after start())
|
|
163
|
+
*
|
|
164
|
+
* @returns IHistoryStorage instance
|
|
165
|
+
* @throws Error if not initialized
|
|
166
|
+
*/
|
|
167
|
+
private getHistoryStorage;
|
|
168
|
+
/**
|
|
169
|
+
* Get initialized prompt factory (guaranteed to be defined after start())
|
|
170
|
+
*
|
|
171
|
+
* @returns SimplePromptFactory instance
|
|
172
|
+
* @throws Error if not initialized
|
|
173
|
+
*/
|
|
174
|
+
private getPromptFactory;
|
|
175
|
+
/**
|
|
176
|
+
* Get initialized session manager (guaranteed to be defined after start())
|
|
177
|
+
*
|
|
178
|
+
* @returns SessionManager instance
|
|
179
|
+
* @throws Error if not initialized
|
|
180
|
+
*/
|
|
181
|
+
private getSessionManager;
|
|
182
|
+
}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { createCipherAgentServices } from './agent-service-factory.js';
|
|
2
|
+
import { CipherAgentStateManager } from './cipher-agent-state-manager.js';
|
|
3
|
+
import { SessionManager } from './session/session-manager.js';
|
|
4
|
+
/**
|
|
5
|
+
* CipherAgent - Main agent implementation
|
|
6
|
+
*
|
|
7
|
+
* Following Dexto's pattern: CipherAgent orchestrates sessions and delegates
|
|
8
|
+
* execution to ChatSession instances. Each session maintains isolated conversation
|
|
9
|
+
* context while sharing global services (tools, prompts, file system, etc.).
|
|
10
|
+
*
|
|
11
|
+
* Architecture:
|
|
12
|
+
* - Agent creates and owns shared services (ToolManager, SystemPromptManager, etc.)
|
|
13
|
+
* - SessionManager creates session-specific services (LLM, EventBus)
|
|
14
|
+
* - Agent delegates execution to sessions via session.run()
|
|
15
|
+
*
|
|
16
|
+
* Follows two-phase initialization:
|
|
17
|
+
* 1. Constructor: validates and stores config
|
|
18
|
+
* 2. start(): asynchronously creates all services and SessionManager
|
|
19
|
+
*
|
|
20
|
+
* Backward compatible:
|
|
21
|
+
* - execute(input) uses default session automatically
|
|
22
|
+
* - New: execute(input, sessionId) for multi-session support
|
|
23
|
+
*/
|
|
24
|
+
export class CipherAgent {
|
|
25
|
+
// Shared services (exposed publicly for external access)
|
|
26
|
+
// Made optional to avoid definite assignment assertions
|
|
27
|
+
agentEventBus;
|
|
28
|
+
fileSystemService;
|
|
29
|
+
historyStorage;
|
|
30
|
+
memoryManager;
|
|
31
|
+
processService;
|
|
32
|
+
promptFactory;
|
|
33
|
+
toolManager;
|
|
34
|
+
toolProvider;
|
|
35
|
+
_brvConfig;
|
|
36
|
+
_isStarted = false;
|
|
37
|
+
currentDefaultSessionId = 'default';
|
|
38
|
+
defaultSession = null;
|
|
39
|
+
llmConfig;
|
|
40
|
+
sessionManager;
|
|
41
|
+
stateManager;
|
|
42
|
+
/**
|
|
43
|
+
* Creates a new CipherAgent instance
|
|
44
|
+
* Does NOT initialize services - call start() for async initialization
|
|
45
|
+
*
|
|
46
|
+
* @param llmConfig - LLM configuration (API key, model settings)
|
|
47
|
+
* @param brvConfig - Optional ByteRover config (for custom system prompt)
|
|
48
|
+
*/
|
|
49
|
+
constructor(llmConfig, brvConfig) {
|
|
50
|
+
this.llmConfig = llmConfig;
|
|
51
|
+
this._brvConfig = brvConfig;
|
|
52
|
+
this.stateManager = new CipherAgentStateManager();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Create a new session.
|
|
56
|
+
*
|
|
57
|
+
* @param sessionId - Optional session ID (generates UUID if not provided)
|
|
58
|
+
* @returns New or existing chat session
|
|
59
|
+
*/
|
|
60
|
+
async createSession(sessionId) {
|
|
61
|
+
this.ensureStarted();
|
|
62
|
+
return this.getSessionManager().createSession(sessionId);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Delete a session completely (memory + history).
|
|
66
|
+
*
|
|
67
|
+
* @param sessionId - Session ID to delete
|
|
68
|
+
* @returns True if session existed and was deleted
|
|
69
|
+
*/
|
|
70
|
+
async deleteSession(sessionId) {
|
|
71
|
+
this.ensureStarted();
|
|
72
|
+
return this.getSessionManager().deleteSession(sessionId);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Execute the agent with user input.
|
|
76
|
+
*
|
|
77
|
+
* Following Dexto's pattern: determine target session, get or create it,
|
|
78
|
+
* then delegate to session.run().
|
|
79
|
+
*
|
|
80
|
+
* @param input - User input string
|
|
81
|
+
* @param sessionId - Optional session ID (uses 'default' if not provided)
|
|
82
|
+
* @param options - Optional execution options
|
|
83
|
+
* @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
|
|
84
|
+
* @param options.executionContext - Optional execution context
|
|
85
|
+
* @returns Agent response from LLM
|
|
86
|
+
* @throws Error if agent is not started
|
|
87
|
+
*/
|
|
88
|
+
async execute(input, sessionId, options) {
|
|
89
|
+
// Ensure agent is started
|
|
90
|
+
this.ensureStarted();
|
|
91
|
+
// Determine target session (backward compatible: defaults to 'default')
|
|
92
|
+
const targetSessionId = sessionId ?? this.currentDefaultSessionId;
|
|
93
|
+
// Get or create session (lazy loading pattern from Dexto)
|
|
94
|
+
const sessionMgr = this.getSessionManager();
|
|
95
|
+
const existingSession = sessionMgr.getSession(targetSessionId);
|
|
96
|
+
const session = existingSession ?? (await sessionMgr.createSession(targetSessionId));
|
|
97
|
+
// Cache default session for faster access
|
|
98
|
+
if (targetSessionId === this.currentDefaultSessionId && !this.defaultSession) {
|
|
99
|
+
this.defaultSession = session;
|
|
100
|
+
}
|
|
101
|
+
// Increment iteration counter (agent-level state) - kept for internal tracking only
|
|
102
|
+
this.stateManager.incrementIteration();
|
|
103
|
+
// Note: Execution records removed to reduce log noise
|
|
104
|
+
// DELEGATE TO SESSION
|
|
105
|
+
// The ChatSession will:
|
|
106
|
+
// 1. Call llmService.completeTask()
|
|
107
|
+
// 2. LLM service handles agentic loop (tools, prompts, iterations)
|
|
108
|
+
// 3. Events forwarded from session bus to agent bus
|
|
109
|
+
const response = await session.run(input, options);
|
|
110
|
+
return response;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get an existing session or create a new one.
|
|
114
|
+
* Useful for ensuring a session exists before pre-loading history.
|
|
115
|
+
*
|
|
116
|
+
* @param sessionId - Session ID to get or create
|
|
117
|
+
* @returns Existing or newly created chat session
|
|
118
|
+
*/
|
|
119
|
+
async getOrCreateSession(sessionId) {
|
|
120
|
+
this.ensureStarted();
|
|
121
|
+
const sessionMgr = this.getSessionManager();
|
|
122
|
+
const existingSession = sessionMgr.getSession(sessionId);
|
|
123
|
+
return existingSession ?? sessionMgr.createSession(sessionId);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get a session by ID.
|
|
127
|
+
*
|
|
128
|
+
* @param sessionId - Session ID
|
|
129
|
+
* @returns Session instance or undefined if not found
|
|
130
|
+
*/
|
|
131
|
+
getSession(sessionId) {
|
|
132
|
+
this.ensureStarted();
|
|
133
|
+
return this.getSessionManager().getSession(sessionId);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get session metadata without loading full history.
|
|
137
|
+
*
|
|
138
|
+
* @param sessionId - Session ID
|
|
139
|
+
* @returns Session metadata or undefined if not found
|
|
140
|
+
*/
|
|
141
|
+
async getSessionMetadata(sessionId) {
|
|
142
|
+
this.ensureStarted();
|
|
143
|
+
return this.getHistoryStorage().getSessionMetadata(sessionId);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get current agent state
|
|
147
|
+
*
|
|
148
|
+
* @returns Current state information
|
|
149
|
+
*/
|
|
150
|
+
getState() {
|
|
151
|
+
return this.stateManager.getState();
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get the current system prompt from SimplePromptFactory
|
|
155
|
+
* Useful for debugging and inspection
|
|
156
|
+
*
|
|
157
|
+
* @returns Current system prompt (built dynamically)
|
|
158
|
+
*/
|
|
159
|
+
async getSystemPrompt() {
|
|
160
|
+
this.ensureStarted();
|
|
161
|
+
return this.getPromptFactory().buildSystemPrompt({});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* List all persisted session IDs from history storage.
|
|
165
|
+
*
|
|
166
|
+
* @returns Array of session IDs
|
|
167
|
+
*/
|
|
168
|
+
async listPersistedSessions() {
|
|
169
|
+
this.ensureStarted();
|
|
170
|
+
return this.getHistoryStorage().listSessions();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* List all session IDs (in-memory only).
|
|
174
|
+
*
|
|
175
|
+
* @returns Array of session IDs
|
|
176
|
+
*/
|
|
177
|
+
listSessions() {
|
|
178
|
+
this.ensureStarted();
|
|
179
|
+
return this.getSessionManager().listSessions();
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Reset the agent to initial state.
|
|
183
|
+
* Clears execution history, resets iteration counter, and resets default session.
|
|
184
|
+
*/
|
|
185
|
+
reset() {
|
|
186
|
+
this.stateManager.reset();
|
|
187
|
+
// Reset default session if it exists
|
|
188
|
+
if (this.defaultSession) {
|
|
189
|
+
this.defaultSession.reset();
|
|
190
|
+
}
|
|
191
|
+
// Emit conversation reset event (only if agent is started)
|
|
192
|
+
if (this._isStarted) {
|
|
193
|
+
this.getAgentEventBus().emit('cipher:conversationReset', {
|
|
194
|
+
sessionId: this.currentDefaultSessionId,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Start the agent - initializes all services asynchronously
|
|
200
|
+
* Must be called before execute()
|
|
201
|
+
*
|
|
202
|
+
* @throws Error if agent is already started
|
|
203
|
+
*/
|
|
204
|
+
async start() {
|
|
205
|
+
if (this._isStarted) {
|
|
206
|
+
throw new Error('CipherAgent is already started');
|
|
207
|
+
}
|
|
208
|
+
// Services will create necessary directories during their initialization
|
|
209
|
+
// No need for upfront validation - let services handle their own setup
|
|
210
|
+
// Create SHARED services only (following Dexto's pattern)
|
|
211
|
+
const sharedServices = await createCipherAgentServices(this.llmConfig);
|
|
212
|
+
// Extract gRPC config from llmConfig
|
|
213
|
+
const grpcConfig = {
|
|
214
|
+
accessToken: this.llmConfig.accessToken,
|
|
215
|
+
grpcEndpoint: this.llmConfig.grpcEndpoint,
|
|
216
|
+
projectId: this.llmConfig.projectId,
|
|
217
|
+
region: this.llmConfig.region,
|
|
218
|
+
sessionKey: this.llmConfig.sessionKey,
|
|
219
|
+
spaceId: this._brvConfig?.spaceId ?? '',
|
|
220
|
+
teamId: this._brvConfig?.teamId ?? '',
|
|
221
|
+
};
|
|
222
|
+
// Extract LLM config for sessions
|
|
223
|
+
const sessionLLMConfig = {
|
|
224
|
+
httpReferer: this.llmConfig.httpReferer,
|
|
225
|
+
maxIterations: this.llmConfig.maxIterations,
|
|
226
|
+
maxTokens: this.llmConfig.maxTokens,
|
|
227
|
+
model: this.llmConfig.model,
|
|
228
|
+
openRouterApiKey: this.llmConfig.openRouterApiKey,
|
|
229
|
+
siteName: this.llmConfig.siteName,
|
|
230
|
+
temperature: this.llmConfig.temperature,
|
|
231
|
+
verbose: this.llmConfig.verbose,
|
|
232
|
+
};
|
|
233
|
+
// Create SessionManager with shared services
|
|
234
|
+
const sessionManager = new SessionManager(sharedServices, grpcConfig, sessionLLMConfig, {
|
|
235
|
+
config: {
|
|
236
|
+
maxSessions: 100,
|
|
237
|
+
sessionTTL: 3_600_000, // 1 hour
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
// Assign services using Object.assign for readonly properties
|
|
241
|
+
Object.assign(this, {
|
|
242
|
+
...sharedServices,
|
|
243
|
+
sessionManager,
|
|
244
|
+
});
|
|
245
|
+
this._isStarted = true;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Ensure the agent has been started and all services are initialized
|
|
249
|
+
*
|
|
250
|
+
* @throws Error if agent is not started or services are not initialized
|
|
251
|
+
*/
|
|
252
|
+
ensureStarted() {
|
|
253
|
+
if (!this._isStarted) {
|
|
254
|
+
throw new Error('CipherAgent must be started before use. Call start() first.');
|
|
255
|
+
}
|
|
256
|
+
// Runtime validation to ensure services were properly initialized
|
|
257
|
+
if (!this.agentEventBus ||
|
|
258
|
+
!this.fileSystemService ||
|
|
259
|
+
!this.historyStorage ||
|
|
260
|
+
!this.memoryManager ||
|
|
261
|
+
!this.processService ||
|
|
262
|
+
!this.promptFactory ||
|
|
263
|
+
!this.toolManager ||
|
|
264
|
+
!this.toolProvider ||
|
|
265
|
+
!this.sessionManager) {
|
|
266
|
+
throw new Error('CipherAgent services not properly initialized. This is a bug.');
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get initialized agent event bus (guaranteed to be defined after start())
|
|
271
|
+
*
|
|
272
|
+
* @returns AgentEventBus instance
|
|
273
|
+
* @throws Error if not initialized
|
|
274
|
+
*/
|
|
275
|
+
getAgentEventBus() {
|
|
276
|
+
if (!this.agentEventBus) {
|
|
277
|
+
throw new Error('AgentEventBus not initialized. This is a bug.');
|
|
278
|
+
}
|
|
279
|
+
return this.agentEventBus;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get initialized history storage (guaranteed to be defined after start())
|
|
283
|
+
*
|
|
284
|
+
* @returns IHistoryStorage instance
|
|
285
|
+
* @throws Error if not initialized
|
|
286
|
+
*/
|
|
287
|
+
getHistoryStorage() {
|
|
288
|
+
if (!this.historyStorage) {
|
|
289
|
+
throw new Error('HistoryStorage not initialized. This is a bug.');
|
|
290
|
+
}
|
|
291
|
+
return this.historyStorage;
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Get initialized prompt factory (guaranteed to be defined after start())
|
|
295
|
+
*
|
|
296
|
+
* @returns SimplePromptFactory instance
|
|
297
|
+
* @throws Error if not initialized
|
|
298
|
+
*/
|
|
299
|
+
getPromptFactory() {
|
|
300
|
+
if (!this.promptFactory) {
|
|
301
|
+
throw new Error('SimplePromptFactory not initialized. This is a bug.');
|
|
302
|
+
}
|
|
303
|
+
return this.promptFactory;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Get initialized session manager (guaranteed to be defined after start())
|
|
307
|
+
*
|
|
308
|
+
* @returns SessionManager instance
|
|
309
|
+
* @throws Error if not initialized
|
|
310
|
+
*/
|
|
311
|
+
getSessionManager() {
|
|
312
|
+
if (!this.sessionManager) {
|
|
313
|
+
throw new Error('SessionManager not initialized. This is a bug.');
|
|
314
|
+
}
|
|
315
|
+
return this.sessionManager;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command parser for interactive CLI
|
|
3
|
+
* Parses user input to distinguish between slash commands and regular prompts
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Result type for parsed commands
|
|
7
|
+
*/
|
|
8
|
+
export type CommandResult = {
|
|
9
|
+
args?: string[];
|
|
10
|
+
command?: string;
|
|
11
|
+
rawInput: string;
|
|
12
|
+
type: 'command';
|
|
13
|
+
} | {
|
|
14
|
+
rawInput: string;
|
|
15
|
+
type: 'prompt';
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Parse user input into command or prompt
|
|
19
|
+
*
|
|
20
|
+
* @param input - Raw user input string
|
|
21
|
+
* @returns Parsed command result (discriminated union)
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseInput(input: string): CommandResult;
|