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,534 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Codex Clean Service
|
|
3
|
+
* Transforms Codex raw parsed data to clean normalized format
|
|
4
|
+
*/
|
|
5
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { addTurnIds, combineToolResults, } from './shared.js';
|
|
8
|
+
/**
|
|
9
|
+
* Codex Clean Service
|
|
10
|
+
* Transforms Codex raw parsed sessions to clean normalized format
|
|
11
|
+
*/
|
|
12
|
+
export class CodexCleanService {
|
|
13
|
+
ide;
|
|
14
|
+
constructor(ide) {
|
|
15
|
+
this.ide = ide;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse and transform Codex raw sessions to clean normalized format
|
|
19
|
+
*
|
|
20
|
+
* Reads Codex raw session files organized by date, transforms them to a unified
|
|
21
|
+
* format, and returns the normalized sessions. Each session is processed using
|
|
22
|
+
* Codex-specific transformation logic. Returns sessions in-memory without file writing.
|
|
23
|
+
*
|
|
24
|
+
* @param rawDir - Absolute path to the directory containing raw Codex session files organized by date
|
|
25
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
26
|
+
*/
|
|
27
|
+
/* eslint-disable no-await-in-loop */
|
|
28
|
+
async parse(rawDir) {
|
|
29
|
+
console.log('🔍 Starting Codex clean transformation...');
|
|
30
|
+
console.log(`📁 Raw directory: ${rawDir}`);
|
|
31
|
+
try {
|
|
32
|
+
// Read raw sessions organized by date
|
|
33
|
+
const dateDirs = await readdir(rawDir);
|
|
34
|
+
const allCleanSessions = [];
|
|
35
|
+
for (const dateDir of dateDirs) {
|
|
36
|
+
const datePath = path.join(rawDir, dateDir);
|
|
37
|
+
const files = await readdir(datePath);
|
|
38
|
+
console.log(`\n 📅 ${dateDir}`);
|
|
39
|
+
for (const file of files) {
|
|
40
|
+
if (!file.endsWith('.json'))
|
|
41
|
+
continue;
|
|
42
|
+
try {
|
|
43
|
+
const content = await readFile(path.join(datePath, file), 'utf8');
|
|
44
|
+
const session = JSON.parse(content);
|
|
45
|
+
// Normalize the session using Codex-specific transformer
|
|
46
|
+
const normalized = this.normalizeCodexSession(session);
|
|
47
|
+
// Add to array instead of writing to disk
|
|
48
|
+
allCleanSessions.push(normalized);
|
|
49
|
+
console.log(` ✅ ${session.title}`);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
console.warn(`⚠️ Failed to transform ${file}:`, error instanceof Error ? error.message : String(error));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
console.log(`\n🎉 Codex clean transformation complete! ${allCleanSessions.length} sessions processed`);
|
|
57
|
+
return Object.freeze(allCleanSessions);
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
console.error('❌ Error during transformation:', error instanceof Error ? error.message : 'Unknown error');
|
|
61
|
+
return Object.freeze([]);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Extract tool execution output from Codex payload
|
|
66
|
+
*
|
|
67
|
+
* Attempts to parse the output field from a tool execution payload. Handles both
|
|
68
|
+
* stringified JSON output and direct string/object output. Returns the extracted
|
|
69
|
+
* output or nested output data if present.
|
|
70
|
+
*
|
|
71
|
+
* @param payload - Tool execution payload object containing output field
|
|
72
|
+
* @returns Extracted output as object or string, empty string if parsing fails
|
|
73
|
+
*/
|
|
74
|
+
extractToolOutput(payload) {
|
|
75
|
+
try {
|
|
76
|
+
if (typeof payload.output === 'string') {
|
|
77
|
+
const outputData = JSON.parse(payload.output);
|
|
78
|
+
return outputData.output || payload.output || '';
|
|
79
|
+
}
|
|
80
|
+
return payload.output || '';
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
return payload.output || '';
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Extract workspace paths from a Codex payload entry
|
|
88
|
+
*
|
|
89
|
+
* Searches payload for workspace path information in two locations:
|
|
90
|
+
* 1. Direct cwd (current working directory) field
|
|
91
|
+
* 2. writable_roots field (either direct or nested in sandbox_policy)
|
|
92
|
+
* Handles both string and array values for writable_roots.
|
|
93
|
+
*
|
|
94
|
+
* @param payload - Codex payload object to extract paths from
|
|
95
|
+
* @returns Array of workspace path strings found in the payload
|
|
96
|
+
*/
|
|
97
|
+
extractWorkspacePathsFromPayload(payload) {
|
|
98
|
+
const paths = [];
|
|
99
|
+
// Add cwd if present
|
|
100
|
+
const { cwd } = payload;
|
|
101
|
+
if (cwd && typeof cwd === 'string') {
|
|
102
|
+
paths.push(cwd);
|
|
103
|
+
}
|
|
104
|
+
// Add writable_roots if present (can be direct or nested in sandbox_policy)
|
|
105
|
+
let writableRoots = payload.writable_roots;
|
|
106
|
+
// If not found, check inside sandbox_policy
|
|
107
|
+
if (!writableRoots && typeof payload.sandbox_policy === 'object' && payload.sandbox_policy !== null) {
|
|
108
|
+
writableRoots = payload.sandbox_policy.writable_roots;
|
|
109
|
+
}
|
|
110
|
+
if (!writableRoots) {
|
|
111
|
+
return paths;
|
|
112
|
+
}
|
|
113
|
+
if (Array.isArray(writableRoots)) {
|
|
114
|
+
for (const root of writableRoots) {
|
|
115
|
+
if (typeof root === 'string') {
|
|
116
|
+
paths.push(root);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (typeof writableRoots === 'string') {
|
|
121
|
+
paths.push(writableRoots);
|
|
122
|
+
}
|
|
123
|
+
return paths;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Normalize a Codex content block to unified ContentBlock format
|
|
127
|
+
*
|
|
128
|
+
* Transforms Codex-specific content block formats to standardized format.
|
|
129
|
+
* Handles multiple block types:
|
|
130
|
+
* - String blocks → text blocks
|
|
131
|
+
* - input_text/output_text → text blocks
|
|
132
|
+
* - thinking blocks
|
|
133
|
+
* - tool_use blocks
|
|
134
|
+
* - tool_result blocks
|
|
135
|
+
* Returns null for invalid or unrecognized blocks.
|
|
136
|
+
*
|
|
137
|
+
* @param block - Codex content block to normalize (string, object, or other)
|
|
138
|
+
* @returns Normalized ContentBlock or null if block is invalid
|
|
139
|
+
*/
|
|
140
|
+
normalizeCodexContentBlock(block) {
|
|
141
|
+
if (typeof block === 'string') {
|
|
142
|
+
return {
|
|
143
|
+
text: block,
|
|
144
|
+
type: 'text',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
if (!block || typeof block !== 'object') {
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
const blockObj = block;
|
|
151
|
+
// Handle input_text/output_text types (Codex format)
|
|
152
|
+
if (blockObj.type === 'input_text' || blockObj.type === 'output_text') {
|
|
153
|
+
return this.normalizeInputTextBlock(blockObj);
|
|
154
|
+
}
|
|
155
|
+
// Handle thinking blocks
|
|
156
|
+
if (blockObj.type === 'thinking') {
|
|
157
|
+
return this.normalizeThinkingBlock(blockObj);
|
|
158
|
+
}
|
|
159
|
+
// Handle text blocks
|
|
160
|
+
if (blockObj.type === 'text') {
|
|
161
|
+
return this.normalizeTextBlock(blockObj);
|
|
162
|
+
}
|
|
163
|
+
// Handle tool_use blocks
|
|
164
|
+
if (blockObj.type === 'tool_use' || (blockObj.name && blockObj.input)) {
|
|
165
|
+
return this.normalizeToolUseBlock(blockObj);
|
|
166
|
+
}
|
|
167
|
+
// Handle tool_result blocks
|
|
168
|
+
if (blockObj.type === 'tool_result' || blockObj.tool_use_id) {
|
|
169
|
+
return this.normalizeToolResultBlock(blockObj);
|
|
170
|
+
}
|
|
171
|
+
// Default: treat as text
|
|
172
|
+
if (blockObj.text) {
|
|
173
|
+
return {
|
|
174
|
+
text: blockObj.text,
|
|
175
|
+
type: 'text',
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Normalize Codex session data to unified session format
|
|
182
|
+
*
|
|
183
|
+
* Transforms raw Codex session structure to standardized format:
|
|
184
|
+
* 1. Extracts session metadata from session_meta entry
|
|
185
|
+
* 2. Transforms rawEntries to normalized messages
|
|
186
|
+
* 3. Extracts unique workspace paths from all entries
|
|
187
|
+
* 4. Combines tool use/result messages
|
|
188
|
+
* 5. Assigns turn IDs
|
|
189
|
+
*
|
|
190
|
+
* @param session - Raw Codex session object with rawEntries and metadata
|
|
191
|
+
* @returns Normalized session object with messages, metadata, and workspace paths
|
|
192
|
+
*/
|
|
193
|
+
normalizeCodexSession(session) {
|
|
194
|
+
const rawEntries = session.rawEntries || [];
|
|
195
|
+
// Find session metadata
|
|
196
|
+
const sessionMeta = rawEntries.find((e) => e.type === 'session_meta');
|
|
197
|
+
const sessionPayload = sessionMeta?.payload || {};
|
|
198
|
+
// Transform raw entries to messages
|
|
199
|
+
const messages = this.transformCodexEntries(rawEntries);
|
|
200
|
+
// Extract unique workspace paths from rawEntries
|
|
201
|
+
const workspacePaths = new Set();
|
|
202
|
+
for (const entry of rawEntries) {
|
|
203
|
+
const payload = entry.payload;
|
|
204
|
+
const paths = this.extractWorkspacePathsFromPayload(payload);
|
|
205
|
+
for (const p of paths) {
|
|
206
|
+
workspacePaths.add(p);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
return {
|
|
210
|
+
id: session.id,
|
|
211
|
+
messages,
|
|
212
|
+
metadata: {
|
|
213
|
+
// eslint-disable-next-line camelcase
|
|
214
|
+
cli_version: sessionPayload.cli_version,
|
|
215
|
+
git: sessionPayload.git,
|
|
216
|
+
// eslint-disable-next-line camelcase
|
|
217
|
+
model_provider: sessionPayload.model_provider,
|
|
218
|
+
originator: sessionPayload.originator,
|
|
219
|
+
source: sessionPayload.source,
|
|
220
|
+
},
|
|
221
|
+
timestamp: session.timestamp,
|
|
222
|
+
title: session.title || 'Codex Session',
|
|
223
|
+
type: 'Codex',
|
|
224
|
+
workspacePaths: [...workspacePaths].sort(),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Normalize input_text or output_text blocks to standard text format
|
|
229
|
+
*
|
|
230
|
+
* Extracts text content from Codex input_text or output_text blocks and
|
|
231
|
+
* converts them to the unified text content block format.
|
|
232
|
+
*
|
|
233
|
+
* @param blockObj - Codex input/output text block object
|
|
234
|
+
* @returns TextContentBlock with extracted text content
|
|
235
|
+
*/
|
|
236
|
+
normalizeInputTextBlock(blockObj) {
|
|
237
|
+
return {
|
|
238
|
+
text: blockObj.text || '',
|
|
239
|
+
type: 'text',
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Normalize standard text content blocks
|
|
244
|
+
*
|
|
245
|
+
* Extracts text field from a content block object and returns it in
|
|
246
|
+
* the standardized text content block format.
|
|
247
|
+
*
|
|
248
|
+
* @param blockObj - Content block object with text field
|
|
249
|
+
* @returns TextContentBlock with extracted text content
|
|
250
|
+
*/
|
|
251
|
+
normalizeTextBlock(blockObj) {
|
|
252
|
+
return {
|
|
253
|
+
text: blockObj.text || '',
|
|
254
|
+
type: 'text',
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Normalize thinking content blocks
|
|
259
|
+
*
|
|
260
|
+
* Extracts thinking content from block object, using either the thinking field
|
|
261
|
+
* or falling back to text field. Returns standardized thinking content block.
|
|
262
|
+
*
|
|
263
|
+
* @param blockObj - Content block object with thinking or text field
|
|
264
|
+
* @returns ThinkingContentBlock with extracted thinking content
|
|
265
|
+
*/
|
|
266
|
+
normalizeThinkingBlock(blockObj) {
|
|
267
|
+
return {
|
|
268
|
+
thinking: blockObj.thinking || blockObj.text || '',
|
|
269
|
+
type: 'thinking',
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Normalize tool result content blocks
|
|
274
|
+
*
|
|
275
|
+
* Extracts tool result data from block object, mapping content and tool_use_id
|
|
276
|
+
* fields to the standardized tool result format.
|
|
277
|
+
*
|
|
278
|
+
* @param blockObj - Tool result block object with content and tool_use_id
|
|
279
|
+
* @returns ToolResultContentBlock with extracted result data
|
|
280
|
+
*/
|
|
281
|
+
normalizeToolResultBlock(blockObj) {
|
|
282
|
+
return {
|
|
283
|
+
content: blockObj.content || blockObj.text || '',
|
|
284
|
+
// eslint-disable-next-line camelcase
|
|
285
|
+
tool_use_id: blockObj.tool_use_id || '',
|
|
286
|
+
type: 'tool_result',
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Normalize tool use content blocks
|
|
291
|
+
*
|
|
292
|
+
* Extracts tool invocation data from block object, mapping id, name, input,
|
|
293
|
+
* and tool_use_id fields to the standardized tool use format.
|
|
294
|
+
*
|
|
295
|
+
* @param blockObj - Tool use block object with tool invocation data
|
|
296
|
+
* @returns ToolUseContentBlock with extracted tool invocation data
|
|
297
|
+
*/
|
|
298
|
+
normalizeToolUseBlock(blockObj) {
|
|
299
|
+
return {
|
|
300
|
+
id: blockObj.id || '',
|
|
301
|
+
input: blockObj.input || {},
|
|
302
|
+
name: blockObj.name || '',
|
|
303
|
+
// eslint-disable-next-line camelcase
|
|
304
|
+
tool_use_id: blockObj.tool_use_id || blockObj.id || '',
|
|
305
|
+
type: 'tool_use',
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Parse tool input from payload supporting multiple Codex formats
|
|
310
|
+
*
|
|
311
|
+
* Extracts and normalizes tool input arguments from different payload formats:
|
|
312
|
+
* - custom_tool_call: wraps input in an object
|
|
313
|
+
* - function_call: parses arguments (string or object)
|
|
314
|
+
* Handles JSON parsing for stringified arguments with fallback to wrapped format.
|
|
315
|
+
*
|
|
316
|
+
* @param payload - Tool call payload with input or arguments field
|
|
317
|
+
* @returns Parsed tool input as object, empty object if no input found
|
|
318
|
+
*/
|
|
319
|
+
parseToolInput(payload) {
|
|
320
|
+
if (payload.input !== undefined) {
|
|
321
|
+
// custom_tool_call: wrap input in an object
|
|
322
|
+
return typeof payload.input === 'string' ? { input: payload.input } : payload.input || {};
|
|
323
|
+
}
|
|
324
|
+
if (payload.arguments !== undefined) {
|
|
325
|
+
// function_call: arguments are already an object
|
|
326
|
+
if (typeof payload.arguments === 'string') {
|
|
327
|
+
try {
|
|
328
|
+
return JSON.parse(payload.arguments);
|
|
329
|
+
}
|
|
330
|
+
catch {
|
|
331
|
+
return { arguments: payload.arguments };
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
return payload.arguments || {};
|
|
335
|
+
}
|
|
336
|
+
return {};
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* Process message payload and append content blocks to array
|
|
340
|
+
*
|
|
341
|
+
* Extracts message content array from payload and processes each content block,
|
|
342
|
+
* appending normalized blocks to the provided content array.
|
|
343
|
+
*
|
|
344
|
+
* @param payload - Message payload object with content array
|
|
345
|
+
* @param content - Array to append processed content blocks to (modified in place)
|
|
346
|
+
*/
|
|
347
|
+
processMessage(payload, content) {
|
|
348
|
+
const msgContent = payload.content || [];
|
|
349
|
+
content.push(...this.processMessageContent(msgContent));
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Process and normalize message content blocks from array
|
|
353
|
+
*
|
|
354
|
+
* Iterates through message content array, normalizing each block to the
|
|
355
|
+
* unified ContentBlock format. Filters out any null results from normalization.
|
|
356
|
+
*
|
|
357
|
+
* @param msgContent - Array of raw message content blocks
|
|
358
|
+
* @returns Array of normalized ContentBlock objects
|
|
359
|
+
*/
|
|
360
|
+
processMessageContent(msgContent) {
|
|
361
|
+
const content = [];
|
|
362
|
+
if (Array.isArray(msgContent)) {
|
|
363
|
+
for (const block of msgContent) {
|
|
364
|
+
const contentBlock = this.normalizeCodexContentBlock(block);
|
|
365
|
+
if (contentBlock) {
|
|
366
|
+
content.push(contentBlock);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return content;
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Process reasoning payload and append thinking blocks to content array
|
|
374
|
+
*
|
|
375
|
+
* Extracts summary array from reasoning payload and processes it into
|
|
376
|
+
* thinking content blocks, appending them to the provided content array.
|
|
377
|
+
*
|
|
378
|
+
* @param payload - Reasoning payload object with summary array
|
|
379
|
+
* @param content - Array to append thinking blocks to (modified in place)
|
|
380
|
+
*/
|
|
381
|
+
processReasoning(payload, content) {
|
|
382
|
+
const summary = payload.summary || [];
|
|
383
|
+
content.push(...this.processReasoningContent(summary));
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Process reasoning summary into thinking content blocks
|
|
387
|
+
*
|
|
388
|
+
* Extracts text from summary_text type blocks in the summary array and
|
|
389
|
+
* converts them to thinking content blocks.
|
|
390
|
+
*
|
|
391
|
+
* @param summary - Array of summary blocks from reasoning payload
|
|
392
|
+
* @returns Array of ThinkingContentBlock objects extracted from summary
|
|
393
|
+
*/
|
|
394
|
+
processReasoningContent(summary) {
|
|
395
|
+
const content = [];
|
|
396
|
+
if (Array.isArray(summary)) {
|
|
397
|
+
for (const block of summary) {
|
|
398
|
+
if (block.type === 'summary_text' && block.text) {
|
|
399
|
+
content.push({
|
|
400
|
+
thinking: block.text,
|
|
401
|
+
type: 'thinking',
|
|
402
|
+
});
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
return content;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Process Codex response item into a CleanMessage
|
|
410
|
+
*
|
|
411
|
+
* Transforms a Codex raw entry (response_item) into a normalized message.
|
|
412
|
+
* Handles different item types:
|
|
413
|
+
* - custom_tool_call/function_call → tool use blocks (assistant)
|
|
414
|
+
* - custom_tool_call_output/function_call_output → tool result blocks (assistant)
|
|
415
|
+
* - message → text content (user or assistant based on role)
|
|
416
|
+
* - reasoning → thinking blocks (assistant)
|
|
417
|
+
* Returns null if no content blocks are generated.
|
|
418
|
+
*
|
|
419
|
+
* @param item - Codex raw entry to process
|
|
420
|
+
* @returns CleanMessage with type, content, and timestamp, or null if no content
|
|
421
|
+
*/
|
|
422
|
+
processResponseItem(item) {
|
|
423
|
+
const payload = item.payload;
|
|
424
|
+
const itemType = payload.type;
|
|
425
|
+
const role = payload.role || 'assistant';
|
|
426
|
+
const timestampIso = typeof item.timestamp === 'string' ? item.timestamp : new Date(item.timestamp).toISOString();
|
|
427
|
+
let messageType = role;
|
|
428
|
+
const content = [];
|
|
429
|
+
switch (itemType) {
|
|
430
|
+
case 'custom_tool_call':
|
|
431
|
+
case 'function_call': {
|
|
432
|
+
this.processToolCall(payload, content);
|
|
433
|
+
messageType = 'assistant';
|
|
434
|
+
break;
|
|
435
|
+
}
|
|
436
|
+
case 'custom_tool_call_output':
|
|
437
|
+
case 'function_call_output': {
|
|
438
|
+
this.processToolOutput(payload, content);
|
|
439
|
+
messageType = 'assistant';
|
|
440
|
+
break;
|
|
441
|
+
}
|
|
442
|
+
case 'message': {
|
|
443
|
+
messageType = payload.role || 'assistant';
|
|
444
|
+
this.processMessage(payload, content);
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
case 'reasoning': {
|
|
448
|
+
this.processReasoning(payload, content);
|
|
449
|
+
messageType = 'assistant';
|
|
450
|
+
break;
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
if (content.length === 0) {
|
|
454
|
+
return null;
|
|
455
|
+
}
|
|
456
|
+
return {
|
|
457
|
+
content,
|
|
458
|
+
timestamp: timestampIso,
|
|
459
|
+
type: messageType,
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* Process tool call payload and append tool use block to content
|
|
464
|
+
*
|
|
465
|
+
* Parses tool input from payload and creates a tool_use content block with
|
|
466
|
+
* call ID, input, and tool name. Appends the block to the provided array.
|
|
467
|
+
*
|
|
468
|
+
* @param payload - Tool call payload with name, input/arguments, and call_id
|
|
469
|
+
* @param content - Array to append tool use block to (modified in place)
|
|
470
|
+
*/
|
|
471
|
+
processToolCall(payload, content) {
|
|
472
|
+
const toolInput = this.parseToolInput(payload);
|
|
473
|
+
content.push({
|
|
474
|
+
id: payload.call_id || payload.tool_call_id || '',
|
|
475
|
+
input: toolInput,
|
|
476
|
+
name: payload.name || '',
|
|
477
|
+
// eslint-disable-next-line camelcase
|
|
478
|
+
tool_use_id: payload.call_id || payload.tool_call_id || '',
|
|
479
|
+
type: 'tool_use',
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Process tool output payload and append tool result block to content
|
|
484
|
+
*
|
|
485
|
+
* Extracts tool execution output from payload and creates a tool_result
|
|
486
|
+
* content block with the output content and tool_use_id. Appends the block
|
|
487
|
+
* to the provided array.
|
|
488
|
+
*
|
|
489
|
+
* @param payload - Tool output payload with output field and call_id
|
|
490
|
+
* @param content - Array to append tool result block to (modified in place)
|
|
491
|
+
*/
|
|
492
|
+
processToolOutput(payload, content) {
|
|
493
|
+
const outputContent = this.extractToolOutput(payload);
|
|
494
|
+
content.push({
|
|
495
|
+
content: outputContent,
|
|
496
|
+
// eslint-disable-next-line camelcase
|
|
497
|
+
tool_use_id: payload.call_id || payload.tool_call_id || '',
|
|
498
|
+
type: 'tool_result',
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Transform Codex rawEntries to unified message format with turn IDs
|
|
503
|
+
*
|
|
504
|
+
* Performs complete transformation pipeline:
|
|
505
|
+
* 1. Filters out event_msg and turn_context entries
|
|
506
|
+
* 2. Processes each response_item into a message
|
|
507
|
+
* 3. Sorts messages by timestamp
|
|
508
|
+
* 4. Combines tool_use and tool_result messages
|
|
509
|
+
* 5. Assigns turn IDs to all messages
|
|
510
|
+
*
|
|
511
|
+
* @param rawEntries - Array of Codex raw entries from session
|
|
512
|
+
* @returns Array of CleanMessage objects with turn IDs and combined tool blocks
|
|
513
|
+
*/
|
|
514
|
+
transformCodexEntries(rawEntries) {
|
|
515
|
+
// Filter out event_msg and turn_context entries - keep only response_item and session_meta
|
|
516
|
+
const filteredEntries = rawEntries.filter((entry) => entry.type !== 'event_msg' && entry.type !== 'turn_context');
|
|
517
|
+
const responseItems = filteredEntries.filter((e) => e.type === 'response_item');
|
|
518
|
+
const messages = [];
|
|
519
|
+
// Process each response item into its own message
|
|
520
|
+
for (const item of responseItems) {
|
|
521
|
+
const message = this.processResponseItem(item);
|
|
522
|
+
if (message) {
|
|
523
|
+
messages.push(message);
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
// Sort messages by timestamp
|
|
527
|
+
messages.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
|
528
|
+
// Combine tool_use and tool_result messages
|
|
529
|
+
const combinedMessages = combineToolResults(messages);
|
|
530
|
+
// Add turn_id
|
|
531
|
+
const finalMessages = addTurnIds(combinedMessages);
|
|
532
|
+
return finalMessages;
|
|
533
|
+
}
|
|
534
|
+
}
|