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,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Clean Service
|
|
3
|
+
* Transforms Cursor 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
|
+
* Cursor Clean Service
|
|
10
|
+
* Transforms Cursor raw parsed sessions to clean normalized format
|
|
11
|
+
*/
|
|
12
|
+
export declare class CursorCleanService implements ICleanParserService {
|
|
13
|
+
private ide;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize Cursor Clean Service
|
|
16
|
+
*
|
|
17
|
+
* @param ide - The IDE type (Cursor)
|
|
18
|
+
*/
|
|
19
|
+
constructor(ide: Agent);
|
|
20
|
+
/**
|
|
21
|
+
* Parse and transform Cursor raw sessions to clean normalized format
|
|
22
|
+
*
|
|
23
|
+
* Reads Cursor raw session files organized by workspace, transforms them using
|
|
24
|
+
* Cursor-to-Claude conversion, and normalizes the sessions.
|
|
25
|
+
* Returns sessions in-memory without file writing.
|
|
26
|
+
*
|
|
27
|
+
* @param rawDir - Absolute path to the directory containing raw Cursor session files organized by workspace
|
|
28
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
29
|
+
*/
|
|
30
|
+
parse(rawDir: string): Promise<readonly CleanSession[]>;
|
|
31
|
+
/**
|
|
32
|
+
* Add filesystem paths from property value to path set
|
|
33
|
+
*
|
|
34
|
+
* Helper function for normalizing workspace paths from various property formats found
|
|
35
|
+
* throughout Cursor session data. Handles both string and array values to accommodate
|
|
36
|
+
* different workspace path representations (single workspace vs monorepo with multiple paths).
|
|
37
|
+
*
|
|
38
|
+
* Processing logic:
|
|
39
|
+
* - Array values: Each element is checked and added individually if it's a string
|
|
40
|
+
* - String values: Added directly to the set
|
|
41
|
+
* - Other types: Ignored (no-op)
|
|
42
|
+
*
|
|
43
|
+
* The Set data structure automatically handles deduplication of paths. Used extensively
|
|
44
|
+
* in workspace path extraction to accumulate paths from multiple sources (metadata,
|
|
45
|
+
* top-level properties, tool results).
|
|
46
|
+
*
|
|
47
|
+
* @param value - Property value that may be a string path, array of string paths, or other type
|
|
48
|
+
* @param paths - Set to accumulate parsed filesystem paths (modified in place)
|
|
49
|
+
*/
|
|
50
|
+
private addPathsFromProperty;
|
|
51
|
+
/**
|
|
52
|
+
* Extract and transform tool results from Cursor bubble to tool_use content block
|
|
53
|
+
*
|
|
54
|
+
* Converts Cursor's toolResults structure into a tool_use content block format compatible
|
|
55
|
+
* with the unified message format. Extracts tool name and ID, simplifies parameters and output
|
|
56
|
+
* based on tool type (e.g., run_terminal_cmd, read_file, write_file, etc.) for cleaner output.
|
|
57
|
+
* Returns null if no valid toolResults provided.
|
|
58
|
+
*
|
|
59
|
+
* @param toolResults - Cursor bubble's toolResults object with name, toolCallId, params, result
|
|
60
|
+
* @returns CleanCursorToolUseBlock or null if toolResults is empty
|
|
61
|
+
*/
|
|
62
|
+
private extractCursorToolResult;
|
|
63
|
+
/**
|
|
64
|
+
* Extract workspace paths from Cursor session metadata
|
|
65
|
+
*
|
|
66
|
+
* Checks session metadata for workspacePath property and adds it to the paths set.
|
|
67
|
+
* Handles both string and array workspace paths using addPathsFromProperty helper.
|
|
68
|
+
* No-op if metadata is missing or does not contain workspacePath.
|
|
69
|
+
*
|
|
70
|
+
* @param cursorSession - RawCursorRawSession object containing optional metadata
|
|
71
|
+
* @param paths - Set to accumulate workspace paths
|
|
72
|
+
*/
|
|
73
|
+
private extractPathsFromMetadata;
|
|
74
|
+
/**
|
|
75
|
+
* Extract file system paths from tool output text using regex pattern matching
|
|
76
|
+
*
|
|
77
|
+
* Scans output text for filesystem paths matching pattern /[^\s]+ (slash-prefixed, non-whitespace).
|
|
78
|
+
* Filters results to valid-looking paths: contain /, don't start with /tmp, longer than 5 chars.
|
|
79
|
+
* Removes trailing files (e.g., /path/to/file.ext → /path/to) to extract directory paths.
|
|
80
|
+
* Used for extracting workspace paths from terminal command outputs.
|
|
81
|
+
*
|
|
82
|
+
* @param output - Tool output text potentially containing filesystem paths
|
|
83
|
+
* @param paths - Set to accumulate discovered workspace paths
|
|
84
|
+
*/
|
|
85
|
+
private extractPathsFromToolOutput;
|
|
86
|
+
/**
|
|
87
|
+
* Extract workspace paths from tool results in all bubbles
|
|
88
|
+
*
|
|
89
|
+
* Iterates through all bubbles in the session, checking for toolResults with output/content.
|
|
90
|
+
* Extracts paths from tool result text using extractPathsFromToolOutput which parses
|
|
91
|
+
* filesystem paths from tool execution results (common in run_terminal_cmd results).
|
|
92
|
+
* Used to discover workspace paths from command execution outputs.
|
|
93
|
+
*
|
|
94
|
+
* @param cursorSession - RawCursorRawSession object containing bubbles array
|
|
95
|
+
* @param paths - Set to accumulate discovered workspace paths
|
|
96
|
+
*/
|
|
97
|
+
private extractPathsFromToolResults;
|
|
98
|
+
/**
|
|
99
|
+
* Extract all workspace paths from Cursor session data
|
|
100
|
+
*
|
|
101
|
+
* Collects workspace paths from multiple sources: top-level workspacePath property,
|
|
102
|
+
* session metadata workspacePath, and filesystem paths extracted from tool result outputs.
|
|
103
|
+
* Deduplicates paths and returns a sorted array. Provides comprehensive path discovery
|
|
104
|
+
* from various locations where Cursor stores workspace information.
|
|
105
|
+
*
|
|
106
|
+
* @param cursorSession - RawCursorRawSession object with workspacePath, metadata, and bubbles
|
|
107
|
+
* @returns Sorted array of unique workspace paths discovered
|
|
108
|
+
*/
|
|
109
|
+
private extractWorkspacePathsFromCursor;
|
|
110
|
+
/**
|
|
111
|
+
* Simplify tool input parameters based on tool type
|
|
112
|
+
*
|
|
113
|
+
* Filters tool input parameters to keep only essential fields for each tool type,
|
|
114
|
+
* removing verbose metadata and unnecessary properties. Handles common Cursor tools:
|
|
115
|
+
* codebase_search, create_folder, delete_file, delete_folder, read_file, run_terminal_cmd, write_file.
|
|
116
|
+
* Returns complete params for unknown tools. Produces cleaner, more focused tool invocation records.
|
|
117
|
+
*
|
|
118
|
+
* @param toolName - Name of the tool (determines which parameters to keep)
|
|
119
|
+
* @param params - Full parameter object from Cursor tool invocation
|
|
120
|
+
* @returns Filtered parameter object with only essential fields for the tool type
|
|
121
|
+
*/
|
|
122
|
+
private simplifyToolInput;
|
|
123
|
+
/**
|
|
124
|
+
* Simplify tool output based on tool type
|
|
125
|
+
*
|
|
126
|
+
* Extracts essential content from verbose Cursor tool result structures, removing
|
|
127
|
+
* redundant metadata while preserving actionable information. Handles common tools:
|
|
128
|
+
* codebase_search (search results), file operations (success/message), read_file (contents),
|
|
129
|
+
* run_terminal_cmd (output), and others. Returns tool_result wrapper with simplified content.
|
|
130
|
+
* Returns undefined if result is empty.
|
|
131
|
+
*
|
|
132
|
+
* @param toolName - Name of the tool (determines which output fields to extract)
|
|
133
|
+
* @param result - Full result object from Cursor tool execution
|
|
134
|
+
* @returns CleanCursorToolResultBlock with simplified content or undefined if empty
|
|
135
|
+
*/
|
|
136
|
+
private simplifyToolOutput;
|
|
137
|
+
/**
|
|
138
|
+
* Transform a single Cursor bubble into a Claude-format message
|
|
139
|
+
*
|
|
140
|
+
* Converts Cursor's bubble structure (a turn in conversation) to Claude message format.
|
|
141
|
+
* Maps: ai → assistant message (text → thinking block), user → user message (text → text block).
|
|
142
|
+
* Extracts and includes tool results, code blocks, and timestamp. Returns message with
|
|
143
|
+
* content array (may be empty thinking block if no content).
|
|
144
|
+
*
|
|
145
|
+
* @param bubble - CursorBubble object with type, text, toolResults, codeBlocks, timestamp
|
|
146
|
+
* @returns Message object with type, content array, and ISO timestamp
|
|
147
|
+
*/
|
|
148
|
+
private transformCursorBubbleToClaudeMessage;
|
|
149
|
+
/**
|
|
150
|
+
* Transform complete Cursor session to Claude-compatible format
|
|
151
|
+
*
|
|
152
|
+
* Converts all bubbles in a Cursor session to Claude messages, extracting workspace paths
|
|
153
|
+
* from multiple sources (direct property, metadata, tool outputs). Produces normalized
|
|
154
|
+
* session object with messages array, workspace paths, and preserved metadata/timestamps.
|
|
155
|
+
*
|
|
156
|
+
* @param cursorSession - RawCursorRawSession object with bubbles array and metadata
|
|
157
|
+
* @param workspaceHash - Workspace identifier hash to include in output
|
|
158
|
+
* @returns Session object in Claude format with messages and workspace information
|
|
159
|
+
*/
|
|
160
|
+
private transformCursorToClaudeFormat;
|
|
161
|
+
}
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cursor Clean Service
|
|
3
|
+
* Transforms Cursor raw parsed data to clean normalized format
|
|
4
|
+
*/
|
|
5
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
6
|
+
import { join as pathJoin } from 'node:path';
|
|
7
|
+
import { normalizeClaudeSession } from './shared.js';
|
|
8
|
+
/**
|
|
9
|
+
* Cursor Clean Service
|
|
10
|
+
* Transforms Cursor raw parsed sessions to clean normalized format
|
|
11
|
+
*/
|
|
12
|
+
export class CursorCleanService {
|
|
13
|
+
ide;
|
|
14
|
+
/**
|
|
15
|
+
* Initialize Cursor Clean Service
|
|
16
|
+
*
|
|
17
|
+
* @param ide - The IDE type (Cursor)
|
|
18
|
+
*/
|
|
19
|
+
constructor(ide) {
|
|
20
|
+
this.ide = ide;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Parse and transform Cursor raw sessions to clean normalized format
|
|
24
|
+
*
|
|
25
|
+
* Reads Cursor raw session files organized by workspace, transforms them using
|
|
26
|
+
* Cursor-to-Claude conversion, and normalizes the sessions.
|
|
27
|
+
* Returns sessions in-memory without file writing.
|
|
28
|
+
*
|
|
29
|
+
* @param rawDir - Absolute path to the directory containing raw Cursor 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 Cursor 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 = pathJoin(rawDir, entry);
|
|
41
|
+
const files = await readdir(workspacePath);
|
|
42
|
+
for (const file of files) {
|
|
43
|
+
if (!file.endsWith('.json'))
|
|
44
|
+
continue;
|
|
45
|
+
try {
|
|
46
|
+
const content = await readFile(pathJoin(workspacePath, file), 'utf8');
|
|
47
|
+
const session = JSON.parse(content);
|
|
48
|
+
// Transform Cursor format to Claude format using workspace ID as hash
|
|
49
|
+
const claudeFormatted = this.transformCursorToClaudeFormat(session, entry);
|
|
50
|
+
// Normalize the session using shared transformer
|
|
51
|
+
const normalized = normalizeClaudeSession(claudeFormatted, 'Cursor');
|
|
52
|
+
// Add to array instead of writing to disk
|
|
53
|
+
allCleanSessions.push(normalized);
|
|
54
|
+
console.log(` ✅ ${session.title}`);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.warn(`⚠️ Failed to transform ${file}:`, error instanceof Error ? error.message : String(error));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
console.log(`\n🎉 Cursor clean transformation complete! ${allCleanSessions.length} sessions processed`);
|
|
62
|
+
return Object.freeze(allCleanSessions);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error('❌ Error during transformation:', error instanceof Error ? error.message : 'Unknown error');
|
|
66
|
+
return Object.freeze([]);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/* eslint-enable no-await-in-loop */
|
|
70
|
+
/**
|
|
71
|
+
* Add filesystem paths from property value to path set
|
|
72
|
+
*
|
|
73
|
+
* Helper function for normalizing workspace paths from various property formats found
|
|
74
|
+
* throughout Cursor session data. Handles both string and array values to accommodate
|
|
75
|
+
* different workspace path representations (single workspace vs monorepo with multiple paths).
|
|
76
|
+
*
|
|
77
|
+
* Processing logic:
|
|
78
|
+
* - Array values: Each element is checked and added individually if it's a string
|
|
79
|
+
* - String values: Added directly to the set
|
|
80
|
+
* - Other types: Ignored (no-op)
|
|
81
|
+
*
|
|
82
|
+
* The Set data structure automatically handles deduplication of paths. Used extensively
|
|
83
|
+
* in workspace path extraction to accumulate paths from multiple sources (metadata,
|
|
84
|
+
* top-level properties, tool results).
|
|
85
|
+
*
|
|
86
|
+
* @param value - Property value that may be a string path, array of string paths, or other type
|
|
87
|
+
* @param paths - Set to accumulate parsed filesystem paths (modified in place)
|
|
88
|
+
*/
|
|
89
|
+
addPathsFromProperty(value, paths) {
|
|
90
|
+
if (Array.isArray(value)) {
|
|
91
|
+
for (const p of value) {
|
|
92
|
+
if (typeof p === 'string')
|
|
93
|
+
paths.add(p);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
else if (typeof value === 'string') {
|
|
97
|
+
paths.add(value);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract and transform tool results from Cursor bubble to tool_use content block
|
|
102
|
+
*
|
|
103
|
+
* Converts Cursor's toolResults structure into a tool_use content block format compatible
|
|
104
|
+
* with the unified message format. Extracts tool name and ID, simplifies parameters and output
|
|
105
|
+
* based on tool type (e.g., run_terminal_cmd, read_file, write_file, etc.) for cleaner output.
|
|
106
|
+
* Returns null if no valid toolResults provided.
|
|
107
|
+
*
|
|
108
|
+
* @param toolResults - Cursor bubble's toolResults object with name, toolCallId, params, result
|
|
109
|
+
* @returns CleanCursorToolUseBlock or null if toolResults is empty
|
|
110
|
+
*/
|
|
111
|
+
extractCursorToolResult(toolResults) {
|
|
112
|
+
if (!toolResults)
|
|
113
|
+
return null;
|
|
114
|
+
const toolName = toolResults.name;
|
|
115
|
+
const toolId = toolResults.toolCallId;
|
|
116
|
+
const toolUse = {
|
|
117
|
+
id: toolId,
|
|
118
|
+
name: toolName,
|
|
119
|
+
// eslint-disable-next-line camelcase
|
|
120
|
+
tool_use_id: toolId,
|
|
121
|
+
type: 'tool_use',
|
|
122
|
+
};
|
|
123
|
+
// Extract and simplify input parameters
|
|
124
|
+
if (toolResults.params) {
|
|
125
|
+
toolUse.input = this.simplifyToolInput(toolName, toolResults.params);
|
|
126
|
+
}
|
|
127
|
+
// Extract and simplify execution result
|
|
128
|
+
if (toolResults.result) {
|
|
129
|
+
toolUse.output = this.simplifyToolOutput(toolName, toolResults.result);
|
|
130
|
+
}
|
|
131
|
+
return toolUse;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Extract workspace paths from Cursor session metadata
|
|
135
|
+
*
|
|
136
|
+
* Checks session metadata for workspacePath property and adds it to the paths set.
|
|
137
|
+
* Handles both string and array workspace paths using addPathsFromProperty helper.
|
|
138
|
+
* No-op if metadata is missing or does not contain workspacePath.
|
|
139
|
+
*
|
|
140
|
+
* @param cursorSession - RawCursorRawSession object containing optional metadata
|
|
141
|
+
* @param paths - Set to accumulate workspace paths
|
|
142
|
+
*/
|
|
143
|
+
extractPathsFromMetadata(cursorSession, paths) {
|
|
144
|
+
if (!cursorSession.metadata) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const { metadata } = cursorSession;
|
|
148
|
+
if (metadata.workspacePath) {
|
|
149
|
+
this.addPathsFromProperty(metadata.workspacePath, paths);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Extract file system paths from tool output text using regex pattern matching
|
|
154
|
+
*
|
|
155
|
+
* Scans output text for filesystem paths matching pattern /[^\s]+ (slash-prefixed, non-whitespace).
|
|
156
|
+
* Filters results to valid-looking paths: contain /, don't start with /tmp, longer than 5 chars.
|
|
157
|
+
* Removes trailing files (e.g., /path/to/file.ext → /path/to) to extract directory paths.
|
|
158
|
+
* Used for extracting workspace paths from terminal command outputs.
|
|
159
|
+
*
|
|
160
|
+
* @param output - Tool output text potentially containing filesystem paths
|
|
161
|
+
* @param paths - Set to accumulate discovered workspace paths
|
|
162
|
+
*/
|
|
163
|
+
extractPathsFromToolOutput(output, paths) {
|
|
164
|
+
const pathMatches = output.match(/\/[^\s]+/g) || [];
|
|
165
|
+
for (const p of pathMatches) {
|
|
166
|
+
// Only add valid-looking paths (start with /, contain common path separators)
|
|
167
|
+
if (p.includes('/') && !p.startsWith('/tmp') && p.length > 5) {
|
|
168
|
+
// Extract directory path (remove trailing file if it looks like a file)
|
|
169
|
+
const dirPath = p.replace(/\/[^/]*\.[a-z]+$/, '') || p;
|
|
170
|
+
if (dirPath !== '/') {
|
|
171
|
+
paths.add(dirPath);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Extract workspace paths from tool results in all bubbles
|
|
178
|
+
*
|
|
179
|
+
* Iterates through all bubbles in the session, checking for toolResults with output/content.
|
|
180
|
+
* Extracts paths from tool result text using extractPathsFromToolOutput which parses
|
|
181
|
+
* filesystem paths from tool execution results (common in run_terminal_cmd results).
|
|
182
|
+
* Used to discover workspace paths from command execution outputs.
|
|
183
|
+
*
|
|
184
|
+
* @param cursorSession - RawCursorRawSession object containing bubbles array
|
|
185
|
+
* @param paths - Set to accumulate discovered workspace paths
|
|
186
|
+
*/
|
|
187
|
+
extractPathsFromToolResults(cursorSession, paths) {
|
|
188
|
+
for (const bubble of cursorSession.bubbles) {
|
|
189
|
+
if (!bubble.toolResults) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
const { toolResults } = bubble;
|
|
193
|
+
// Parse tool result output for file paths (common in run_terminal_cmd)
|
|
194
|
+
const output = typeof toolResults.output === 'string'
|
|
195
|
+
? toolResults.output
|
|
196
|
+
: typeof toolResults.content === 'string'
|
|
197
|
+
? toolResults.content
|
|
198
|
+
: '';
|
|
199
|
+
this.extractPathsFromToolOutput(output, paths);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Extract all workspace paths from Cursor session data
|
|
204
|
+
*
|
|
205
|
+
* Collects workspace paths from multiple sources: top-level workspacePath property,
|
|
206
|
+
* session metadata workspacePath, and filesystem paths extracted from tool result outputs.
|
|
207
|
+
* Deduplicates paths and returns a sorted array. Provides comprehensive path discovery
|
|
208
|
+
* from various locations where Cursor stores workspace information.
|
|
209
|
+
*
|
|
210
|
+
* @param cursorSession - RawCursorRawSession object with workspacePath, metadata, and bubbles
|
|
211
|
+
* @returns Sorted array of unique workspace paths discovered
|
|
212
|
+
*/
|
|
213
|
+
extractWorkspacePathsFromCursor(cursorSession) {
|
|
214
|
+
const paths = new Set();
|
|
215
|
+
// Check if raw parser already extracted workspace paths
|
|
216
|
+
if (cursorSession.workspacePath) {
|
|
217
|
+
this.addPathsFromProperty(cursorSession.workspacePath, paths);
|
|
218
|
+
}
|
|
219
|
+
// Extract from metadata if available
|
|
220
|
+
this.extractPathsFromMetadata(cursorSession, paths);
|
|
221
|
+
// Extract from tool command results in bubbles
|
|
222
|
+
this.extractPathsFromToolResults(cursorSession, paths);
|
|
223
|
+
return [...paths].sort();
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Simplify tool input parameters based on tool type
|
|
227
|
+
*
|
|
228
|
+
* Filters tool input parameters to keep only essential fields for each tool type,
|
|
229
|
+
* removing verbose metadata and unnecessary properties. Handles common Cursor tools:
|
|
230
|
+
* codebase_search, create_folder, delete_file, delete_folder, read_file, run_terminal_cmd, write_file.
|
|
231
|
+
* Returns complete params for unknown tools. Produces cleaner, more focused tool invocation records.
|
|
232
|
+
*
|
|
233
|
+
* @param toolName - Name of the tool (determines which parameters to keep)
|
|
234
|
+
* @param params - Full parameter object from Cursor tool invocation
|
|
235
|
+
* @returns Filtered parameter object with only essential fields for the tool type
|
|
236
|
+
*/
|
|
237
|
+
simplifyToolInput(toolName, params) {
|
|
238
|
+
if (!params)
|
|
239
|
+
return {};
|
|
240
|
+
switch (toolName) {
|
|
241
|
+
case 'codebase_search': {
|
|
242
|
+
// Keep only the query, move codeResults to output
|
|
243
|
+
return {
|
|
244
|
+
query: params.query,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
case 'create_folder': {
|
|
248
|
+
// Keep only the folder path
|
|
249
|
+
return {
|
|
250
|
+
targetFolder: params.targetFolder,
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
case 'delete_file':
|
|
254
|
+
// eslint-disable-next-line no-fallthrough
|
|
255
|
+
case 'delete_folder': {
|
|
256
|
+
// Keep only the path
|
|
257
|
+
return {
|
|
258
|
+
targetPath: params.targetPath,
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
case 'read_file': {
|
|
262
|
+
// Keep only the target file path
|
|
263
|
+
return {
|
|
264
|
+
targetFile: params.targetFile,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
case 'run_terminal_cmd': {
|
|
268
|
+
// Keep only the command
|
|
269
|
+
return {
|
|
270
|
+
command: params.command,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
case 'write_file': {
|
|
274
|
+
// Keep file path and content
|
|
275
|
+
return {
|
|
276
|
+
content: params.content,
|
|
277
|
+
targetFile: params.targetFile,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
default: {
|
|
281
|
+
// Return all params for unknown tools
|
|
282
|
+
return params;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Simplify tool output based on tool type
|
|
288
|
+
*
|
|
289
|
+
* Extracts essential content from verbose Cursor tool result structures, removing
|
|
290
|
+
* redundant metadata while preserving actionable information. Handles common tools:
|
|
291
|
+
* codebase_search (search results), file operations (success/message), read_file (contents),
|
|
292
|
+
* run_terminal_cmd (output), and others. Returns tool_result wrapper with simplified content.
|
|
293
|
+
* Returns undefined if result is empty.
|
|
294
|
+
*
|
|
295
|
+
* @param toolName - Name of the tool (determines which output fields to extract)
|
|
296
|
+
* @param result - Full result object from Cursor tool execution
|
|
297
|
+
* @returns CleanCursorToolResultBlock with simplified content or undefined if empty
|
|
298
|
+
*/
|
|
299
|
+
simplifyToolOutput(toolName, result) {
|
|
300
|
+
if (!result)
|
|
301
|
+
return undefined;
|
|
302
|
+
switch (toolName) {
|
|
303
|
+
case 'codebase_search': {
|
|
304
|
+
// Keep the search results
|
|
305
|
+
return {
|
|
306
|
+
content: result.codeResults || result,
|
|
307
|
+
type: 'tool_result',
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
case 'create_folder':
|
|
311
|
+
// eslint-disable-next-line no-fallthrough
|
|
312
|
+
case 'delete_file':
|
|
313
|
+
// eslint-disable-next-line no-fallthrough
|
|
314
|
+
case 'delete_folder':
|
|
315
|
+
case 'write_file': {
|
|
316
|
+
// For file operations, keep simple confirmation
|
|
317
|
+
const message = result.message || result.content?.message || '';
|
|
318
|
+
const success = result.success !== false;
|
|
319
|
+
return {
|
|
320
|
+
content: { message, success },
|
|
321
|
+
type: 'tool_result',
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
case 'read_file': {
|
|
325
|
+
// Return the file contents as a string instead of wrapped object
|
|
326
|
+
const contents = result.contents || result.content?.contents || '';
|
|
327
|
+
return {
|
|
328
|
+
content: contents,
|
|
329
|
+
type: 'tool_result',
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
case 'run_terminal_cmd': {
|
|
333
|
+
// Extract only the command output
|
|
334
|
+
const output = result.output || result.content?.output || '';
|
|
335
|
+
return {
|
|
336
|
+
content: { output },
|
|
337
|
+
type: 'tool_result',
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
default: {
|
|
341
|
+
// Default wrapper for unknown tools
|
|
342
|
+
return {
|
|
343
|
+
content: result,
|
|
344
|
+
type: 'tool_result',
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Transform a single Cursor bubble into a Claude-format message
|
|
351
|
+
*
|
|
352
|
+
* Converts Cursor's bubble structure (a turn in conversation) to Claude message format.
|
|
353
|
+
* Maps: ai → assistant message (text → thinking block), user → user message (text → text block).
|
|
354
|
+
* Extracts and includes tool results, code blocks, and timestamp. Returns message with
|
|
355
|
+
* content array (may be empty thinking block if no content).
|
|
356
|
+
*
|
|
357
|
+
* @param bubble - CursorBubble object with type, text, toolResults, codeBlocks, timestamp
|
|
358
|
+
* @returns Message object with type, content array, and ISO timestamp
|
|
359
|
+
*/
|
|
360
|
+
transformCursorBubbleToClaudeMessage(bubble) {
|
|
361
|
+
const messageType = bubble.type === 'ai' ? 'assistant' : 'user';
|
|
362
|
+
const content = [];
|
|
363
|
+
// Add main text content
|
|
364
|
+
// For assistant messages: convert to thinking block
|
|
365
|
+
// For user messages: keep as text block
|
|
366
|
+
if (bubble.text) {
|
|
367
|
+
if (messageType === 'assistant') {
|
|
368
|
+
content.push({
|
|
369
|
+
thinking: bubble.text,
|
|
370
|
+
type: 'thinking',
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
content.push({
|
|
375
|
+
text: bubble.text,
|
|
376
|
+
type: 'text',
|
|
377
|
+
});
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
// Add tool results as tool_use blocks
|
|
381
|
+
if (bubble.toolResults) {
|
|
382
|
+
const toolBlock = this.extractCursorToolResult(bubble.toolResults);
|
|
383
|
+
if (toolBlock) {
|
|
384
|
+
content.push(toolBlock);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
// Add code blocks as text blocks with language info
|
|
388
|
+
if (bubble.codeBlocks) {
|
|
389
|
+
for (const codeBlock of bubble.codeBlocks) {
|
|
390
|
+
if (codeBlock.content) {
|
|
391
|
+
const languageId = codeBlock.languageId || '';
|
|
392
|
+
content.push({
|
|
393
|
+
text: `\`\`\`${languageId}\n${codeBlock.content}\n\`\`\``,
|
|
394
|
+
type: 'text',
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
const { timestamp } = bubble;
|
|
400
|
+
return {
|
|
401
|
+
content: content.length > 0 ? content : [{ thinking: '', type: 'thinking' }],
|
|
402
|
+
timestamp: new Date(timestamp).toISOString(),
|
|
403
|
+
type: messageType,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
/**
|
|
407
|
+
* Transform complete Cursor session to Claude-compatible format
|
|
408
|
+
*
|
|
409
|
+
* Converts all bubbles in a Cursor session to Claude messages, extracting workspace paths
|
|
410
|
+
* from multiple sources (direct property, metadata, tool outputs). Produces normalized
|
|
411
|
+
* session object with messages array, workspace paths, and preserved metadata/timestamps.
|
|
412
|
+
*
|
|
413
|
+
* @param cursorSession - RawCursorRawSession object with bubbles array and metadata
|
|
414
|
+
* @param workspaceHash - Workspace identifier hash to include in output
|
|
415
|
+
* @returns Session object in Claude format with messages and workspace information
|
|
416
|
+
*/
|
|
417
|
+
transformCursorToClaudeFormat(cursorSession, workspaceHash) {
|
|
418
|
+
const { bubbles } = cursorSession;
|
|
419
|
+
const messages = bubbles.map((bubble) => this.transformCursorBubbleToClaudeMessage(bubble));
|
|
420
|
+
// Extract workspace paths - check raw parser first, then fallback to extraction
|
|
421
|
+
const workspacePaths = this.extractWorkspacePathsFromCursor(cursorSession);
|
|
422
|
+
return {
|
|
423
|
+
id: cursorSession.id,
|
|
424
|
+
messages,
|
|
425
|
+
metadata: cursorSession.metadata,
|
|
426
|
+
timestamp: cursorSession.timestamp,
|
|
427
|
+
title: cursorSession.title,
|
|
428
|
+
workspaceHash,
|
|
429
|
+
workspacePaths: workspacePaths.length > 0 ? workspacePaths : undefined,
|
|
430
|
+
};
|
|
431
|
+
}
|
|
432
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Clean Parser Service Factory
|
|
3
|
+
* Routes IDE-based clean parsing requests to the appropriate clean parser service
|
|
4
|
+
* Supports: Claude Code, Cursor, GitHub Copilot, Codex
|
|
5
|
+
*/
|
|
6
|
+
import type { CleanSession } from '../../../core/domain/entities/parser.js';
|
|
7
|
+
import { Agent } from '../../../core/domain/entities/agent.js';
|
|
8
|
+
import { ICleanParserService } from '../../../core/interfaces/parser/i-clean-parser-service.js';
|
|
9
|
+
/**
|
|
10
|
+
* Clean Parser Service Factory
|
|
11
|
+
* Creates and returns appropriate clean parser service for the given IDE
|
|
12
|
+
*/
|
|
13
|
+
export declare class CleanParserServiceFactory {
|
|
14
|
+
private static readonly SUPPORTED_IDES;
|
|
15
|
+
/**
|
|
16
|
+
* Create a clean parser service for the specified IDE
|
|
17
|
+
*
|
|
18
|
+
* Factory method that instantiates the appropriate clean parser service
|
|
19
|
+
* based on the provided IDE type. Routes to specialized service classes.
|
|
20
|
+
*
|
|
21
|
+
* @param ide - The IDE type: 'Claude Code', 'Cursor', 'Github Copilot', or 'Codex'
|
|
22
|
+
* @returns The appropriate clean parser service instance
|
|
23
|
+
* @throws Error if IDE is not supported
|
|
24
|
+
*/
|
|
25
|
+
static createCleanParserService(ide: Agent): ICleanParserService;
|
|
26
|
+
/**
|
|
27
|
+
* Get list of supported IDEs
|
|
28
|
+
*
|
|
29
|
+
* Returns array of all IDE types that have corresponding clean parser services.
|
|
30
|
+
*
|
|
31
|
+
* @returns Array of supported IDE type strings
|
|
32
|
+
*/
|
|
33
|
+
static getSupportedIDEs(): Agent[];
|
|
34
|
+
/**
|
|
35
|
+
* Check if IDE is supported
|
|
36
|
+
*
|
|
37
|
+
* Validates whether the provided IDE string corresponds to a supported IDE.
|
|
38
|
+
*
|
|
39
|
+
* @param ide - IDE name to validate
|
|
40
|
+
* @returns True if IDE is in supported list, false otherwise
|
|
41
|
+
*/
|
|
42
|
+
static isSupported(ide: Agent): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Parse and clean conversations for the specified IDE
|
|
45
|
+
*
|
|
46
|
+
* Creates appropriate service and delegates to its parse method to transform
|
|
47
|
+
* raw session data into clean normalized format. Returns sessions in-memory.
|
|
48
|
+
*
|
|
49
|
+
* @param ide - The IDE type (Claude Code, Cursor, Github Copilot, Codex)
|
|
50
|
+
* @param rawDir - Path to directory containing raw session files
|
|
51
|
+
* @returns Promise resolving to array of clean normalized sessions
|
|
52
|
+
*/
|
|
53
|
+
static parseConversations(ide: Agent, rawDir: string): Promise<readonly CleanSession[]>;
|
|
54
|
+
}
|