byterover-cli 0.2.1 → 0.3.1
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 +63 -3
- package/dist/commands/init.js +285 -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,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Engine Implementation.
|
|
3
|
+
*
|
|
4
|
+
* Rule-based ALLOW/DENY decisions for tool execution.
|
|
5
|
+
* Designed for autonomous execution without user confirmation.
|
|
6
|
+
*
|
|
7
|
+
* Rules are evaluated in order - first matching rule wins.
|
|
8
|
+
* If no rule matches, the default decision is used.
|
|
9
|
+
*/
|
|
10
|
+
import type { IPolicyEngine, PolicyDecision, PolicyEvaluationResult, PolicyRule } from '../../../core/interfaces/cipher/i-policy-engine.js';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration options for PolicyEngine.
|
|
13
|
+
*/
|
|
14
|
+
export interface PolicyEngineConfig {
|
|
15
|
+
/**
|
|
16
|
+
* Default decision when no rule matches.
|
|
17
|
+
* @default 'ALLOW'
|
|
18
|
+
*/
|
|
19
|
+
defaultDecision?: PolicyDecision;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Policy Engine implementation.
|
|
23
|
+
*
|
|
24
|
+
* Evaluates tool execution requests against a set of rules.
|
|
25
|
+
* Rules are evaluated in order - first matching rule wins.
|
|
26
|
+
*/
|
|
27
|
+
export declare class PolicyEngine implements IPolicyEngine {
|
|
28
|
+
private readonly defaultDecision;
|
|
29
|
+
private rules;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new PolicyEngine.
|
|
32
|
+
*
|
|
33
|
+
* @param config - Configuration options
|
|
34
|
+
*/
|
|
35
|
+
constructor(config?: PolicyEngineConfig);
|
|
36
|
+
/**
|
|
37
|
+
* Add a policy rule.
|
|
38
|
+
* Rules are evaluated in the order they are added.
|
|
39
|
+
*
|
|
40
|
+
* @param rule - The policy rule to add
|
|
41
|
+
*/
|
|
42
|
+
addRule(rule: PolicyRule): void;
|
|
43
|
+
/**
|
|
44
|
+
* Add multiple policy rules at once.
|
|
45
|
+
*
|
|
46
|
+
* @param rules - The policy rules to add
|
|
47
|
+
*/
|
|
48
|
+
addRules(rules: PolicyRule[]): void;
|
|
49
|
+
/**
|
|
50
|
+
* Evaluate a tool execution request against policy rules.
|
|
51
|
+
*
|
|
52
|
+
* Rules are evaluated in order. First matching rule wins.
|
|
53
|
+
* If no rule matches, returns the default decision.
|
|
54
|
+
*
|
|
55
|
+
* @param toolName - Name of the tool to execute
|
|
56
|
+
* @param args - Arguments for the tool
|
|
57
|
+
* @returns Policy evaluation result with decision and reason
|
|
58
|
+
*/
|
|
59
|
+
evaluate(toolName: string, args: Record<string, unknown>): PolicyEvaluationResult;
|
|
60
|
+
/**
|
|
61
|
+
* Get all registered policy rules.
|
|
62
|
+
*
|
|
63
|
+
* @returns Read-only array of policy rules
|
|
64
|
+
*/
|
|
65
|
+
getRules(): readonly PolicyRule[];
|
|
66
|
+
/**
|
|
67
|
+
* Remove a policy rule by name.
|
|
68
|
+
*
|
|
69
|
+
* @param name - The name of the rule to remove
|
|
70
|
+
*/
|
|
71
|
+
removeRule(name: string): void;
|
|
72
|
+
/**
|
|
73
|
+
* Check if a tool name matches a pattern.
|
|
74
|
+
*
|
|
75
|
+
* @param toolName - The tool name to check
|
|
76
|
+
* @param pattern - The pattern to match against
|
|
77
|
+
* @returns True if the tool name matches the pattern
|
|
78
|
+
*/
|
|
79
|
+
private matchesPattern;
|
|
80
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Policy Engine Implementation.
|
|
3
|
+
*
|
|
4
|
+
* Rule-based ALLOW/DENY decisions for tool execution.
|
|
5
|
+
* Designed for autonomous execution without user confirmation.
|
|
6
|
+
*
|
|
7
|
+
* Rules are evaluated in order - first matching rule wins.
|
|
8
|
+
* If no rule matches, the default decision is used.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Policy Engine implementation.
|
|
12
|
+
*
|
|
13
|
+
* Evaluates tool execution requests against a set of rules.
|
|
14
|
+
* Rules are evaluated in order - first matching rule wins.
|
|
15
|
+
*/
|
|
16
|
+
export class PolicyEngine {
|
|
17
|
+
defaultDecision;
|
|
18
|
+
rules = [];
|
|
19
|
+
/**
|
|
20
|
+
* Create a new PolicyEngine.
|
|
21
|
+
*
|
|
22
|
+
* @param config - Configuration options
|
|
23
|
+
*/
|
|
24
|
+
constructor(config = {}) {
|
|
25
|
+
this.defaultDecision = config.defaultDecision ?? 'ALLOW';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add a policy rule.
|
|
29
|
+
* Rules are evaluated in the order they are added.
|
|
30
|
+
*
|
|
31
|
+
* @param rule - The policy rule to add
|
|
32
|
+
*/
|
|
33
|
+
addRule(rule) {
|
|
34
|
+
this.rules.push(rule);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Add multiple policy rules at once.
|
|
38
|
+
*
|
|
39
|
+
* @param rules - The policy rules to add
|
|
40
|
+
*/
|
|
41
|
+
addRules(rules) {
|
|
42
|
+
for (const rule of rules) {
|
|
43
|
+
this.addRule(rule);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Evaluate a tool execution request against policy rules.
|
|
48
|
+
*
|
|
49
|
+
* Rules are evaluated in order. First matching rule wins.
|
|
50
|
+
* If no rule matches, returns the default decision.
|
|
51
|
+
*
|
|
52
|
+
* @param toolName - Name of the tool to execute
|
|
53
|
+
* @param args - Arguments for the tool
|
|
54
|
+
* @returns Policy evaluation result with decision and reason
|
|
55
|
+
*/
|
|
56
|
+
evaluate(toolName, args) {
|
|
57
|
+
for (const rule of this.rules) {
|
|
58
|
+
// Check if tool pattern matches
|
|
59
|
+
if (!this.matchesPattern(toolName, rule.toolPattern)) {
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
// Check condition if present
|
|
63
|
+
if (rule.condition && !rule.condition(toolName, args)) {
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
// Rule matches - return its decision
|
|
67
|
+
return {
|
|
68
|
+
decision: rule.decision,
|
|
69
|
+
reason: rule.reason,
|
|
70
|
+
rule,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// No rule matched - return default decision
|
|
74
|
+
return {
|
|
75
|
+
decision: this.defaultDecision,
|
|
76
|
+
reason: 'No matching rule, using default policy',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get all registered policy rules.
|
|
81
|
+
*
|
|
82
|
+
* @returns Read-only array of policy rules
|
|
83
|
+
*/
|
|
84
|
+
getRules() {
|
|
85
|
+
return this.rules;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Remove a policy rule by name.
|
|
89
|
+
*
|
|
90
|
+
* @param name - The name of the rule to remove
|
|
91
|
+
*/
|
|
92
|
+
removeRule(name) {
|
|
93
|
+
this.rules = this.rules.filter((r) => r.name !== name);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Check if a tool name matches a pattern.
|
|
97
|
+
*
|
|
98
|
+
* @param toolName - The tool name to check
|
|
99
|
+
* @param pattern - The pattern to match against
|
|
100
|
+
* @returns True if the tool name matches the pattern
|
|
101
|
+
*/
|
|
102
|
+
matchesPattern(toolName, pattern) {
|
|
103
|
+
if (typeof pattern === 'string') {
|
|
104
|
+
// Exact match or wildcard
|
|
105
|
+
return toolName === pattern || pattern === '*';
|
|
106
|
+
}
|
|
107
|
+
// Regex pattern
|
|
108
|
+
return pattern.test(toolName);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Invocation Queue System
|
|
3
|
+
*
|
|
4
|
+
* Manages queuing and execution of tool invocations with:
|
|
5
|
+
* - Priority-based ordering
|
|
6
|
+
* - Concurrent execution with configurable limits
|
|
7
|
+
* - Queue state management
|
|
8
|
+
* - Batch execution support
|
|
9
|
+
*/
|
|
10
|
+
import type { ToolInvocation, ToolInvocationResult } from './tool-invocation.js';
|
|
11
|
+
/**
|
|
12
|
+
* Priority levels for tool invocations
|
|
13
|
+
*/
|
|
14
|
+
export declare enum ToolInvocationPriority {
|
|
15
|
+
/**
|
|
16
|
+
* Critical priority - Execute immediately
|
|
17
|
+
*/
|
|
18
|
+
CRITICAL = "CRITICAL",
|
|
19
|
+
/**
|
|
20
|
+
* High priority - Execute before normal
|
|
21
|
+
*/
|
|
22
|
+
HIGH = "HIGH",
|
|
23
|
+
/**
|
|
24
|
+
* Low priority - Execute after normal
|
|
25
|
+
*/
|
|
26
|
+
LOW = "LOW",
|
|
27
|
+
/**
|
|
28
|
+
* Normal priority - Default priority
|
|
29
|
+
*/
|
|
30
|
+
NORMAL = "NORMAL"
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Queued invocation with priority and metadata
|
|
34
|
+
*/
|
|
35
|
+
export interface QueuedInvocation {
|
|
36
|
+
/**
|
|
37
|
+
* The tool invocation
|
|
38
|
+
*/
|
|
39
|
+
invocation: ToolInvocation;
|
|
40
|
+
/**
|
|
41
|
+
* Priority level
|
|
42
|
+
*/
|
|
43
|
+
priority: ToolInvocationPriority;
|
|
44
|
+
/**
|
|
45
|
+
* Timestamp when queued
|
|
46
|
+
*/
|
|
47
|
+
queuedAt: number;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Configuration for queue execution
|
|
51
|
+
*/
|
|
52
|
+
export interface QueueExecutionConfig {
|
|
53
|
+
/**
|
|
54
|
+
* Maximum number of concurrent executions
|
|
55
|
+
* @default 5
|
|
56
|
+
*/
|
|
57
|
+
maxConcurrent?: number;
|
|
58
|
+
/**
|
|
59
|
+
* Whether to stop on first error
|
|
60
|
+
* @default false
|
|
61
|
+
*/
|
|
62
|
+
stopOnError?: boolean;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Result from queue execution
|
|
66
|
+
*/
|
|
67
|
+
export interface QueueExecutionResult {
|
|
68
|
+
/**
|
|
69
|
+
* Number of completed executions
|
|
70
|
+
*/
|
|
71
|
+
completed: number;
|
|
72
|
+
/**
|
|
73
|
+
* Duration of queue execution in milliseconds
|
|
74
|
+
*/
|
|
75
|
+
durationMs: number;
|
|
76
|
+
/**
|
|
77
|
+
* Number of failed executions
|
|
78
|
+
*/
|
|
79
|
+
failed: number;
|
|
80
|
+
/**
|
|
81
|
+
* Individual invocation results
|
|
82
|
+
*/
|
|
83
|
+
results: Map<string, ToolInvocationResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Number of skipped executions (due to stopOnError)
|
|
86
|
+
*/
|
|
87
|
+
skipped: number;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Default execution configuration
|
|
91
|
+
*/
|
|
92
|
+
export declare const DEFAULT_QUEUE_EXECUTION_CONFIG: Required<QueueExecutionConfig>;
|
|
93
|
+
/**
|
|
94
|
+
* Tool invocation queue for managing concurrent tool execution
|
|
95
|
+
*
|
|
96
|
+
* Features:
|
|
97
|
+
* - Priority-based ordering
|
|
98
|
+
* - Configurable concurrency limits
|
|
99
|
+
* - Batch execution with error handling
|
|
100
|
+
* - Queue state management
|
|
101
|
+
*/
|
|
102
|
+
export declare class ToolInvocationQueue {
|
|
103
|
+
/**
|
|
104
|
+
* Execution configuration
|
|
105
|
+
*/
|
|
106
|
+
private readonly config;
|
|
107
|
+
/**
|
|
108
|
+
* Currently executing invocations
|
|
109
|
+
*/
|
|
110
|
+
private readonly executing;
|
|
111
|
+
/**
|
|
112
|
+
* Queue of pending invocations
|
|
113
|
+
*/
|
|
114
|
+
private readonly queue;
|
|
115
|
+
/**
|
|
116
|
+
* Create a new tool invocation queue
|
|
117
|
+
*
|
|
118
|
+
* @param config - Execution configuration
|
|
119
|
+
*/
|
|
120
|
+
constructor(config?: QueueExecutionConfig);
|
|
121
|
+
/**
|
|
122
|
+
* Add an invocation to the queue
|
|
123
|
+
*
|
|
124
|
+
* @param invocation - Tool invocation to queue
|
|
125
|
+
* @param priority - Priority level (default: NORMAL)
|
|
126
|
+
* @returns True if added, false if already queued
|
|
127
|
+
*/
|
|
128
|
+
add(invocation: ToolInvocation, priority?: ToolInvocationPriority): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Add multiple invocations to the queue
|
|
131
|
+
*
|
|
132
|
+
* @param invocations - Array of invocations with optional priority
|
|
133
|
+
* @returns Number of invocations added
|
|
134
|
+
*/
|
|
135
|
+
addBatch(invocations: Array<{
|
|
136
|
+
invocation: ToolInvocation;
|
|
137
|
+
priority?: ToolInvocationPriority;
|
|
138
|
+
}>): number;
|
|
139
|
+
/**
|
|
140
|
+
* Clear all queued invocations
|
|
141
|
+
*
|
|
142
|
+
* Does not affect currently executing invocations.
|
|
143
|
+
* For autonomous mode, invocations are simply removed without status change.
|
|
144
|
+
*
|
|
145
|
+
* @returns Number of invocations cleared
|
|
146
|
+
*/
|
|
147
|
+
clear(): number;
|
|
148
|
+
/**
|
|
149
|
+
* Execute all queued invocations
|
|
150
|
+
*
|
|
151
|
+
* Executes invocations with concurrency limit and priority ordering.
|
|
152
|
+
*
|
|
153
|
+
* @returns Execution result with stats and individual results
|
|
154
|
+
*/
|
|
155
|
+
execute(): Promise<QueueExecutionResult>;
|
|
156
|
+
/**
|
|
157
|
+
* Get number of currently executing invocations
|
|
158
|
+
*/
|
|
159
|
+
getExecutingCount(): number;
|
|
160
|
+
/**
|
|
161
|
+
* Get number of queued invocations
|
|
162
|
+
*/
|
|
163
|
+
getQueuedCount(): number;
|
|
164
|
+
/**
|
|
165
|
+
* Check if invocation is queued
|
|
166
|
+
*
|
|
167
|
+
* @param invocationId - ID to check
|
|
168
|
+
* @returns True if queued
|
|
169
|
+
*/
|
|
170
|
+
isQueued(invocationId: string): boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Peek at next invocation without removing it
|
|
173
|
+
*
|
|
174
|
+
* @returns Next invocation or undefined if queue is empty
|
|
175
|
+
*/
|
|
176
|
+
peek(): ToolInvocation | undefined;
|
|
177
|
+
/**
|
|
178
|
+
* Remove a queued invocation from the queue.
|
|
179
|
+
*
|
|
180
|
+
* For autonomous mode, invocations are simply removed without status change.
|
|
181
|
+
* The invocation remains in SCHEDULED state but will not be executed.
|
|
182
|
+
*
|
|
183
|
+
* @param invocationId - ID of invocation to remove
|
|
184
|
+
* @returns True if removed, false if not found
|
|
185
|
+
*/
|
|
186
|
+
remove(invocationId: string): boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Sort queue by priority and queue time
|
|
189
|
+
*/
|
|
190
|
+
private sortQueue;
|
|
191
|
+
}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Invocation Queue System
|
|
3
|
+
*
|
|
4
|
+
* Manages queuing and execution of tool invocations with:
|
|
5
|
+
* - Priority-based ordering
|
|
6
|
+
* - Concurrent execution with configurable limits
|
|
7
|
+
* - Queue state management
|
|
8
|
+
* - Batch execution support
|
|
9
|
+
*/
|
|
10
|
+
import { ToolInvocationStatus } from './tool-invocation.js';
|
|
11
|
+
/**
|
|
12
|
+
* Priority levels for tool invocations
|
|
13
|
+
*/
|
|
14
|
+
export var ToolInvocationPriority;
|
|
15
|
+
(function (ToolInvocationPriority) {
|
|
16
|
+
/**
|
|
17
|
+
* Critical priority - Execute immediately
|
|
18
|
+
*/
|
|
19
|
+
ToolInvocationPriority["CRITICAL"] = "CRITICAL";
|
|
20
|
+
/**
|
|
21
|
+
* High priority - Execute before normal
|
|
22
|
+
*/
|
|
23
|
+
ToolInvocationPriority["HIGH"] = "HIGH";
|
|
24
|
+
/**
|
|
25
|
+
* Low priority - Execute after normal
|
|
26
|
+
*/
|
|
27
|
+
ToolInvocationPriority["LOW"] = "LOW";
|
|
28
|
+
/**
|
|
29
|
+
* Normal priority - Default priority
|
|
30
|
+
*/
|
|
31
|
+
ToolInvocationPriority["NORMAL"] = "NORMAL";
|
|
32
|
+
})(ToolInvocationPriority || (ToolInvocationPriority = {}));
|
|
33
|
+
/**
|
|
34
|
+
* Priority ordering for queue sorting
|
|
35
|
+
*/
|
|
36
|
+
const PRIORITY_ORDER = {
|
|
37
|
+
[ToolInvocationPriority.CRITICAL]: 0,
|
|
38
|
+
[ToolInvocationPriority.HIGH]: 1,
|
|
39
|
+
[ToolInvocationPriority.LOW]: 3,
|
|
40
|
+
[ToolInvocationPriority.NORMAL]: 2,
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Default execution configuration
|
|
44
|
+
*/
|
|
45
|
+
export const DEFAULT_QUEUE_EXECUTION_CONFIG = {
|
|
46
|
+
maxConcurrent: 5,
|
|
47
|
+
stopOnError: false,
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Tool invocation queue for managing concurrent tool execution
|
|
51
|
+
*
|
|
52
|
+
* Features:
|
|
53
|
+
* - Priority-based ordering
|
|
54
|
+
* - Configurable concurrency limits
|
|
55
|
+
* - Batch execution with error handling
|
|
56
|
+
* - Queue state management
|
|
57
|
+
*/
|
|
58
|
+
export class ToolInvocationQueue {
|
|
59
|
+
/**
|
|
60
|
+
* Execution configuration
|
|
61
|
+
*/
|
|
62
|
+
config;
|
|
63
|
+
/**
|
|
64
|
+
* Currently executing invocations
|
|
65
|
+
*/
|
|
66
|
+
executing = new Map();
|
|
67
|
+
/**
|
|
68
|
+
* Queue of pending invocations
|
|
69
|
+
*/
|
|
70
|
+
queue = [];
|
|
71
|
+
/**
|
|
72
|
+
* Create a new tool invocation queue
|
|
73
|
+
*
|
|
74
|
+
* @param config - Execution configuration
|
|
75
|
+
*/
|
|
76
|
+
constructor(config) {
|
|
77
|
+
this.config = {
|
|
78
|
+
...DEFAULT_QUEUE_EXECUTION_CONFIG,
|
|
79
|
+
...config,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Add an invocation to the queue
|
|
84
|
+
*
|
|
85
|
+
* @param invocation - Tool invocation to queue
|
|
86
|
+
* @param priority - Priority level (default: NORMAL)
|
|
87
|
+
* @returns True if added, false if already queued
|
|
88
|
+
*/
|
|
89
|
+
add(invocation, priority = ToolInvocationPriority.NORMAL) {
|
|
90
|
+
// Check if already queued or executing
|
|
91
|
+
if (this.isQueued(invocation.id) || this.executing.has(invocation.id)) {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
// Add to queue
|
|
95
|
+
this.queue.push({
|
|
96
|
+
invocation,
|
|
97
|
+
priority,
|
|
98
|
+
queuedAt: Date.now(),
|
|
99
|
+
});
|
|
100
|
+
// Sort queue by priority
|
|
101
|
+
this.sortQueue();
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Add multiple invocations to the queue
|
|
106
|
+
*
|
|
107
|
+
* @param invocations - Array of invocations with optional priority
|
|
108
|
+
* @returns Number of invocations added
|
|
109
|
+
*/
|
|
110
|
+
addBatch(invocations) {
|
|
111
|
+
let added = 0;
|
|
112
|
+
for (const { invocation, priority } of invocations) {
|
|
113
|
+
if (this.add(invocation, priority)) {
|
|
114
|
+
added++;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return added;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Clear all queued invocations
|
|
121
|
+
*
|
|
122
|
+
* Does not affect currently executing invocations.
|
|
123
|
+
* For autonomous mode, invocations are simply removed without status change.
|
|
124
|
+
*
|
|
125
|
+
* @returns Number of invocations cleared
|
|
126
|
+
*/
|
|
127
|
+
clear() {
|
|
128
|
+
const count = this.queue.length;
|
|
129
|
+
// Simply clear the queue (no status change needed for autonomous mode)
|
|
130
|
+
this.queue.length = 0;
|
|
131
|
+
return count;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Execute all queued invocations
|
|
135
|
+
*
|
|
136
|
+
* Executes invocations with concurrency limit and priority ordering.
|
|
137
|
+
*
|
|
138
|
+
* @returns Execution result with stats and individual results
|
|
139
|
+
*/
|
|
140
|
+
async execute() {
|
|
141
|
+
const startTime = Date.now();
|
|
142
|
+
const results = new Map();
|
|
143
|
+
let completed = 0;
|
|
144
|
+
let failed = 0;
|
|
145
|
+
let skipped = 0;
|
|
146
|
+
let shouldStop = false;
|
|
147
|
+
// Execute in batches based on concurrency limit
|
|
148
|
+
while (this.queue.length > 0 && !shouldStop) {
|
|
149
|
+
// Take up to maxConcurrent invocations from queue
|
|
150
|
+
const batch = this.queue.splice(0, this.config.maxConcurrent);
|
|
151
|
+
// Mark as executing
|
|
152
|
+
for (const { invocation } of batch) {
|
|
153
|
+
this.executing.set(invocation.id, invocation);
|
|
154
|
+
}
|
|
155
|
+
// Execute batch concurrently
|
|
156
|
+
// eslint-disable-next-line no-await-in-loop
|
|
157
|
+
const batchResults = await Promise.all(batch.map(async ({ invocation }) => {
|
|
158
|
+
const result = await invocation.execute();
|
|
159
|
+
this.executing.delete(invocation.id);
|
|
160
|
+
return { invocationId: invocation.id, result };
|
|
161
|
+
}));
|
|
162
|
+
// Process batch results
|
|
163
|
+
for (const { invocationId, result } of batchResults) {
|
|
164
|
+
results.set(invocationId, result);
|
|
165
|
+
if (result.status === ToolInvocationStatus.COMPLETED) {
|
|
166
|
+
completed++;
|
|
167
|
+
}
|
|
168
|
+
else if (result.status === ToolInvocationStatus.ERROR) {
|
|
169
|
+
failed++;
|
|
170
|
+
// Stop on error if configured
|
|
171
|
+
if (this.config.stopOnError) {
|
|
172
|
+
shouldStop = true;
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Count skipped invocations (remaining in queue when stopOnError triggered)
|
|
179
|
+
if (shouldStop) {
|
|
180
|
+
skipped = this.queue.length;
|
|
181
|
+
// Simply clear remaining (no status change needed for autonomous mode)
|
|
182
|
+
this.queue.length = 0;
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
completed,
|
|
186
|
+
durationMs: Date.now() - startTime,
|
|
187
|
+
failed,
|
|
188
|
+
results,
|
|
189
|
+
skipped,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get number of currently executing invocations
|
|
194
|
+
*/
|
|
195
|
+
getExecutingCount() {
|
|
196
|
+
return this.executing.size;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get number of queued invocations
|
|
200
|
+
*/
|
|
201
|
+
getQueuedCount() {
|
|
202
|
+
return this.queue.length;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Check if invocation is queued
|
|
206
|
+
*
|
|
207
|
+
* @param invocationId - ID to check
|
|
208
|
+
* @returns True if queued
|
|
209
|
+
*/
|
|
210
|
+
isQueued(invocationId) {
|
|
211
|
+
return this.queue.some((q) => q.invocation.id === invocationId);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Peek at next invocation without removing it
|
|
215
|
+
*
|
|
216
|
+
* @returns Next invocation or undefined if queue is empty
|
|
217
|
+
*/
|
|
218
|
+
peek() {
|
|
219
|
+
return this.queue[0]?.invocation;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Remove a queued invocation from the queue.
|
|
223
|
+
*
|
|
224
|
+
* For autonomous mode, invocations are simply removed without status change.
|
|
225
|
+
* The invocation remains in SCHEDULED state but will not be executed.
|
|
226
|
+
*
|
|
227
|
+
* @param invocationId - ID of invocation to remove
|
|
228
|
+
* @returns True if removed, false if not found
|
|
229
|
+
*/
|
|
230
|
+
remove(invocationId) {
|
|
231
|
+
// Find in queue
|
|
232
|
+
const index = this.queue.findIndex((q) => q.invocation.id === invocationId);
|
|
233
|
+
if (index === -1) {
|
|
234
|
+
return false;
|
|
235
|
+
}
|
|
236
|
+
// Remove from queue (no status change needed for autonomous mode)
|
|
237
|
+
this.queue.splice(index, 1);
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Sort queue by priority and queue time
|
|
242
|
+
*/
|
|
243
|
+
sortQueue() {
|
|
244
|
+
this.queue.sort((a, b) => {
|
|
245
|
+
// First sort by priority
|
|
246
|
+
const priorityDiff = PRIORITY_ORDER[a.priority] - PRIORITY_ORDER[b.priority];
|
|
247
|
+
if (priorityDiff !== 0) {
|
|
248
|
+
return priorityDiff;
|
|
249
|
+
}
|
|
250
|
+
// Then by queue time (FIFO within same priority)
|
|
251
|
+
return a.queuedAt - b.queuedAt;
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
}
|