byterover-cli 0.4.1 → 1.0.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 +1 -9
- package/dist/commands/curate.d.ts +1 -3
- package/dist/commands/curate.js +14 -51
- package/dist/commands/main.d.ts +8 -0
- package/dist/commands/main.js +29 -8
- package/dist/commands/query.d.ts +1 -3
- package/dist/commands/query.js +8 -35
- package/dist/config/context-tree-domains.d.ts +5 -0
- package/dist/config/context-tree-domains.js +6 -1
- package/dist/config/environment.js +9 -9
- package/dist/constants.d.ts +14 -0
- package/dist/constants.js +18 -0
- package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
- package/dist/core/domain/cipher/agent/agent-info.js +143 -0
- package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
- package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
- package/dist/core/domain/cipher/agent/index.d.ts +4 -1
- package/dist/core/domain/cipher/agent/index.js +7 -1
- package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
- package/dist/core/domain/cipher/agent-events/types.js +11 -0
- package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
- package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
- package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
- package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
- package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
- package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
- package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
- package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
- package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
- package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
- package/dist/core/domain/cipher/llm/error-codes.js +51 -0
- package/dist/core/domain/cipher/llm/index.d.ts +9 -0
- package/dist/core/domain/cipher/llm/index.js +13 -0
- package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
- package/dist/core/domain/cipher/llm/registry.js +244 -0
- package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
- package/dist/core/domain/cipher/llm/schemas.js +151 -0
- package/dist/core/domain/cipher/llm/types.d.ts +121 -0
- package/dist/core/domain/cipher/llm/types.js +60 -0
- package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
- package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
- package/dist/core/domain/cipher/streaming/types.js +16 -0
- package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
- package/dist/core/domain/cipher/todos/types.d.ts +34 -0
- package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
- package/dist/core/domain/cipher/tools/constants.js +5 -2
- package/dist/core/domain/cipher/tools/types.d.ts +31 -0
- package/dist/core/domain/errors/connection-error.d.ts +33 -0
- package/dist/core/domain/errors/connection-error.js +54 -0
- package/dist/core/domain/errors/core-process-error.d.ts +27 -0
- package/dist/core/domain/errors/core-process-error.js +43 -0
- package/dist/core/domain/errors/task-error.d.ts +64 -0
- package/dist/core/domain/errors/task-error.js +116 -0
- package/dist/core/domain/errors/transport-error.d.ts +72 -0
- package/dist/core/domain/errors/transport-error.js +114 -0
- package/dist/core/domain/instance/index.d.ts +1 -0
- package/dist/core/domain/instance/index.js +1 -0
- package/dist/core/domain/instance/types.d.ts +57 -0
- package/dist/core/domain/instance/types.js +72 -0
- package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
- package/dist/core/domain/knowledge/directory-manager.js +31 -0
- package/dist/core/domain/transport/index.d.ts +2 -0
- package/dist/core/domain/transport/index.js +2 -0
- package/dist/core/domain/transport/schemas.d.ts +1149 -0
- package/dist/core/domain/transport/schemas.js +554 -0
- package/dist/core/domain/transport/types.d.ts +67 -0
- package/dist/core/domain/transport/types.js +7 -0
- package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
- package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
- package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
- package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
- package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
- package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
- package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
- package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
- package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
- package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
- package/dist/core/interfaces/cipher/index.d.ts +35 -0
- package/dist/core/interfaces/cipher/index.js +11 -0
- package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
- package/dist/core/interfaces/cipher/message-factory.js +252 -0
- package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
- package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
- package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
- package/dist/core/interfaces/cipher/message-types.js +6 -0
- package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
- package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
- package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
- package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
- package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
- package/dist/core/interfaces/executor/i-query-executor.js +1 -0
- package/dist/core/interfaces/executor/index.d.ts +2 -0
- package/dist/core/interfaces/executor/index.js +2 -0
- package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
- package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
- package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
- package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
- package/dist/core/interfaces/instance/index.d.ts +2 -0
- package/dist/core/interfaces/instance/index.js +2 -0
- package/dist/core/interfaces/noop-implementations.d.ts +53 -0
- package/dist/core/interfaces/noop-implementations.js +62 -0
- package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
- package/dist/core/interfaces/transport/i-transport-client.js +1 -0
- package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
- package/dist/core/interfaces/transport/i-transport-server.js +1 -0
- package/dist/core/interfaces/transport/index.d.ts +2 -0
- package/dist/core/interfaces/transport/index.js +2 -0
- package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
- package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
- package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
- package/dist/infra/cipher/agent/agent-error.js +79 -0
- package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
- package/dist/infra/cipher/agent/agent-schemas.js +97 -0
- package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
- package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
- package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
- package/dist/infra/cipher/agent/base-agent.js +240 -0
- package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
- package/dist/infra/cipher/agent/cipher-agent.js +546 -0
- package/dist/infra/cipher/agent/index.d.ts +22 -0
- package/dist/infra/cipher/agent/index.js +24 -0
- package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
- package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
- package/dist/infra/cipher/agent/types.d.ts +35 -0
- package/dist/infra/cipher/agent/types.js +1 -0
- package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
- package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
- package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
- package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
- package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
- package/dist/infra/cipher/consumer/consumer-service.js +1 -0
- package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
- package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
- package/dist/infra/cipher/consumer/index.d.ts +1 -1
- package/dist/infra/cipher/consumer/index.js +2 -1
- package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
- package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
- package/dist/infra/cipher/file-system/binary-utils.js +164 -0
- package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
- package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
- package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
- package/dist/infra/cipher/file-system/file-system-service.js +327 -36
- package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
- package/dist/infra/cipher/file-system/path-validator.js +111 -6
- package/dist/infra/cipher/interactive-loop.js +41 -33
- package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
- package/dist/infra/cipher/llm/capability-cache.js +125 -0
- package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
- package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
- package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
- package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
- package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
- package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
- package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
- package/dist/infra/cipher/llm/context/compression/index.js +6 -0
- package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
- package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
- package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
- package/dist/infra/cipher/llm/context/context-manager.js +129 -0
- package/dist/infra/cipher/llm/context/utils.js +17 -4
- package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
- package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
- package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
- package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
- package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
- package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
- package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
- package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
- package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
- package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
- package/dist/infra/cipher/llm/sanitization/index.js +13 -0
- package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
- package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
- package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
- package/dist/infra/cipher/llm/stream-processor.js +276 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
- package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
- package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
- package/dist/infra/cipher/process/command-validator.d.ts +23 -0
- package/dist/infra/cipher/process/command-validator.js +75 -0
- package/dist/infra/cipher/process/path-utils.d.ts +66 -0
- package/dist/infra/cipher/process/path-utils.js +94 -0
- package/dist/infra/cipher/process/process-service.d.ts +32 -0
- package/dist/infra/cipher/process/process-service.js +98 -17
- package/dist/infra/cipher/session/chat-session.d.ts +56 -7
- package/dist/infra/cipher/session/chat-session.js +163 -13
- package/dist/infra/cipher/session/index.d.ts +1 -0
- package/dist/infra/cipher/session/index.js +2 -0
- package/dist/infra/cipher/session/message-queue.d.ts +65 -0
- package/dist/infra/cipher/session/message-queue.js +90 -0
- package/dist/infra/cipher/session/session-manager.d.ts +106 -5
- package/dist/infra/cipher/session/session-manager.js +254 -7
- package/dist/infra/cipher/session/session-status.d.ts +137 -0
- package/dist/infra/cipher/session/session-status.js +184 -0
- package/dist/infra/cipher/session/title-generator.d.ts +8 -0
- package/dist/infra/cipher/session/title-generator.js +31 -0
- package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
- package/dist/infra/cipher/storage/message-storage-service.js +300 -54
- package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
- package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
- package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
- package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
- package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
- package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
- package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
- package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
- package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
- package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
- package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
- package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
- package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
- package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
- package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
- package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
- package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
- package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
- package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
- package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
- package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
- package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
- package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
- package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
- package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
- package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
- package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
- package/dist/infra/cipher/system-prompt/schemas.js +94 -0
- package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
- package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
- package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
- package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
- package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
- package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
- package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
- package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
- package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
- package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
- package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
- package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
- package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
- package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
- package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
- package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
- package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
- package/dist/infra/cipher/tools/index.d.ts +1 -1
- package/dist/infra/cipher/tools/index.js +1 -1
- package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
- package/dist/infra/cipher/tools/plugins/index.js +2 -0
- package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
- package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
- package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
- package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
- package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
- package/dist/infra/cipher/tools/streaming/index.js +1 -0
- package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
- package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
- package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
- package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
- package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
- package/dist/infra/cipher/tools/tool-manager.js +107 -11
- package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
- package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
- package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
- package/dist/infra/cipher/tools/tool-provider.js +81 -25
- package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
- package/dist/infra/cipher/tools/tool-registry.js +58 -16
- package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
- package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
- package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
- package/dist/infra/context-tree/path-utils.d.ts +7 -0
- package/dist/infra/context-tree/path-utils.js +7 -0
- package/dist/infra/core/executors/curate-executor.d.ts +35 -0
- package/dist/infra/core/executors/curate-executor.js +123 -0
- package/dist/infra/core/executors/index.d.ts +2 -0
- package/dist/infra/core/executors/index.js +2 -0
- package/dist/infra/core/executors/query-executor.d.ts +23 -0
- package/dist/infra/core/executors/query-executor.js +51 -0
- package/dist/infra/core/task-processor.d.ts +81 -0
- package/dist/infra/core/task-processor.js +115 -0
- package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
- package/dist/infra/instance/file-instance-discovery.js +84 -0
- package/dist/infra/instance/file-instance-manager.d.ts +46 -0
- package/dist/infra/instance/file-instance-manager.js +123 -0
- package/dist/infra/instance/index.d.ts +3 -0
- package/dist/infra/instance/index.js +3 -0
- package/dist/infra/instance/process-utils.d.ts +14 -0
- package/dist/infra/instance/process-utils.js +39 -0
- package/dist/infra/process/agent-worker.d.ts +20 -0
- package/dist/infra/process/agent-worker.js +602 -0
- package/dist/infra/process/index.d.ts +12 -0
- package/dist/infra/process/index.js +11 -0
- package/dist/infra/process/ipc-types.d.ts +55 -0
- package/dist/infra/process/ipc-types.js +12 -0
- package/dist/infra/process/process-manager.d.ts +154 -0
- package/dist/infra/process/process-manager.js +471 -0
- package/dist/infra/process/task-queue-manager.d.ts +123 -0
- package/dist/infra/process/task-queue-manager.js +226 -0
- package/dist/infra/process/transport-handlers.d.ts +124 -0
- package/dist/infra/process/transport-handlers.js +348 -0
- package/dist/infra/process/transport-worker.d.ts +20 -0
- package/dist/infra/process/transport-worker.js +168 -0
- package/dist/infra/repl/commands/curate-command.js +0 -5
- package/dist/infra/repl/commands/query-command.js +0 -3
- package/dist/infra/repl/repl-startup.d.ts +4 -0
- package/dist/infra/repl/repl-startup.js +8 -1
- package/dist/infra/repl/transport-client-helper.d.ts +9 -0
- package/dist/infra/repl/transport-client-helper.js +96 -0
- package/dist/infra/transport/index.d.ts +4 -0
- package/dist/infra/transport/index.js +4 -0
- package/dist/infra/transport/port-utils.d.ts +42 -0
- package/dist/infra/transport/port-utils.js +84 -0
- package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
- package/dist/infra/transport/socket-io-transport-client.js +270 -0
- package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
- package/dist/infra/transport/socket-io-transport-server.js +207 -0
- package/dist/infra/transport/transport-client-factory.d.ts +76 -0
- package/dist/infra/transport/transport-client-factory.js +168 -0
- package/dist/infra/transport/transport-factory.d.ts +33 -0
- package/dist/infra/transport/transport-factory.js +59 -0
- package/dist/infra/usecase/curate-use-case.d.ts +8 -55
- package/dist/infra/usecase/curate-use-case.js +71 -262
- package/dist/infra/usecase/init-use-case.js +3 -2
- package/dist/infra/usecase/query-use-case.d.ts +18 -45
- package/dist/infra/usecase/query-use-case.js +250 -326
- package/dist/infra/usecase/status-use-case.js +1 -1
- package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
- package/dist/resources/prompts/explore.yml +78 -0
- package/dist/resources/prompts/plan.yml +114 -0
- package/dist/resources/prompts/reflection.yml +1 -1
- package/dist/resources/prompts/system-prompt.yml +15 -8
- package/dist/resources/prompts/tool-outputs.yml +0 -5
- package/dist/resources/tools/bash_exec.txt +98 -0
- package/dist/resources/tools/bash_output.txt +40 -0
- package/dist/resources/tools/batch.txt +28 -0
- package/dist/resources/tools/create_knowledge_topic.txt +23 -0
- package/dist/resources/tools/curate.txt +22 -0
- package/dist/resources/tools/delete_memory.txt +1 -0
- package/dist/resources/tools/detect_domains.txt +11 -0
- package/dist/resources/tools/edit_file.txt +1 -0
- package/dist/resources/tools/edit_memory.txt +1 -0
- package/dist/resources/tools/glob_files.txt +20 -0
- package/dist/resources/tools/grep_content.txt +18 -0
- package/dist/resources/tools/kill_process.txt +16 -0
- package/dist/resources/tools/list_directory.txt +16 -0
- package/dist/resources/tools/list_memories.txt +1 -0
- package/dist/resources/tools/read_file.txt +31 -0
- package/dist/resources/tools/read_memory.txt +1 -0
- package/dist/resources/tools/read_todos.txt +17 -0
- package/dist/resources/tools/search_history.txt +1 -0
- package/dist/resources/tools/task.txt +23 -0
- package/dist/resources/tools/write_file.txt +1 -0
- package/dist/resources/tools/write_memory.txt +1 -0
- package/dist/resources/tools/write_todos.txt +29 -0
- package/dist/tui/app.js +9 -13
- package/dist/tui/components/command-details.d.ts +14 -0
- package/dist/tui/components/command-details.js +35 -0
- package/dist/tui/components/execution/execution-changes.d.ts +5 -0
- package/dist/tui/components/execution/execution-changes.js +19 -4
- package/dist/tui/components/execution/execution-content.d.ts +4 -2
- package/dist/tui/components/execution/execution-content.js +26 -13
- package/dist/tui/components/execution/execution-input.js +3 -3
- package/dist/tui/components/execution/execution-progress.d.ts +2 -2
- package/dist/tui/components/execution/execution-progress.js +8 -6
- package/dist/tui/components/execution/log-item.d.ts +3 -4
- package/dist/tui/components/execution/log-item.js +2 -5
- package/dist/tui/components/footer.js +9 -4
- package/dist/tui/components/header.d.ts +3 -3
- package/dist/tui/components/header.js +5 -3
- package/dist/tui/components/index.d.ts +1 -0
- package/dist/tui/components/index.js +1 -0
- package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
- package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
- package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
- package/dist/tui/components/scrollable-list.js +12 -10
- package/dist/tui/components/suggestions.js +39 -41
- package/dist/tui/components/tab-bar.d.ts +2 -1
- package/dist/tui/components/tab-bar.js +3 -4
- package/dist/tui/constants.d.ts +0 -5
- package/dist/tui/constants.js +0 -5
- package/dist/tui/contexts/auth-context.js +9 -2
- package/dist/tui/contexts/{use-commands.js → commands-context.js} +3 -3
- package/dist/tui/contexts/index.d.ts +6 -1
- package/dist/tui/contexts/index.js +6 -1
- package/dist/tui/contexts/onboarding-context.d.ts +1 -1
- package/dist/tui/contexts/onboarding-context.js +9 -9
- package/dist/tui/contexts/tasks-context.d.ts +84 -0
- package/dist/tui/contexts/tasks-context.js +218 -0
- package/dist/tui/contexts/transport-context.d.ts +29 -0
- package/dist/tui/contexts/transport-context.js +82 -0
- package/dist/tui/hooks/index.d.ts +10 -6
- package/dist/tui/hooks/index.js +7 -6
- package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
- package/dist/tui/hooks/use-activity-logs.js +87 -34
- package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
- package/dist/tui/hooks/use-auth-polling.js +104 -0
- package/dist/tui/hooks/use-slash-command-processor.js +0 -1
- package/dist/tui/hooks/use-slash-completion.js +1 -1
- package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
- package/dist/tui/hooks/use-tab-navigation.js +16 -7
- package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
- package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
- package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
- package/dist/tui/hooks/use-ui-heights.js +88 -0
- package/dist/tui/providers/app-providers.js +2 -6
- package/dist/tui/types/commands.d.ts +0 -26
- package/dist/tui/types/index.d.ts +1 -1
- package/dist/tui/types/ui.d.ts +9 -4
- package/dist/tui/utils/line.d.ts +11 -0
- package/dist/tui/utils/line.js +16 -0
- package/dist/tui/utils/log.d.ts +27 -0
- package/dist/tui/utils/log.js +114 -0
- package/dist/tui/views/command-view.d.ts +7 -0
- package/dist/tui/views/command-view.js +103 -80
- package/dist/tui/views/login-view.js +7 -4
- package/dist/tui/views/logs-view.d.ts +13 -0
- package/dist/tui/views/logs-view.js +27 -52
- package/dist/utils/connection-error-handler.d.ts +16 -0
- package/dist/utils/connection-error-handler.js +49 -0
- package/dist/utils/crash-log.d.ts +14 -0
- package/dist/utils/crash-log.js +19 -0
- package/dist/utils/file-helpers.d.ts +14 -0
- package/dist/utils/file-helpers.js +21 -0
- package/dist/utils/global-logs-path.d.ts +11 -0
- package/dist/utils/global-logs-path.js +37 -0
- package/dist/utils/process-logger.d.ts +53 -0
- package/dist/utils/process-logger.js +253 -0
- package/dist/utils/sandbox-detector.d.ts +31 -0
- package/dist/utils/sandbox-detector.js +122 -0
- package/oclif.manifest.json +10 -198
- package/package.json +5 -1
- package/dist/commands/cipher-agent/run.d.ts +0 -142
- package/dist/commands/cipher-agent/run.js +0 -555
- package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
- package/dist/commands/cipher-agent/set-prompt.js +0 -58
- package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
- package/dist/commands/cipher-agent/show-prompt.js +0 -53
- package/dist/commands/foo.d.ts +0 -14
- package/dist/commands/foo.js +0 -66
- package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
- package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
- package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
- package/dist/infra/cipher/cipher-agent.d.ts +0 -182
- package/dist/infra/cipher/cipher-agent.js +0 -317
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
- package/dist/resources/prompts/modes/autonomous.yml +0 -9
- package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
- package/dist/tui/contexts/consumer.d.ts +0 -31
- package/dist/tui/contexts/consumer.js +0 -56
- package/dist/tui/hooks/use-consumer.d.ts +0 -12
- package/dist/tui/hooks/use-consumer.js +0 -50
- package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
- package/dist/tui/hooks/use-queue-polling.js +0 -90
- /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
- /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
|
@@ -12,11 +12,17 @@ export interface IChatSession {
|
|
|
12
12
|
*/
|
|
13
13
|
cancel(): void;
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* Cleanup session resources but preserve history for later restoration.
|
|
16
|
+
* Call this when ending a session temporarily (e.g., user navigates away).
|
|
17
|
+
* History remains persisted; event listeners stay for potential reactivation.
|
|
18
|
+
*/
|
|
19
|
+
cleanup(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Dispose of the session completely and clean up all resources.
|
|
16
22
|
* Removes event listeners to prevent memory leaks.
|
|
17
|
-
* Should be called when session is no longer needed.
|
|
23
|
+
* Should be called when session is permanently no longer needed.
|
|
18
24
|
*/
|
|
19
|
-
dispose
|
|
25
|
+
dispose(): void;
|
|
20
26
|
/**
|
|
21
27
|
* Get the conversation history.
|
|
22
28
|
*
|
|
@@ -49,8 +55,8 @@ export interface IChatSession {
|
|
|
49
55
|
*
|
|
50
56
|
* @param input - User message content
|
|
51
57
|
* @param options - Optional execution options
|
|
52
|
-
* @param options.mode - Optional mode for system prompt ('autonomous' enables autonomous mode)
|
|
53
58
|
* @param options.executionContext - Optional execution context
|
|
59
|
+
* @param options.taskId - Optional task ID for concurrent task isolation (included in all emitted events)
|
|
54
60
|
* @returns Assistant response
|
|
55
61
|
* @throws SessionCancelledError if operation is cancelled
|
|
56
62
|
* @throws MaxIterationsExceededError if tool loop exceeds maximum iterations
|
|
@@ -58,6 +64,42 @@ export interface IChatSession {
|
|
|
58
64
|
*/
|
|
59
65
|
run(input: string, options?: {
|
|
60
66
|
executionContext?: ExecutionContext;
|
|
61
|
-
|
|
67
|
+
taskId?: string;
|
|
62
68
|
}): Promise<string>;
|
|
69
|
+
/**
|
|
70
|
+
* Send a message, queuing if the session is busy executing.
|
|
71
|
+
* If the session is idle, executes immediately via run().
|
|
72
|
+
* If the session is busy, queues the message and returns the queue position.
|
|
73
|
+
*
|
|
74
|
+
* @param input - User message content
|
|
75
|
+
* @param options - Optional execution options and attachments
|
|
76
|
+
* @param options.executionContext - Optional execution context for the LLM
|
|
77
|
+
* @param options.fileData - Optional file attachment
|
|
78
|
+
* @param options.imageData - Optional image attachment
|
|
79
|
+
* @returns Response string if executed, or queue info if queued
|
|
80
|
+
*/
|
|
81
|
+
sendMessage(input: string, options?: {
|
|
82
|
+
executionContext?: ExecutionContext;
|
|
83
|
+
fileData?: unknown;
|
|
84
|
+
imageData?: unknown;
|
|
85
|
+
}): Promise<string | {
|
|
86
|
+
position: number;
|
|
87
|
+
queued: true;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Stream execution with real-time event emission.
|
|
91
|
+
* Unlike run(), this does not return a response directly - events are yielded via the agent's stream().
|
|
92
|
+
* Emits run:complete event when finished.
|
|
93
|
+
*
|
|
94
|
+
* @param input - User message
|
|
95
|
+
* @param options - Execution options with optional signal for cancellation
|
|
96
|
+
* @param options.executionContext - Optional execution context for the LLM
|
|
97
|
+
* @param options.signal - Optional AbortSignal for cancellation
|
|
98
|
+
* @param options.taskId - Optional task ID for concurrent task isolation (included in all emitted events)
|
|
99
|
+
*/
|
|
100
|
+
streamRun(input: string, options?: {
|
|
101
|
+
executionContext?: ExecutionContext;
|
|
102
|
+
signal?: AbortSignal;
|
|
103
|
+
taskId?: string;
|
|
104
|
+
}): Promise<void>;
|
|
63
105
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { TerminationReason } from '../../domain/cipher/agent/agent-state.js';
|
|
2
2
|
import type { SessionMetadata } from '../../domain/cipher/storage/history-types.js';
|
|
3
|
+
import type { GenerateResponse, StreamingEvent, StreamOptions } from '../../domain/cipher/streaming/types.js';
|
|
3
4
|
import type { ConversationMetadata } from '../../domain/cipher/system-prompt/types.js';
|
|
4
5
|
/**
|
|
5
6
|
* Execution context for the agent
|
|
@@ -7,7 +8,7 @@ import type { ConversationMetadata } from '../../domain/cipher/system-prompt/typ
|
|
|
7
8
|
*/
|
|
8
9
|
export interface ExecutionContext {
|
|
9
10
|
/** Command type that initiated the execution (for command-specific prompt loading) */
|
|
10
|
-
commandType?: 'curate' | 'query';
|
|
11
|
+
commandType?: 'chat' | 'curate' | 'query';
|
|
11
12
|
/** Metadata about the conversation (for JSON input mode) */
|
|
12
13
|
conversationMetadata?: ConversationMetadata;
|
|
13
14
|
/** File reference instructions for agent to read files (for curate command with --files flag) */
|
|
@@ -48,6 +49,13 @@ export interface AgentState {
|
|
|
48
49
|
* Provides an agentic execution layer on top of the LLM service
|
|
49
50
|
*/
|
|
50
51
|
export interface ICipherAgent {
|
|
52
|
+
/**
|
|
53
|
+
* Cancels the currently running turn for the agent's default session.
|
|
54
|
+
* Safe to call even if no run is in progress.
|
|
55
|
+
*
|
|
56
|
+
* @returns true if a run was in progress and was signaled to abort; false otherwise
|
|
57
|
+
*/
|
|
58
|
+
cancel(): Promise<boolean>;
|
|
51
59
|
/**
|
|
52
60
|
* Delete a session completely (memory + history)
|
|
53
61
|
* @param sessionId - Session ID to delete
|
|
@@ -55,12 +63,29 @@ export interface ICipherAgent {
|
|
|
55
63
|
*/
|
|
56
64
|
deleteSession(sessionId: string): Promise<boolean>;
|
|
57
65
|
/**
|
|
58
|
-
* Execute the agent with user input
|
|
66
|
+
* Execute the agent with user input.
|
|
67
|
+
* Uses the agent's default session (created during start()).
|
|
68
|
+
*
|
|
59
69
|
* @param input - User input string
|
|
60
|
-
* @param
|
|
70
|
+
* @param options - Optional execution options
|
|
71
|
+
* @param options.executionContext - Optional context for command-specific behavior (curate/query/chat)
|
|
72
|
+
* @param options.taskId - Optional task ID for event routing (required for concurrent task isolation)
|
|
61
73
|
* @returns Agent response
|
|
62
74
|
*/
|
|
63
|
-
execute(input: string,
|
|
75
|
+
execute(input: string, options?: {
|
|
76
|
+
executionContext?: ExecutionContext;
|
|
77
|
+
taskId?: string;
|
|
78
|
+
}): Promise<string>;
|
|
79
|
+
/**
|
|
80
|
+
* Generate a complete response (waits for full completion).
|
|
81
|
+
* Wrapper around stream() that collects all events and returns final result.
|
|
82
|
+
* Uses the agent's default session (created during start()).
|
|
83
|
+
*
|
|
84
|
+
* @param input - User message
|
|
85
|
+
* @param options - Optional configuration (signal for cancellation, taskId for billing)
|
|
86
|
+
* @returns Complete response with content, usage, and tool calls
|
|
87
|
+
*/
|
|
88
|
+
generate(input: string, options?: StreamOptions): Promise<GenerateResponse>;
|
|
64
89
|
/**
|
|
65
90
|
* Get session metadata without loading full history
|
|
66
91
|
* @param sessionId - Session ID
|
|
@@ -87,4 +112,14 @@ export interface ICipherAgent {
|
|
|
87
112
|
* Must be called before execute()
|
|
88
113
|
*/
|
|
89
114
|
start(): Promise<void>;
|
|
115
|
+
/**
|
|
116
|
+
* Stream a response (yields events as they arrive).
|
|
117
|
+
* This is the recommended method for real-time streaming UI updates.
|
|
118
|
+
* Uses the agent's default session (created during start()).
|
|
119
|
+
*
|
|
120
|
+
* @param input - User message
|
|
121
|
+
* @param options - Optional configuration (signal for cancellation, taskId for billing)
|
|
122
|
+
* @returns AsyncIterator that yields StreamingEvent objects
|
|
123
|
+
*/
|
|
124
|
+
stream(input: string, options?: StreamOptions): Promise<AsyncIterableIterator<StreamingEvent>>;
|
|
90
125
|
}
|
|
@@ -33,16 +33,14 @@ export interface GenerateContentRequest {
|
|
|
33
33
|
config: GenerationConfig;
|
|
34
34
|
/** Conversation history */
|
|
35
35
|
contents: InternalMessage[];
|
|
36
|
-
/** Optional execution context
|
|
36
|
+
/** Optional execution context */
|
|
37
37
|
executionContext?: ExecutionContext;
|
|
38
|
-
/** Optional mode for system prompt ('autonomous' enables autonomous mode) */
|
|
39
|
-
mode?: 'autonomous' | 'default' | 'query';
|
|
40
38
|
/** Model identifier */
|
|
41
39
|
model: string;
|
|
42
|
-
/** Session identifier */
|
|
43
|
-
sessionId: string;
|
|
44
40
|
/** Optional system prompt */
|
|
45
41
|
systemPrompt?: string;
|
|
42
|
+
/** Tracking task ID for backend billing metrics (random UUID per request) */
|
|
43
|
+
taskId: string;
|
|
46
44
|
/** Available tools for function calling */
|
|
47
45
|
tools?: ToolSet;
|
|
48
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EditFileOptions, EditOperation, EditResult, FileContent, GlobOptions, GlobResult, ReadFileOptions, SearchOptions, SearchResult, WriteFileOptions, WriteResult } from '../../domain/cipher/file-system/types.js';
|
|
1
|
+
import type { EditFileOptions, EditOperation, EditResult, FileContent, GlobOptions, GlobResult, ListDirectoryOptions, ListDirectoryResult, ReadFileOptions, SearchOptions, SearchResult, WriteFileOptions, WriteResult } from '../../domain/cipher/file-system/types.js';
|
|
2
2
|
/**
|
|
3
3
|
* Interface for file system operations.
|
|
4
4
|
* Provides secure, validated access to the file system with comprehensive
|
|
@@ -32,6 +32,17 @@ export interface IFileSystem {
|
|
|
32
32
|
* Performs setup and validation of configuration.
|
|
33
33
|
*/
|
|
34
34
|
initialize(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* List files and directories in a path.
|
|
37
|
+
* Returns a tree structure with default ignore patterns for build artifacts.
|
|
38
|
+
*
|
|
39
|
+
* @param dirPath - Path to directory (relative or absolute)
|
|
40
|
+
* @param options - List options (ignore patterns, max results)
|
|
41
|
+
* @returns Directory listing with tree structure
|
|
42
|
+
* @throws DirectoryNotFoundError if directory doesn't exist
|
|
43
|
+
* @throws PathNotAllowedError if path is not in allowed paths
|
|
44
|
+
*/
|
|
45
|
+
listDirectory(dirPath: string, options?: ListDirectoryOptions): Promise<ListDirectoryResult>;
|
|
35
46
|
/**
|
|
36
47
|
* Read the contents of a file.
|
|
37
48
|
*
|
|
@@ -21,23 +21,22 @@ export interface ILLMService {
|
|
|
21
21
|
* - Returning final response
|
|
22
22
|
*
|
|
23
23
|
* @param textInput - User input text
|
|
24
|
-
* @param sessionId - Session ID for tracking the conversation
|
|
25
24
|
* @param options - Execution options
|
|
26
25
|
* @param options.signal - Optional abort signal for cancellation
|
|
27
26
|
* @param options.imageData - Optional image data
|
|
28
27
|
* @param options.fileData - Optional file data
|
|
29
28
|
* @param options.stream - Whether to stream the response (optional)
|
|
30
|
-
* @param options.executionContext - Optional execution context
|
|
31
|
-
* @param options.
|
|
29
|
+
* @param options.executionContext - Optional execution context
|
|
30
|
+
* @param options.taskId - Task ID from usecase for billing tracking
|
|
32
31
|
* @returns Final assistant response
|
|
33
32
|
*/
|
|
34
|
-
completeTask(textInput: string,
|
|
33
|
+
completeTask(textInput: string, options?: {
|
|
35
34
|
executionContext?: ExecutionContext;
|
|
36
35
|
fileData?: FileData;
|
|
37
36
|
imageData?: ImageData;
|
|
38
|
-
mode?: 'autonomous' | 'default' | 'query';
|
|
39
37
|
signal?: AbortSignal;
|
|
40
38
|
stream?: boolean;
|
|
39
|
+
taskId?: string;
|
|
41
40
|
}): Promise<string>;
|
|
42
41
|
/**
|
|
43
42
|
* Get all available tools.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Todo } from '../../domain/cipher/todos/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for session-based todo storage.
|
|
4
|
+
*
|
|
5
|
+
* Implementations can use different storage backends (in-memory, persistent, etc.)
|
|
6
|
+
* to store and retrieve todo lists per session.
|
|
7
|
+
*/
|
|
8
|
+
export interface ITodoStorage {
|
|
9
|
+
/**
|
|
10
|
+
* Get todos for a specific session.
|
|
11
|
+
*
|
|
12
|
+
* @param sessionId - Unique session identifier
|
|
13
|
+
* @returns Promise that resolves to array of todos, empty array if not found
|
|
14
|
+
*/
|
|
15
|
+
get(sessionId: string): Promise<Todo[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Update (replace) todos for a specific session.
|
|
18
|
+
*
|
|
19
|
+
* @param sessionId - Unique session identifier
|
|
20
|
+
* @param todos - Array of todos to store
|
|
21
|
+
* @returns Promise that resolves when todos are saved
|
|
22
|
+
*/
|
|
23
|
+
update(sessionId: string, todos: Todo[]): Promise<void>;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { ToolExecutionResult } from '../../domain/cipher/tools/tool-error.js';
|
|
2
|
+
/**
|
|
3
|
+
* Context provided to plugin hooks during tool execution.
|
|
4
|
+
* Contains metadata about the current tool invocation.
|
|
5
|
+
*/
|
|
6
|
+
export interface ToolHookContext {
|
|
7
|
+
/** Unique identifier for this tool call */
|
|
8
|
+
callId: string;
|
|
9
|
+
/** Session ID where the tool is being executed */
|
|
10
|
+
sessionId: string;
|
|
11
|
+
/** Name of the tool being executed */
|
|
12
|
+
toolName: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Result from a before-execute hook.
|
|
16
|
+
* Determines whether tool execution should proceed and allows argument modification.
|
|
17
|
+
*/
|
|
18
|
+
export interface BeforeHookResult {
|
|
19
|
+
/**
|
|
20
|
+
* Modified arguments to use for execution.
|
|
21
|
+
* If provided, these replace the original arguments.
|
|
22
|
+
*/
|
|
23
|
+
args?: Record<string, unknown>;
|
|
24
|
+
/**
|
|
25
|
+
* Whether to proceed with tool execution.
|
|
26
|
+
* If false, execution is blocked and reason should explain why.
|
|
27
|
+
*/
|
|
28
|
+
proceed: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Reason for blocking execution (when proceed is false).
|
|
31
|
+
* Used to generate an error message for the LLM.
|
|
32
|
+
*/
|
|
33
|
+
reason?: string;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Plugin interface for extending tool execution behavior.
|
|
37
|
+
*
|
|
38
|
+
* Plugins can intercept tool execution at two points:
|
|
39
|
+
* 1. beforeExecute: Called before the tool runs. Can modify args or block execution.
|
|
40
|
+
* 2. afterExecute: Called after the tool completes. Can log, audit, or react to results.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* const loggingPlugin: IToolPlugin = {
|
|
45
|
+
* name: 'logging',
|
|
46
|
+
* priority: 1,
|
|
47
|
+
* beforeExecute(ctx, args) {
|
|
48
|
+
* console.log(`[${ctx.toolName}] Starting with args:`, args)
|
|
49
|
+
* return { proceed: true }
|
|
50
|
+
* },
|
|
51
|
+
* afterExecute(ctx, args, result) {
|
|
52
|
+
* console.log(`[${ctx.toolName}] Completed:`, result.success ? 'success' : 'error')
|
|
53
|
+
* }
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export interface IToolPlugin {
|
|
58
|
+
/**
|
|
59
|
+
* Called after a tool has completed execution.
|
|
60
|
+
* Receives the original arguments and the execution result.
|
|
61
|
+
*
|
|
62
|
+
* Use for logging, auditing, analytics, or triggering side effects.
|
|
63
|
+
* Errors in afterExecute are caught and logged but don't affect the result.
|
|
64
|
+
*
|
|
65
|
+
* @param ctx - Hook context with tool metadata
|
|
66
|
+
* @param args - Arguments that were passed to the tool
|
|
67
|
+
* @param result - Result from tool execution
|
|
68
|
+
*/
|
|
69
|
+
afterExecute?(ctx: ToolHookContext, args: Record<string, unknown>, result: ToolExecutionResult): Promise<void> | void;
|
|
70
|
+
/**
|
|
71
|
+
* Called before a tool is executed.
|
|
72
|
+
* Can inspect/modify arguments or block execution entirely.
|
|
73
|
+
*
|
|
74
|
+
* @param ctx - Hook context with tool metadata
|
|
75
|
+
* @param args - Arguments to be passed to the tool
|
|
76
|
+
* @returns Result indicating whether to proceed and optionally modified args
|
|
77
|
+
*/
|
|
78
|
+
beforeExecute?(ctx: ToolHookContext, args: Record<string, unknown>): BeforeHookResult | Promise<BeforeHookResult>;
|
|
79
|
+
/**
|
|
80
|
+
* Unique name for this plugin.
|
|
81
|
+
* Used for logging and to allow unregistering by name.
|
|
82
|
+
*/
|
|
83
|
+
name: string;
|
|
84
|
+
/**
|
|
85
|
+
* Execution priority (lower = earlier).
|
|
86
|
+
* Plugins with lower priority numbers execute first.
|
|
87
|
+
* Default is 100 if not specified.
|
|
88
|
+
*/
|
|
89
|
+
priority?: number;
|
|
90
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ToolMarker } from '../../../infra/cipher/tools/tool-markers.js';
|
|
2
|
-
import type { ToolSet } from '../../domain/cipher/tools/types.js';
|
|
2
|
+
import type { ToolExecutionContext, ToolSet } from '../../domain/cipher/tools/types.js';
|
|
3
3
|
/**
|
|
4
4
|
* Interface for tool provider.
|
|
5
5
|
* Manages tool registration, validation, and execution.
|
|
@@ -11,12 +11,13 @@ export interface IToolProvider {
|
|
|
11
11
|
* @param toolName - Name of the tool to execute
|
|
12
12
|
* @param args - Tool arguments (will be validated against schema)
|
|
13
13
|
* @param sessionId - Optional session ID for context
|
|
14
|
+
* @param context - Optional execution context (includes metadata callback for streaming)
|
|
14
15
|
* @returns Tool execution result
|
|
15
16
|
* @throws ToolNotFoundError if tool doesn't exist
|
|
16
17
|
* @throws ToolValidationError if input validation fails
|
|
17
18
|
* @throws ToolExecutionError if execution fails
|
|
18
19
|
*/
|
|
19
|
-
executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string): Promise<unknown>;
|
|
20
|
+
executeTool(toolName: string, args: Record<string, unknown>, sessionId?: string, context?: ToolExecutionContext): Promise<unknown>;
|
|
20
21
|
/**
|
|
21
22
|
* Get all registered tools in JSON Schema format.
|
|
22
23
|
* Used to expose tools to the LLM.
|
|
@@ -62,6 +62,10 @@ export interface ToolSchedulerContext {
|
|
|
62
62
|
* Session ID for the current session.
|
|
63
63
|
*/
|
|
64
64
|
sessionId: string;
|
|
65
|
+
/**
|
|
66
|
+
* Task ID for billing tracking (passed from usecase to subagents).
|
|
67
|
+
*/
|
|
68
|
+
taskId?: string;
|
|
65
69
|
}
|
|
66
70
|
/**
|
|
67
71
|
* Interface for the tool scheduler.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cipher interfaces and types.
|
|
3
|
+
*
|
|
4
|
+
* This module re-exports all cipher-related interfaces, types, and utilities.
|
|
5
|
+
*/
|
|
6
|
+
export type { BlobMetadata, StoredBlob } from '../../domain/cipher/blob/types.js';
|
|
7
|
+
export * from './cipher-services.js';
|
|
8
|
+
export type { IAgentStorage } from './i-agent-storage.js';
|
|
9
|
+
export type { IBlobStorage } from './i-blob-storage.js';
|
|
10
|
+
export type { IChatSession } from './i-chat-session.js';
|
|
11
|
+
export type { ICipherAgent } from './i-cipher-agent.js';
|
|
12
|
+
export type { ICodingAgentLogParser } from './i-coding-agent-log-parser.js';
|
|
13
|
+
export type { ICodingAgentLogWatcher } from './i-coding-agent-log-watcher.js';
|
|
14
|
+
export type { IContentGenerator } from './i-content-generator.js';
|
|
15
|
+
export type { IEventEmitter } from './i-event-emitter.js';
|
|
16
|
+
export type { IFileSystem } from './i-file-system.js';
|
|
17
|
+
export type { IHistoryStorage } from './i-history-storage.js';
|
|
18
|
+
export type { IKeyStorage } from './i-key-storage.js';
|
|
19
|
+
export type { ILlmProvider } from './i-llm-provider.js';
|
|
20
|
+
export type { ILLMService } from './i-llm-service.js';
|
|
21
|
+
export type { ILogger } from './i-logger.js';
|
|
22
|
+
export type { IMessageFormatter } from './i-message-formatter.js';
|
|
23
|
+
export type { IPolicyEngine } from './i-policy-engine.js';
|
|
24
|
+
export type { IProcessService } from './i-process-service.js';
|
|
25
|
+
export type { ISystemPromptContributor } from './i-system-prompt-contributor.js';
|
|
26
|
+
export type { ITodoStorage } from './i-todo-storage.js';
|
|
27
|
+
export type { ITokenizer } from './i-tokenizer.js';
|
|
28
|
+
export type { IToolPlugin } from './i-tool-plugin.js';
|
|
29
|
+
export type { IToolProvider } from './i-tool-provider.js';
|
|
30
|
+
export type { IToolScheduler } from './i-tool-scheduler.js';
|
|
31
|
+
export * from './llm-types.js';
|
|
32
|
+
export * from './message-factory.js';
|
|
33
|
+
export * from './message-type-guards.js';
|
|
34
|
+
export * from './message-types.js';
|
|
35
|
+
export * from './tokenizer-types.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cipher interfaces and types.
|
|
3
|
+
*
|
|
4
|
+
* This module re-exports all cipher-related interfaces, types, and utilities.
|
|
5
|
+
*/
|
|
6
|
+
export * from './cipher-services.js';
|
|
7
|
+
export * from './llm-types.js';
|
|
8
|
+
export * from './message-factory.js';
|
|
9
|
+
export * from './message-type-guards.js';
|
|
10
|
+
export * from './message-types.js';
|
|
11
|
+
export * from './tokenizer-types.js';
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Factory functions for creating validated message parts and messages.
|
|
3
|
+
*
|
|
4
|
+
* These factories provide a consistent way to create message parts with:
|
|
5
|
+
* - Proper type assignment
|
|
6
|
+
* - Optional metadata and synthetic flags
|
|
7
|
+
* - Default values where appropriate
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
import type { FilePart, ImagePart, InternalMessage, ReasoningPart, TextPart, ToolCall, ToolPart, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning } from './message-types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Common options for creating message parts.
|
|
13
|
+
*/
|
|
14
|
+
export interface PartOptions {
|
|
15
|
+
/** Part-level metadata for cache hints and custom data */
|
|
16
|
+
metadata?: {
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
cacheControl?: {
|
|
19
|
+
type: 'ephemeral' | 'permanent';
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
/** Whether this is auto-generated content */
|
|
23
|
+
synthetic?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create a TextPart with the given text content.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createTextPart(text: string, options?: PartOptions): TextPart;
|
|
29
|
+
/**
|
|
30
|
+
* Create an ImagePart with the given image data.
|
|
31
|
+
*/
|
|
32
|
+
export declare function createImagePart(image: ImagePart['image'], mimeType?: string, options?: PartOptions): ImagePart;
|
|
33
|
+
/**
|
|
34
|
+
* Create a FilePart with the given file data.
|
|
35
|
+
*/
|
|
36
|
+
export declare function createFilePart(data: FilePart['data'], mimeType: string, filename?: string, options?: PartOptions): FilePart;
|
|
37
|
+
/**
|
|
38
|
+
* Create a ReasoningPart with the given thinking text.
|
|
39
|
+
*/
|
|
40
|
+
export declare function createReasoningPart(text: string, summary?: {
|
|
41
|
+
description: string;
|
|
42
|
+
subject: string;
|
|
43
|
+
}, options?: PartOptions): ReasoningPart;
|
|
44
|
+
/**
|
|
45
|
+
* Create a ToolPart in pending state.
|
|
46
|
+
*/
|
|
47
|
+
export declare function createToolPart(callId: string, toolName: string, input: Record<string, unknown>, options?: PartOptions): ToolPart;
|
|
48
|
+
/**
|
|
49
|
+
* Create a ToolPart in running state.
|
|
50
|
+
*/
|
|
51
|
+
export declare function createRunningToolPart(callId: string, toolName: string, input: Record<string, unknown>, options?: PartOptions & {
|
|
52
|
+
startedAt?: number;
|
|
53
|
+
}): ToolPart;
|
|
54
|
+
/**
|
|
55
|
+
* Options for creating a completed tool part.
|
|
56
|
+
*/
|
|
57
|
+
export interface CreateCompletedToolPartOptions extends PartOptions {
|
|
58
|
+
additionalOptions?: {
|
|
59
|
+
attachments?: ToolStateCompleted['attachments'];
|
|
60
|
+
compactedAt?: number;
|
|
61
|
+
metadata?: Record<string, unknown>;
|
|
62
|
+
title?: string;
|
|
63
|
+
};
|
|
64
|
+
callId: string;
|
|
65
|
+
input: Record<string, unknown>;
|
|
66
|
+
output: string;
|
|
67
|
+
time?: {
|
|
68
|
+
end: number;
|
|
69
|
+
start: number;
|
|
70
|
+
};
|
|
71
|
+
toolName: string;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a ToolPart in completed state.
|
|
75
|
+
*/
|
|
76
|
+
export declare function createCompletedToolPart(options: CreateCompletedToolPartOptions): ToolPart;
|
|
77
|
+
/**
|
|
78
|
+
* Options for creating an error tool part.
|
|
79
|
+
*/
|
|
80
|
+
export interface CreateErrorToolPartOptions extends PartOptions {
|
|
81
|
+
callId: string;
|
|
82
|
+
error: string;
|
|
83
|
+
input: Record<string, unknown>;
|
|
84
|
+
time?: {
|
|
85
|
+
end: number;
|
|
86
|
+
start: number;
|
|
87
|
+
};
|
|
88
|
+
toolName: string;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a ToolPart in error state.
|
|
92
|
+
*/
|
|
93
|
+
export declare function createErrorToolPart(options: CreateErrorToolPartOptions): ToolPart;
|
|
94
|
+
/**
|
|
95
|
+
* Transition a tool state from pending to running.
|
|
96
|
+
*/
|
|
97
|
+
export declare function transitionToRunning(state: ToolStatePending, startedAt?: number): ToolStateRunning;
|
|
98
|
+
/**
|
|
99
|
+
* Transition a tool state from running to completed.
|
|
100
|
+
*/
|
|
101
|
+
export declare function transitionToCompleted(state: ToolStateRunning, output: string, endedAt?: number, additionalOptions?: {
|
|
102
|
+
attachments?: ToolStateCompleted['attachments'];
|
|
103
|
+
metadata?: Record<string, unknown>;
|
|
104
|
+
title?: string;
|
|
105
|
+
}): ToolStateCompleted;
|
|
106
|
+
/**
|
|
107
|
+
* Transition a tool state from running to error.
|
|
108
|
+
*/
|
|
109
|
+
export declare function transitionToError(state: ToolStateRunning, error: string, endedAt?: number): ToolStateError;
|
|
110
|
+
/**
|
|
111
|
+
* Create a ToolCall from function name and arguments.
|
|
112
|
+
*/
|
|
113
|
+
export declare function createToolCall(id: string, name: string, args: Record<string, unknown> | string): ToolCall;
|
|
114
|
+
/**
|
|
115
|
+
* Options for creating internal messages.
|
|
116
|
+
*/
|
|
117
|
+
export interface MessageOptions {
|
|
118
|
+
/** Message-level metadata */
|
|
119
|
+
metadata?: {
|
|
120
|
+
[key: string]: unknown;
|
|
121
|
+
compactedAt?: number;
|
|
122
|
+
isSummary?: boolean;
|
|
123
|
+
summarizedMessageCount?: number;
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a system message.
|
|
128
|
+
*/
|
|
129
|
+
export declare function createSystemMessage(content: string, options?: MessageOptions): InternalMessage;
|
|
130
|
+
/**
|
|
131
|
+
* Create a user message with text content.
|
|
132
|
+
*/
|
|
133
|
+
export declare function createUserMessage(content: InternalMessage['content'] | string, options?: MessageOptions): InternalMessage;
|
|
134
|
+
/**
|
|
135
|
+
* Create an assistant message with text content.
|
|
136
|
+
*/
|
|
137
|
+
export declare function createAssistantMessage(content: InternalMessage['content'] | string, additionalOptions?: {
|
|
138
|
+
reasoning?: string;
|
|
139
|
+
thought?: string;
|
|
140
|
+
thoughtSummary?: {
|
|
141
|
+
description: string;
|
|
142
|
+
subject: string;
|
|
143
|
+
};
|
|
144
|
+
toolCalls?: ToolCall[];
|
|
145
|
+
}, options?: MessageOptions): InternalMessage;
|
|
146
|
+
/**
|
|
147
|
+
* Create a tool result message.
|
|
148
|
+
*/
|
|
149
|
+
export declare function createToolResultMessage(content: InternalMessage['content'] | string, toolCallId: string, name: string, options?: MessageOptions): InternalMessage;
|
|
150
|
+
/**
|
|
151
|
+
* Create a summary message (used by compression strategies).
|
|
152
|
+
*/
|
|
153
|
+
export declare function createSummaryMessage(summaryContent: string, summarizedMessageCount: number, options?: Omit<MessageOptions, 'metadata'> & {
|
|
154
|
+
additionalMetadata?: Record<string, unknown>;
|
|
155
|
+
}): InternalMessage;
|