byterover-cli 0.2.0 → 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 +53 -2
- package/dist/commands/init.js +279 -66
- package/dist/commands/login.js +9 -4
- package/dist/commands/logout.d.ts +16 -0
- package/dist/commands/logout.js +61 -0
- 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 +4 -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/i-rule-template-service.d.ts +0 -4
- package/dist/core/interfaces/i-rule-template-service.js +1 -4
- 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/rule/constants.d.ts +4 -0
- package/dist/infra/rule/constants.js +4 -0
- package/dist/infra/rule/rule-template-service.js +1 -1
- package/dist/infra/rule/rule-writer-service.js +1 -5
- 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 -93
- 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 +422 -142
- package/package.json +29 -10
- 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,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maximum allowed command length (characters).
|
|
3
|
+
*/
|
|
4
|
+
const MAX_COMMAND_LENGTH = 10_000;
|
|
5
|
+
/**
|
|
6
|
+
* Dangerous patterns that should always be blocked or require approval.
|
|
7
|
+
*
|
|
8
|
+
* These patterns match commands that could cause system damage, data loss,
|
|
9
|
+
* or security breaches.
|
|
10
|
+
*/
|
|
11
|
+
const DANGEROUS_PATTERNS = [
|
|
12
|
+
// File system destruction
|
|
13
|
+
/rm\s+-rf\s+\//i,
|
|
14
|
+
/rm\s+-fr\s+\//i,
|
|
15
|
+
/rm\s+--recursive\s+--force\s+\//i,
|
|
16
|
+
/rm\s+-r\s+\//i,
|
|
17
|
+
/rm\s+\//,
|
|
18
|
+
/mkfs/i,
|
|
19
|
+
/fdisk\s+\/dev\/sd[a-z]/i,
|
|
20
|
+
// Fork bombs
|
|
21
|
+
/:(\(\)|\{)\s*\{\s*:\s*\|\s*:\s*&\s*\}\s*;\s*:/,
|
|
22
|
+
// Disk operations
|
|
23
|
+
/dd\s+if=\/dev\/zero\s+of=\/dev\/sd[a-z]/i,
|
|
24
|
+
/dd\s+if=\/dev\/random\s+of=\/dev\/sd[a-z]/i,
|
|
25
|
+
/dd\s+if=\/dev\/urandom\s+of=\/dev\/sd[a-z]/i,
|
|
26
|
+
/dd.*of=\/dev\/sd[a-z]/i,
|
|
27
|
+
// Download and execute
|
|
28
|
+
/(curl|wget)\s+.*\|\s*(sh|bash|zsh|fish|python|perl|ruby|node)/i,
|
|
29
|
+
/(curl|wget)\s+.*>\s*\/tmp\/.*&&\s*(sh|bash|zsh|fish|python|perl|ruby|node)/i,
|
|
30
|
+
// Permission changes on root
|
|
31
|
+
/chmod\s+777\s+\//i,
|
|
32
|
+
/chmod\s+-R\s+777\s+\//i,
|
|
33
|
+
/chown\s+-R\s+root\s+\//i,
|
|
34
|
+
// System shutdown/reboot
|
|
35
|
+
/shutdown\s+(now|-h|-r)/i,
|
|
36
|
+
/reboot/i,
|
|
37
|
+
/halt/i,
|
|
38
|
+
/poweroff/i,
|
|
39
|
+
/init\s+[06]/,
|
|
40
|
+
// Network manipulation
|
|
41
|
+
/ifconfig\s+\w+\s+down/i,
|
|
42
|
+
/ip\s+link\s+set\s+\w+\s+down/i,
|
|
43
|
+
// Kernel manipulation
|
|
44
|
+
/insmod/i,
|
|
45
|
+
/rmmod/i,
|
|
46
|
+
/modprobe\s+-r/i,
|
|
47
|
+
// Package system damage
|
|
48
|
+
/rpm\s+-e\s+--nodeps\s+glibc/i,
|
|
49
|
+
/dpkg\s+-r\s+--force-all\s+libc/i,
|
|
50
|
+
/apt-get\s+remove\s+--force-yes\s+libc/i,
|
|
51
|
+
// Filling disk
|
|
52
|
+
/while\s+true.*dd/i,
|
|
53
|
+
/yes\s+>\s*\/dev\/sd[a-z]/i,
|
|
54
|
+
// Process bombing
|
|
55
|
+
/:\(\)\s*\{\s*:\s*\|\s*:\s*&\s*\};\s*:/,
|
|
56
|
+
// System file deletion
|
|
57
|
+
/rm\s+-rf?\s+(\/bin|\/sbin|\/usr|\/lib|\/lib64|\/etc|\/var|\/opt|\/boot|\/sys|\/proc)/i,
|
|
58
|
+
// Overwriting critical files
|
|
59
|
+
/>\s*\/etc\/(passwd|shadow|sudoers|fstab|hosts)/i,
|
|
60
|
+
/cat\s+>>\s*\/etc\/(passwd|shadow|sudoers)/i,
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Command injection patterns that indicate unsafe command construction.
|
|
64
|
+
*
|
|
65
|
+
* These patterns detect attempts to chain commands, substitute commands,
|
|
66
|
+
* or manipulate the shell in unsafe ways.
|
|
67
|
+
*/
|
|
68
|
+
const INJECTION_PATTERNS = [
|
|
69
|
+
// Command chaining with dangerous commands
|
|
70
|
+
/;\s*(rm|mv|cp|chmod|chown|dd|mkfs|fdisk)/i,
|
|
71
|
+
/&&\s*(rm|mv|cp|chmod|chown|dd|mkfs|fdisk)/i,
|
|
72
|
+
/\|\|\s*(rm|mv|cp|chmod|chown|dd|mkfs|fdisk)/i,
|
|
73
|
+
// Command substitution with dangerous commands
|
|
74
|
+
/`.*rm.*`/i,
|
|
75
|
+
/\$\(.*rm.*\)/i,
|
|
76
|
+
/`.*chmod.*`/i,
|
|
77
|
+
/\$\(.*chmod.*\)/i,
|
|
78
|
+
// Multiple command separators
|
|
79
|
+
/;\s*;/,
|
|
80
|
+
/&&\s*&&/,
|
|
81
|
+
/\|\|\s*\|\|/,
|
|
82
|
+
// Redirection with dangerous patterns
|
|
83
|
+
/rm.*>\s*\/dev\/null\s*2>&1/i,
|
|
84
|
+
/chmod.*>\s*\/dev\/null\s*2>&1/i,
|
|
85
|
+
// Background execution of dangerous commands
|
|
86
|
+
/&\s*(rm|chmod|chown|dd)/i,
|
|
87
|
+
// Environment variable manipulation
|
|
88
|
+
/export\s+PATH=.*;\s*(rm|chmod)/i,
|
|
89
|
+
/PATH=.*\s+(rm|chmod)/i,
|
|
90
|
+
];
|
|
91
|
+
/**
|
|
92
|
+
* Safe patterns that are explicitly allowed even in strict mode.
|
|
93
|
+
*
|
|
94
|
+
* These patterns match common, safe operations that don't pose
|
|
95
|
+
* security risks.
|
|
96
|
+
*/
|
|
97
|
+
const SAFE_PATTERNS = [
|
|
98
|
+
// Safe directory navigation
|
|
99
|
+
/^cd\s+[^;|&]+\s*&&\s*/,
|
|
100
|
+
// Safe pipes
|
|
101
|
+
/\|\s*grep/,
|
|
102
|
+
/\|\s*awk/,
|
|
103
|
+
/\|\s*sed/,
|
|
104
|
+
/\|\s*sort/,
|
|
105
|
+
/\|\s*uniq/,
|
|
106
|
+
/\|\s*head/,
|
|
107
|
+
/\|\s*tail/,
|
|
108
|
+
/\|\s*wc/,
|
|
109
|
+
/\|\s*less/,
|
|
110
|
+
/\|\s*more/,
|
|
111
|
+
// Safe redirections
|
|
112
|
+
/ls\s+.*>/,
|
|
113
|
+
/echo\s+.*>/,
|
|
114
|
+
/cat\s+.*>/,
|
|
115
|
+
/find\s+.*>/,
|
|
116
|
+
// Read-only git operations
|
|
117
|
+
/git\s+(status|log|diff|show|branch|tag|fetch|pull)(?!\s+-)/i,
|
|
118
|
+
];
|
|
119
|
+
/**
|
|
120
|
+
* Command validator for security and safety checks.
|
|
121
|
+
*
|
|
122
|
+
* Validates commands against dangerous patterns, injection attacks,
|
|
123
|
+
* and approval requirements based on security level.
|
|
124
|
+
*/
|
|
125
|
+
export class CommandValidator {
|
|
126
|
+
config;
|
|
127
|
+
/**
|
|
128
|
+
* Creates a new command validator.
|
|
129
|
+
*
|
|
130
|
+
* @param config - Process configuration for security settings
|
|
131
|
+
*/
|
|
132
|
+
constructor(config) {
|
|
133
|
+
this.config = config;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Get the list of allowed commands.
|
|
137
|
+
*
|
|
138
|
+
* @returns Array of allowed command patterns
|
|
139
|
+
*/
|
|
140
|
+
getAllowedCommands() {
|
|
141
|
+
return [...this.config.allowedCommands];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Get the list of blocked commands.
|
|
145
|
+
*
|
|
146
|
+
* @returns Array of blocked command patterns
|
|
147
|
+
*/
|
|
148
|
+
getBlockedCommands() {
|
|
149
|
+
return [...this.config.blockedCommands];
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get the current security level.
|
|
153
|
+
*
|
|
154
|
+
* @returns Security level setting
|
|
155
|
+
*/
|
|
156
|
+
getSecurityLevel() {
|
|
157
|
+
return this.config.securityLevel;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Validate a command for security and safety.
|
|
161
|
+
*
|
|
162
|
+
* Performs multiple checks:
|
|
163
|
+
* 1. Empty command check
|
|
164
|
+
* 2. Length limit check
|
|
165
|
+
* 3. Dangerous pattern detection
|
|
166
|
+
* 4. Injection detection
|
|
167
|
+
* 5. Blocked/allowed command list checks
|
|
168
|
+
* 6. Approval requirement determination
|
|
169
|
+
*
|
|
170
|
+
* @param command - Command string to validate
|
|
171
|
+
* @returns Validation result with approval requirement
|
|
172
|
+
*/
|
|
173
|
+
validateCommand(command) {
|
|
174
|
+
// 1. Check for empty command
|
|
175
|
+
const trimmed = command.trim();
|
|
176
|
+
if (!trimmed) {
|
|
177
|
+
return {
|
|
178
|
+
error: 'Command cannot be empty',
|
|
179
|
+
isValid: false,
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
// 2. Check command length
|
|
183
|
+
if (trimmed.length > MAX_COMMAND_LENGTH) {
|
|
184
|
+
return {
|
|
185
|
+
error: `Command exceeds maximum length of ${MAX_COMMAND_LENGTH} characters`,
|
|
186
|
+
isValid: false,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
// 3. Check dangerous patterns (strict/moderate only)
|
|
190
|
+
if (this.config.securityLevel !== 'permissive') {
|
|
191
|
+
for (const pattern of DANGEROUS_PATTERNS) {
|
|
192
|
+
if (pattern.test(trimmed)) {
|
|
193
|
+
return {
|
|
194
|
+
error: `Command matches dangerous pattern: ${pattern.source}`,
|
|
195
|
+
isValid: false,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// 4. Check for command injection
|
|
201
|
+
const injectionResult = this.detectInjection(trimmed);
|
|
202
|
+
if (!injectionResult.isValid) {
|
|
203
|
+
return injectionResult;
|
|
204
|
+
}
|
|
205
|
+
// 5. Check blocked commands list
|
|
206
|
+
const commandName = trimmed.split(/\s+/)[0];
|
|
207
|
+
if (this.config.blockedCommands.some(blocked => trimmed.includes(blocked))) {
|
|
208
|
+
return {
|
|
209
|
+
error: `Command is in the blocked list`,
|
|
210
|
+
isValid: false,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
// 6. Check allowed commands list (if not empty)
|
|
214
|
+
if (this.config.allowedCommands.length > 0) {
|
|
215
|
+
const isAllowed = this.config.allowedCommands.some(allowed => commandName === allowed || trimmed.startsWith(allowed));
|
|
216
|
+
if (!isAllowed) {
|
|
217
|
+
return {
|
|
218
|
+
error: `Command not in allowed list`,
|
|
219
|
+
isValid: false,
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
isValid: true,
|
|
225
|
+
normalizedCommand: trimmed,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Detect command injection patterns.
|
|
230
|
+
*
|
|
231
|
+
* Checks for unsafe command chaining, substitution, and other
|
|
232
|
+
* injection attack vectors.
|
|
233
|
+
*
|
|
234
|
+
* @param command - Command to check
|
|
235
|
+
* @returns Validation result
|
|
236
|
+
*/
|
|
237
|
+
detectInjection(command) {
|
|
238
|
+
// Check against known injection patterns
|
|
239
|
+
for (const pattern of INJECTION_PATTERNS) {
|
|
240
|
+
if (pattern.test(command)) {
|
|
241
|
+
return {
|
|
242
|
+
error: `Command injection detected: ${pattern.source}`,
|
|
243
|
+
isValid: false,
|
|
244
|
+
};
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
// In strict mode, block multiple commands unless explicitly safe
|
|
248
|
+
if (this.config.securityLevel === 'strict') {
|
|
249
|
+
const hasMultipleCommands = /[;|&]/.test(command);
|
|
250
|
+
if (hasMultipleCommands) {
|
|
251
|
+
// Check if it matches a safe pattern
|
|
252
|
+
const isSafe = SAFE_PATTERNS.some(pattern => pattern.test(command));
|
|
253
|
+
if (!isSafe) {
|
|
254
|
+
return {
|
|
255
|
+
error: 'Multiple commands or pipes not allowed in strict mode',
|
|
256
|
+
isValid: false,
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
isValid: true,
|
|
263
|
+
normalizedCommand: command,
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process execution module.
|
|
3
|
+
*
|
|
4
|
+
* Provides secure command execution with multi-layer security validation,
|
|
5
|
+
* foreground/background support, and resource management.
|
|
6
|
+
*/
|
|
7
|
+
export { CommandValidator } from './command-validator.js';
|
|
8
|
+
export { ProcessService } from './process-service.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process execution module.
|
|
3
|
+
*
|
|
4
|
+
* Provides secure command execution with multi-layer security validation,
|
|
5
|
+
* foreground/background support, and resource management.
|
|
6
|
+
*/
|
|
7
|
+
export { CommandValidator } from './command-validator.js';
|
|
8
|
+
export { ProcessService } from './process-service.js';
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { ExecuteOptions, ProcessConfig, ProcessHandle, ProcessInfo, ProcessOutput, ProcessResult } from '../../../core/domain/cipher/process/types.js';
|
|
2
|
+
import type { IProcessService } from '../../../core/interfaces/cipher/i-process-service.js';
|
|
3
|
+
/**
|
|
4
|
+
* Process service implementation.
|
|
5
|
+
*
|
|
6
|
+
* Provides secure command execution with:
|
|
7
|
+
* - Multi-layer security validation
|
|
8
|
+
* - Foreground and background execution
|
|
9
|
+
* - Output buffering with size limits
|
|
10
|
+
* - Timeout management with signal escalation
|
|
11
|
+
* - Working directory confinement
|
|
12
|
+
* - Approval system integration
|
|
13
|
+
*/
|
|
14
|
+
export declare class ProcessService implements IProcessService {
|
|
15
|
+
private readonly backgroundProcesses;
|
|
16
|
+
private readonly commandValidator;
|
|
17
|
+
private readonly config;
|
|
18
|
+
private initialized;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a new process service.
|
|
21
|
+
*
|
|
22
|
+
* @param config - Process configuration (partial, will be merged with defaults)
|
|
23
|
+
*/
|
|
24
|
+
constructor(config?: Partial<ProcessConfig>);
|
|
25
|
+
/**
|
|
26
|
+
* Clean up completed background processes older than 1 hour.
|
|
27
|
+
*/
|
|
28
|
+
cleanup(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Execute a shell command.
|
|
31
|
+
*
|
|
32
|
+
* @param command - Shell command to execute
|
|
33
|
+
* @param options - Execution options
|
|
34
|
+
* @returns Process result or handle
|
|
35
|
+
*/
|
|
36
|
+
executeCommand(command: string, options?: ExecuteOptions): Promise<ProcessHandle | ProcessResult>;
|
|
37
|
+
/**
|
|
38
|
+
* Get the current process configuration.
|
|
39
|
+
*/
|
|
40
|
+
getConfig(): Readonly<ProcessConfig>;
|
|
41
|
+
/**
|
|
42
|
+
* Get output from a background process.
|
|
43
|
+
*
|
|
44
|
+
* @param processId - Unique process identifier
|
|
45
|
+
* @returns Process output
|
|
46
|
+
*/
|
|
47
|
+
getProcessOutput(processId: string): Promise<ProcessOutput>;
|
|
48
|
+
/**
|
|
49
|
+
* Initialize the process service.
|
|
50
|
+
*/
|
|
51
|
+
initialize(): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Terminate a background process.
|
|
54
|
+
*
|
|
55
|
+
* @param processId - Unique process identifier
|
|
56
|
+
*/
|
|
57
|
+
killProcess(processId: string): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* List all background processes.
|
|
60
|
+
*/
|
|
61
|
+
listProcesses(): Promise<ProcessInfo[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Execute command in foreground (wait for completion).
|
|
64
|
+
*
|
|
65
|
+
* @param command - Normalized command to execute
|
|
66
|
+
* @param options - Execution options
|
|
67
|
+
* @param options.cwd - Working directory
|
|
68
|
+
* @param options.env - Environment variables
|
|
69
|
+
* @param options.timeout - Timeout in milliseconds
|
|
70
|
+
* @returns Process result with stdout, stderr, exit code, duration
|
|
71
|
+
*/
|
|
72
|
+
private executeForeground;
|
|
73
|
+
/**
|
|
74
|
+
* Execute command in background (return immediately).
|
|
75
|
+
*
|
|
76
|
+
* @param command - Normalized command to execute
|
|
77
|
+
* @param options - Execution options
|
|
78
|
+
* @param options.cwd - Working directory
|
|
79
|
+
* @param options.description - Optional description
|
|
80
|
+
* @param options.env - Environment variables
|
|
81
|
+
* @param options.timeout - Timeout in milliseconds
|
|
82
|
+
* @returns Process handle with processId
|
|
83
|
+
*/
|
|
84
|
+
private executeInBackground;
|
|
85
|
+
/**
|
|
86
|
+
* Resolve and validate working directory.
|
|
87
|
+
*
|
|
88
|
+
* Ensures the directory is within the configured base directory
|
|
89
|
+
* and prevents directory traversal attacks.
|
|
90
|
+
*
|
|
91
|
+
* @param cwd - Optional working directory (relative or absolute)
|
|
92
|
+
* @returns Safe absolute working directory
|
|
93
|
+
*/
|
|
94
|
+
private resolveSafeCwd;
|
|
95
|
+
}
|