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,271 @@
|
|
|
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 { readdir, readFile } from 'node:fs/promises';
|
|
7
|
+
import path from 'node:path';
|
|
8
|
+
import { normalizeClaudeSession } from './shared.js';
|
|
9
|
+
/**
|
|
10
|
+
* Claude Clean Service
|
|
11
|
+
* Transforms Claude raw parsed sessions to clean normalized format
|
|
12
|
+
*/
|
|
13
|
+
export class ClaudeCleanService {
|
|
14
|
+
ide;
|
|
15
|
+
/**
|
|
16
|
+
* Initialize Claude Clean Service
|
|
17
|
+
*
|
|
18
|
+
* @param ide - The IDE type (Claude Code)
|
|
19
|
+
*/
|
|
20
|
+
constructor(ide) {
|
|
21
|
+
this.ide = ide;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parse and transform raw Claude sessions to clean normalized format
|
|
25
|
+
*
|
|
26
|
+
* Reads raw sessions organized by workspace, consolidates agent sessions into main
|
|
27
|
+
* conversations, and normalizes message format. Returns sessions in-memory without file writing.
|
|
28
|
+
*
|
|
29
|
+
* @param rawDir - Path to directory containing raw Claude session files organized by workspace
|
|
30
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
31
|
+
*/
|
|
32
|
+
/* eslint-disable no-await-in-loop */
|
|
33
|
+
async parse(rawDir) {
|
|
34
|
+
console.log('🔍 Starting Claude clean transformation...');
|
|
35
|
+
console.log(`📁 Raw directory: ${rawDir}`);
|
|
36
|
+
try {
|
|
37
|
+
const entries = await readdir(rawDir);
|
|
38
|
+
const allCleanSessions = [];
|
|
39
|
+
for (const entry of entries) {
|
|
40
|
+
const workspacePath = path.join(rawDir, entry);
|
|
41
|
+
const files = await readdir(workspacePath);
|
|
42
|
+
const jsonFiles = files.filter((f) => f.endsWith('.json') && f !== 'summary.json');
|
|
43
|
+
if (jsonFiles.length === 0)
|
|
44
|
+
continue;
|
|
45
|
+
const { agentSessions, allSessions } = await this.loadSessions(workspacePath, jsonFiles);
|
|
46
|
+
const cleanedSession = await this.processMainSessions(allSessions, agentSessions);
|
|
47
|
+
allCleanSessions.push(...cleanedSession);
|
|
48
|
+
}
|
|
49
|
+
console.log(`\n🎉 Claude clean transformation complete! ${allCleanSessions.length} sessions processed`);
|
|
50
|
+
return Object.freeze(allCleanSessions);
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
console.error('❌ Error during transformation:', error instanceof Error ? error.message : 'Unknown error');
|
|
54
|
+
return Object.freeze([]);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/* eslint-enable no-await-in-loop */
|
|
58
|
+
/**
|
|
59
|
+
* Calculate string similarity score using word overlap method
|
|
60
|
+
*
|
|
61
|
+
* Computes similarity by comparing words with length > 3 characters.
|
|
62
|
+
* Returns fraction of matching words relative to max length.
|
|
63
|
+
*
|
|
64
|
+
* @param str1 - First string to compare
|
|
65
|
+
* @param str2 - Second string to compare
|
|
66
|
+
* @returns Similarity score between 0 (no match) and 1 (perfect match)
|
|
67
|
+
*/
|
|
68
|
+
calculateSimilarity(str1, str2) {
|
|
69
|
+
const words1 = str1
|
|
70
|
+
.toLowerCase()
|
|
71
|
+
.split(/\s+/)
|
|
72
|
+
.filter((w) => w.length > 3);
|
|
73
|
+
const words2 = str2
|
|
74
|
+
.toLowerCase()
|
|
75
|
+
.split(/\s+/)
|
|
76
|
+
.filter((w) => w.length > 3);
|
|
77
|
+
if (words1.length === 0 || words2.length === 0)
|
|
78
|
+
return 0;
|
|
79
|
+
const matches = words1.filter((w) => words2.some((w2) => w2.includes(w) || w.includes(w2)));
|
|
80
|
+
return matches.length / Math.max(words1.length, words2.length);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Consolidate agent session data into main conversation
|
|
84
|
+
*
|
|
85
|
+
* When main conversation contains Task subagent invocation, flattens the agent
|
|
86
|
+
* session messages into the main message stream. Two-pass algorithm: first identify
|
|
87
|
+
* Task invocations with matching agent sessions, then insert agent messages.
|
|
88
|
+
*
|
|
89
|
+
* @param mainSession - Main Claude conversation session to consolidate into
|
|
90
|
+
* @param agentSessions - Map of agent sessions keyed by agent session ID
|
|
91
|
+
* @returns Promise resolving to consolidated session with agent messages merged
|
|
92
|
+
*/
|
|
93
|
+
async consolidateAgentSessions(mainSession, agentSessions) {
|
|
94
|
+
if (!mainSession.messages || mainSession.messages.length === 0) {
|
|
95
|
+
return mainSession;
|
|
96
|
+
}
|
|
97
|
+
// First pass: identify Task tool_use invocations that have matching agent sessions
|
|
98
|
+
const taskToolUseIds = this.identifyTaskToolIds(mainSession.messages, agentSessions);
|
|
99
|
+
// Second pass: flatten messages, inserting agent messages after Task invocations
|
|
100
|
+
const newMessages = this.flattenMessagesWithAgentSessions(mainSession.messages, taskToolUseIds, agentSessions);
|
|
101
|
+
return {
|
|
102
|
+
...mainSession,
|
|
103
|
+
messages: newMessages,
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Find best matching agent session for a task description and timestamp
|
|
108
|
+
*
|
|
109
|
+
* Locates matching agent session using similarity scoring and timestamp proximity.
|
|
110
|
+
* Considers both task description similarity and temporal closeness (within 5 seconds).
|
|
111
|
+
*
|
|
112
|
+
* @param description - Task description from Task tool_use invocation
|
|
113
|
+
* @param messageTimestamp - Timestamp of message containing Task invocation
|
|
114
|
+
* @param agentSessions - Map of available agent sessions
|
|
115
|
+
* @returns Matching agent session or null if no good match found
|
|
116
|
+
*/
|
|
117
|
+
findMatchingAgentSession(description, messageTimestamp, agentSessions) {
|
|
118
|
+
let matchedAgent = null;
|
|
119
|
+
let bestScore = 0.2; // Minimum similarity threshold
|
|
120
|
+
for (const agentSession of agentSessions.values()) {
|
|
121
|
+
const agentTitle = agentSession.title || '';
|
|
122
|
+
const agentTimestamp = new Date(agentSession.timestamp).getTime();
|
|
123
|
+
// Calculate similarity score
|
|
124
|
+
let score = this.calculateSimilarity(description, agentTitle);
|
|
125
|
+
// Boost score for nearby timestamps (within 5 seconds)
|
|
126
|
+
const timeDiff = Math.abs(messageTimestamp - agentTimestamp);
|
|
127
|
+
if (timeDiff < 5000) {
|
|
128
|
+
score += 0.3;
|
|
129
|
+
}
|
|
130
|
+
// If this is the best match so far, use it
|
|
131
|
+
if (score > bestScore) {
|
|
132
|
+
bestScore = score;
|
|
133
|
+
matchedAgent = agentSession;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return matchedAgent;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Flatten messages with agent sessions inserted after Task invocations
|
|
140
|
+
*
|
|
141
|
+
* Inserts agent session messages into message stream after Task tool_use invocations
|
|
142
|
+
* that have matching agent sessions. Preserves message order.
|
|
143
|
+
*
|
|
144
|
+
* @param messages - Array of raw session messages
|
|
145
|
+
* @param taskToolUseIds - Set of Task tool_use IDs that have matching agent sessions
|
|
146
|
+
* @param agentSessions - Map of available agent sessions
|
|
147
|
+
* @returns Flattened message array with agent messages interleaved
|
|
148
|
+
*/
|
|
149
|
+
flattenMessagesWithAgentSessions(messages, taskToolUseIds, agentSessions) {
|
|
150
|
+
const newMessages = [];
|
|
151
|
+
for (const message of messages) {
|
|
152
|
+
newMessages.push(message);
|
|
153
|
+
if (message.type !== 'assistant' || !message.content || !Array.isArray(message.content)) {
|
|
154
|
+
continue;
|
|
155
|
+
}
|
|
156
|
+
for (const content of message.content) {
|
|
157
|
+
if (content.type !== 'tool_use' || content.name !== 'Task') {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
const contentId = content.id;
|
|
161
|
+
if (!taskToolUseIds.has(contentId)) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const taskInput = content.input || {};
|
|
165
|
+
const description = taskInput.description || '';
|
|
166
|
+
const messageTimestamp = new Date(message.timestamp).getTime();
|
|
167
|
+
const matchedAgent = this.findMatchingAgentSession(description, messageTimestamp, agentSessions);
|
|
168
|
+
if (matchedAgent && matchedAgent.messages && Array.isArray(matchedAgent.messages)) {
|
|
169
|
+
newMessages.push(...matchedAgent.messages);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return newMessages;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Identify Task tool_use IDs that have matching agent sessions
|
|
177
|
+
*
|
|
178
|
+
* Scans messages for Task tool_use invocations and identifies which ones
|
|
179
|
+
* have corresponding agent sessions that can be consolidated.
|
|
180
|
+
*
|
|
181
|
+
* @param messages - Array of session messages
|
|
182
|
+
* @param agentSessions - Map of available agent sessions
|
|
183
|
+
* @returns Set of tool_use IDs that have matching agent sessions
|
|
184
|
+
*/
|
|
185
|
+
identifyTaskToolIds(messages, agentSessions) {
|
|
186
|
+
const taskToolUseIds = new Set();
|
|
187
|
+
for (const message of messages) {
|
|
188
|
+
if (message.type !== 'assistant' || !message.content || !Array.isArray(message.content)) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
for (const content of message.content) {
|
|
192
|
+
if (content.type !== 'tool_use' || content.name !== 'Task') {
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
const taskInput = content.input || {};
|
|
196
|
+
const description = taskInput.description || '';
|
|
197
|
+
const messageTimestamp = new Date(message.timestamp).getTime();
|
|
198
|
+
const matchedAgent = this.findMatchingAgentSession(description, messageTimestamp, agentSessions);
|
|
199
|
+
if (matchedAgent && matchedAgent.messages) {
|
|
200
|
+
const contentId = content.id;
|
|
201
|
+
taskToolUseIds.add(contentId);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
return taskToolUseIds;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Load and organize sessions from workspace directory
|
|
209
|
+
*
|
|
210
|
+
* Reads JSON files from workspace directory and organizes them into main sessions
|
|
211
|
+
* and agent sessions based on filename prefix ('agent-' for agent sessions).
|
|
212
|
+
*
|
|
213
|
+
* @param workspacePath - Path to workspace directory containing session files
|
|
214
|
+
* @param jsonFiles - Array of JSON filenames to load
|
|
215
|
+
* @returns Promise resolving to object with separated agentSessions and allSessions maps
|
|
216
|
+
*/
|
|
217
|
+
async loadSessions(workspacePath, jsonFiles) {
|
|
218
|
+
const allSessions = new Map();
|
|
219
|
+
const agentSessions = new Map();
|
|
220
|
+
/* eslint-disable no-await-in-loop */
|
|
221
|
+
for (const file of jsonFiles) {
|
|
222
|
+
try {
|
|
223
|
+
const content = await readFile(path.join(workspacePath, file), 'utf8');
|
|
224
|
+
const session = JSON.parse(content);
|
|
225
|
+
const sessionId = file.replace('.json', '');
|
|
226
|
+
if (file.startsWith('agent-')) {
|
|
227
|
+
agentSessions.set(sessionId, session);
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
allSessions.set(sessionId, session);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
console.warn(`⚠️ Failed to read ${file}:`, error instanceof Error ? error.message : String(error));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/* eslint-enable no-await-in-loop */
|
|
238
|
+
return { agentSessions, allSessions };
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Process main sessions and return normalized outputs
|
|
242
|
+
*
|
|
243
|
+
* Consolidates agent sessions and normalizes each session.
|
|
244
|
+
* Returns normalized sessions in-memory without writing to disk.
|
|
245
|
+
*
|
|
246
|
+
* @param allSessions - Map of main sessions to process
|
|
247
|
+
* @param agentSessions - Map of available agent sessions for consolidation
|
|
248
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
249
|
+
*/
|
|
250
|
+
async processMainSessions(allSessions, agentSessions) {
|
|
251
|
+
const cleanedSessions = [];
|
|
252
|
+
/* eslint-disable no-await-in-loop */
|
|
253
|
+
for (const [sessionId, session] of allSessions) {
|
|
254
|
+
try {
|
|
255
|
+
// Consolidate agent sessions if any exist
|
|
256
|
+
let consolidatedSession = session;
|
|
257
|
+
if (agentSessions.size > 0) {
|
|
258
|
+
consolidatedSession = await this.consolidateAgentSessions(session, agentSessions);
|
|
259
|
+
}
|
|
260
|
+
const normalized = normalizeClaudeSession(consolidatedSession, 'Claude');
|
|
261
|
+
cleanedSessions.push(normalized);
|
|
262
|
+
console.log(` ✅ ${session.title}`);
|
|
263
|
+
}
|
|
264
|
+
catch (error) {
|
|
265
|
+
console.warn(`⚠️ Failed to transform ${sessionId}:`, error instanceof Error ? error.message : 'Unknown error');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/* eslint-enable no-await-in-loop */
|
|
269
|
+
return cleanedSessions;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Clean Service
|
|
3
|
+
* Transforms Codex raw parsed data to clean normalized format
|
|
4
|
+
*/
|
|
5
|
+
import type { CleanSession } from '../../../core/domain/entities/parser.js';
|
|
6
|
+
import { Agent } from '../../../core/domain/entities/agent.js';
|
|
7
|
+
import { ICleanParserService } from '../../../core/interfaces/parser/i-clean-parser-service.js';
|
|
8
|
+
/**
|
|
9
|
+
* Codex Clean Service
|
|
10
|
+
* Transforms Codex raw parsed sessions to clean normalized format
|
|
11
|
+
*/
|
|
12
|
+
export declare class CodexCleanService implements ICleanParserService {
|
|
13
|
+
private ide;
|
|
14
|
+
constructor(ide: Agent);
|
|
15
|
+
/**
|
|
16
|
+
* Parse and transform Codex raw sessions to clean normalized format
|
|
17
|
+
*
|
|
18
|
+
* Reads Codex raw session files organized by date, transforms them to a unified
|
|
19
|
+
* format, and returns the normalized sessions. Each session is processed using
|
|
20
|
+
* Codex-specific transformation logic. Returns sessions in-memory without file writing.
|
|
21
|
+
*
|
|
22
|
+
* @param rawDir - Absolute path to the directory containing raw Codex session files organized by date
|
|
23
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
24
|
+
*/
|
|
25
|
+
parse(rawDir: string): Promise<readonly CleanSession[]>;
|
|
26
|
+
/**
|
|
27
|
+
* Extract tool execution output from Codex payload
|
|
28
|
+
*
|
|
29
|
+
* Attempts to parse the output field from a tool execution payload. Handles both
|
|
30
|
+
* stringified JSON output and direct string/object output. Returns the extracted
|
|
31
|
+
* output or nested output data if present.
|
|
32
|
+
*
|
|
33
|
+
* @param payload - Tool execution payload object containing output field
|
|
34
|
+
* @returns Extracted output as object or string, empty string if parsing fails
|
|
35
|
+
*/
|
|
36
|
+
private extractToolOutput;
|
|
37
|
+
/**
|
|
38
|
+
* Extract workspace paths from a Codex payload entry
|
|
39
|
+
*
|
|
40
|
+
* Searches payload for workspace path information in two locations:
|
|
41
|
+
* 1. Direct cwd (current working directory) field
|
|
42
|
+
* 2. writable_roots field (either direct or nested in sandbox_policy)
|
|
43
|
+
* Handles both string and array values for writable_roots.
|
|
44
|
+
*
|
|
45
|
+
* @param payload - Codex payload object to extract paths from
|
|
46
|
+
* @returns Array of workspace path strings found in the payload
|
|
47
|
+
*/
|
|
48
|
+
private extractWorkspacePathsFromPayload;
|
|
49
|
+
/**
|
|
50
|
+
* Normalize a Codex content block to unified ContentBlock format
|
|
51
|
+
*
|
|
52
|
+
* Transforms Codex-specific content block formats to standardized format.
|
|
53
|
+
* Handles multiple block types:
|
|
54
|
+
* - String blocks → text blocks
|
|
55
|
+
* - input_text/output_text → text blocks
|
|
56
|
+
* - thinking blocks
|
|
57
|
+
* - tool_use blocks
|
|
58
|
+
* - tool_result blocks
|
|
59
|
+
* Returns null for invalid or unrecognized blocks.
|
|
60
|
+
*
|
|
61
|
+
* @param block - Codex content block to normalize (string, object, or other)
|
|
62
|
+
* @returns Normalized ContentBlock or null if block is invalid
|
|
63
|
+
*/
|
|
64
|
+
private normalizeCodexContentBlock;
|
|
65
|
+
/**
|
|
66
|
+
* Normalize Codex session data to unified session format
|
|
67
|
+
*
|
|
68
|
+
* Transforms raw Codex session structure to standardized format:
|
|
69
|
+
* 1. Extracts session metadata from session_meta entry
|
|
70
|
+
* 2. Transforms rawEntries to normalized messages
|
|
71
|
+
* 3. Extracts unique workspace paths from all entries
|
|
72
|
+
* 4. Combines tool use/result messages
|
|
73
|
+
* 5. Assigns turn IDs
|
|
74
|
+
*
|
|
75
|
+
* @param session - Raw Codex session object with rawEntries and metadata
|
|
76
|
+
* @returns Normalized session object with messages, metadata, and workspace paths
|
|
77
|
+
*/
|
|
78
|
+
private normalizeCodexSession;
|
|
79
|
+
/**
|
|
80
|
+
* Normalize input_text or output_text blocks to standard text format
|
|
81
|
+
*
|
|
82
|
+
* Extracts text content from Codex input_text or output_text blocks and
|
|
83
|
+
* converts them to the unified text content block format.
|
|
84
|
+
*
|
|
85
|
+
* @param blockObj - Codex input/output text block object
|
|
86
|
+
* @returns TextContentBlock with extracted text content
|
|
87
|
+
*/
|
|
88
|
+
private normalizeInputTextBlock;
|
|
89
|
+
/**
|
|
90
|
+
* Normalize standard text content blocks
|
|
91
|
+
*
|
|
92
|
+
* Extracts text field from a content block object and returns it in
|
|
93
|
+
* the standardized text content block format.
|
|
94
|
+
*
|
|
95
|
+
* @param blockObj - Content block object with text field
|
|
96
|
+
* @returns TextContentBlock with extracted text content
|
|
97
|
+
*/
|
|
98
|
+
private normalizeTextBlock;
|
|
99
|
+
/**
|
|
100
|
+
* Normalize thinking content blocks
|
|
101
|
+
*
|
|
102
|
+
* Extracts thinking content from block object, using either the thinking field
|
|
103
|
+
* or falling back to text field. Returns standardized thinking content block.
|
|
104
|
+
*
|
|
105
|
+
* @param blockObj - Content block object with thinking or text field
|
|
106
|
+
* @returns ThinkingContentBlock with extracted thinking content
|
|
107
|
+
*/
|
|
108
|
+
private normalizeThinkingBlock;
|
|
109
|
+
/**
|
|
110
|
+
* Normalize tool result content blocks
|
|
111
|
+
*
|
|
112
|
+
* Extracts tool result data from block object, mapping content and tool_use_id
|
|
113
|
+
* fields to the standardized tool result format.
|
|
114
|
+
*
|
|
115
|
+
* @param blockObj - Tool result block object with content and tool_use_id
|
|
116
|
+
* @returns ToolResultContentBlock with extracted result data
|
|
117
|
+
*/
|
|
118
|
+
private normalizeToolResultBlock;
|
|
119
|
+
/**
|
|
120
|
+
* Normalize tool use content blocks
|
|
121
|
+
*
|
|
122
|
+
* Extracts tool invocation data from block object, mapping id, name, input,
|
|
123
|
+
* and tool_use_id fields to the standardized tool use format.
|
|
124
|
+
*
|
|
125
|
+
* @param blockObj - Tool use block object with tool invocation data
|
|
126
|
+
* @returns ToolUseContentBlock with extracted tool invocation data
|
|
127
|
+
*/
|
|
128
|
+
private normalizeToolUseBlock;
|
|
129
|
+
/**
|
|
130
|
+
* Parse tool input from payload supporting multiple Codex formats
|
|
131
|
+
*
|
|
132
|
+
* Extracts and normalizes tool input arguments from different payload formats:
|
|
133
|
+
* - custom_tool_call: wraps input in an object
|
|
134
|
+
* - function_call: parses arguments (string or object)
|
|
135
|
+
* Handles JSON parsing for stringified arguments with fallback to wrapped format.
|
|
136
|
+
*
|
|
137
|
+
* @param payload - Tool call payload with input or arguments field
|
|
138
|
+
* @returns Parsed tool input as object, empty object if no input found
|
|
139
|
+
*/
|
|
140
|
+
private parseToolInput;
|
|
141
|
+
/**
|
|
142
|
+
* Process message payload and append content blocks to array
|
|
143
|
+
*
|
|
144
|
+
* Extracts message content array from payload and processes each content block,
|
|
145
|
+
* appending normalized blocks to the provided content array.
|
|
146
|
+
*
|
|
147
|
+
* @param payload - Message payload object with content array
|
|
148
|
+
* @param content - Array to append processed content blocks to (modified in place)
|
|
149
|
+
*/
|
|
150
|
+
private processMessage;
|
|
151
|
+
/**
|
|
152
|
+
* Process and normalize message content blocks from array
|
|
153
|
+
*
|
|
154
|
+
* Iterates through message content array, normalizing each block to the
|
|
155
|
+
* unified ContentBlock format. Filters out any null results from normalization.
|
|
156
|
+
*
|
|
157
|
+
* @param msgContent - Array of raw message content blocks
|
|
158
|
+
* @returns Array of normalized ContentBlock objects
|
|
159
|
+
*/
|
|
160
|
+
private processMessageContent;
|
|
161
|
+
/**
|
|
162
|
+
* Process reasoning payload and append thinking blocks to content array
|
|
163
|
+
*
|
|
164
|
+
* Extracts summary array from reasoning payload and processes it into
|
|
165
|
+
* thinking content blocks, appending them to the provided content array.
|
|
166
|
+
*
|
|
167
|
+
* @param payload - Reasoning payload object with summary array
|
|
168
|
+
* @param content - Array to append thinking blocks to (modified in place)
|
|
169
|
+
*/
|
|
170
|
+
private processReasoning;
|
|
171
|
+
/**
|
|
172
|
+
* Process reasoning summary into thinking content blocks
|
|
173
|
+
*
|
|
174
|
+
* Extracts text from summary_text type blocks in the summary array and
|
|
175
|
+
* converts them to thinking content blocks.
|
|
176
|
+
*
|
|
177
|
+
* @param summary - Array of summary blocks from reasoning payload
|
|
178
|
+
* @returns Array of ThinkingContentBlock objects extracted from summary
|
|
179
|
+
*/
|
|
180
|
+
private processReasoningContent;
|
|
181
|
+
/**
|
|
182
|
+
* Process Codex response item into a CleanMessage
|
|
183
|
+
*
|
|
184
|
+
* Transforms a Codex raw entry (response_item) into a normalized message.
|
|
185
|
+
* Handles different item types:
|
|
186
|
+
* - custom_tool_call/function_call → tool use blocks (assistant)
|
|
187
|
+
* - custom_tool_call_output/function_call_output → tool result blocks (assistant)
|
|
188
|
+
* - message → text content (user or assistant based on role)
|
|
189
|
+
* - reasoning → thinking blocks (assistant)
|
|
190
|
+
* Returns null if no content blocks are generated.
|
|
191
|
+
*
|
|
192
|
+
* @param item - Codex raw entry to process
|
|
193
|
+
* @returns CleanMessage with type, content, and timestamp, or null if no content
|
|
194
|
+
*/
|
|
195
|
+
private processResponseItem;
|
|
196
|
+
/**
|
|
197
|
+
* Process tool call payload and append tool use block to content
|
|
198
|
+
*
|
|
199
|
+
* Parses tool input from payload and creates a tool_use content block with
|
|
200
|
+
* call ID, input, and tool name. Appends the block to the provided array.
|
|
201
|
+
*
|
|
202
|
+
* @param payload - Tool call payload with name, input/arguments, and call_id
|
|
203
|
+
* @param content - Array to append tool use block to (modified in place)
|
|
204
|
+
*/
|
|
205
|
+
private processToolCall;
|
|
206
|
+
/**
|
|
207
|
+
* Process tool output payload and append tool result block to content
|
|
208
|
+
*
|
|
209
|
+
* Extracts tool execution output from payload and creates a tool_result
|
|
210
|
+
* content block with the output content and tool_use_id. Appends the block
|
|
211
|
+
* to the provided array.
|
|
212
|
+
*
|
|
213
|
+
* @param payload - Tool output payload with output field and call_id
|
|
214
|
+
* @param content - Array to append tool result block to (modified in place)
|
|
215
|
+
*/
|
|
216
|
+
private processToolOutput;
|
|
217
|
+
/**
|
|
218
|
+
* Transform Codex rawEntries to unified message format with turn IDs
|
|
219
|
+
*
|
|
220
|
+
* Performs complete transformation pipeline:
|
|
221
|
+
* 1. Filters out event_msg and turn_context entries
|
|
222
|
+
* 2. Processes each response_item into a message
|
|
223
|
+
* 3. Sorts messages by timestamp
|
|
224
|
+
* 4. Combines tool_use and tool_result messages
|
|
225
|
+
* 5. Assigns turn IDs to all messages
|
|
226
|
+
*
|
|
227
|
+
* @param rawEntries - Array of Codex raw entries from session
|
|
228
|
+
* @returns Array of CleanMessage objects with turn IDs and combined tool blocks
|
|
229
|
+
*/
|
|
230
|
+
private transformCodexEntries;
|
|
231
|
+
}
|