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,55 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Input schema for kill_process tool.
|
|
5
|
+
*/
|
|
6
|
+
const KillProcessInputSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
/**
|
|
9
|
+
* Unique process identifier from bash_exec.
|
|
10
|
+
*/
|
|
11
|
+
processId: z.string().describe('Unique process identifier from bash_exec'),
|
|
12
|
+
})
|
|
13
|
+
.strict();
|
|
14
|
+
/**
|
|
15
|
+
* Create kill_process tool.
|
|
16
|
+
*
|
|
17
|
+
* Terminates a background process started by bash_exec.
|
|
18
|
+
* Uses graceful shutdown (SIGTERM) with escalation to SIGKILL after 5 seconds.
|
|
19
|
+
*
|
|
20
|
+
* @param processService - Process service for killing processes
|
|
21
|
+
* @returns kill_process tool instance
|
|
22
|
+
*/
|
|
23
|
+
export function createKillProcessTool(processService) {
|
|
24
|
+
return {
|
|
25
|
+
description: `Terminate a background process started by bash_exec.
|
|
26
|
+
|
|
27
|
+
Features:
|
|
28
|
+
- Graceful shutdown: Sends SIGTERM first to allow cleanup
|
|
29
|
+
- Force kill: Escalates to SIGKILL after 5 seconds if still running
|
|
30
|
+
- Idempotent: Safe to call on already-terminated processes
|
|
31
|
+
|
|
32
|
+
Signal handling:
|
|
33
|
+
1. Sends SIGTERM (allows process to cleanup gracefully)
|
|
34
|
+
2. Waits 5 seconds
|
|
35
|
+
3. Sends SIGKILL if process still running (force terminate)
|
|
36
|
+
|
|
37
|
+
Use cases:
|
|
38
|
+
- Stop long-running commands that are no longer needed
|
|
39
|
+
- Cancel background processes that are taking too long
|
|
40
|
+
- Clean up processes before starting new ones`,
|
|
41
|
+
async execute(input, _context) {
|
|
42
|
+
const { processId } = input;
|
|
43
|
+
// Kill process via process service
|
|
44
|
+
await processService.killProcess(processId);
|
|
45
|
+
// Return success confirmation
|
|
46
|
+
return {
|
|
47
|
+
message: `Process ${processId} terminated successfully`,
|
|
48
|
+
processId,
|
|
49
|
+
success: true,
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
id: ToolName.KILL_PROCESS,
|
|
53
|
+
inputSchema: KillProcessInputSchema,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
import type { MemoryManager } from '../../memory/memory-manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the list memories tool.
|
|
5
|
+
*
|
|
6
|
+
* Lists and filters memories stored in the scratch pad. Supports filtering by
|
|
7
|
+
* tags, pinned status, and source. Results are sorted by most recently updated first.
|
|
8
|
+
*
|
|
9
|
+
* @param memoryManager - Memory manager service dependency
|
|
10
|
+
* @returns Configured list memories tool
|
|
11
|
+
*/
|
|
12
|
+
export declare function createListMemoriesTool(memoryManager: MemoryManager): Tool;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Input schema for list memories tool.
|
|
5
|
+
*/
|
|
6
|
+
const ListMemoriesInputSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
limit: z
|
|
9
|
+
.number()
|
|
10
|
+
.int()
|
|
11
|
+
.positive()
|
|
12
|
+
.optional()
|
|
13
|
+
.describe('Maximum number of memories to return'),
|
|
14
|
+
offset: z
|
|
15
|
+
.number()
|
|
16
|
+
.int()
|
|
17
|
+
.nonnegative()
|
|
18
|
+
.optional()
|
|
19
|
+
.describe('Number of memories to skip (for pagination)'),
|
|
20
|
+
pinned: z.boolean().optional().describe('Filter by pinned status'),
|
|
21
|
+
source: z
|
|
22
|
+
.enum(['agent', 'system', 'user'])
|
|
23
|
+
.optional()
|
|
24
|
+
.describe('Filter by source (default: agent)'),
|
|
25
|
+
})
|
|
26
|
+
.strict();
|
|
27
|
+
/**
|
|
28
|
+
* Creates the list memories tool.
|
|
29
|
+
*
|
|
30
|
+
* Lists and filters memories stored in the scratch pad. Supports filtering by
|
|
31
|
+
* tags, pinned status, and source. Results are sorted by most recently updated first.
|
|
32
|
+
*
|
|
33
|
+
* @param memoryManager - Memory manager service dependency
|
|
34
|
+
* @returns Configured list memories tool
|
|
35
|
+
*/
|
|
36
|
+
export function createListMemoriesTool(memoryManager) {
|
|
37
|
+
return {
|
|
38
|
+
description: 'List and filter memories from the scratch pad. Returns memories sorted by most recent first. Use this to discover what context has been stored.',
|
|
39
|
+
async execute(input, _context) {
|
|
40
|
+
const { limit, offset, pinned, source } = input;
|
|
41
|
+
// List memories with filters
|
|
42
|
+
const memories = await memoryManager.list({
|
|
43
|
+
limit,
|
|
44
|
+
offset,
|
|
45
|
+
pinned,
|
|
46
|
+
source,
|
|
47
|
+
});
|
|
48
|
+
// Return formatted result with preview
|
|
49
|
+
return {
|
|
50
|
+
count: memories.length,
|
|
51
|
+
memories: memories.map(m => ({
|
|
52
|
+
contentPreview: m.content.length > 200 ? `${m.content.slice(0, 200)}...` : m.content,
|
|
53
|
+
createdAt: new Date(m.createdAt).toISOString(),
|
|
54
|
+
id: m.id,
|
|
55
|
+
pinned: m.metadata?.pinned ?? false,
|
|
56
|
+
updatedAt: new Date(m.updatedAt).toISOString(),
|
|
57
|
+
})),
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
id: ToolName.LIST_MEMORIES,
|
|
61
|
+
inputSchema: ListMemoriesInputSchema,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
import type { IFileSystem } from '../../../../core/interfaces/cipher/i-file-system.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the read file tool.
|
|
5
|
+
*
|
|
6
|
+
* Reads the contents of a file with optional pagination support.
|
|
7
|
+
* Supports offset (starting line) and limit (max lines) for large files.
|
|
8
|
+
*
|
|
9
|
+
* @param fileSystemService - File system service dependency
|
|
10
|
+
* @returns Configured read file tool
|
|
11
|
+
*/
|
|
12
|
+
export declare function createReadFileTool(fileSystemService: IFileSystem): Tool;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Input schema for read file tool.
|
|
5
|
+
*/
|
|
6
|
+
const ReadFileInputSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
filePath: z.string().describe('Absolute path to the file to read'),
|
|
9
|
+
limit: z
|
|
10
|
+
.number()
|
|
11
|
+
.int()
|
|
12
|
+
.positive()
|
|
13
|
+
.optional()
|
|
14
|
+
.describe('Maximum number of lines to read (optional)'),
|
|
15
|
+
offset: z
|
|
16
|
+
.number()
|
|
17
|
+
.int()
|
|
18
|
+
.min(1)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe('Starting line number (1-based, optional)'),
|
|
21
|
+
})
|
|
22
|
+
.strict();
|
|
23
|
+
/**
|
|
24
|
+
* Creates the read file tool.
|
|
25
|
+
*
|
|
26
|
+
* Reads the contents of a file with optional pagination support.
|
|
27
|
+
* Supports offset (starting line) and limit (max lines) for large files.
|
|
28
|
+
*
|
|
29
|
+
* @param fileSystemService - File system service dependency
|
|
30
|
+
* @returns Configured read file tool
|
|
31
|
+
*/
|
|
32
|
+
export function createReadFileTool(fileSystemService) {
|
|
33
|
+
return {
|
|
34
|
+
description: 'Read the contents of a file. Supports pagination with offset (1-based line number) and limit (max lines).',
|
|
35
|
+
async execute(input, _context) {
|
|
36
|
+
const { filePath, limit, offset } = input;
|
|
37
|
+
// Call file system service
|
|
38
|
+
const result = await fileSystemService.readFile(filePath, {
|
|
39
|
+
limit,
|
|
40
|
+
offset,
|
|
41
|
+
});
|
|
42
|
+
// Return formatted result
|
|
43
|
+
return {
|
|
44
|
+
content: result.content,
|
|
45
|
+
encoding: result.encoding,
|
|
46
|
+
lines: result.lines,
|
|
47
|
+
size: result.size,
|
|
48
|
+
truncated: result.truncated,
|
|
49
|
+
};
|
|
50
|
+
},
|
|
51
|
+
id: ToolName.READ_FILE,
|
|
52
|
+
inputSchema: ReadFileInputSchema,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
import type { MemoryManager } from '../../memory/memory-manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Read memory tool.
|
|
5
|
+
*
|
|
6
|
+
* Retrieves a specific memory by its ID. Use this to recall previously stored
|
|
7
|
+
* context, intermediate results, or findings from the scratch pad.
|
|
8
|
+
*
|
|
9
|
+
* @param memoryManager - Memory manager service dependency
|
|
10
|
+
* @returns Configured read memory tool
|
|
11
|
+
*/
|
|
12
|
+
export declare function createReadMemoryTool(memoryManager: MemoryManager): Tool;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Input schema for read memory tool.
|
|
5
|
+
*/
|
|
6
|
+
const ReadMemoryInputSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
id: z.string().min(1).describe('Unique identifier of the memory to retrieve'),
|
|
9
|
+
})
|
|
10
|
+
.strict();
|
|
11
|
+
/**
|
|
12
|
+
* Read memory tool.
|
|
13
|
+
*
|
|
14
|
+
* Retrieves a specific memory by its ID. Use this to recall previously stored
|
|
15
|
+
* context, intermediate results, or findings from the scratch pad.
|
|
16
|
+
*
|
|
17
|
+
* @param memoryManager - Memory manager service dependency
|
|
18
|
+
* @returns Configured read memory tool
|
|
19
|
+
*/
|
|
20
|
+
export function createReadMemoryTool(memoryManager) {
|
|
21
|
+
return {
|
|
22
|
+
description: 'Read a specific memory by ID. Use this to retrieve previously stored context, findings, or intermediate results from the scratch pad.',
|
|
23
|
+
async execute(input, _context) {
|
|
24
|
+
const { id } = input;
|
|
25
|
+
// Retrieve memory
|
|
26
|
+
const memory = await memoryManager.get(id);
|
|
27
|
+
// Return formatted result
|
|
28
|
+
return {
|
|
29
|
+
content: memory.content,
|
|
30
|
+
createdAt: new Date(memory.createdAt).toISOString(),
|
|
31
|
+
id: memory.id,
|
|
32
|
+
metadata: memory.metadata,
|
|
33
|
+
updatedAt: new Date(memory.updatedAt).toISOString(),
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
id: ToolName.READ_MEMORY,
|
|
37
|
+
inputSchema: ReadMemoryInputSchema,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the search history tool.
|
|
4
|
+
*
|
|
5
|
+
* NOTE: This is a stub implementation. SearchService is not yet implemented.
|
|
6
|
+
* This tool will throw an error until the SearchService is available.
|
|
7
|
+
*
|
|
8
|
+
* @returns Configured search history tool (stub)
|
|
9
|
+
*/
|
|
10
|
+
export declare function createSearchHistoryTool(): Tool;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Input schema for search history tool.
|
|
5
|
+
*/
|
|
6
|
+
const SearchHistoryInputSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
limit: z.number().optional().default(20).describe('Maximum number of results to return (default: 20)'),
|
|
9
|
+
mode: z
|
|
10
|
+
.enum(['messages', 'sessions'])
|
|
11
|
+
.describe('Search mode: "messages" searches for individual messages, "sessions" finds sessions containing the query'),
|
|
12
|
+
offset: z.number().optional().default(0).describe('Offset for pagination (default: 0)'),
|
|
13
|
+
query: z.string().describe('The search query to find in conversation history'),
|
|
14
|
+
role: z.enum(['user', 'assistant', 'system', 'tool']).optional().describe('Filter by message role (optional)'),
|
|
15
|
+
sessionId: z.string().optional().describe('Limit search to a specific session (optional)'),
|
|
16
|
+
})
|
|
17
|
+
.strict();
|
|
18
|
+
/**
|
|
19
|
+
* Creates the search history tool.
|
|
20
|
+
*
|
|
21
|
+
* NOTE: This is a stub implementation. SearchService is not yet implemented.
|
|
22
|
+
* This tool will throw an error until the SearchService is available.
|
|
23
|
+
*
|
|
24
|
+
* @returns Configured search history tool (stub)
|
|
25
|
+
*/
|
|
26
|
+
export function createSearchHistoryTool() {
|
|
27
|
+
return {
|
|
28
|
+
description: 'Search conversation history. Supports searching messages or sessions. Can filter by role and session.',
|
|
29
|
+
async execute(_input, _context) {
|
|
30
|
+
// Stub implementation - SearchService not yet available
|
|
31
|
+
throw new Error('Search history tool is not yet implemented. This feature requires the SearchService which is not currently available.');
|
|
32
|
+
},
|
|
33
|
+
id: ToolName.SEARCH_HISTORY,
|
|
34
|
+
inputSchema: SearchHistoryInputSchema,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
import type { IFileSystem } from '../../../../core/interfaces/cipher/i-file-system.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the write file tool.
|
|
5
|
+
*
|
|
6
|
+
* Writes content to a file, overwriting if it exists.
|
|
7
|
+
* Can optionally create parent directories.
|
|
8
|
+
*
|
|
9
|
+
* @param fileSystemService - File system service dependency
|
|
10
|
+
* @returns Configured write file tool
|
|
11
|
+
*/
|
|
12
|
+
export declare function createWriteFileTool(fileSystemService: IFileSystem): Tool;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
import { sanitizeFolderName } from '../../../../utils/file-helpers.js';
|
|
4
|
+
/**
|
|
5
|
+
* Input schema for write file tool.
|
|
6
|
+
*/
|
|
7
|
+
const WriteFileInputSchema = z
|
|
8
|
+
.object({
|
|
9
|
+
content: z.string().describe('Content to write to the file'),
|
|
10
|
+
createDirs: z
|
|
11
|
+
.boolean()
|
|
12
|
+
.optional()
|
|
13
|
+
.default(false)
|
|
14
|
+
.describe("Create parent directories if they don't exist (default: false)"),
|
|
15
|
+
encoding: z
|
|
16
|
+
.enum(['utf8', 'ascii', 'latin1', 'utf16le', 'base64', 'hex'])
|
|
17
|
+
.optional()
|
|
18
|
+
.default('utf8')
|
|
19
|
+
.describe('File encoding (default: utf8)'),
|
|
20
|
+
filePath: z.string().describe('Absolute path where the file should be written'),
|
|
21
|
+
})
|
|
22
|
+
.strict();
|
|
23
|
+
/**
|
|
24
|
+
* Creates the write file tool.
|
|
25
|
+
*
|
|
26
|
+
* Writes content to a file, overwriting if it exists.
|
|
27
|
+
* Can optionally create parent directories.
|
|
28
|
+
*
|
|
29
|
+
* @param fileSystemService - File system service dependency
|
|
30
|
+
* @returns Configured write file tool
|
|
31
|
+
*/
|
|
32
|
+
export function createWriteFileTool(fileSystemService) {
|
|
33
|
+
return {
|
|
34
|
+
description: 'Write content to a file. Overwrites existing files. Can optionally create parent directories.',
|
|
35
|
+
async execute(input, _context) {
|
|
36
|
+
const { content, createDirs, encoding, filePath } = input;
|
|
37
|
+
// Call file system service
|
|
38
|
+
const result = await fileSystemService.writeFile(sanitizeFolderName(filePath), content, {
|
|
39
|
+
createDirs,
|
|
40
|
+
encoding: encoding,
|
|
41
|
+
});
|
|
42
|
+
// Return formatted result
|
|
43
|
+
return {
|
|
44
|
+
bytesWritten: result.bytesWritten,
|
|
45
|
+
path: result.path,
|
|
46
|
+
success: result.success,
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
id: ToolName.WRITE_FILE,
|
|
50
|
+
inputSchema: WriteFileInputSchema,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
import type { MemoryManager } from '../../memory/memory-manager.js';
|
|
3
|
+
/**
|
|
4
|
+
* Creates the write memory tool.
|
|
5
|
+
*
|
|
6
|
+
* Stores content in the agent's memory as a scratch pad for maintaining context
|
|
7
|
+
* across tool invocations. Memories persist across sessions and can be tagged
|
|
8
|
+
* for organization.
|
|
9
|
+
*
|
|
10
|
+
* @param memoryManager - Memory manager service dependency
|
|
11
|
+
* @returns Configured write memory tool
|
|
12
|
+
*/
|
|
13
|
+
export declare function createWriteMemoryTool(memoryManager: MemoryManager): Tool;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Input schema for write memory tool.
|
|
5
|
+
*/
|
|
6
|
+
const WriteMemoryInputSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
content: z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1, 'Memory content cannot be empty')
|
|
11
|
+
.max(10_000, 'Memory content cannot exceed 10,000 characters')
|
|
12
|
+
.describe('The content to store in memory'),
|
|
13
|
+
pinned: z
|
|
14
|
+
.boolean()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('Whether to pin this memory for auto-loading (default: false)'),
|
|
17
|
+
})
|
|
18
|
+
.strict();
|
|
19
|
+
/**
|
|
20
|
+
* Creates the write memory tool.
|
|
21
|
+
*
|
|
22
|
+
* Stores content in the agent's memory as a scratch pad for maintaining context
|
|
23
|
+
* across tool invocations. Memories persist across sessions and can be tagged
|
|
24
|
+
* for organization.
|
|
25
|
+
*
|
|
26
|
+
* @param memoryManager - Memory manager service dependency
|
|
27
|
+
* @returns Configured write memory tool
|
|
28
|
+
*/
|
|
29
|
+
export function createWriteMemoryTool(memoryManager) {
|
|
30
|
+
return {
|
|
31
|
+
description: 'Write content to agent memory as a scratch pad. Use this to store intermediate results, findings, or context that should persist across tool calls. Memories can be tagged and pinned for easy retrieval.',
|
|
32
|
+
async execute(input, _context) {
|
|
33
|
+
const { content, pinned } = input;
|
|
34
|
+
// Create memory with agent source
|
|
35
|
+
const memory = await memoryManager.create({
|
|
36
|
+
content,
|
|
37
|
+
metadata: {
|
|
38
|
+
pinned: pinned ?? false,
|
|
39
|
+
source: 'agent',
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
// Return formatted result
|
|
43
|
+
return {
|
|
44
|
+
content: memory.content,
|
|
45
|
+
createdAt: new Date(memory.createdAt).toISOString(),
|
|
46
|
+
id: memory.id,
|
|
47
|
+
};
|
|
48
|
+
},
|
|
49
|
+
id: ToolName.WRITE_MEMORY,
|
|
50
|
+
inputSchema: WriteMemoryInputSchema,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Tool } from '../../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates the write todos tool.
|
|
4
|
+
*
|
|
5
|
+
* Manages a structured task list for planning-based execution.
|
|
6
|
+
* Validates that only one task is in_progress at any time.
|
|
7
|
+
*
|
|
8
|
+
* @returns Configured write todos tool
|
|
9
|
+
*/
|
|
10
|
+
export declare function createWriteTodosTool(): Tool;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { TODO_STATUSES } from '../../../../core/domain/cipher/todos/types.js';
|
|
3
|
+
import { ToolName } from '../../../../core/domain/cipher/tools/constants.js';
|
|
4
|
+
/**
|
|
5
|
+
* Schema for a single todo item.
|
|
6
|
+
*/
|
|
7
|
+
const TodoSchema = z.object({
|
|
8
|
+
activeForm: z
|
|
9
|
+
.string()
|
|
10
|
+
.min(1)
|
|
11
|
+
.describe('Present continuous form shown during execution (e.g., "Running tests")'),
|
|
12
|
+
content: z.string().min(1).describe('Imperative description of the task (e.g., "Run tests")'),
|
|
13
|
+
status: z
|
|
14
|
+
.enum(TODO_STATUSES)
|
|
15
|
+
.describe('Task status: pending, in_progress (only ONE at a time), completed, or cancelled'),
|
|
16
|
+
});
|
|
17
|
+
/**
|
|
18
|
+
* Input schema for write todos tool.
|
|
19
|
+
*/
|
|
20
|
+
const WriteTodosInputSchema = z
|
|
21
|
+
.object({
|
|
22
|
+
todos: z.array(TodoSchema).min(1).describe('List of todo items to track'),
|
|
23
|
+
})
|
|
24
|
+
.strict();
|
|
25
|
+
/**
|
|
26
|
+
* Tool description with detailed usage guidance.
|
|
27
|
+
* This helps the LLM understand when to use the tool and how.
|
|
28
|
+
*/
|
|
29
|
+
const TOOL_DESCRIPTION = `Use this tool to create and manage a structured task list for the current session. This helps track progress, organize complex tasks, and demonstrate thoroughness to the user.
|
|
30
|
+
|
|
31
|
+
## When to Use This Tool
|
|
32
|
+
Use this tool proactively in these scenarios:
|
|
33
|
+
|
|
34
|
+
1. **Complex multi-step tasks** - When a task requires 3 or more distinct steps
|
|
35
|
+
2. **Non-trivial and complex tasks** - Tasks that require careful planning or multiple operations
|
|
36
|
+
3. **User explicitly requests todo list** - When the user directly asks to use the todo list
|
|
37
|
+
4. **User provides multiple tasks** - When users provide a list of things to be done
|
|
38
|
+
5. **After receiving new instructions** - Immediately capture user requirements as todos
|
|
39
|
+
6. **When you start working on a task** - Mark it as in_progress BEFORE beginning work
|
|
40
|
+
7. **After completing a task** - Mark it as completed and add any follow-up tasks
|
|
41
|
+
|
|
42
|
+
## When NOT to Use This Tool
|
|
43
|
+
Skip using this tool when:
|
|
44
|
+
1. There is only a single, straightforward task
|
|
45
|
+
2. The task is trivial and tracking provides no organizational benefit
|
|
46
|
+
3. The task can be completed in less than 3 trivial steps
|
|
47
|
+
4. The task is purely conversational or informational
|
|
48
|
+
|
|
49
|
+
## Task States
|
|
50
|
+
- **pending**: Task not yet started
|
|
51
|
+
- **in_progress**: Currently working on (limit to ONE task at a time)
|
|
52
|
+
- **completed**: Task finished successfully
|
|
53
|
+
- **cancelled**: Task no longer needed
|
|
54
|
+
|
|
55
|
+
## Important Rules
|
|
56
|
+
- ONLY ONE task can be "in_progress" at any time
|
|
57
|
+
- Mark tasks complete IMMEDIATELY after finishing (don't batch completions)
|
|
58
|
+
- Task descriptions need both forms:
|
|
59
|
+
- content: Imperative form (e.g., "Run tests")
|
|
60
|
+
- activeForm: Present continuous form (e.g., "Running tests")`;
|
|
61
|
+
/**
|
|
62
|
+
* Validates that only one todo is in_progress.
|
|
63
|
+
*
|
|
64
|
+
* @param todos - Array of todos to validate
|
|
65
|
+
* @returns Error message if invalid, null if valid
|
|
66
|
+
*/
|
|
67
|
+
function validateSingleInProgress(todos) {
|
|
68
|
+
const inProgressCount = todos.filter((todo) => todo.status === 'in_progress').length;
|
|
69
|
+
if (inProgressCount > 1) {
|
|
70
|
+
return `Invalid parameters: Only one task can be "in_progress" at a time. Found ${inProgressCount} tasks in progress.`;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Formats the todo list for LLM response.
|
|
76
|
+
*
|
|
77
|
+
* @param todos - Array of todos
|
|
78
|
+
* @returns Formatted string representation
|
|
79
|
+
*/
|
|
80
|
+
function formatTodosForLLM(todos) {
|
|
81
|
+
const lines = ['Todo list updated:'];
|
|
82
|
+
for (const todo of todos) {
|
|
83
|
+
const statusIcon = getStatusIcon(todo.status);
|
|
84
|
+
lines.push(`${statusIcon} [${todo.status}] ${todo.content}`);
|
|
85
|
+
}
|
|
86
|
+
const stats = getTodoStats(todos);
|
|
87
|
+
const progressLines = [
|
|
88
|
+
'',
|
|
89
|
+
`Progress: ${stats.completed}/${stats.total} completed`,
|
|
90
|
+
];
|
|
91
|
+
if (stats.inProgress > 0) {
|
|
92
|
+
const currentTask = todos.find((t) => t.status === 'in_progress');
|
|
93
|
+
if (currentTask) {
|
|
94
|
+
progressLines.push(`Currently: ${currentTask.activeForm}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return [...lines, ...progressLines].join('\n');
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Gets icon for todo status.
|
|
101
|
+
*
|
|
102
|
+
* @param status - Todo status
|
|
103
|
+
* @returns Status icon
|
|
104
|
+
*/
|
|
105
|
+
function getStatusIcon(status) {
|
|
106
|
+
switch (status) {
|
|
107
|
+
case 'cancelled': {
|
|
108
|
+
return '⊘';
|
|
109
|
+
}
|
|
110
|
+
case 'completed': {
|
|
111
|
+
return '✓';
|
|
112
|
+
}
|
|
113
|
+
case 'in_progress': {
|
|
114
|
+
return '→';
|
|
115
|
+
}
|
|
116
|
+
case 'pending': {
|
|
117
|
+
return '○';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Gets statistics about the todo list.
|
|
123
|
+
*
|
|
124
|
+
* @param todos - Array of todos
|
|
125
|
+
* @returns Statistics object
|
|
126
|
+
*/
|
|
127
|
+
function getTodoStats(todos) {
|
|
128
|
+
return {
|
|
129
|
+
cancelled: todos.filter((t) => t.status === 'cancelled').length,
|
|
130
|
+
completed: todos.filter((t) => t.status === 'completed').length,
|
|
131
|
+
inProgress: todos.filter((t) => t.status === 'in_progress').length,
|
|
132
|
+
pending: todos.filter((t) => t.status === 'pending').length,
|
|
133
|
+
total: todos.length,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Creates the write todos tool.
|
|
138
|
+
*
|
|
139
|
+
* Manages a structured task list for planning-based execution.
|
|
140
|
+
* Validates that only one task is in_progress at any time.
|
|
141
|
+
*
|
|
142
|
+
* @returns Configured write todos tool
|
|
143
|
+
*/
|
|
144
|
+
export function createWriteTodosTool() {
|
|
145
|
+
return {
|
|
146
|
+
description: TOOL_DESCRIPTION,
|
|
147
|
+
async execute(input, _context) {
|
|
148
|
+
const { todos } = input;
|
|
149
|
+
// Validate only one in_progress
|
|
150
|
+
const validationError = validateSingleInProgress(todos);
|
|
151
|
+
if (validationError) {
|
|
152
|
+
return validationError;
|
|
153
|
+
}
|
|
154
|
+
// Format response for LLM
|
|
155
|
+
const llmContent = formatTodosForLLM(todos);
|
|
156
|
+
// Return both LLM content and display content
|
|
157
|
+
return {
|
|
158
|
+
llmContent,
|
|
159
|
+
returnDisplay: { todos },
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
id: ToolName.WRITE_TODOS,
|
|
163
|
+
inputSchema: WriteTodosInputSchema,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { ToolError, ToolExecutionError, ToolNotFoundError, ToolProviderNotInitializedError, ToolValidationError, } from '../../../core/domain/cipher/errors/tool-error.js';
|
|
2
|
+
export { ToolName } from '../../../core/domain/cipher/tools/constants.js';
|
|
3
|
+
export type { KnownTool } from '../../../core/domain/cipher/tools/constants.js';
|
|
4
|
+
export type { JSONSchema7, Tool, ToolExecutionContext, ToolSet } from '../../../core/domain/cipher/tools/types.js';
|
|
5
|
+
export type { IToolProvider } from '../../../core/interfaces/cipher/i-tool-provider.js';
|
|
6
|
+
export { createCreateKnowledgeTopicTool } from './implementations/create-knowledge-topic-tool.js';
|
|
7
|
+
export { createDetectDomainsTool } from './implementations/detect-domains-tool.js';
|
|
8
|
+
export { createEditFileTool } from './implementations/edit-file-tool.js';
|
|
9
|
+
export { createGlobFilesTool } from './implementations/glob-files-tool.js';
|
|
10
|
+
export { createGrepContentTool } from './implementations/grep-content-tool.js';
|
|
11
|
+
export { createReadFileTool } from './implementations/read-file-tool.js';
|
|
12
|
+
export { createSearchHistoryTool } from './implementations/search-history-tool.js';
|
|
13
|
+
export { createWriteFileTool } from './implementations/write-file-tool.js';
|
|
14
|
+
export { ToolManager } from './tool-manager.js';
|
|
15
|
+
export { ToolProvider } from './tool-provider.js';
|
|
16
|
+
export type { ToolFactory, ToolRegistryEntry, ToolServices } from './tool-registry.js';
|
|
17
|
+
export { TOOL_REGISTRY } from './tool-registry.js';
|
|
18
|
+
export { convertZodToJsonSchema } from './utils/schema-converter.js';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Errors
|
|
2
|
+
export { ToolError, ToolExecutionError, ToolNotFoundError, ToolProviderNotInitializedError, ToolValidationError, } from '../../../core/domain/cipher/errors/tool-error.js';
|
|
3
|
+
// Constants
|
|
4
|
+
export { ToolName } from '../../../core/domain/cipher/tools/constants.js';
|
|
5
|
+
// Tool implementations (for direct access if needed)
|
|
6
|
+
export { createCreateKnowledgeTopicTool } from './implementations/create-knowledge-topic-tool.js';
|
|
7
|
+
export { createDetectDomainsTool } from './implementations/detect-domains-tool.js';
|
|
8
|
+
export { createEditFileTool } from './implementations/edit-file-tool.js';
|
|
9
|
+
export { createGlobFilesTool } from './implementations/glob-files-tool.js';
|
|
10
|
+
export { createGrepContentTool } from './implementations/grep-content-tool.js';
|
|
11
|
+
export { createReadFileTool } from './implementations/read-file-tool.js';
|
|
12
|
+
export { createSearchHistoryTool } from './implementations/search-history-tool.js';
|
|
13
|
+
export { createWriteFileTool } from './implementations/write-file-tool.js';
|
|
14
|
+
// Registry and provider
|
|
15
|
+
export { ToolManager } from './tool-manager.js';
|
|
16
|
+
export { ToolProvider } from './tool-provider.js';
|
|
17
|
+
export { TOOL_REGISTRY } from './tool-registry.js';
|
|
18
|
+
// Utilities
|
|
19
|
+
export { convertZodToJsonSchema } from './utils/schema-converter.js';
|