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,46 @@
|
|
|
1
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { CONTEXT_TREE_DOMAINS } from '../../config/context-tree-domains.js';
|
|
4
|
+
import { BRV_DIR, CONTEXT_FILE, CONTEXT_TREE_DIR } from '../../constants.js';
|
|
5
|
+
/**
|
|
6
|
+
* File-based implementation of IContextTreeService.
|
|
7
|
+
* Provides operations for managing the context tree structure.
|
|
8
|
+
*/
|
|
9
|
+
export class FileContextTreeService {
|
|
10
|
+
config;
|
|
11
|
+
constructor(config = {}) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
}
|
|
14
|
+
async exists(directory) {
|
|
15
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
16
|
+
const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
|
|
17
|
+
try {
|
|
18
|
+
// Check if context tree directory exists
|
|
19
|
+
const { access } = await import('node:fs/promises');
|
|
20
|
+
await access(contextTreeDir);
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async initialize(directory) {
|
|
28
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
29
|
+
const brvDir = join(baseDir, BRV_DIR);
|
|
30
|
+
const contextTreeDir = join(brvDir, CONTEXT_TREE_DIR);
|
|
31
|
+
// Create .brv/context-tree/ directory
|
|
32
|
+
await mkdir(contextTreeDir, { recursive: true });
|
|
33
|
+
// Create domain folders and context.md files in parallel
|
|
34
|
+
await Promise.all(CONTEXT_TREE_DOMAINS.map(async (domain) => {
|
|
35
|
+
const domainPath = join(contextTreeDir, domain.name);
|
|
36
|
+
await mkdir(domainPath, { recursive: true });
|
|
37
|
+
// Write context.md with domain description
|
|
38
|
+
const contextMdPath = join(domainPath, CONTEXT_FILE);
|
|
39
|
+
const contextContent = `# ${domain.name.replaceAll('_', ' ').replaceAll(/\b\w/g, (c) => c.toUpperCase())}\n\n${domain.description}\n`;
|
|
40
|
+
await writeFile(contextMdPath, contextContent, 'utf8');
|
|
41
|
+
}));
|
|
42
|
+
// Note: index.json is no longer created as it's not actively used
|
|
43
|
+
// Context tree uses filesystem-based discovery instead
|
|
44
|
+
return contextTreeDir;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { IContextTreeSnapshotService } from '../../core/interfaces/i-context-tree-snapshot-service.js';
|
|
2
|
+
import { ContextTreeChanges, FileState } from '../../core/domain/entities/context-tree-snapshot.js';
|
|
3
|
+
export type ContextTreeSnapshotServiceConfig = {
|
|
4
|
+
baseDirectory?: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* File-based implementation of IContextTreeSnapshotService.
|
|
8
|
+
* Tracks context tree changes using content hashing.
|
|
9
|
+
*/
|
|
10
|
+
export declare class FileContextTreeSnapshotService implements IContextTreeSnapshotService {
|
|
11
|
+
private readonly config;
|
|
12
|
+
constructor(config?: ContextTreeSnapshotServiceConfig);
|
|
13
|
+
getChanges(directory?: string): Promise<ContextTreeChanges>;
|
|
14
|
+
getCurrentState(directory?: string): Promise<Map<string, FileState>>;
|
|
15
|
+
hasSnapshot(directory?: string): Promise<boolean>;
|
|
16
|
+
initEmptySnapshot(directory?: string): Promise<void>;
|
|
17
|
+
saveSnapshot(directory?: string): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Computes SHA-256 hash of file content.
|
|
20
|
+
*/
|
|
21
|
+
private computeHash;
|
|
22
|
+
/**
|
|
23
|
+
* Loads snapshot from file.
|
|
24
|
+
*/
|
|
25
|
+
private loadSnapshot;
|
|
26
|
+
/**
|
|
27
|
+
* Processes a single file and adds it to the files map.
|
|
28
|
+
*/
|
|
29
|
+
private processFile;
|
|
30
|
+
/**
|
|
31
|
+
* Recursively scans directory for files, excluding snapshot file.
|
|
32
|
+
*/
|
|
33
|
+
private scanDirectory;
|
|
34
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { readdir, readFile, stat, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { join, relative } from 'node:path';
|
|
4
|
+
import { BRV_DIR, CONTEXT_FILE, CONTEXT_TREE_DIR, SNAPSHOT_FILE } from '../../constants.js';
|
|
5
|
+
import { ContextTreeSnapshot, } from '../../core/domain/entities/context-tree-snapshot.js';
|
|
6
|
+
/**
|
|
7
|
+
* File-based implementation of IContextTreeSnapshotService.
|
|
8
|
+
* Tracks context tree changes using content hashing.
|
|
9
|
+
*/
|
|
10
|
+
export class FileContextTreeSnapshotService {
|
|
11
|
+
config;
|
|
12
|
+
constructor(config = {}) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
}
|
|
15
|
+
async getChanges(directory) {
|
|
16
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
17
|
+
const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
|
|
18
|
+
const snapshot = await this.loadSnapshot(contextTreeDir);
|
|
19
|
+
if (!snapshot) {
|
|
20
|
+
// No snapshot means everything is "new" but we return empty for clean status
|
|
21
|
+
return { added: [], deleted: [], modified: [] };
|
|
22
|
+
}
|
|
23
|
+
const currentState = await this.getCurrentState(directory);
|
|
24
|
+
return snapshot.compare(currentState);
|
|
25
|
+
}
|
|
26
|
+
async getCurrentState(directory) {
|
|
27
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
28
|
+
const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
|
|
29
|
+
const files = new Map();
|
|
30
|
+
try {
|
|
31
|
+
await this.scanDirectory(contextTreeDir, contextTreeDir, files);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Directory doesn't exist or can't be read
|
|
35
|
+
return files;
|
|
36
|
+
}
|
|
37
|
+
return files;
|
|
38
|
+
}
|
|
39
|
+
async hasSnapshot(directory) {
|
|
40
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
41
|
+
const snapshotPath = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR, SNAPSHOT_FILE);
|
|
42
|
+
try {
|
|
43
|
+
await stat(snapshotPath);
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async initEmptySnapshot(directory) {
|
|
51
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
52
|
+
const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
|
|
53
|
+
const snapshotPath = join(contextTreeDir, SNAPSHOT_FILE);
|
|
54
|
+
const emptySnapshot = ContextTreeSnapshot.create(new Map());
|
|
55
|
+
await writeFile(snapshotPath, JSON.stringify(emptySnapshot.toJson(), null, 2), 'utf8');
|
|
56
|
+
}
|
|
57
|
+
async saveSnapshot(directory) {
|
|
58
|
+
const baseDir = directory ?? this.config.baseDirectory ?? process.cwd();
|
|
59
|
+
const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
|
|
60
|
+
const snapshotPath = join(contextTreeDir, SNAPSHOT_FILE);
|
|
61
|
+
const currentState = await this.getCurrentState(directory);
|
|
62
|
+
const snapshot = ContextTreeSnapshot.create(currentState);
|
|
63
|
+
await writeFile(snapshotPath, JSON.stringify(snapshot.toJson(), null, 2), 'utf8');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Computes SHA-256 hash of file content.
|
|
67
|
+
*/
|
|
68
|
+
computeHash(content) {
|
|
69
|
+
return createHash('sha256').update(content).digest('hex');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Loads snapshot from file.
|
|
73
|
+
*/
|
|
74
|
+
async loadSnapshot(contextTreeDir) {
|
|
75
|
+
const snapshotPath = join(contextTreeDir, SNAPSHOT_FILE);
|
|
76
|
+
try {
|
|
77
|
+
const content = await readFile(snapshotPath, 'utf8');
|
|
78
|
+
const json = JSON.parse(content);
|
|
79
|
+
return ContextTreeSnapshot.fromJson(json) ?? null;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Processes a single file and adds it to the files map.
|
|
87
|
+
*/
|
|
88
|
+
async processFile(fullPath, rootDir, files) {
|
|
89
|
+
const relativePath = relative(rootDir, fullPath);
|
|
90
|
+
const [content, fileStat] = await Promise.all([readFile(fullPath), stat(fullPath)]);
|
|
91
|
+
files.set(relativePath, {
|
|
92
|
+
hash: this.computeHash(content),
|
|
93
|
+
size: fileStat.size,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Recursively scans directory for files, excluding snapshot file.
|
|
98
|
+
*/
|
|
99
|
+
async scanDirectory(currentDir, rootDir, files) {
|
|
100
|
+
const entries = await readdir(currentDir, { withFileTypes: true });
|
|
101
|
+
const tasks = [];
|
|
102
|
+
for (const entry of entries) {
|
|
103
|
+
const fullPath = join(currentDir, entry.name);
|
|
104
|
+
// Skip snapshot file
|
|
105
|
+
if (entry.name === SNAPSHOT_FILE) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (entry.isDirectory()) {
|
|
109
|
+
tasks.push(this.scanDirectory(fullPath, rootDir, files));
|
|
110
|
+
}
|
|
111
|
+
else if (entry.isFile() && entry.name === CONTEXT_FILE) {
|
|
112
|
+
tasks.push(this.processFile(fullPath, rootDir, files));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
await Promise.all(tasks);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { IContextTreeSnapshotService } from '../../core/interfaces/i-context-tree-snapshot-service.js';
|
|
2
|
+
import type { IContextTreeWriterService, SyncParams, SyncResult } from '../../core/interfaces/i-context-tree-writer-service.js';
|
|
3
|
+
export type ContextTreeWriterServiceConfig = {
|
|
4
|
+
baseDirectory?: string;
|
|
5
|
+
};
|
|
6
|
+
export type ContextTreeWriterServiceDependencies = {
|
|
7
|
+
snapshotService: IContextTreeSnapshotService;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* File-based implementation of IContextTreeWriterService.
|
|
11
|
+
* Synchronizes context tree files based on CoGit snapshot data.
|
|
12
|
+
*/
|
|
13
|
+
export declare class FileContextTreeWriterService implements IContextTreeWriterService {
|
|
14
|
+
private readonly config;
|
|
15
|
+
private readonly snapshotService;
|
|
16
|
+
constructor(dependencies: ContextTreeWriterServiceDependencies, config?: ContextTreeWriterServiceConfig);
|
|
17
|
+
sync(params: SyncParams): Promise<SyncResult>;
|
|
18
|
+
/**
|
|
19
|
+
* Normalizes a file path by removing leading slashes.
|
|
20
|
+
*/
|
|
21
|
+
private normalizePath;
|
|
22
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/* eslint-disable no-await-in-loop */
|
|
2
|
+
import { mkdir, readFile, unlink, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { BRV_DIR, CONTEXT_TREE_DIR } from '../../constants.js';
|
|
5
|
+
/**
|
|
6
|
+
* File-based implementation of IContextTreeWriterService.
|
|
7
|
+
* Synchronizes context tree files based on CoGit snapshot data.
|
|
8
|
+
*/
|
|
9
|
+
export class FileContextTreeWriterService {
|
|
10
|
+
config;
|
|
11
|
+
snapshotService;
|
|
12
|
+
constructor(dependencies, config = {}) {
|
|
13
|
+
this.snapshotService = dependencies.snapshotService;
|
|
14
|
+
this.config = config;
|
|
15
|
+
}
|
|
16
|
+
async sync(params) {
|
|
17
|
+
const baseDir = params.directory ?? this.config.baseDirectory ?? process.cwd();
|
|
18
|
+
const contextTreeDir = join(baseDir, BRV_DIR, CONTEXT_TREE_DIR);
|
|
19
|
+
// Get current local state
|
|
20
|
+
const localState = await this.snapshotService.getCurrentState(params.directory);
|
|
21
|
+
// Build map of remote files (normalize paths - remove leading /)
|
|
22
|
+
const remoteFiles = new Map(params.files.map((file) => [this.normalizePath(file.path), file]));
|
|
23
|
+
const added = [];
|
|
24
|
+
const edited = [];
|
|
25
|
+
const deleted = [];
|
|
26
|
+
// Process remote files: add or edit
|
|
27
|
+
for (const [remoteRelativePath, remoteFile] of remoteFiles) {
|
|
28
|
+
const fullPath = join(contextTreeDir, remoteRelativePath);
|
|
29
|
+
const decodedContent = remoteFile.decodeContent();
|
|
30
|
+
if (localState.has(remoteRelativePath)) {
|
|
31
|
+
// File exists locally - check if content differs
|
|
32
|
+
const localContent = await readFile(fullPath, 'utf8');
|
|
33
|
+
if (localContent !== decodedContent) {
|
|
34
|
+
await writeFile(fullPath, decodedContent, 'utf8');
|
|
35
|
+
edited.push(remoteRelativePath);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// New file - create parent directories and write
|
|
40
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
41
|
+
await writeFile(fullPath, decodedContent, 'utf8');
|
|
42
|
+
added.push(remoteRelativePath);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// Process deletions: local files not in remote
|
|
46
|
+
for (const localPath of localState.keys()) {
|
|
47
|
+
if (!remoteFiles.has(localPath)) {
|
|
48
|
+
const fullPath = join(contextTreeDir, localPath);
|
|
49
|
+
await unlink(fullPath);
|
|
50
|
+
deleted.push(localPath);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return { added, deleted, edited };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Normalizes a file path by removing leading slashes.
|
|
57
|
+
*/
|
|
58
|
+
normalizePath(path) {
|
|
59
|
+
return path.replace(/^\/+/, '');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Memory } from '../../core/domain/entities/memory.js';
|
|
2
2
|
import { RetrieveResult } from '../../core/domain/entities/retrieve-result.js';
|
|
3
|
+
import { getErrorMessage } from '../../utils/error-helpers.js';
|
|
3
4
|
import { AuthenticatedHttpClient } from '../http/authenticated-http-client.js';
|
|
4
5
|
/**
|
|
5
6
|
* HTTP implementation of IMemoryRetrievalService for ByteRover Memora service.
|
|
@@ -24,7 +25,7 @@ export class HttpMemoryRetrievalService {
|
|
|
24
25
|
return this.mapToRetrieveResult(response);
|
|
25
26
|
}
|
|
26
27
|
catch (error) {
|
|
27
|
-
throw new Error(`Failed to retrieve memories: ${error
|
|
28
|
+
throw new Error(`Failed to retrieve memories: ${getErrorMessage(error)}`);
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
buildQueryParams(params) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import axios from 'axios';
|
|
3
3
|
import { PresignedUrl } from '../../core/domain/entities/presigned-url.js';
|
|
4
4
|
import { PresignedUrlsResponse } from '../../core/domain/entities/presigned-urls-response.js';
|
|
5
|
+
import { getErrorMessage } from '../../utils/error-helpers.js';
|
|
5
6
|
import { AuthenticatedHttpClient } from '../http/authenticated-http-client.js';
|
|
6
7
|
/**
|
|
7
8
|
* HTTP implementation of IMemoryStorageService for ByteRover CoGit service.
|
|
@@ -27,7 +28,7 @@ export class HttpMemoryStorageService {
|
|
|
27
28
|
});
|
|
28
29
|
}
|
|
29
30
|
catch (error) {
|
|
30
|
-
throw new Error(`Failed to confirm upload: ${error
|
|
31
|
+
throw new Error(`Failed to confirm upload: ${getErrorMessage(error)}`);
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
async getPresignedUrls(params) {
|
|
@@ -45,7 +46,7 @@ export class HttpMemoryStorageService {
|
|
|
45
46
|
return new PresignedUrlsResponse(presignedUrls, response.data.request_id);
|
|
46
47
|
}
|
|
47
48
|
catch (error) {
|
|
48
|
-
throw new Error(`Failed to get presigned URLs: ${error
|
|
49
|
+
throw new Error(`Failed to get presigned URLs: ${getErrorMessage(error)}`);
|
|
49
50
|
}
|
|
50
51
|
}
|
|
51
52
|
async uploadFile(uploadUrl, content) {
|
|
@@ -58,7 +59,7 @@ export class HttpMemoryStorageService {
|
|
|
58
59
|
});
|
|
59
60
|
}
|
|
60
61
|
catch (error) {
|
|
61
|
-
throw new Error(`Failed to upload file: ${error
|
|
62
|
+
throw new Error(`Failed to upload file: ${getErrorMessage(error)}`);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
65
|
mapToPresignedUrls(presignedUrlData) {
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Clean Service
|
|
3
|
+
* Transforms Claude raw parsed data to clean normalized format
|
|
4
|
+
* Consolidates agent sessions and normalizes messages
|
|
5
|
+
*/
|
|
6
|
+
import type { CleanSession } from '../../../core/domain/entities/parser.js';
|
|
7
|
+
import { Agent } from '../../../core/domain/entities/agent.js';
|
|
8
|
+
import { ICleanParserService } from '../../../core/interfaces/parser/i-clean-parser-service.js';
|
|
9
|
+
/**
|
|
10
|
+
* Claude Clean Service
|
|
11
|
+
* Transforms Claude raw parsed sessions to clean normalized format
|
|
12
|
+
*/
|
|
13
|
+
export declare class ClaudeCleanService implements ICleanParserService {
|
|
14
|
+
private ide;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize Claude Clean Service
|
|
17
|
+
*
|
|
18
|
+
* @param ide - The IDE type (Claude Code)
|
|
19
|
+
*/
|
|
20
|
+
constructor(ide: Agent);
|
|
21
|
+
/**
|
|
22
|
+
* Parse and transform raw Claude sessions to clean normalized format
|
|
23
|
+
*
|
|
24
|
+
* Reads raw sessions organized by workspace, consolidates agent sessions into main
|
|
25
|
+
* conversations, and normalizes message format. Returns sessions in-memory without file writing.
|
|
26
|
+
*
|
|
27
|
+
* @param rawDir - Path to directory containing raw Claude session files organized by workspace
|
|
28
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
29
|
+
*/
|
|
30
|
+
parse(rawDir: string): Promise<readonly CleanSession[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Calculate string similarity score using word overlap method
|
|
33
|
+
*
|
|
34
|
+
* Computes similarity by comparing words with length > 3 characters.
|
|
35
|
+
* Returns fraction of matching words relative to max length.
|
|
36
|
+
*
|
|
37
|
+
* @param str1 - First string to compare
|
|
38
|
+
* @param str2 - Second string to compare
|
|
39
|
+
* @returns Similarity score between 0 (no match) and 1 (perfect match)
|
|
40
|
+
*/
|
|
41
|
+
private calculateSimilarity;
|
|
42
|
+
/**
|
|
43
|
+
* Consolidate agent session data into main conversation
|
|
44
|
+
*
|
|
45
|
+
* When main conversation contains Task subagent invocation, flattens the agent
|
|
46
|
+
* session messages into the main message stream. Two-pass algorithm: first identify
|
|
47
|
+
* Task invocations with matching agent sessions, then insert agent messages.
|
|
48
|
+
*
|
|
49
|
+
* @param mainSession - Main Claude conversation session to consolidate into
|
|
50
|
+
* @param agentSessions - Map of agent sessions keyed by agent session ID
|
|
51
|
+
* @returns Promise resolving to consolidated session with agent messages merged
|
|
52
|
+
*/
|
|
53
|
+
private consolidateAgentSessions;
|
|
54
|
+
/**
|
|
55
|
+
* Find best matching agent session for a task description and timestamp
|
|
56
|
+
*
|
|
57
|
+
* Locates matching agent session using similarity scoring and timestamp proximity.
|
|
58
|
+
* Considers both task description similarity and temporal closeness (within 5 seconds).
|
|
59
|
+
*
|
|
60
|
+
* @param description - Task description from Task tool_use invocation
|
|
61
|
+
* @param messageTimestamp - Timestamp of message containing Task invocation
|
|
62
|
+
* @param agentSessions - Map of available agent sessions
|
|
63
|
+
* @returns Matching agent session or null if no good match found
|
|
64
|
+
*/
|
|
65
|
+
private findMatchingAgentSession;
|
|
66
|
+
/**
|
|
67
|
+
* Flatten messages with agent sessions inserted after Task invocations
|
|
68
|
+
*
|
|
69
|
+
* Inserts agent session messages into message stream after Task tool_use invocations
|
|
70
|
+
* that have matching agent sessions. Preserves message order.
|
|
71
|
+
*
|
|
72
|
+
* @param messages - Array of raw session messages
|
|
73
|
+
* @param taskToolUseIds - Set of Task tool_use IDs that have matching agent sessions
|
|
74
|
+
* @param agentSessions - Map of available agent sessions
|
|
75
|
+
* @returns Flattened message array with agent messages interleaved
|
|
76
|
+
*/
|
|
77
|
+
private flattenMessagesWithAgentSessions;
|
|
78
|
+
/**
|
|
79
|
+
* Identify Task tool_use IDs that have matching agent sessions
|
|
80
|
+
*
|
|
81
|
+
* Scans messages for Task tool_use invocations and identifies which ones
|
|
82
|
+
* have corresponding agent sessions that can be consolidated.
|
|
83
|
+
*
|
|
84
|
+
* @param messages - Array of session messages
|
|
85
|
+
* @param agentSessions - Map of available agent sessions
|
|
86
|
+
* @returns Set of tool_use IDs that have matching agent sessions
|
|
87
|
+
*/
|
|
88
|
+
private identifyTaskToolIds;
|
|
89
|
+
/**
|
|
90
|
+
* Load and organize sessions from workspace directory
|
|
91
|
+
*
|
|
92
|
+
* Reads JSON files from workspace directory and organizes them into main sessions
|
|
93
|
+
* and agent sessions based on filename prefix ('agent-' for agent sessions).
|
|
94
|
+
*
|
|
95
|
+
* @param workspacePath - Path to workspace directory containing session files
|
|
96
|
+
* @param jsonFiles - Array of JSON filenames to load
|
|
97
|
+
* @returns Promise resolving to object with separated agentSessions and allSessions maps
|
|
98
|
+
*/
|
|
99
|
+
private loadSessions;
|
|
100
|
+
/**
|
|
101
|
+
* Process main sessions and return normalized outputs
|
|
102
|
+
*
|
|
103
|
+
* Consolidates agent sessions and normalizes each session.
|
|
104
|
+
* Returns normalized sessions in-memory without writing to disk.
|
|
105
|
+
*
|
|
106
|
+
* @param allSessions - Map of main sessions to process
|
|
107
|
+
* @param agentSessions - Map of available agent sessions for consolidation
|
|
108
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
109
|
+
*/
|
|
110
|
+
private processMainSessions;
|
|
111
|
+
}
|