byterover-cli 0.2.0 → 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 +53 -2
- package/dist/commands/init.js +279 -66
- package/dist/commands/login.js +9 -4
- package/dist/commands/logout.d.ts +16 -0
- package/dist/commands/logout.js +61 -0
- 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 +4 -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/i-rule-template-service.d.ts +0 -4
- package/dist/core/interfaces/i-rule-template-service.js +1 -4
- 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/rule/constants.d.ts +4 -0
- package/dist/infra/rule/constants.js +4 -0
- package/dist/infra/rule/rule-template-service.js +1 -1
- package/dist/infra/rule/rule-writer-service.js +1 -5
- 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 -93
- 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 +422 -142
- package/package.json +29 -10
- 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
|
@@ -15,18 +15,20 @@ export const ENV_CONFIG = {
|
|
|
15
15
|
clientId: 'byterover-cli-client',
|
|
16
16
|
cogitApiBaseUrl: 'https://dev-beta-cogit.byterover.dev/api/v1',
|
|
17
17
|
issuerUrl: 'https://dev-beta-iam.byterover.dev/api/v1/oidc',
|
|
18
|
+
llmGrpcEndpoint: 'dev-beta-llm-grpc.byterover.dev',
|
|
18
19
|
memoraApiBaseUrl: 'https://dev-beta-memora-retrieve.byterover.dev/api/v3',
|
|
19
20
|
mixpanelToken: '258e1a2b3d44cc634ef28964771b1da0',
|
|
20
21
|
scopes: ['read', 'write', 'debug'],
|
|
21
22
|
tokenUrl: 'https://dev-beta-iam.byterover.dev/api/v1/oidc/token',
|
|
22
|
-
webAppUrl: 'https://dev-beta-app.byterover.dev
|
|
23
|
+
webAppUrl: 'https://dev-beta-app.byterover.dev',
|
|
23
24
|
},
|
|
24
25
|
production: {
|
|
25
26
|
apiBaseUrl: 'https://beta-iam.byterover.dev/api/v1',
|
|
26
27
|
authorizationUrl: 'https://beta-iam.byterover.dev/api/v1/oidc/authorize',
|
|
27
28
|
clientId: 'byterover-cli',
|
|
28
|
-
cogitApiBaseUrl: 'https://beta-
|
|
29
|
+
cogitApiBaseUrl: 'https://beta-cgit.byterover.dev/api/v1',
|
|
29
30
|
issuerUrl: 'https://beta-iam.byterover.dev/api/v1/oidc',
|
|
31
|
+
llmGrpcEndpoint: 'beta-llm-grpc.byterover.dev',
|
|
30
32
|
memoraApiBaseUrl: 'https://beta-memora-retrieve.byterover.dev/api/v3',
|
|
31
33
|
mixpanelToken: '4d1198b346d2d6ac75f2e77905cc65ac',
|
|
32
34
|
scopes: ['read', 'write'],
|
|
@@ -39,3 +41,8 @@ export const ENV_CONFIG = {
|
|
|
39
41
|
* @returns The environment configuration.
|
|
40
42
|
*/
|
|
41
43
|
export const getCurrentConfig = () => ENV_CONFIG[ENVIRONMENT];
|
|
44
|
+
/**
|
|
45
|
+
* Check if the current environment is development.
|
|
46
|
+
* @returns True if in development mode, false otherwise.
|
|
47
|
+
*/
|
|
48
|
+
export const isDevelopment = () => ENVIRONMENT === 'development';
|
package/dist/constants.d.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
export declare const BRV_DIR = ".brv";
|
|
2
2
|
export declare const PROJECT_CONFIG_FILE = "config.json";
|
|
3
|
+
export declare const BRV_CONFIG_VERSION = "0.0.1";
|
|
3
4
|
export declare const ACE_DIR = "ace";
|
|
4
5
|
export declare const EXECUTOR_OUTPUTS_DIR = "executor-outputs";
|
|
5
6
|
export declare const REFLECTIONS_DIR = "reflections";
|
|
6
7
|
export declare const DELTAS_DIR = "deltas";
|
|
7
8
|
export declare const BULLETS_DIR = "bullets";
|
|
8
9
|
export declare const PLAYBOOK_FILE = "playbook.json";
|
|
10
|
+
export declare const PROJECT = "byterover";
|
|
11
|
+
export declare const CONTEXT_TREE_DIR = "context-tree";
|
|
12
|
+
export declare const CONTEXT_FILE = "context.md";
|
|
13
|
+
export declare const SNAPSHOT_FILE = ".snapshot.json";
|
|
9
14
|
/**
|
|
10
15
|
* Default ByteRover branch name for memory storage.
|
|
11
16
|
* This is ByteRover's internal branching mechanism, not Git branches.
|
package/dist/constants.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const BRV_DIR = '.brv';
|
|
2
2
|
export const PROJECT_CONFIG_FILE = 'config.json';
|
|
3
|
+
export const BRV_CONFIG_VERSION = '0.0.1';
|
|
3
4
|
// ACE directory structure constants
|
|
4
5
|
export const ACE_DIR = 'ace';
|
|
5
6
|
export const EXECUTOR_OUTPUTS_DIR = 'executor-outputs';
|
|
@@ -7,6 +8,11 @@ export const REFLECTIONS_DIR = 'reflections';
|
|
|
7
8
|
export const DELTAS_DIR = 'deltas';
|
|
8
9
|
export const BULLETS_DIR = 'bullets';
|
|
9
10
|
export const PLAYBOOK_FILE = 'playbook.json';
|
|
11
|
+
export const PROJECT = 'byterover';
|
|
12
|
+
// Context Tree directory structure constants
|
|
13
|
+
export const CONTEXT_TREE_DIR = 'context-tree';
|
|
14
|
+
export const CONTEXT_FILE = 'context.md';
|
|
15
|
+
export const SNAPSHOT_FILE = '.snapshot.json';
|
|
10
16
|
/**
|
|
11
17
|
* Default ByteRover branch name for memory storage.
|
|
12
18
|
* This is ByteRover's internal branching mechanism, not Git branches.
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent State Machine
|
|
3
|
+
*
|
|
4
|
+
* Implements a finite state machine for agent execution, following gemini-cli patterns.
|
|
5
|
+
* Manages state transitions, termination checks, and execution metrics.
|
|
6
|
+
*
|
|
7
|
+
* State Transitions:
|
|
8
|
+
* - IDLE → EXECUTING (start execution)
|
|
9
|
+
* - EXECUTING → TOOL_CALLING (tool calls in response)
|
|
10
|
+
* - EXECUTING → COMPLETE (no tool calls, task done)
|
|
11
|
+
* - EXECUTING → ERROR (execution failed)
|
|
12
|
+
* - EXECUTING → ABORTED (externally cancelled)
|
|
13
|
+
* - TOOL_CALLING → EXECUTING (tools executed, continue)
|
|
14
|
+
* - TOOL_CALLING → ERROR (tool execution failed)
|
|
15
|
+
* - TOOL_CALLING → ABORTED (externally cancelled)
|
|
16
|
+
*/
|
|
17
|
+
import { AgentExecutionContext, AgentState, TerminationReason } from './agent-state.js';
|
|
18
|
+
/**
|
|
19
|
+
* Agent State Machine.
|
|
20
|
+
*
|
|
21
|
+
* Manages the execution state of an agent, including:
|
|
22
|
+
* - State transitions with validation
|
|
23
|
+
* - Termination condition checks (timeout, max turns)
|
|
24
|
+
* - Execution metrics (turn count, tool calls)
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const sm = new AgentStateMachine(50, 600_000) // 50 turns, 10 min timeout
|
|
29
|
+
* sm.transition(AgentState.EXECUTING)
|
|
30
|
+
*
|
|
31
|
+
* while (!sm.isTerminal()) {
|
|
32
|
+
* const reason = sm.shouldTerminate()
|
|
33
|
+
* if (reason) break
|
|
34
|
+
*
|
|
35
|
+
* // Execute iteration...
|
|
36
|
+
* sm.incrementTurn()
|
|
37
|
+
* }
|
|
38
|
+
*
|
|
39
|
+
* sm.complete() // or sm.fail(error) or sm.abort()
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare class AgentStateMachine {
|
|
43
|
+
private readonly maxTurns;
|
|
44
|
+
private readonly maxTimeMs;
|
|
45
|
+
private context;
|
|
46
|
+
private state;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new agent state machine.
|
|
49
|
+
*
|
|
50
|
+
* @param maxTurns - Maximum number of turns before MAX_TURNS termination
|
|
51
|
+
* @param maxTimeMs - Maximum execution time in milliseconds before TIMEOUT
|
|
52
|
+
*/
|
|
53
|
+
constructor(maxTurns: number, maxTimeMs: number);
|
|
54
|
+
/**
|
|
55
|
+
* Abort the execution externally.
|
|
56
|
+
*
|
|
57
|
+
* Transitions to ABORTED state and sets termination reason.
|
|
58
|
+
* Can be called from any non-terminal state.
|
|
59
|
+
*/
|
|
60
|
+
abort(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Complete the execution successfully.
|
|
63
|
+
*
|
|
64
|
+
* Transitions to COMPLETE state and sets GOAL as termination reason.
|
|
65
|
+
* Should be called when the LLM returns a response without tool calls.
|
|
66
|
+
*/
|
|
67
|
+
complete(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Fail the execution with an error.
|
|
70
|
+
*
|
|
71
|
+
* Transitions to ERROR state and stores the error.
|
|
72
|
+
* Should be called when an unrecoverable error occurs.
|
|
73
|
+
*
|
|
74
|
+
* @param error - The error that caused the failure
|
|
75
|
+
*/
|
|
76
|
+
fail(error: Error): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get a readonly copy of the current execution context.
|
|
79
|
+
*
|
|
80
|
+
* @returns Copy of the execution context
|
|
81
|
+
*/
|
|
82
|
+
getContext(): Readonly<AgentExecutionContext>;
|
|
83
|
+
/**
|
|
84
|
+
* Get the current state.
|
|
85
|
+
*
|
|
86
|
+
* @returns Current agent state
|
|
87
|
+
*/
|
|
88
|
+
getState(): AgentState;
|
|
89
|
+
/**
|
|
90
|
+
* Increment the turn counter.
|
|
91
|
+
*
|
|
92
|
+
* Should be called after each iteration of the agentic loop.
|
|
93
|
+
*/
|
|
94
|
+
incrementTurn(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Check if the state machine is in a terminal state.
|
|
97
|
+
*
|
|
98
|
+
* Terminal states are: COMPLETE, ERROR, ABORTED
|
|
99
|
+
*
|
|
100
|
+
* @returns True if in a terminal state
|
|
101
|
+
*/
|
|
102
|
+
isTerminal(): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Record a tool call execution.
|
|
105
|
+
*
|
|
106
|
+
* Should be called after each tool is executed.
|
|
107
|
+
*/
|
|
108
|
+
recordToolCall(): void;
|
|
109
|
+
/**
|
|
110
|
+
* Check if the execution should terminate.
|
|
111
|
+
*
|
|
112
|
+
* Checks for:
|
|
113
|
+
* - MAX_TURNS: Turn count >= maxTurns
|
|
114
|
+
* - TIMEOUT: Elapsed time > maxTimeMs
|
|
115
|
+
*
|
|
116
|
+
* @returns Termination reason if should terminate, null otherwise
|
|
117
|
+
*/
|
|
118
|
+
shouldTerminate(): null | TerminationReason;
|
|
119
|
+
/**
|
|
120
|
+
* Transition to a new state.
|
|
121
|
+
*
|
|
122
|
+
* Validates the transition is allowed, then updates the state.
|
|
123
|
+
*
|
|
124
|
+
* @param newState - Target state
|
|
125
|
+
* @throws Error if the transition is not valid
|
|
126
|
+
*/
|
|
127
|
+
transition(newState: AgentState): void;
|
|
128
|
+
}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent State Machine
|
|
3
|
+
*
|
|
4
|
+
* Implements a finite state machine for agent execution, following gemini-cli patterns.
|
|
5
|
+
* Manages state transitions, termination checks, and execution metrics.
|
|
6
|
+
*
|
|
7
|
+
* State Transitions:
|
|
8
|
+
* - IDLE → EXECUTING (start execution)
|
|
9
|
+
* - EXECUTING → TOOL_CALLING (tool calls in response)
|
|
10
|
+
* - EXECUTING → COMPLETE (no tool calls, task done)
|
|
11
|
+
* - EXECUTING → ERROR (execution failed)
|
|
12
|
+
* - EXECUTING → ABORTED (externally cancelled)
|
|
13
|
+
* - TOOL_CALLING → EXECUTING (tools executed, continue)
|
|
14
|
+
* - TOOL_CALLING → ERROR (tool execution failed)
|
|
15
|
+
* - TOOL_CALLING → ABORTED (externally cancelled)
|
|
16
|
+
*/
|
|
17
|
+
import { AgentState, TerminationReason } from './agent-state.js';
|
|
18
|
+
/**
|
|
19
|
+
* Valid state transitions for the agent FSM.
|
|
20
|
+
* Each state maps to an array of valid target states.
|
|
21
|
+
*/
|
|
22
|
+
const VALID_TRANSITIONS = {
|
|
23
|
+
[AgentState.ABORTED]: [],
|
|
24
|
+
[AgentState.COMPLETE]: [],
|
|
25
|
+
[AgentState.ERROR]: [],
|
|
26
|
+
[AgentState.EXECUTING]: [AgentState.TOOL_CALLING, AgentState.COMPLETE, AgentState.ERROR, AgentState.ABORTED],
|
|
27
|
+
[AgentState.IDLE]: [AgentState.EXECUTING],
|
|
28
|
+
[AgentState.TOOL_CALLING]: [AgentState.EXECUTING, AgentState.ERROR, AgentState.ABORTED],
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Agent State Machine.
|
|
32
|
+
*
|
|
33
|
+
* Manages the execution state of an agent, including:
|
|
34
|
+
* - State transitions with validation
|
|
35
|
+
* - Termination condition checks (timeout, max turns)
|
|
36
|
+
* - Execution metrics (turn count, tool calls)
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const sm = new AgentStateMachine(50, 600_000) // 50 turns, 10 min timeout
|
|
41
|
+
* sm.transition(AgentState.EXECUTING)
|
|
42
|
+
*
|
|
43
|
+
* while (!sm.isTerminal()) {
|
|
44
|
+
* const reason = sm.shouldTerminate()
|
|
45
|
+
* if (reason) break
|
|
46
|
+
*
|
|
47
|
+
* // Execute iteration...
|
|
48
|
+
* sm.incrementTurn()
|
|
49
|
+
* }
|
|
50
|
+
*
|
|
51
|
+
* sm.complete() // or sm.fail(error) or sm.abort()
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export class AgentStateMachine {
|
|
55
|
+
maxTurns;
|
|
56
|
+
maxTimeMs;
|
|
57
|
+
context;
|
|
58
|
+
state = AgentState.IDLE;
|
|
59
|
+
/**
|
|
60
|
+
* Create a new agent state machine.
|
|
61
|
+
*
|
|
62
|
+
* @param maxTurns - Maximum number of turns before MAX_TURNS termination
|
|
63
|
+
* @param maxTimeMs - Maximum execution time in milliseconds before TIMEOUT
|
|
64
|
+
*/
|
|
65
|
+
constructor(maxTurns, maxTimeMs) {
|
|
66
|
+
this.maxTurns = maxTurns;
|
|
67
|
+
this.maxTimeMs = maxTimeMs;
|
|
68
|
+
this.context = {
|
|
69
|
+
startTime: new Date(),
|
|
70
|
+
state: AgentState.IDLE,
|
|
71
|
+
toolCallsExecuted: 0,
|
|
72
|
+
turnCount: 0,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Abort the execution externally.
|
|
77
|
+
*
|
|
78
|
+
* Transitions to ABORTED state and sets termination reason.
|
|
79
|
+
* Can be called from any non-terminal state.
|
|
80
|
+
*/
|
|
81
|
+
abort() {
|
|
82
|
+
this.transition(AgentState.ABORTED);
|
|
83
|
+
this.context.terminationReason = TerminationReason.ABORTED;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Complete the execution successfully.
|
|
87
|
+
*
|
|
88
|
+
* Transitions to COMPLETE state and sets GOAL as termination reason.
|
|
89
|
+
* Should be called when the LLM returns a response without tool calls.
|
|
90
|
+
*/
|
|
91
|
+
complete() {
|
|
92
|
+
this.transition(AgentState.COMPLETE);
|
|
93
|
+
this.context.terminationReason = TerminationReason.GOAL;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Fail the execution with an error.
|
|
97
|
+
*
|
|
98
|
+
* Transitions to ERROR state and stores the error.
|
|
99
|
+
* Should be called when an unrecoverable error occurs.
|
|
100
|
+
*
|
|
101
|
+
* @param error - The error that caused the failure
|
|
102
|
+
*/
|
|
103
|
+
fail(error) {
|
|
104
|
+
this.transition(AgentState.ERROR);
|
|
105
|
+
this.context.terminationReason = TerminationReason.ERROR;
|
|
106
|
+
this.context.lastError = error;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Get a readonly copy of the current execution context.
|
|
110
|
+
*
|
|
111
|
+
* @returns Copy of the execution context
|
|
112
|
+
*/
|
|
113
|
+
getContext() {
|
|
114
|
+
return { ...this.context };
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get the current state.
|
|
118
|
+
*
|
|
119
|
+
* @returns Current agent state
|
|
120
|
+
*/
|
|
121
|
+
getState() {
|
|
122
|
+
return this.state;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Increment the turn counter.
|
|
126
|
+
*
|
|
127
|
+
* Should be called after each iteration of the agentic loop.
|
|
128
|
+
*/
|
|
129
|
+
incrementTurn() {
|
|
130
|
+
this.context.turnCount++;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Check if the state machine is in a terminal state.
|
|
134
|
+
*
|
|
135
|
+
* Terminal states are: COMPLETE, ERROR, ABORTED
|
|
136
|
+
*
|
|
137
|
+
* @returns True if in a terminal state
|
|
138
|
+
*/
|
|
139
|
+
isTerminal() {
|
|
140
|
+
return [AgentState.ABORTED, AgentState.COMPLETE, AgentState.ERROR].includes(this.state);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Record a tool call execution.
|
|
144
|
+
*
|
|
145
|
+
* Should be called after each tool is executed.
|
|
146
|
+
*/
|
|
147
|
+
recordToolCall() {
|
|
148
|
+
this.context.toolCallsExecuted++;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Check if the execution should terminate.
|
|
152
|
+
*
|
|
153
|
+
* Checks for:
|
|
154
|
+
* - MAX_TURNS: Turn count >= maxTurns
|
|
155
|
+
* - TIMEOUT: Elapsed time > maxTimeMs
|
|
156
|
+
*
|
|
157
|
+
* @returns Termination reason if should terminate, null otherwise
|
|
158
|
+
*/
|
|
159
|
+
shouldTerminate() {
|
|
160
|
+
if (this.context.turnCount >= this.maxTurns) {
|
|
161
|
+
return TerminationReason.MAX_TURNS;
|
|
162
|
+
}
|
|
163
|
+
if (Date.now() - this.context.startTime.getTime() > this.maxTimeMs) {
|
|
164
|
+
return TerminationReason.TIMEOUT;
|
|
165
|
+
}
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Transition to a new state.
|
|
170
|
+
*
|
|
171
|
+
* Validates the transition is allowed, then updates the state.
|
|
172
|
+
*
|
|
173
|
+
* @param newState - Target state
|
|
174
|
+
* @throws Error if the transition is not valid
|
|
175
|
+
*/
|
|
176
|
+
transition(newState) {
|
|
177
|
+
if (!VALID_TRANSITIONS[this.state].includes(newState)) {
|
|
178
|
+
throw new Error(`Invalid state transition: ${this.state} → ${newState}`);
|
|
179
|
+
}
|
|
180
|
+
this.state = newState;
|
|
181
|
+
this.context.state = newState;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent State Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the state machine for agent execution, following gemini-cli patterns.
|
|
5
|
+
* Provides explicit states and termination reasons for better observability
|
|
6
|
+
* and control over the agentic loop.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Agent execution states.
|
|
10
|
+
*
|
|
11
|
+
* These states represent the current phase of agent execution:
|
|
12
|
+
* - IDLE: Not executing, waiting for input
|
|
13
|
+
* - EXECUTING: Processing LLM response
|
|
14
|
+
* - TOOL_CALLING: Executing tool calls
|
|
15
|
+
* - COMPLETE: Task finished successfully
|
|
16
|
+
* - ERROR: Terminated with error
|
|
17
|
+
* - ABORTED: Externally cancelled
|
|
18
|
+
*/
|
|
19
|
+
export declare enum AgentState {
|
|
20
|
+
/** Externally cancelled */
|
|
21
|
+
ABORTED = "ABORTED",
|
|
22
|
+
/** Task finished successfully */
|
|
23
|
+
COMPLETE = "COMPLETE",
|
|
24
|
+
/** Terminated with error */
|
|
25
|
+
ERROR = "ERROR",
|
|
26
|
+
/** Processing LLM response */
|
|
27
|
+
EXECUTING = "EXECUTING",
|
|
28
|
+
/** Not executing, waiting for input */
|
|
29
|
+
IDLE = "IDLE",
|
|
30
|
+
/** Executing tool calls */
|
|
31
|
+
TOOL_CALLING = "TOOL_CALLING"
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Termination reasons for agent execution.
|
|
35
|
+
*
|
|
36
|
+
* When an agent stops executing, one of these reasons explains why:
|
|
37
|
+
* - GOAL: Task completed successfully (no more tool calls)
|
|
38
|
+
* - TIMEOUT: Max execution time exceeded
|
|
39
|
+
* - MAX_TURNS: Iteration limit reached
|
|
40
|
+
* - ERROR: Unexpected failure during execution
|
|
41
|
+
* - ABORTED: External cancellation (e.g., abort signal)
|
|
42
|
+
* - PROTOCOL_VIOLATION: Invalid state transition or response
|
|
43
|
+
*/
|
|
44
|
+
export declare enum TerminationReason {
|
|
45
|
+
/** External cancellation (e.g., abort signal) */
|
|
46
|
+
ABORTED = "ABORTED",
|
|
47
|
+
/** Unexpected failure during execution */
|
|
48
|
+
ERROR = "ERROR",
|
|
49
|
+
/** Task completed successfully (no tool calls in response) */
|
|
50
|
+
GOAL = "GOAL",
|
|
51
|
+
/** Iteration limit reached */
|
|
52
|
+
MAX_TURNS = "MAX_TURNS",
|
|
53
|
+
/** Invalid state transition or malformed response */
|
|
54
|
+
PROTOCOL_VIOLATION = "PROTOCOL_VIOLATION",
|
|
55
|
+
/** Max execution time exceeded */
|
|
56
|
+
TIMEOUT = "TIMEOUT"
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Execution context with state tracking.
|
|
60
|
+
*
|
|
61
|
+
* Captures the current state and metrics of an agent execution,
|
|
62
|
+
* including timing, turn count, and tool call statistics.
|
|
63
|
+
*/
|
|
64
|
+
export interface AgentExecutionContext {
|
|
65
|
+
/** Last error if terminated with ERROR */
|
|
66
|
+
lastError?: Error;
|
|
67
|
+
/** When this execution started */
|
|
68
|
+
startTime: Date;
|
|
69
|
+
/** Current state of the agent */
|
|
70
|
+
state: AgentState;
|
|
71
|
+
/** Why the execution terminated (if complete) */
|
|
72
|
+
terminationReason?: TerminationReason;
|
|
73
|
+
/** Number of tool calls executed */
|
|
74
|
+
toolCallsExecuted: number;
|
|
75
|
+
/** Number of turns (iterations) completed */
|
|
76
|
+
turnCount: number;
|
|
77
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent State Types
|
|
3
|
+
*
|
|
4
|
+
* Defines the state machine for agent execution, following gemini-cli patterns.
|
|
5
|
+
* Provides explicit states and termination reasons for better observability
|
|
6
|
+
* and control over the agentic loop.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Agent execution states.
|
|
10
|
+
*
|
|
11
|
+
* These states represent the current phase of agent execution:
|
|
12
|
+
* - IDLE: Not executing, waiting for input
|
|
13
|
+
* - EXECUTING: Processing LLM response
|
|
14
|
+
* - TOOL_CALLING: Executing tool calls
|
|
15
|
+
* - COMPLETE: Task finished successfully
|
|
16
|
+
* - ERROR: Terminated with error
|
|
17
|
+
* - ABORTED: Externally cancelled
|
|
18
|
+
*/
|
|
19
|
+
export var AgentState;
|
|
20
|
+
(function (AgentState) {
|
|
21
|
+
/** Externally cancelled */
|
|
22
|
+
AgentState["ABORTED"] = "ABORTED";
|
|
23
|
+
/** Task finished successfully */
|
|
24
|
+
AgentState["COMPLETE"] = "COMPLETE";
|
|
25
|
+
/** Terminated with error */
|
|
26
|
+
AgentState["ERROR"] = "ERROR";
|
|
27
|
+
/** Processing LLM response */
|
|
28
|
+
AgentState["EXECUTING"] = "EXECUTING";
|
|
29
|
+
/** Not executing, waiting for input */
|
|
30
|
+
AgentState["IDLE"] = "IDLE";
|
|
31
|
+
/** Executing tool calls */
|
|
32
|
+
AgentState["TOOL_CALLING"] = "TOOL_CALLING";
|
|
33
|
+
})(AgentState || (AgentState = {}));
|
|
34
|
+
/**
|
|
35
|
+
* Termination reasons for agent execution.
|
|
36
|
+
*
|
|
37
|
+
* When an agent stops executing, one of these reasons explains why:
|
|
38
|
+
* - GOAL: Task completed successfully (no more tool calls)
|
|
39
|
+
* - TIMEOUT: Max execution time exceeded
|
|
40
|
+
* - MAX_TURNS: Iteration limit reached
|
|
41
|
+
* - ERROR: Unexpected failure during execution
|
|
42
|
+
* - ABORTED: External cancellation (e.g., abort signal)
|
|
43
|
+
* - PROTOCOL_VIOLATION: Invalid state transition or response
|
|
44
|
+
*/
|
|
45
|
+
export var TerminationReason;
|
|
46
|
+
(function (TerminationReason) {
|
|
47
|
+
/** External cancellation (e.g., abort signal) */
|
|
48
|
+
TerminationReason["ABORTED"] = "ABORTED";
|
|
49
|
+
/** Unexpected failure during execution */
|
|
50
|
+
TerminationReason["ERROR"] = "ERROR";
|
|
51
|
+
/** Task completed successfully (no tool calls in response) */
|
|
52
|
+
TerminationReason["GOAL"] = "GOAL";
|
|
53
|
+
/** Iteration limit reached */
|
|
54
|
+
TerminationReason["MAX_TURNS"] = "MAX_TURNS";
|
|
55
|
+
/** Invalid state transition or malformed response */
|
|
56
|
+
TerminationReason["PROTOCOL_VIOLATION"] = "PROTOCOL_VIOLATION";
|
|
57
|
+
/** Max execution time exceeded */
|
|
58
|
+
TerminationReason["TIMEOUT"] = "TIMEOUT";
|
|
59
|
+
})(TerminationReason || (TerminationReason = {}));
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system types and constants.
|
|
3
|
+
*
|
|
4
|
+
* This module provides type-safe event definitions for CipherAgent's event-driven architecture.
|
|
5
|
+
* Follows the pattern from Dexto's event system.
|
|
6
|
+
*/
|
|
7
|
+
export type { AgentEventMap, AgentEventName, EventName, SessionEventMap, SessionEventName, TokenUsage, } from './types.js';
|
|
8
|
+
export { AGENT_EVENT_NAMES, EVENT_NAMES, SESSION_EVENT_NAMES } from './types.js';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Event system types and constants.
|
|
3
|
+
*
|
|
4
|
+
* This module provides type-safe event definitions for CipherAgent's event-driven architecture.
|
|
5
|
+
* Follows the pattern from Dexto's event system.
|
|
6
|
+
*/
|
|
7
|
+
export { AGENT_EVENT_NAMES, EVENT_NAMES, SESSION_EVENT_NAMES } from './types.js';
|