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,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Invocation Builder Pattern
|
|
3
|
+
*
|
|
4
|
+
* Implements a two-phase tool execution architecture:
|
|
5
|
+
* 1. Builder Phase: Validate tool call and build invocation
|
|
6
|
+
* 2. Invocation Phase: Execute the validated invocation
|
|
7
|
+
*
|
|
8
|
+
* This separation enables:
|
|
9
|
+
* - Early validation before execution
|
|
10
|
+
* - Queuing of validated invocations
|
|
11
|
+
* - Retry logic without re-validation
|
|
12
|
+
* - Better error handling and debugging
|
|
13
|
+
*/
|
|
14
|
+
import type { Tool, ToolExecutionContext } from '../../../core/domain/cipher/tools/types.js';
|
|
15
|
+
import { ToolError } from '../../../core/domain/cipher/tools/tool-error.js';
|
|
16
|
+
/**
|
|
17
|
+
* Status of a tool invocation.
|
|
18
|
+
*
|
|
19
|
+
* Simplified for autonomous execution - no AWAITING_APPROVAL or CANCELLED states.
|
|
20
|
+
* Added DENIED for policy rejections.
|
|
21
|
+
*/
|
|
22
|
+
export declare enum ToolInvocationStatus {
|
|
23
|
+
/**
|
|
24
|
+
* Invocation completed successfully
|
|
25
|
+
*/
|
|
26
|
+
COMPLETED = "COMPLETED",
|
|
27
|
+
/**
|
|
28
|
+
* Invocation was denied by policy
|
|
29
|
+
*/
|
|
30
|
+
DENIED = "DENIED",
|
|
31
|
+
/**
|
|
32
|
+
* Invocation failed with error
|
|
33
|
+
*/
|
|
34
|
+
ERROR = "ERROR",
|
|
35
|
+
/**
|
|
36
|
+
* Invocation is currently executing
|
|
37
|
+
*/
|
|
38
|
+
EXECUTING = "EXECUTING",
|
|
39
|
+
/**
|
|
40
|
+
* Invocation is scheduled for execution
|
|
41
|
+
*/
|
|
42
|
+
SCHEDULED = "SCHEDULED",
|
|
43
|
+
/**
|
|
44
|
+
* Invocation is validating (builder phase)
|
|
45
|
+
*/
|
|
46
|
+
VALIDATING = "VALIDATING"
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Result from tool invocation execution
|
|
50
|
+
*/
|
|
51
|
+
export interface ToolInvocationResult {
|
|
52
|
+
/**
|
|
53
|
+
* Duration of execution in milliseconds
|
|
54
|
+
*/
|
|
55
|
+
durationMs: number;
|
|
56
|
+
/**
|
|
57
|
+
* Error if execution failed
|
|
58
|
+
*/
|
|
59
|
+
error?: ToolError;
|
|
60
|
+
/**
|
|
61
|
+
* Execution result (if successful)
|
|
62
|
+
*/
|
|
63
|
+
result?: unknown;
|
|
64
|
+
/**
|
|
65
|
+
* Final status after execution
|
|
66
|
+
*/
|
|
67
|
+
status: ToolInvocationStatus;
|
|
68
|
+
/**
|
|
69
|
+
* Timestamp when execution completed
|
|
70
|
+
*/
|
|
71
|
+
timestamp: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Options for creating a tool invocation
|
|
75
|
+
*/
|
|
76
|
+
export interface ToolInvocationOptions {
|
|
77
|
+
/**
|
|
78
|
+
* Validated tool arguments
|
|
79
|
+
*/
|
|
80
|
+
args: Record<string, unknown>;
|
|
81
|
+
/**
|
|
82
|
+
* Execution context (sessionId, etc.)
|
|
83
|
+
*/
|
|
84
|
+
context: ToolExecutionContext;
|
|
85
|
+
/**
|
|
86
|
+
* Unique identifier for this invocation
|
|
87
|
+
*/
|
|
88
|
+
id: string;
|
|
89
|
+
/**
|
|
90
|
+
* Tool instance
|
|
91
|
+
*/
|
|
92
|
+
tool: Tool;
|
|
93
|
+
/**
|
|
94
|
+
* Tool name
|
|
95
|
+
*/
|
|
96
|
+
toolName: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Validated tool invocation ready for execution
|
|
100
|
+
*
|
|
101
|
+
* Contains all information needed to execute a tool call:
|
|
102
|
+
* - Tool reference and metadata
|
|
103
|
+
* - Validated arguments
|
|
104
|
+
* - Execution context
|
|
105
|
+
* - Status tracking
|
|
106
|
+
*/
|
|
107
|
+
export declare class ToolInvocation {
|
|
108
|
+
/**
|
|
109
|
+
* Validated tool arguments
|
|
110
|
+
*/
|
|
111
|
+
readonly args: Record<string, unknown>;
|
|
112
|
+
/**
|
|
113
|
+
* Execution context (sessionId, etc.)
|
|
114
|
+
*/
|
|
115
|
+
readonly context: ToolExecutionContext;
|
|
116
|
+
/**
|
|
117
|
+
* Unique identifier for this invocation
|
|
118
|
+
*/
|
|
119
|
+
readonly id: string;
|
|
120
|
+
/**
|
|
121
|
+
* Tool instance
|
|
122
|
+
*/
|
|
123
|
+
readonly tool: Tool;
|
|
124
|
+
/**
|
|
125
|
+
* Tool name
|
|
126
|
+
*/
|
|
127
|
+
readonly toolName: string;
|
|
128
|
+
/**
|
|
129
|
+
* Current status
|
|
130
|
+
*/
|
|
131
|
+
private _status;
|
|
132
|
+
/**
|
|
133
|
+
* Timestamp when invocation was created
|
|
134
|
+
*/
|
|
135
|
+
private readonly createdAt;
|
|
136
|
+
/**
|
|
137
|
+
* Create a new tool invocation
|
|
138
|
+
*
|
|
139
|
+
* @param options - Tool invocation options
|
|
140
|
+
*/
|
|
141
|
+
constructor(options: ToolInvocationOptions);
|
|
142
|
+
/**
|
|
143
|
+
* Get current status
|
|
144
|
+
*/
|
|
145
|
+
get status(): ToolInvocationStatus;
|
|
146
|
+
/**
|
|
147
|
+
* Mark this invocation as denied by policy.
|
|
148
|
+
*
|
|
149
|
+
* Can only deny if not yet executing or completed.
|
|
150
|
+
*
|
|
151
|
+
* @returns True if denied, false if already executing/completed
|
|
152
|
+
*/
|
|
153
|
+
deny(): boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Execute this invocation
|
|
156
|
+
*
|
|
157
|
+
* Transitions through states:
|
|
158
|
+
* SCHEDULED -> EXECUTING -> COMPLETED/ERROR
|
|
159
|
+
*
|
|
160
|
+
* @returns Execution result
|
|
161
|
+
*/
|
|
162
|
+
execute(): Promise<ToolInvocationResult>;
|
|
163
|
+
/**
|
|
164
|
+
* Get age of this invocation in milliseconds
|
|
165
|
+
*/
|
|
166
|
+
getAge(): number;
|
|
167
|
+
/**
|
|
168
|
+
* Check if invocation can be executed
|
|
169
|
+
*/
|
|
170
|
+
isExecutable(): boolean;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Builder for creating validated tool invocations
|
|
174
|
+
*
|
|
175
|
+
* Validates tool existence, arguments, and builds executable invocations.
|
|
176
|
+
* Separates validation concerns from execution.
|
|
177
|
+
*/
|
|
178
|
+
export declare class ToolInvocationBuilder {
|
|
179
|
+
/**
|
|
180
|
+
* Map of tool name to tool instance
|
|
181
|
+
*/
|
|
182
|
+
private readonly tools;
|
|
183
|
+
/**
|
|
184
|
+
* Create a new tool invocation builder
|
|
185
|
+
*
|
|
186
|
+
* @param tools - Map of available tools
|
|
187
|
+
*/
|
|
188
|
+
constructor(tools: Map<string, Tool>);
|
|
189
|
+
/**
|
|
190
|
+
* Build and validate a tool invocation
|
|
191
|
+
*
|
|
192
|
+
* Performs validation:
|
|
193
|
+
* 1. Tool exists
|
|
194
|
+
* 2. Arguments match schema
|
|
195
|
+
* 3. Required parameters present
|
|
196
|
+
*
|
|
197
|
+
* @param id - Unique invocation ID (e.g., from LLM tool call)
|
|
198
|
+
* @param toolName - Name of tool to invoke
|
|
199
|
+
* @param args - Tool arguments
|
|
200
|
+
* @param context - Execution context
|
|
201
|
+
* @returns Validated tool invocation ready for execution
|
|
202
|
+
* @throws ToolError if validation fails
|
|
203
|
+
*/
|
|
204
|
+
build(id: string, toolName: string, args: Record<string, unknown>, context?: ToolExecutionContext): ToolInvocation;
|
|
205
|
+
/**
|
|
206
|
+
* Validate tool arguments without building invocation
|
|
207
|
+
*
|
|
208
|
+
* Useful for pre-validation or dry-run checks.
|
|
209
|
+
*
|
|
210
|
+
* @param toolName - Name of tool
|
|
211
|
+
* @param args - Arguments to validate
|
|
212
|
+
* @returns True if valid
|
|
213
|
+
* @throws ToolError if validation fails
|
|
214
|
+
*/
|
|
215
|
+
validate(toolName: string, args: Record<string, unknown>): boolean;
|
|
216
|
+
}
|
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Invocation Builder Pattern
|
|
3
|
+
*
|
|
4
|
+
* Implements a two-phase tool execution architecture:
|
|
5
|
+
* 1. Builder Phase: Validate tool call and build invocation
|
|
6
|
+
* 2. Invocation Phase: Execute the validated invocation
|
|
7
|
+
*
|
|
8
|
+
* This separation enables:
|
|
9
|
+
* - Early validation before execution
|
|
10
|
+
* - Queuing of validated invocations
|
|
11
|
+
* - Retry logic without re-validation
|
|
12
|
+
* - Better error handling and debugging
|
|
13
|
+
*/
|
|
14
|
+
import { ToolError, ToolErrorType } from '../../../core/domain/cipher/tools/tool-error.js';
|
|
15
|
+
/**
|
|
16
|
+
* Status of a tool invocation.
|
|
17
|
+
*
|
|
18
|
+
* Simplified for autonomous execution - no AWAITING_APPROVAL or CANCELLED states.
|
|
19
|
+
* Added DENIED for policy rejections.
|
|
20
|
+
*/
|
|
21
|
+
export var ToolInvocationStatus;
|
|
22
|
+
(function (ToolInvocationStatus) {
|
|
23
|
+
/**
|
|
24
|
+
* Invocation completed successfully
|
|
25
|
+
*/
|
|
26
|
+
ToolInvocationStatus["COMPLETED"] = "COMPLETED";
|
|
27
|
+
/**
|
|
28
|
+
* Invocation was denied by policy
|
|
29
|
+
*/
|
|
30
|
+
ToolInvocationStatus["DENIED"] = "DENIED";
|
|
31
|
+
/**
|
|
32
|
+
* Invocation failed with error
|
|
33
|
+
*/
|
|
34
|
+
ToolInvocationStatus["ERROR"] = "ERROR";
|
|
35
|
+
/**
|
|
36
|
+
* Invocation is currently executing
|
|
37
|
+
*/
|
|
38
|
+
ToolInvocationStatus["EXECUTING"] = "EXECUTING";
|
|
39
|
+
/**
|
|
40
|
+
* Invocation is scheduled for execution
|
|
41
|
+
*/
|
|
42
|
+
ToolInvocationStatus["SCHEDULED"] = "SCHEDULED";
|
|
43
|
+
/**
|
|
44
|
+
* Invocation is validating (builder phase)
|
|
45
|
+
*/
|
|
46
|
+
ToolInvocationStatus["VALIDATING"] = "VALIDATING";
|
|
47
|
+
})(ToolInvocationStatus || (ToolInvocationStatus = {}));
|
|
48
|
+
/**
|
|
49
|
+
* Validated tool invocation ready for execution
|
|
50
|
+
*
|
|
51
|
+
* Contains all information needed to execute a tool call:
|
|
52
|
+
* - Tool reference and metadata
|
|
53
|
+
* - Validated arguments
|
|
54
|
+
* - Execution context
|
|
55
|
+
* - Status tracking
|
|
56
|
+
*/
|
|
57
|
+
export class ToolInvocation {
|
|
58
|
+
/**
|
|
59
|
+
* Validated tool arguments
|
|
60
|
+
*/
|
|
61
|
+
args;
|
|
62
|
+
/**
|
|
63
|
+
* Execution context (sessionId, etc.)
|
|
64
|
+
*/
|
|
65
|
+
context;
|
|
66
|
+
/**
|
|
67
|
+
* Unique identifier for this invocation
|
|
68
|
+
*/
|
|
69
|
+
id;
|
|
70
|
+
/**
|
|
71
|
+
* Tool instance
|
|
72
|
+
*/
|
|
73
|
+
tool;
|
|
74
|
+
/**
|
|
75
|
+
* Tool name
|
|
76
|
+
*/
|
|
77
|
+
toolName;
|
|
78
|
+
/**
|
|
79
|
+
* Current status
|
|
80
|
+
*/
|
|
81
|
+
_status = ToolInvocationStatus.SCHEDULED;
|
|
82
|
+
/**
|
|
83
|
+
* Timestamp when invocation was created
|
|
84
|
+
*/
|
|
85
|
+
createdAt = Date.now();
|
|
86
|
+
/**
|
|
87
|
+
* Create a new tool invocation
|
|
88
|
+
*
|
|
89
|
+
* @param options - Tool invocation options
|
|
90
|
+
*/
|
|
91
|
+
constructor(options) {
|
|
92
|
+
this.id = options.id;
|
|
93
|
+
this.toolName = options.toolName;
|
|
94
|
+
this.tool = options.tool;
|
|
95
|
+
this.args = options.args;
|
|
96
|
+
this.context = options.context;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Get current status
|
|
100
|
+
*/
|
|
101
|
+
get status() {
|
|
102
|
+
return this._status;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Mark this invocation as denied by policy.
|
|
106
|
+
*
|
|
107
|
+
* Can only deny if not yet executing or completed.
|
|
108
|
+
*
|
|
109
|
+
* @returns True if denied, false if already executing/completed
|
|
110
|
+
*/
|
|
111
|
+
deny() {
|
|
112
|
+
if (this._status === ToolInvocationStatus.EXECUTING ||
|
|
113
|
+
this._status === ToolInvocationStatus.COMPLETED ||
|
|
114
|
+
this._status === ToolInvocationStatus.ERROR ||
|
|
115
|
+
this._status === ToolInvocationStatus.DENIED) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
this._status = ToolInvocationStatus.DENIED;
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Execute this invocation
|
|
123
|
+
*
|
|
124
|
+
* Transitions through states:
|
|
125
|
+
* SCHEDULED -> EXECUTING -> COMPLETED/ERROR
|
|
126
|
+
*
|
|
127
|
+
* @returns Execution result
|
|
128
|
+
*/
|
|
129
|
+
async execute() {
|
|
130
|
+
// Check if invocation was denied by policy
|
|
131
|
+
if (this._status === ToolInvocationStatus.DENIED) {
|
|
132
|
+
return {
|
|
133
|
+
durationMs: 0,
|
|
134
|
+
error: new ToolError('Tool invocation was denied by policy', ToolErrorType.PERMISSION_DENIED, this.toolName),
|
|
135
|
+
status: ToolInvocationStatus.DENIED,
|
|
136
|
+
timestamp: Date.now(),
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// Check if invocation is in executable state
|
|
140
|
+
if (this._status !== ToolInvocationStatus.SCHEDULED) {
|
|
141
|
+
return {
|
|
142
|
+
durationMs: 0,
|
|
143
|
+
error: new ToolError(`Cannot execute invocation in status: ${this._status}`, ToolErrorType.EXECUTION_FAILED, this.toolName),
|
|
144
|
+
status: this._status,
|
|
145
|
+
timestamp: Date.now(),
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
// Start execution
|
|
149
|
+
this._status = ToolInvocationStatus.EXECUTING;
|
|
150
|
+
const startTime = Date.now();
|
|
151
|
+
try {
|
|
152
|
+
// Execute tool with validated arguments
|
|
153
|
+
const result = await this.tool.execute(this.args, this.context);
|
|
154
|
+
// Mark as completed
|
|
155
|
+
this._status = ToolInvocationStatus.COMPLETED;
|
|
156
|
+
const durationMs = Date.now() - startTime;
|
|
157
|
+
return {
|
|
158
|
+
durationMs,
|
|
159
|
+
result,
|
|
160
|
+
status: ToolInvocationStatus.COMPLETED,
|
|
161
|
+
timestamp: Date.now(),
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
// Mark as error
|
|
166
|
+
this._status = ToolInvocationStatus.ERROR;
|
|
167
|
+
const durationMs = Date.now() - startTime;
|
|
168
|
+
// Convert to ToolError
|
|
169
|
+
const toolError = error instanceof ToolError
|
|
170
|
+
? error
|
|
171
|
+
: new ToolError(error instanceof Error ? error.message : String(error), ToolErrorType.EXECUTION_FAILED, this.toolName, { originalError: error instanceof Error ? error : undefined });
|
|
172
|
+
return {
|
|
173
|
+
durationMs,
|
|
174
|
+
error: toolError,
|
|
175
|
+
status: ToolInvocationStatus.ERROR,
|
|
176
|
+
timestamp: Date.now(),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get age of this invocation in milliseconds
|
|
182
|
+
*/
|
|
183
|
+
getAge() {
|
|
184
|
+
return Date.now() - this.createdAt;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Check if invocation can be executed
|
|
188
|
+
*/
|
|
189
|
+
isExecutable() {
|
|
190
|
+
return this._status === ToolInvocationStatus.SCHEDULED;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Builder for creating validated tool invocations
|
|
195
|
+
*
|
|
196
|
+
* Validates tool existence, arguments, and builds executable invocations.
|
|
197
|
+
* Separates validation concerns from execution.
|
|
198
|
+
*/
|
|
199
|
+
export class ToolInvocationBuilder {
|
|
200
|
+
/**
|
|
201
|
+
* Map of tool name to tool instance
|
|
202
|
+
*/
|
|
203
|
+
tools;
|
|
204
|
+
/**
|
|
205
|
+
* Create a new tool invocation builder
|
|
206
|
+
*
|
|
207
|
+
* @param tools - Map of available tools
|
|
208
|
+
*/
|
|
209
|
+
constructor(tools) {
|
|
210
|
+
this.tools = tools;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Build and validate a tool invocation
|
|
214
|
+
*
|
|
215
|
+
* Performs validation:
|
|
216
|
+
* 1. Tool exists
|
|
217
|
+
* 2. Arguments match schema
|
|
218
|
+
* 3. Required parameters present
|
|
219
|
+
*
|
|
220
|
+
* @param id - Unique invocation ID (e.g., from LLM tool call)
|
|
221
|
+
* @param toolName - Name of tool to invoke
|
|
222
|
+
* @param args - Tool arguments
|
|
223
|
+
* @param context - Execution context
|
|
224
|
+
* @returns Validated tool invocation ready for execution
|
|
225
|
+
* @throws ToolError if validation fails
|
|
226
|
+
*/
|
|
227
|
+
build(id, toolName, args, context = {}) {
|
|
228
|
+
// Check tool exists
|
|
229
|
+
const tool = this.tools.get(toolName);
|
|
230
|
+
if (!tool) {
|
|
231
|
+
throw new ToolError(`Tool '${toolName}' not found`, ToolErrorType.TOOL_NOT_FOUND, toolName, {
|
|
232
|
+
context: {
|
|
233
|
+
availableTools: [...this.tools.keys()],
|
|
234
|
+
},
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
// Validate arguments against schema
|
|
238
|
+
try {
|
|
239
|
+
const validatedArgs = tool.inputSchema.parse(args);
|
|
240
|
+
// Create invocation with validated arguments
|
|
241
|
+
return new ToolInvocation({
|
|
242
|
+
args: validatedArgs,
|
|
243
|
+
context,
|
|
244
|
+
id,
|
|
245
|
+
tool,
|
|
246
|
+
toolName,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
// Handle Zod validation errors
|
|
251
|
+
if (error && typeof error === 'object' && 'errors' in error) {
|
|
252
|
+
const zodError = error;
|
|
253
|
+
const errorMessages = zodError.errors
|
|
254
|
+
.map((err) => `${err.path.join('.')}: ${err.message}`)
|
|
255
|
+
.join('; ');
|
|
256
|
+
throw new ToolError(`Invalid arguments: ${errorMessages}`, ToolErrorType.INVALID_PARAMS, toolName, { originalError: error instanceof Error ? error : undefined });
|
|
257
|
+
}
|
|
258
|
+
// Handle other validation errors
|
|
259
|
+
throw new ToolError(error instanceof Error ? error.message : String(error), ToolErrorType.PARAM_VALIDATION_FAILED, toolName, { originalError: error instanceof Error ? error : undefined });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Validate tool arguments without building invocation
|
|
264
|
+
*
|
|
265
|
+
* Useful for pre-validation or dry-run checks.
|
|
266
|
+
*
|
|
267
|
+
* @param toolName - Name of tool
|
|
268
|
+
* @param args - Arguments to validate
|
|
269
|
+
* @returns True if valid
|
|
270
|
+
* @throws ToolError if validation fails
|
|
271
|
+
*/
|
|
272
|
+
validate(toolName, args) {
|
|
273
|
+
// Check tool exists
|
|
274
|
+
const tool = this.tools.get(toolName);
|
|
275
|
+
if (!tool) {
|
|
276
|
+
throw new ToolError(`Tool '${toolName}' not found`, ToolErrorType.TOOL_NOT_FOUND, toolName);
|
|
277
|
+
}
|
|
278
|
+
// Validate against schema
|
|
279
|
+
try {
|
|
280
|
+
tool.inputSchema.parse(args);
|
|
281
|
+
return true;
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
if (error && typeof error === 'object' && 'errors' in error) {
|
|
285
|
+
const zodError = error;
|
|
286
|
+
const errorMessages = zodError.errors
|
|
287
|
+
.map((err) => `${err.path.join('.')}: ${err.message}`)
|
|
288
|
+
.join('; ');
|
|
289
|
+
throw new ToolError(`Invalid arguments: ${errorMessages}`, ToolErrorType.INVALID_PARAMS, toolName, { originalError: error instanceof Error ? error : undefined });
|
|
290
|
+
}
|
|
291
|
+
throw new ToolError(error instanceof Error ? error.message : String(error), ToolErrorType.PARAM_VALIDATION_FAILED, toolName, { originalError: error instanceof Error ? error : undefined });
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import type { ToolSet } from '../../../core/domain/cipher/tools/types.js';
|
|
2
|
+
import type { IToolProvider } from '../../../core/interfaces/cipher/i-tool-provider.js';
|
|
3
|
+
import type { IToolScheduler } from '../../../core/interfaces/cipher/i-tool-scheduler.js';
|
|
4
|
+
import type { ToolMarker } from './tool-markers.js';
|
|
5
|
+
import { type ToolExecutionResult } from '../../../core/domain/cipher/tools/tool-error.js';
|
|
6
|
+
/**
|
|
7
|
+
* Tool Manager for CipherAgent
|
|
8
|
+
*
|
|
9
|
+
* Provides a clean interface for tool discovery and execution.
|
|
10
|
+
* Wraps ToolProvider with caching for improved performance.
|
|
11
|
+
*
|
|
12
|
+
* Features:
|
|
13
|
+
* - Optional scheduler integration for policy-based execution
|
|
14
|
+
* - Tool caching for performance
|
|
15
|
+
* - Structured error handling with classification
|
|
16
|
+
*
|
|
17
|
+
* When a scheduler is provided, tool execution flows through:
|
|
18
|
+
* 1. Policy check (ALLOW/DENY)
|
|
19
|
+
* 2. Execution (if allowed)
|
|
20
|
+
*
|
|
21
|
+
* Without a scheduler, tools execute directly via the provider.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ToolManager {
|
|
24
|
+
/**
|
|
25
|
+
* Read-only tools allowed for query operations
|
|
26
|
+
*/
|
|
27
|
+
private static readonly QUERY_TOOL_NAMES;
|
|
28
|
+
private cacheValid;
|
|
29
|
+
private readonly scheduler?;
|
|
30
|
+
private readonly toolProvider;
|
|
31
|
+
private toolsCache;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new tool manager
|
|
34
|
+
*
|
|
35
|
+
* @param toolProvider - Tool provider instance
|
|
36
|
+
* @param scheduler - Optional tool scheduler for policy-based execution
|
|
37
|
+
*/
|
|
38
|
+
constructor(toolProvider: IToolProvider, scheduler?: IToolScheduler);
|
|
39
|
+
/**
|
|
40
|
+
* Execute a tool by name with structured error handling.
|
|
41
|
+
*
|
|
42
|
+
* Returns a structured result that includes success status, content,
|
|
43
|
+
* error classification, and metadata. This enables better error handling
|
|
44
|
+
* and provides actionable feedback to the LLM.
|
|
45
|
+
*
|
|
46
|
+
* When a scheduler is configured, execution flows through:
|
|
47
|
+
* 1. Policy check (ALLOW/DENY)
|
|
48
|
+
* 2. Execution (if allowed)
|
|
49
|
+
*
|
|
50
|
+
* Without a scheduler, tools execute directly via the provider.
|
|
51
|
+
*
|
|
52
|
+
* @param toolName - Name of the tool to execute
|
|
53
|
+
* @param args - Tool arguments (validated by provider)
|
|
54
|
+
* @param sessionId - Optional session ID for context
|
|
55
|
+
* @returns Structured tool execution result
|
|
56
|
+
*/
|
|
57
|
+
executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<ToolExecutionResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Get all available tools in JSON Schema format.
|
|
60
|
+
* Results are cached for performance.
|
|
61
|
+
*
|
|
62
|
+
* @returns Tool set with JSON Schema definitions for LLM
|
|
63
|
+
*/
|
|
64
|
+
getAllTools(): ToolSet;
|
|
65
|
+
/**
|
|
66
|
+
* Get all available tool markers from registered tools.
|
|
67
|
+
*
|
|
68
|
+
* @returns Set of tool marker strings
|
|
69
|
+
*/
|
|
70
|
+
getAvailableMarkers(): Set<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Get the count of registered tools.
|
|
73
|
+
*
|
|
74
|
+
* @returns Number of available tools
|
|
75
|
+
*/
|
|
76
|
+
getToolCount(): number;
|
|
77
|
+
/**
|
|
78
|
+
* Get names of all registered tools.
|
|
79
|
+
*
|
|
80
|
+
* @returns Array of tool names
|
|
81
|
+
*/
|
|
82
|
+
getToolNames(): string[];
|
|
83
|
+
/**
|
|
84
|
+
* Get filtered tool names based on command type.
|
|
85
|
+
* For 'query' command, returns only read-only discovery tools.
|
|
86
|
+
* For other commands, returns all tools.
|
|
87
|
+
*
|
|
88
|
+
* @param commandType - The command type ('add', 'query', etc.)
|
|
89
|
+
* @returns Array of filtered tool names
|
|
90
|
+
*/
|
|
91
|
+
getToolNamesForCommand(commandType?: string): string[];
|
|
92
|
+
/**
|
|
93
|
+
* Get tool names that have a specific marker.
|
|
94
|
+
*
|
|
95
|
+
* @param marker - The tool marker to filter by
|
|
96
|
+
* @returns Array of tool names with the specified marker
|
|
97
|
+
*/
|
|
98
|
+
getToolsByMarker(marker: ToolMarker): string[];
|
|
99
|
+
/**
|
|
100
|
+
* Get filtered tools based on command type.
|
|
101
|
+
* For 'query' command, returns only read-only discovery tools.
|
|
102
|
+
* For other commands, returns all tools.
|
|
103
|
+
*
|
|
104
|
+
* @param commandType - The command type ('add', 'query', etc.)
|
|
105
|
+
* @returns Filtered tool set with JSON Schema definitions
|
|
106
|
+
*/
|
|
107
|
+
getToolsForCommand(commandType?: string): ToolSet;
|
|
108
|
+
/**
|
|
109
|
+
* Check if a tool exists.
|
|
110
|
+
*
|
|
111
|
+
* @param toolName - Name of the tool
|
|
112
|
+
* @returns True if the tool exists
|
|
113
|
+
*/
|
|
114
|
+
hasTool(toolName: string): boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Initialize the tool manager.
|
|
117
|
+
* Registers all available tools and invalidates cache.
|
|
118
|
+
*/
|
|
119
|
+
initialize(): Promise<void>;
|
|
120
|
+
/**
|
|
121
|
+
* Refresh tool discovery.
|
|
122
|
+
* Invalidates the tool cache, forcing a rebuild on next getAllTools() call.
|
|
123
|
+
*
|
|
124
|
+
* Useful when:
|
|
125
|
+
* - Adding/removing tools dynamically (future)
|
|
126
|
+
* - MCP servers connect/disconnect (future)
|
|
127
|
+
* - Manual cache clearing needed
|
|
128
|
+
*/
|
|
129
|
+
refresh(): void;
|
|
130
|
+
/**
|
|
131
|
+
* Invalidates the tool cache.
|
|
132
|
+
* Next call to getAllTools() will rebuild the cache.
|
|
133
|
+
*/
|
|
134
|
+
private invalidateCache;
|
|
135
|
+
}
|