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,71 @@
|
|
|
1
|
+
import type { AgentEventBus, SessionEventBus } from '../../../infra/cipher/events/event-emitter.js';
|
|
2
|
+
import type { FileSystemService } from '../../../infra/cipher/file-system/file-system-service.js';
|
|
3
|
+
import type { MemoryManager } from '../../../infra/cipher/memory/memory-manager.js';
|
|
4
|
+
import type { ProcessService } from '../../../infra/cipher/process/process-service.js';
|
|
5
|
+
import type { SimplePromptFactory } from '../../../infra/cipher/system-prompt/simple-prompt-factory.js';
|
|
6
|
+
import type { ToolManager } from '../../../infra/cipher/tools/tool-manager.js';
|
|
7
|
+
import type { ToolProvider } from '../../../infra/cipher/tools/tool-provider.js';
|
|
8
|
+
import type { IBlobStorage } from './i-blob-storage.js';
|
|
9
|
+
import type { ICodingAgentLogWatcher } from './i-coding-agent-log-watcher.js';
|
|
10
|
+
import type { IHistoryStorage } from './i-history-storage.js';
|
|
11
|
+
import type { ILLMService } from './i-llm-service.js';
|
|
12
|
+
import type { IPolicyEngine } from './i-policy-engine.js';
|
|
13
|
+
import type { IToolScheduler } from './i-tool-scheduler.js';
|
|
14
|
+
/**
|
|
15
|
+
* Shared services created at agent level and shared across all sessions.
|
|
16
|
+
*
|
|
17
|
+
* These services are singletons that provide global functionality:
|
|
18
|
+
* - AgentEventBus: Global event bus for agent-level events
|
|
19
|
+
* - ToolManager: Manages tool registration and execution (stateless)
|
|
20
|
+
* - ToolScheduler: Orchestrates tool execution with policy checks
|
|
21
|
+
* - PolicyEngine: Rule-based ALLOW/DENY decisions for tools
|
|
22
|
+
* - SimplePromptFactory: Builds system prompts from simple YAML templates
|
|
23
|
+
* - FileSystemService: File system operations
|
|
24
|
+
* - ProcessService: Command execution
|
|
25
|
+
* - BlobStorage: Binary data storage
|
|
26
|
+
* - HistoryStorage: Conversation history persistence
|
|
27
|
+
* - MemoryManager: Agent memory system
|
|
28
|
+
* - ToolProvider: Provides available tools
|
|
29
|
+
* - CodingAgentLogWatcher: Watches coding agent logs for learning (optional)
|
|
30
|
+
*/
|
|
31
|
+
export interface CipherAgentServices {
|
|
32
|
+
agentEventBus: AgentEventBus;
|
|
33
|
+
blobStorage: IBlobStorage;
|
|
34
|
+
codingAgentLogWatcher?: ICodingAgentLogWatcher;
|
|
35
|
+
fileSystemService: FileSystemService;
|
|
36
|
+
historyStorage: IHistoryStorage;
|
|
37
|
+
memoryManager: MemoryManager;
|
|
38
|
+
policyEngine: IPolicyEngine;
|
|
39
|
+
processService: ProcessService;
|
|
40
|
+
promptFactory: SimplePromptFactory;
|
|
41
|
+
toolManager: ToolManager;
|
|
42
|
+
toolProvider: ToolProvider;
|
|
43
|
+
toolScheduler: IToolScheduler;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Session-specific services created per conversation session.
|
|
47
|
+
*
|
|
48
|
+
* These services are isolated per session to maintain conversation separation:
|
|
49
|
+
* - SessionEventBus: Session-scoped event bus
|
|
50
|
+
* - LLMService: LLM client with isolated context manager
|
|
51
|
+
*/
|
|
52
|
+
export interface SessionServices {
|
|
53
|
+
llmService: ILLMService;
|
|
54
|
+
sessionEventBus: SessionEventBus;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Configuration for SessionManager
|
|
58
|
+
*/
|
|
59
|
+
export interface SessionManagerConfig {
|
|
60
|
+
/**
|
|
61
|
+
* Maximum number of concurrent sessions allowed.
|
|
62
|
+
* Default: 100
|
|
63
|
+
*/
|
|
64
|
+
maxSessions?: number;
|
|
65
|
+
/**
|
|
66
|
+
* Session time-to-live in milliseconds.
|
|
67
|
+
* Sessions inactive for longer than this will be cleaned up.
|
|
68
|
+
* Default: 3600000 (1 hour)
|
|
69
|
+
*/
|
|
70
|
+
sessionTTL?: number;
|
|
71
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { BlobMetadata, BlobStats, StoredBlob } from '../../domain/cipher/blob/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for blob storage operations
|
|
4
|
+
* Provides persistent storage for binary/large data blobs
|
|
5
|
+
*/
|
|
6
|
+
export interface IBlobStorage {
|
|
7
|
+
/**
|
|
8
|
+
* Clear all blobs from storage
|
|
9
|
+
* WARNING: This is a destructive operation
|
|
10
|
+
*
|
|
11
|
+
* @throws If clearing fails
|
|
12
|
+
*/
|
|
13
|
+
clear(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Delete a blob by its key
|
|
16
|
+
*
|
|
17
|
+
* @param key - The blob identifier
|
|
18
|
+
*
|
|
19
|
+
* @throws If blob not found or deletion fails
|
|
20
|
+
*/
|
|
21
|
+
delete(key: string): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a blob exists
|
|
24
|
+
*
|
|
25
|
+
* @param key - The blob identifier
|
|
26
|
+
* @returns True if the blob exists, false otherwise
|
|
27
|
+
*/
|
|
28
|
+
exists(key: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Get metadata for a blob without retrieving its content
|
|
31
|
+
*
|
|
32
|
+
* @param key - The blob identifier
|
|
33
|
+
* @returns The blob metadata, or undefined if not found
|
|
34
|
+
*
|
|
35
|
+
* @throws If retrieval fails
|
|
36
|
+
*/
|
|
37
|
+
getMetadata(key: string): Promise<BlobMetadata | undefined>;
|
|
38
|
+
/**
|
|
39
|
+
* Get storage statistics
|
|
40
|
+
*
|
|
41
|
+
* @returns Statistics about the blob storage (count, total size, last updated)
|
|
42
|
+
*/
|
|
43
|
+
getStats(): Promise<BlobStats>;
|
|
44
|
+
/**
|
|
45
|
+
* Initialize the storage system
|
|
46
|
+
* Must be called before any other operations
|
|
47
|
+
*
|
|
48
|
+
* @throws If initialization fails
|
|
49
|
+
*/
|
|
50
|
+
initialize(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* List all blob keys, optionally filtered by prefix
|
|
53
|
+
*
|
|
54
|
+
* @param prefix - Optional prefix to filter keys
|
|
55
|
+
* @returns Array of blob keys matching the prefix
|
|
56
|
+
*/
|
|
57
|
+
list(prefix?: string): Promise<string[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Retrieve a blob by its key
|
|
60
|
+
*
|
|
61
|
+
* @param key - The blob identifier
|
|
62
|
+
* @returns The stored blob with content and metadata, or undefined if not found
|
|
63
|
+
*
|
|
64
|
+
* @throws If retrieval fails
|
|
65
|
+
*/
|
|
66
|
+
retrieve(key: string): Promise<StoredBlob | undefined>;
|
|
67
|
+
/**
|
|
68
|
+
* Store a blob with optional metadata
|
|
69
|
+
*
|
|
70
|
+
* @param key - Unique identifier for the blob (alphanumeric, hyphens, underscores only)
|
|
71
|
+
* @param content - Blob content as Buffer or string
|
|
72
|
+
* @param metadata - Optional metadata (partial, defaults will be applied)
|
|
73
|
+
* @returns The stored blob with complete metadata
|
|
74
|
+
*
|
|
75
|
+
* @throws If key is invalid, content is too large, or storage fails
|
|
76
|
+
*/
|
|
77
|
+
store(key: string, content: Buffer | string, metadata?: Partial<BlobMetadata>): Promise<StoredBlob>;
|
|
78
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { Message } from '../../domain/cipher/session/types.js';
|
|
2
|
+
import type { ILLMService } from './i-llm-service.js';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for a chat session.
|
|
5
|
+
* Represents an isolated conversation context with message history.
|
|
6
|
+
*/
|
|
7
|
+
export interface IChatSession {
|
|
8
|
+
/**
|
|
9
|
+
* Cancel the current operation.
|
|
10
|
+
* Aborts any ongoing LLM request.
|
|
11
|
+
*/
|
|
12
|
+
cancel(): void;
|
|
13
|
+
/**
|
|
14
|
+
* Dispose of the session and clean up resources.
|
|
15
|
+
* Removes event listeners to prevent memory leaks.
|
|
16
|
+
* Should be called when session is no longer needed.
|
|
17
|
+
*/
|
|
18
|
+
dispose?(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Get the conversation history.
|
|
21
|
+
*
|
|
22
|
+
* @returns Array of messages in chronological order
|
|
23
|
+
*/
|
|
24
|
+
getHistory(): Message[];
|
|
25
|
+
/**
|
|
26
|
+
* Get the LLM service for direct access to context manager.
|
|
27
|
+
* Useful for pre-loading conversation history in JSON input mode.
|
|
28
|
+
*
|
|
29
|
+
* @returns The LLM service instance
|
|
30
|
+
*/
|
|
31
|
+
getLLMService(): ILLMService;
|
|
32
|
+
/**
|
|
33
|
+
* Get the number of messages in the conversation.
|
|
34
|
+
*
|
|
35
|
+
* @returns Message count
|
|
36
|
+
*/
|
|
37
|
+
getMessageCount(): number;
|
|
38
|
+
/** Unique session identifier */
|
|
39
|
+
readonly id: string;
|
|
40
|
+
/**
|
|
41
|
+
* Reset the conversation history.
|
|
42
|
+
* Clears all messages except the system prompt (if present).
|
|
43
|
+
*/
|
|
44
|
+
reset(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Send a message and get a response.
|
|
47
|
+
* Handles tool execution loop automatically.
|
|
48
|
+
*
|
|
49
|
+
* @param input - User message content
|
|
50
|
+
* @param options - Optional execution options
|
|
51
|
+
* @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
|
|
52
|
+
* @param options.executionContext - Optional execution context
|
|
53
|
+
* @returns Assistant response
|
|
54
|
+
* @throws SessionCancelledError if operation is cancelled
|
|
55
|
+
* @throws MaxIterationsExceededError if tool loop exceeds maximum iterations
|
|
56
|
+
* @throws LLMError if LLM call fails
|
|
57
|
+
*/
|
|
58
|
+
run(input: string, options?: {
|
|
59
|
+
executionContext?: import('./i-cipher-agent.js').ExecutionContext;
|
|
60
|
+
mode?: 'autonomous' | 'default' | 'query';
|
|
61
|
+
}): Promise<string>;
|
|
62
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { TerminationReason } from '../../domain/cipher/agent/agent-state.js';
|
|
2
|
+
import type { SessionMetadata } from '../../domain/cipher/storage/history-types.js';
|
|
3
|
+
import type { ConversationMetadata } from '../../domain/cipher/system-prompt/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Execution context for the agent
|
|
6
|
+
* Contains runtime information about how the agent is being executed
|
|
7
|
+
*/
|
|
8
|
+
export interface ExecutionContext {
|
|
9
|
+
/** Command type that initiated the execution (for command-specific prompt loading) */
|
|
10
|
+
commandType?: 'curate' | 'query';
|
|
11
|
+
/** Metadata about the conversation (for JSON input mode) */
|
|
12
|
+
conversationMetadata?: ConversationMetadata;
|
|
13
|
+
/** Whether running in JSON input mode (headless with conversation history) */
|
|
14
|
+
isJsonInputMode?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Agent execution state (string union for external consumers).
|
|
18
|
+
*/
|
|
19
|
+
export type AgentExecutionState = 'aborted' | 'complete' | 'error' | 'executing' | 'idle' | 'tool_calling';
|
|
20
|
+
/**
|
|
21
|
+
* Agent state information.
|
|
22
|
+
*
|
|
23
|
+
* Enhanced to include execution state, termination reason, timing,
|
|
24
|
+
* and tool metrics. Maintains backward compatibility with legacy fields.
|
|
25
|
+
*/
|
|
26
|
+
export interface AgentState {
|
|
27
|
+
/** Current iteration/turn count */
|
|
28
|
+
currentIteration: number;
|
|
29
|
+
/** Execution duration in milliseconds (if available) */
|
|
30
|
+
durationMs?: number;
|
|
31
|
+
/** End time of execution (if complete) */
|
|
32
|
+
endTime?: Date;
|
|
33
|
+
/** Legacy: execution history records */
|
|
34
|
+
executionHistory: string[];
|
|
35
|
+
/** Current execution state */
|
|
36
|
+
executionState: AgentExecutionState;
|
|
37
|
+
/** Start time of execution (if started) */
|
|
38
|
+
startTime?: Date;
|
|
39
|
+
/** Why the execution terminated (if complete) */
|
|
40
|
+
terminationReason?: TerminationReason;
|
|
41
|
+
/** Number of tool calls executed */
|
|
42
|
+
toolCallsExecuted: number;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Interface for the CipherAgent
|
|
46
|
+
* Provides an agentic execution layer on top of the LLM service
|
|
47
|
+
*/
|
|
48
|
+
export interface ICipherAgent {
|
|
49
|
+
/**
|
|
50
|
+
* Delete a session completely (memory + history)
|
|
51
|
+
* @param sessionId - Session ID to delete
|
|
52
|
+
* @returns True if session existed and was deleted
|
|
53
|
+
*/
|
|
54
|
+
deleteSession(sessionId: string): Promise<boolean>;
|
|
55
|
+
/**
|
|
56
|
+
* Execute the agent with user input
|
|
57
|
+
* @param input - User input string
|
|
58
|
+
* @param sessionId - Optional session ID
|
|
59
|
+
* @returns Agent response
|
|
60
|
+
*/
|
|
61
|
+
execute(input: string, sessionId?: string): Promise<string>;
|
|
62
|
+
/**
|
|
63
|
+
* Get session metadata without loading full history
|
|
64
|
+
* @param sessionId - Session ID
|
|
65
|
+
* @returns Session metadata or undefined if not found
|
|
66
|
+
*/
|
|
67
|
+
getSessionMetadata(sessionId: string): Promise<SessionMetadata | undefined>;
|
|
68
|
+
/**
|
|
69
|
+
* Get current agent state
|
|
70
|
+
* @returns Current state information
|
|
71
|
+
*/
|
|
72
|
+
getState(): AgentState;
|
|
73
|
+
/**
|
|
74
|
+
* List all persisted session IDs from history storage
|
|
75
|
+
* @returns Array of session IDs
|
|
76
|
+
*/
|
|
77
|
+
listPersistedSessions(): Promise<string[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Reset the agent to initial state
|
|
80
|
+
* Clears execution history and resets iteration counter
|
|
81
|
+
*/
|
|
82
|
+
reset(): void;
|
|
83
|
+
/**
|
|
84
|
+
* Start the agent - initializes all services asynchronously
|
|
85
|
+
* Must be called before execute()
|
|
86
|
+
*/
|
|
87
|
+
start(): Promise<void>;
|
|
88
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { CleanSession } from '../../domain/entities/parser.js';
|
|
2
|
+
import { Agent } from '../../domain/entities/agent.js';
|
|
3
|
+
/**
|
|
4
|
+
* Interface for parsing coding agent log files.
|
|
5
|
+
* Implementations use the raw/clean parser pipeline to process log files
|
|
6
|
+
* from various coding agents (Claude Code, GitHub Copilot, Cursor, Codex, etc.).
|
|
7
|
+
*/
|
|
8
|
+
export interface ICodingAgentLogParser {
|
|
9
|
+
/**
|
|
10
|
+
* Parses coding agent log files using the configured IDE and chat log path.
|
|
11
|
+
*
|
|
12
|
+
* This method follows the two-phase raw/clean parser pipeline:
|
|
13
|
+
* 1. Raw Phase: Parse IDE-specific files, write to .brv/logs/{ide}/raw/
|
|
14
|
+
* 2. Clean Phase: Read from .brv/logs/{ide}/raw/, normalize to CleanSession format
|
|
15
|
+
*
|
|
16
|
+
* @returns A promise that resolves to a frozen array of CleanSession objects
|
|
17
|
+
* @throws Error if parsing fails at any phase
|
|
18
|
+
*/
|
|
19
|
+
parse: (chatLogPath: string, ide: Agent) => Promise<readonly CleanSession[]>;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CleanSession } from '../../domain/entities/parser.js';
|
|
2
|
+
import { Agent } from '../../domain/entities/agent.js';
|
|
3
|
+
/** Options for starting the coding agent log watcher. */
|
|
4
|
+
export type CodingAgentLogWatcherOptions = {
|
|
5
|
+
codingAgentInfo: {
|
|
6
|
+
chatLogPath: string;
|
|
7
|
+
name: Agent;
|
|
8
|
+
};
|
|
9
|
+
/** Callback invoked when sessions are parsed from log files */
|
|
10
|
+
onCleanSession: (cleanSession: CleanSession) => Promise<void>;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Interface for watching coding agent log files and processing sessions.
|
|
14
|
+
* Implementations should handle the first watch (process existing files) differently from subsequent watches (only new/changed files).
|
|
15
|
+
*/
|
|
16
|
+
export interface ICodingAgentLogWatcher {
|
|
17
|
+
/**
|
|
18
|
+
* Checks if the watcher is currently active.
|
|
19
|
+
* @returns true if watching, false otherwise.
|
|
20
|
+
*/
|
|
21
|
+
isWatching: () => boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Starts watching the specified paths for coding agent log files.
|
|
24
|
+
* On initial start, processes existing files. Subsequent watches only process new or changed files.
|
|
25
|
+
* @param options Configuration options including paths and callback
|
|
26
|
+
* @throws Error if already watching or if paths are invalid
|
|
27
|
+
*/
|
|
28
|
+
start: (options: CodingAgentLogWatcherOptions) => Promise<void>;
|
|
29
|
+
/** Stops watching for file changes and cleans up resources */
|
|
30
|
+
stop: () => Promise<void>;
|
|
31
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Generator interface for LLM providers.
|
|
3
|
+
*
|
|
4
|
+
* This interface provides a unified abstraction for all LLM backends,
|
|
5
|
+
* enabling the decorator pattern for cross-cutting concerns like:
|
|
6
|
+
* - Logging
|
|
7
|
+
* - Retry with backoff
|
|
8
|
+
* - Recording/replay (future)
|
|
9
|
+
*
|
|
10
|
+
* Based on gemini-cli's ContentGenerator pattern.
|
|
11
|
+
*/
|
|
12
|
+
import type { ToolSet } from '../../domain/cipher/tools/types.js';
|
|
13
|
+
import type { ExecutionContext } from './i-cipher-agent.js';
|
|
14
|
+
import type { InternalMessage, ToolCall } from './message-types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Configuration for content generation.
|
|
17
|
+
*/
|
|
18
|
+
export interface GenerationConfig {
|
|
19
|
+
/** Maximum tokens in the response */
|
|
20
|
+
maxTokens?: number;
|
|
21
|
+
/** Temperature for randomness (0-1) */
|
|
22
|
+
temperature?: number;
|
|
23
|
+
/** Top-K sampling parameter */
|
|
24
|
+
topK?: number;
|
|
25
|
+
/** Top-P (nucleus) sampling parameter */
|
|
26
|
+
topP?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Request to generate content from an LLM.
|
|
30
|
+
*/
|
|
31
|
+
export interface GenerateContentRequest {
|
|
32
|
+
/** Generation configuration */
|
|
33
|
+
config: GenerationConfig;
|
|
34
|
+
/** Conversation history */
|
|
35
|
+
contents: InternalMessage[];
|
|
36
|
+
/** Optional execution context (for autonomous mode, etc.) */
|
|
37
|
+
executionContext?: ExecutionContext;
|
|
38
|
+
/** Optional mode for system prompt ('autonomous' enables autonomous mode) */
|
|
39
|
+
mode?: 'autonomous' | 'default' | 'query';
|
|
40
|
+
/** Model identifier */
|
|
41
|
+
model: string;
|
|
42
|
+
/** Session identifier */
|
|
43
|
+
sessionId: string;
|
|
44
|
+
/** Optional system prompt */
|
|
45
|
+
systemPrompt?: string;
|
|
46
|
+
/** Available tools for function calling */
|
|
47
|
+
tools?: ToolSet;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Response from content generation.
|
|
51
|
+
*/
|
|
52
|
+
export interface GenerateContentResponse {
|
|
53
|
+
/** Generated text content */
|
|
54
|
+
content: string;
|
|
55
|
+
/** Reason why generation stopped */
|
|
56
|
+
finishReason: 'error' | 'max_tokens' | 'stop' | 'tool_calls';
|
|
57
|
+
/** Raw response from provider (for debugging) */
|
|
58
|
+
rawResponse?: unknown;
|
|
59
|
+
/** Tool calls requested by the model */
|
|
60
|
+
toolCalls?: ToolCall[];
|
|
61
|
+
/** Token usage statistics */
|
|
62
|
+
usage?: {
|
|
63
|
+
/** Tokens used for completion */
|
|
64
|
+
completionTokens: number;
|
|
65
|
+
/** Tokens used for prompt */
|
|
66
|
+
promptTokens: number;
|
|
67
|
+
/** Total tokens used */
|
|
68
|
+
totalTokens: number;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Chunk of streaming content generation.
|
|
73
|
+
*/
|
|
74
|
+
export interface GenerateContentChunk {
|
|
75
|
+
/** Incremental text content */
|
|
76
|
+
content?: string;
|
|
77
|
+
/** Reason why generation stopped (only on final chunk) */
|
|
78
|
+
finishReason?: 'error' | 'max_tokens' | 'stop' | 'tool_calls';
|
|
79
|
+
/** Whether this is the final chunk */
|
|
80
|
+
isComplete: boolean;
|
|
81
|
+
/** Tool calls (only on final chunk or when complete) */
|
|
82
|
+
toolCalls?: ToolCall[];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Content Generator interface.
|
|
86
|
+
*
|
|
87
|
+
* All LLM providers implement this interface, enabling:
|
|
88
|
+
* - Consistent API across providers
|
|
89
|
+
* - Decorator pattern for cross-cutting concerns
|
|
90
|
+
* - Easy testing with fake implementations
|
|
91
|
+
*/
|
|
92
|
+
export interface IContentGenerator {
|
|
93
|
+
/**
|
|
94
|
+
* Estimate tokens synchronously (fast, local).
|
|
95
|
+
*
|
|
96
|
+
* Uses a simple estimation algorithm for quick token counting.
|
|
97
|
+
* May not be perfectly accurate but is fast and doesn't require API calls.
|
|
98
|
+
*
|
|
99
|
+
* @param content - Text to estimate tokens for
|
|
100
|
+
* @returns Estimated token count
|
|
101
|
+
*/
|
|
102
|
+
estimateTokensSync(content: string): number;
|
|
103
|
+
/**
|
|
104
|
+
* Generate content (non-streaming).
|
|
105
|
+
*
|
|
106
|
+
* @param request - Generation request
|
|
107
|
+
* @returns Generated content response
|
|
108
|
+
*/
|
|
109
|
+
generateContent(request: GenerateContentRequest): Promise<GenerateContentResponse>;
|
|
110
|
+
/**
|
|
111
|
+
* Generate content with streaming.
|
|
112
|
+
*
|
|
113
|
+
* Yields chunks as they are generated, allowing for
|
|
114
|
+
* progressive display of responses.
|
|
115
|
+
*
|
|
116
|
+
* @param request - Generation request
|
|
117
|
+
* @returns Async generator yielding content chunks
|
|
118
|
+
*/
|
|
119
|
+
generateContentStream(request: GenerateContentRequest): AsyncGenerator<GenerateContentChunk>;
|
|
120
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content Generator interface for LLM providers.
|
|
3
|
+
*
|
|
4
|
+
* This interface provides a unified abstraction for all LLM backends,
|
|
5
|
+
* enabling the decorator pattern for cross-cutting concerns like:
|
|
6
|
+
* - Logging
|
|
7
|
+
* - Retry with backoff
|
|
8
|
+
* - Recording/replay (future)
|
|
9
|
+
*
|
|
10
|
+
* Based on gemini-cli's ContentGenerator pattern.
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options for event listener registration.
|
|
3
|
+
*/
|
|
4
|
+
export interface EventListenerOptions {
|
|
5
|
+
/**
|
|
6
|
+
* AbortSignal for automatic listener cleanup.
|
|
7
|
+
* When the signal is aborted, the listener will be automatically removed.
|
|
8
|
+
*/
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Type-safe event emitter interface.
|
|
13
|
+
*
|
|
14
|
+
* @template TEventMap - Map of event names to their payload types
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* interface MyEvents {
|
|
19
|
+
* 'user:login': { userId: string };
|
|
20
|
+
* 'user:logout': void;
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* const emitter: IEventEmitter<MyEvents> = ...;
|
|
24
|
+
*
|
|
25
|
+
* // Type-safe emission
|
|
26
|
+
* emitter.emit('user:login', { userId: '123' });
|
|
27
|
+
* emitter.emit('user:logout'); // No payload needed for void events
|
|
28
|
+
*
|
|
29
|
+
* // Type-safe listening
|
|
30
|
+
* emitter.on('user:login', (payload) => {
|
|
31
|
+
* console.log(payload.userId); // TypeScript knows payload type
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // AbortController cleanup
|
|
35
|
+
* const controller = new AbortController();
|
|
36
|
+
* emitter.on('user:login', handler, { signal: controller.signal });
|
|
37
|
+
* controller.abort(); // Automatically removes listener
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export interface IEventEmitter<TEventMap extends object> {
|
|
41
|
+
/**
|
|
42
|
+
* Emit an event with a payload.
|
|
43
|
+
*
|
|
44
|
+
* @param eventName - Name of the event to emit
|
|
45
|
+
* @param payload - Event payload (type-checked against TEventMap)
|
|
46
|
+
* @returns true if the event had listeners, false otherwise
|
|
47
|
+
*/
|
|
48
|
+
emit<K extends keyof TEventMap>(eventName: K, ...payload: TEventMap[K] extends void ? [] : [TEventMap[K]]): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Remove an event listener.
|
|
51
|
+
*
|
|
52
|
+
* @param eventName - Name of the event
|
|
53
|
+
* @param listener - Callback function to remove
|
|
54
|
+
* @returns this (for chaining)
|
|
55
|
+
*/
|
|
56
|
+
off<K extends keyof TEventMap>(eventName: K, listener: TEventMap[K] extends void ? () => void : (payload: TEventMap[K]) => void): this;
|
|
57
|
+
/**
|
|
58
|
+
* Register an event listener.
|
|
59
|
+
*
|
|
60
|
+
* @param eventName - Name of the event to listen for
|
|
61
|
+
* @param listener - Callback function (receives typed payload)
|
|
62
|
+
* @param options - Listener options (e.g., AbortSignal for cleanup)
|
|
63
|
+
* @returns this (for chaining)
|
|
64
|
+
*/
|
|
65
|
+
on<K extends keyof TEventMap>(eventName: K, listener: TEventMap[K] extends void ? () => void : (payload: TEventMap[K]) => void, options?: EventListenerOptions): this;
|
|
66
|
+
/**
|
|
67
|
+
* Register a one-time event listener.
|
|
68
|
+
* The listener will be automatically removed after the first invocation.
|
|
69
|
+
*
|
|
70
|
+
* @param eventName - Name of the event to listen for
|
|
71
|
+
* @param listener - Callback function (receives typed payload)
|
|
72
|
+
* @param options - Listener options (e.g., AbortSignal for cleanup)
|
|
73
|
+
* @returns this (for chaining)
|
|
74
|
+
*/
|
|
75
|
+
once<K extends keyof TEventMap>(eventName: K, listener: TEventMap[K] extends void ? () => void : (payload: TEventMap[K]) => void, options?: EventListenerOptions): this;
|
|
76
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { EditFileOptions, EditOperation, EditResult, FileContent, GlobOptions, GlobResult, ReadFileOptions, SearchOptions, SearchResult, WriteFileOptions, WriteResult } from '../../domain/cipher/file-system/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for file system operations.
|
|
4
|
+
* Provides secure, validated access to the file system with comprehensive
|
|
5
|
+
* path validation, size limits, and allow/block list enforcement.
|
|
6
|
+
*/
|
|
7
|
+
export interface IFileSystem {
|
|
8
|
+
/**
|
|
9
|
+
* Edit a file by replacing strings.
|
|
10
|
+
* Supports single replacement (requires unique match) or replace-all.
|
|
11
|
+
*
|
|
12
|
+
* @param filePath - Path to the file (relative or absolute)
|
|
13
|
+
* @param operation - Edit operation (old string, new string, replace-all flag)
|
|
14
|
+
* @param options - Edit options (encoding)
|
|
15
|
+
* @returns Edit result with replacements count and bytes written
|
|
16
|
+
* @throws FileNotFoundError if file doesn't exist
|
|
17
|
+
* @throws StringNotFoundError if old string not found
|
|
18
|
+
* @throws StringNotUniqueError if old string appears multiple times (and replaceAll=false)
|
|
19
|
+
*/
|
|
20
|
+
editFile(filePath: string, operation: EditOperation, options?: EditFileOptions): Promise<EditResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Find files matching a glob pattern.
|
|
23
|
+
*
|
|
24
|
+
* @param pattern - Glob pattern (e.g., src/\*\*\/\*.ts, \*.json)
|
|
25
|
+
* @param options - Glob options (cwd, max results, metadata)
|
|
26
|
+
* @returns Glob result with matched files and metadata
|
|
27
|
+
* @throws InvalidPatternError if pattern is invalid
|
|
28
|
+
*/
|
|
29
|
+
globFiles(pattern: string, options?: GlobOptions): Promise<GlobResult>;
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the file system service.
|
|
32
|
+
* Performs setup and validation of configuration.
|
|
33
|
+
*/
|
|
34
|
+
initialize(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Read the contents of a file.
|
|
37
|
+
*
|
|
38
|
+
* @param filePath - Path to the file (relative or absolute)
|
|
39
|
+
* @param options - Read options (pagination, encoding)
|
|
40
|
+
* @returns File content with metadata
|
|
41
|
+
* @throws FileNotFoundError if file doesn't exist
|
|
42
|
+
* @throws PathNotAllowedError if path is not in allowed paths
|
|
43
|
+
* @throws FileTooLargeError if file exceeds size limit
|
|
44
|
+
*/
|
|
45
|
+
readFile(filePath: string, options?: ReadFileOptions): Promise<FileContent>;
|
|
46
|
+
/**
|
|
47
|
+
* Search file contents for a pattern.
|
|
48
|
+
* Supports regex patterns and context lines.
|
|
49
|
+
*
|
|
50
|
+
* @param pattern - Search pattern (regex)
|
|
51
|
+
* @param options - Search options (glob filter, cwd, max results, context lines, case sensitivity)
|
|
52
|
+
* @returns Search result with matches and context
|
|
53
|
+
* @throws InvalidPatternError if pattern is invalid regex
|
|
54
|
+
*/
|
|
55
|
+
searchContent(pattern: string, options?: SearchOptions): Promise<SearchResult>;
|
|
56
|
+
/**
|
|
57
|
+
* Write content to a file.
|
|
58
|
+
* Overwrites existing files. Can create parent directories if requested.
|
|
59
|
+
*
|
|
60
|
+
* @param filePath - Path to the file (relative or absolute)
|
|
61
|
+
* @param content - Content to write
|
|
62
|
+
* @param options - Write options (directory creation, encoding)
|
|
63
|
+
* @returns Write result with path and bytes written
|
|
64
|
+
* @throws PathNotAllowedError if path is not in allowed paths
|
|
65
|
+
* @throws InvalidExtensionError if file has blocked extension
|
|
66
|
+
*/
|
|
67
|
+
writeFile(filePath: string, content: string, options?: WriteFileOptions): Promise<WriteResult>;
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|