byterover-cli 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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/entities/event.d.ts +1 -1
- package/dist/core/domain/entities/event.js +3 -1
- 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/hooks/init/welcome.js +9 -24
- 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 +10 -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 +73 -259
- package/dist/infra/usecase/init-use-case.js +19 -8
- package/dist/infra/usecase/login-use-case.js +9 -3
- package/dist/infra/usecase/query-use-case.d.ts +18 -45
- package/dist/infra/usecase/query-use-case.js +251 -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} +6 -5
- 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
|
@@ -7,11 +7,11 @@ export declare const AGENT_EVENT_NAMES: readonly ["cipher:conversationReset", "c
|
|
|
7
7
|
* Session-level event names for LLM service operations.
|
|
8
8
|
* These events are emitted at the session level and do not include sessionId in payloads.
|
|
9
9
|
*/
|
|
10
|
-
export declare const SESSION_EVENT_NAMES: readonly ["llmservice:chunk", "llmservice:error", "llmservice:outputTruncated", "llmservice:response", "llmservice:thinking", "llmservice:thought", "llmservice:toolCall", "llmservice:toolResult", "llmservice:unsupportedInput", "llmservice:warning"];
|
|
10
|
+
export declare const SESSION_EVENT_NAMES: readonly ["llmservice:chunk", "llmservice:contextCompressed", "llmservice:contextOverflow", "llmservice:contextPruned", "llmservice:doomLoopDetected", "llmservice:error", "llmservice:outputTruncated", "llmservice:response", "llmservice:thinking", "llmservice:thought", "llmservice:toolCall", "llmservice:toolMetadata", "llmservice:toolResult", "llmservice:unsupportedInput", "llmservice:warning", "message:dequeued", "message:queued", "run:complete", "session:statusChanged", "step:finished", "step:started"];
|
|
11
11
|
/**
|
|
12
12
|
* All event names (union of agent and session events).
|
|
13
13
|
*/
|
|
14
|
-
export declare const EVENT_NAMES: readonly ["cipher:conversationReset", "cipher:executionStarted", "cipher:executionTerminated", "cipher:log", "cipher:stateChanged", "cipher:stateReset", "cipher:ui", "llmservice:chunk", "llmservice:error", "llmservice:outputTruncated", "llmservice:response", "llmservice:thinking", "llmservice:thought", "llmservice:toolCall", "llmservice:toolResult", "llmservice:unsupportedInput", "llmservice:warning"];
|
|
14
|
+
export declare const EVENT_NAMES: readonly ["cipher:conversationReset", "cipher:executionStarted", "cipher:executionTerminated", "cipher:log", "cipher:stateChanged", "cipher:stateReset", "cipher:ui", "llmservice:chunk", "llmservice:contextCompressed", "llmservice:contextOverflow", "llmservice:contextPruned", "llmservice:doomLoopDetected", "llmservice:error", "llmservice:outputTruncated", "llmservice:response", "llmservice:thinking", "llmservice:thought", "llmservice:toolCall", "llmservice:toolMetadata", "llmservice:toolResult", "llmservice:unsupportedInput", "llmservice:warning", "message:dequeued", "message:queued", "run:complete", "session:statusChanged", "step:finished", "step:started"];
|
|
15
15
|
/**
|
|
16
16
|
* Union type of all agent event names.
|
|
17
17
|
*/
|
|
@@ -156,36 +156,105 @@ export interface AgentEventMap {
|
|
|
156
156
|
* @property {string} content - Content of the chunk
|
|
157
157
|
* @property {boolean} [isComplete] - Whether this is the final chunk
|
|
158
158
|
* @property {string} sessionId - ID of the session
|
|
159
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
159
160
|
* @property {'reasoning' | 'text'} type - Type of chunk (text or reasoning)
|
|
160
161
|
*/
|
|
161
162
|
'llmservice:chunk': {
|
|
162
163
|
content: string;
|
|
163
164
|
isComplete?: boolean;
|
|
164
165
|
sessionId: string;
|
|
166
|
+
taskId?: string;
|
|
165
167
|
type: 'reasoning' | 'text';
|
|
166
168
|
};
|
|
169
|
+
/**
|
|
170
|
+
* Emitted when conversation context is compressed via summarization.
|
|
171
|
+
* @property {number} compressedTokens - Token count after compression
|
|
172
|
+
* @property {number} originalTokens - Token count before compression
|
|
173
|
+
* @property {string} sessionId - ID of the session
|
|
174
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
175
|
+
* @property {'middle_removal' | 'oldest_removal' | 'summary'} strategy - Compression strategy used
|
|
176
|
+
*/
|
|
177
|
+
'llmservice:contextCompressed': {
|
|
178
|
+
compressedTokens: number;
|
|
179
|
+
originalTokens: number;
|
|
180
|
+
sessionId: string;
|
|
181
|
+
strategy: 'middle_removal' | 'oldest_removal' | 'summary';
|
|
182
|
+
taskId?: string;
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Emitted when context is approaching the token limit.
|
|
186
|
+
* @property {number} currentTokens - Current token count
|
|
187
|
+
* @property {number} maxTokens - Maximum allowed tokens
|
|
188
|
+
* @property {string} sessionId - ID of the session
|
|
189
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
190
|
+
* @property {number} utilizationPercent - Percentage of context used (0-100)
|
|
191
|
+
*/
|
|
192
|
+
'llmservice:contextOverflow': {
|
|
193
|
+
currentTokens: number;
|
|
194
|
+
maxTokens: number;
|
|
195
|
+
sessionId: string;
|
|
196
|
+
taskId?: string;
|
|
197
|
+
utilizationPercent: number;
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Emitted when old tool outputs are pruned to save context space.
|
|
201
|
+
* @property {number} pruneCount - Number of tool outputs pruned
|
|
202
|
+
* @property {'manual' | 'overflow'} reason - Why pruning was triggered
|
|
203
|
+
* @property {string} sessionId - ID of the session
|
|
204
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
205
|
+
* @property {number} tokensSaved - Estimated tokens saved
|
|
206
|
+
*/
|
|
207
|
+
'llmservice:contextPruned': {
|
|
208
|
+
pruneCount: number;
|
|
209
|
+
reason: 'manual' | 'overflow';
|
|
210
|
+
sessionId: string;
|
|
211
|
+
taskId?: string;
|
|
212
|
+
tokensSaved: number;
|
|
213
|
+
};
|
|
214
|
+
/**
|
|
215
|
+
* Emitted when a doom loop is detected (repeated identical tool calls).
|
|
216
|
+
* The tool call is automatically rejected to prevent infinite loops.
|
|
217
|
+
* @property {Record<string, unknown>} args - Arguments that were repeated
|
|
218
|
+
* @property {'exact_repeat' | 'oscillation'} loopType - Type of loop detected
|
|
219
|
+
* @property {number} repeatCount - Number of times the pattern repeated
|
|
220
|
+
* @property {string} sessionId - ID of the session
|
|
221
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
222
|
+
* @property {string} toolName - Name of the tool involved in the loop
|
|
223
|
+
*/
|
|
224
|
+
'llmservice:doomLoopDetected': {
|
|
225
|
+
args: Record<string, unknown>;
|
|
226
|
+
loopType: 'exact_repeat' | 'oscillation';
|
|
227
|
+
repeatCount: number;
|
|
228
|
+
sessionId: string;
|
|
229
|
+
taskId?: string;
|
|
230
|
+
toolName: string;
|
|
231
|
+
};
|
|
167
232
|
/**
|
|
168
233
|
* Emitted when an error occurs during LLM service operation.
|
|
169
234
|
* @property {string} [code] - Error code (optional)
|
|
170
235
|
* @property {string} error - Error message
|
|
171
236
|
* @property {string} sessionId - ID of the session
|
|
237
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
172
238
|
*/
|
|
173
239
|
'llmservice:error': {
|
|
174
240
|
code?: string;
|
|
175
241
|
error: string;
|
|
176
242
|
sessionId: string;
|
|
243
|
+
taskId?: string;
|
|
177
244
|
};
|
|
178
245
|
/**
|
|
179
246
|
* Emitted when tool output is truncated due to size.
|
|
180
247
|
* @property {number} originalLength - Original output length before truncation
|
|
181
248
|
* @property {string} savedToFile - Path to file where full output was saved
|
|
182
249
|
* @property {string} sessionId - ID of the session
|
|
250
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
183
251
|
* @property {string} toolName - Name of the tool that produced the output
|
|
184
252
|
*/
|
|
185
253
|
'llmservice:outputTruncated': {
|
|
186
254
|
originalLength: number;
|
|
187
255
|
savedToFile: string;
|
|
188
256
|
sessionId: string;
|
|
257
|
+
taskId?: string;
|
|
189
258
|
toolName: string;
|
|
190
259
|
};
|
|
191
260
|
/**
|
|
@@ -196,6 +265,7 @@ export interface AgentEventMap {
|
|
|
196
265
|
* @property {string} [provider] - LLM provider name
|
|
197
266
|
* @property {string} [reasoning] - Internal reasoning (if available)
|
|
198
267
|
* @property {string} sessionId - ID of the session
|
|
268
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
199
269
|
* @property {TokenUsage} [tokenUsage] - Token usage statistics
|
|
200
270
|
*/
|
|
201
271
|
'llmservice:response': {
|
|
@@ -205,33 +275,40 @@ export interface AgentEventMap {
|
|
|
205
275
|
provider?: string;
|
|
206
276
|
reasoning?: string;
|
|
207
277
|
sessionId: string;
|
|
278
|
+
taskId?: string;
|
|
208
279
|
tokenUsage?: TokenUsage;
|
|
209
280
|
};
|
|
210
281
|
/**
|
|
211
282
|
* Emitted when LLM service starts thinking/processing.
|
|
212
283
|
* @property {string} sessionId - ID of the session
|
|
284
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
213
285
|
*/
|
|
214
286
|
'llmservice:thinking': {
|
|
215
287
|
sessionId: string;
|
|
288
|
+
taskId?: string;
|
|
216
289
|
};
|
|
217
290
|
/**
|
|
218
291
|
* Emitted when LLM generates a thought (Gemini models only).
|
|
219
292
|
* @property {string} description - Detailed thought description
|
|
220
293
|
* @property {string} sessionId - ID of the session
|
|
294
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
221
295
|
* @property {string} subject - Brief thought subject
|
|
222
296
|
*/
|
|
223
297
|
'llmservice:thought': {
|
|
224
298
|
description: string;
|
|
225
299
|
sessionId: string;
|
|
226
300
|
subject: string;
|
|
301
|
+
taskId?: string;
|
|
227
302
|
};
|
|
228
303
|
/**
|
|
229
304
|
* Emitted when the todo list is updated via write_todos tool.
|
|
230
305
|
* @property {string} sessionId - ID of the session
|
|
306
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
231
307
|
* @property {Array<{content: string, status: string, activeForm: string}>} todos - Updated todo list
|
|
232
308
|
*/
|
|
233
309
|
'llmservice:todoUpdated': {
|
|
234
310
|
sessionId: string;
|
|
311
|
+
taskId?: string;
|
|
235
312
|
todos: Array<{
|
|
236
313
|
activeForm: string;
|
|
237
314
|
content: string;
|
|
@@ -243,12 +320,33 @@ export interface AgentEventMap {
|
|
|
243
320
|
* @property {Record<string, unknown>} args - Arguments for the tool
|
|
244
321
|
* @property {string} [callId] - Unique identifier for this tool call
|
|
245
322
|
* @property {string} sessionId - ID of the session
|
|
323
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
246
324
|
* @property {string} toolName - Name of the tool to execute
|
|
247
325
|
*/
|
|
248
326
|
'llmservice:toolCall': {
|
|
249
327
|
args: Record<string, unknown>;
|
|
250
328
|
callId?: string;
|
|
251
329
|
sessionId: string;
|
|
330
|
+
taskId?: string;
|
|
331
|
+
toolName: string;
|
|
332
|
+
};
|
|
333
|
+
/**
|
|
334
|
+
* Emitted when a tool streams metadata updates during execution.
|
|
335
|
+
* Allows tools to push real-time updates (e.g., bash output streaming).
|
|
336
|
+
* @property {string} callId - Tool call identifier
|
|
337
|
+
* @property {string} [description] - Human-readable status description
|
|
338
|
+
* @property {Record<string, unknown>} metadata - The metadata update
|
|
339
|
+
* @property {string} [output] - Streamed output content
|
|
340
|
+
* @property {number} [progress] - Progress indicator (0-100)
|
|
341
|
+
* @property {string} sessionId - ID of the session
|
|
342
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
343
|
+
* @property {string} toolName - Name of the tool streaming metadata
|
|
344
|
+
*/
|
|
345
|
+
'llmservice:toolMetadata': {
|
|
346
|
+
callId: string;
|
|
347
|
+
metadata: Record<string, unknown>;
|
|
348
|
+
sessionId: string;
|
|
349
|
+
taskId?: string;
|
|
252
350
|
toolName: string;
|
|
253
351
|
};
|
|
254
352
|
/**
|
|
@@ -259,6 +357,7 @@ export interface AgentEventMap {
|
|
|
259
357
|
* @property {Record<string, unknown>} [metadata] - Execution metadata (duration, tokens, etc.)
|
|
260
358
|
* @property {unknown} [result] - Tool execution result
|
|
261
359
|
* @property {string} sessionId - ID of the session
|
|
360
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
262
361
|
* @property {boolean} success - Whether execution succeeded
|
|
263
362
|
* @property {string} toolName - Name of the executed tool
|
|
264
363
|
*/
|
|
@@ -270,16 +369,19 @@ export interface AgentEventMap {
|
|
|
270
369
|
result?: unknown;
|
|
271
370
|
sessionId: string;
|
|
272
371
|
success: boolean;
|
|
372
|
+
taskId?: string;
|
|
273
373
|
toolName: string;
|
|
274
374
|
};
|
|
275
375
|
/**
|
|
276
376
|
* Emitted when LLM receives unsupported input.
|
|
277
377
|
* @property {string} reason - Reason why input is unsupported
|
|
278
378
|
* @property {string} sessionId - ID of the session
|
|
379
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
279
380
|
*/
|
|
280
381
|
'llmservice:unsupportedInput': {
|
|
281
382
|
reason: string;
|
|
282
383
|
sessionId: string;
|
|
384
|
+
taskId?: string;
|
|
283
385
|
};
|
|
284
386
|
/**
|
|
285
387
|
* Emitted when LLM service encounters a warning (e.g., max iterations reached).
|
|
@@ -287,12 +389,103 @@ export interface AgentEventMap {
|
|
|
287
389
|
* @property {string} [model] - Model identifier
|
|
288
390
|
* @property {string} [provider] - LLM provider name
|
|
289
391
|
* @property {string} sessionId - ID of the session
|
|
392
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
290
393
|
*/
|
|
291
394
|
'llmservice:warning': {
|
|
292
395
|
message: string;
|
|
293
396
|
model?: string;
|
|
294
397
|
provider?: string;
|
|
295
398
|
sessionId: string;
|
|
399
|
+
taskId?: string;
|
|
400
|
+
};
|
|
401
|
+
/**
|
|
402
|
+
* Emitted when queued messages are dequeued for processing.
|
|
403
|
+
* @property {number} count - Number of messages that were dequeued
|
|
404
|
+
* @property {string} sessionId - ID of the session
|
|
405
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
406
|
+
*/
|
|
407
|
+
'message:dequeued': {
|
|
408
|
+
count: number;
|
|
409
|
+
sessionId: string;
|
|
410
|
+
taskId?: string;
|
|
411
|
+
};
|
|
412
|
+
/**
|
|
413
|
+
* Emitted when a message is queued because session is busy.
|
|
414
|
+
* @property {object} message - The queued message
|
|
415
|
+
* @property {string} message.id - Unique identifier for the queued message
|
|
416
|
+
* @property {string} message.content - Message text content
|
|
417
|
+
* @property {number} message.queuedAt - Timestamp when queued
|
|
418
|
+
* @property {number} position - Position in the queue (1-based)
|
|
419
|
+
* @property {string} sessionId - ID of the session
|
|
420
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
421
|
+
*/
|
|
422
|
+
'message:queued': {
|
|
423
|
+
message: {
|
|
424
|
+
content: string;
|
|
425
|
+
id: string;
|
|
426
|
+
queuedAt: number;
|
|
427
|
+
};
|
|
428
|
+
position: number;
|
|
429
|
+
sessionId: string;
|
|
430
|
+
taskId?: string;
|
|
431
|
+
};
|
|
432
|
+
/**
|
|
433
|
+
* Emitted when a session run completes (streaming API lifecycle event).
|
|
434
|
+
* @property {number} durationMs - Execution duration in milliseconds
|
|
435
|
+
* @property {Error} [error] - Error if terminated due to error
|
|
436
|
+
* @property {'cancelled' | 'error' | 'max-iterations' | 'stop' | 'timeout'} finishReason - Why execution terminated
|
|
437
|
+
* @property {string} sessionId - ID of the session
|
|
438
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
439
|
+
* @property {number} stepCount - Number of agentic steps completed
|
|
440
|
+
*/
|
|
441
|
+
'run:complete': {
|
|
442
|
+
durationMs: number;
|
|
443
|
+
error?: Error;
|
|
444
|
+
finishReason: 'cancelled' | 'error' | 'max-iterations' | 'stop' | 'timeout';
|
|
445
|
+
sessionId: string;
|
|
446
|
+
stepCount: number;
|
|
447
|
+
taskId?: string;
|
|
448
|
+
};
|
|
449
|
+
/**
|
|
450
|
+
* Emitted when session status changes.
|
|
451
|
+
* Tracks the lifecycle state of a session (idle, busy, retry, waiting).
|
|
452
|
+
* @property {string} sessionId - ID of the session
|
|
453
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
454
|
+
* @property {SessionStatusType} status - The new session status
|
|
455
|
+
*/
|
|
456
|
+
'session:statusChanged': {
|
|
457
|
+
sessionId: string;
|
|
458
|
+
status: SessionStatusType;
|
|
459
|
+
taskId?: string;
|
|
460
|
+
};
|
|
461
|
+
/**
|
|
462
|
+
* Emitted when an execution step finishes.
|
|
463
|
+
* Provides per-step cost and token tracking.
|
|
464
|
+
* @property {number} cost - Cost in dollars for this step
|
|
465
|
+
* @property {'max_tokens' | 'stop' | 'tool_calls'} finishReason - Why step finished
|
|
466
|
+
* @property {string} sessionId - ID of the session
|
|
467
|
+
* @property {number} stepIndex - Step index (0-based)
|
|
468
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
469
|
+
* @property {StepTokenUsage} tokens - Token usage for this step
|
|
470
|
+
*/
|
|
471
|
+
'step:finished': {
|
|
472
|
+
cost: number;
|
|
473
|
+
finishReason: 'max_tokens' | 'stop' | 'tool_calls';
|
|
474
|
+
sessionId: string;
|
|
475
|
+
stepIndex: number;
|
|
476
|
+
taskId?: string;
|
|
477
|
+
tokens: StepTokenUsage;
|
|
478
|
+
};
|
|
479
|
+
/**
|
|
480
|
+
* Emitted when an execution step starts.
|
|
481
|
+
* @property {string} sessionId - ID of the session
|
|
482
|
+
* @property {number} stepIndex - Step index (0-based)
|
|
483
|
+
* @property {string} [taskId] - Optional task ID for concurrent task isolation
|
|
484
|
+
*/
|
|
485
|
+
'step:started': {
|
|
486
|
+
sessionId: string;
|
|
487
|
+
stepIndex: number;
|
|
488
|
+
taskId?: string;
|
|
296
489
|
};
|
|
297
490
|
}
|
|
298
491
|
/**
|
|
@@ -311,6 +504,53 @@ export interface SessionEventMap {
|
|
|
311
504
|
isComplete?: boolean;
|
|
312
505
|
type: 'reasoning' | 'text';
|
|
313
506
|
};
|
|
507
|
+
/**
|
|
508
|
+
* Emitted when conversation context is compressed via summarization.
|
|
509
|
+
* @property {number} compressedTokens - Token count after compression
|
|
510
|
+
* @property {number} originalTokens - Token count before compression
|
|
511
|
+
* @property {'middle_removal' | 'oldest_removal' | 'summary'} strategy - Compression strategy used
|
|
512
|
+
*/
|
|
513
|
+
'llmservice:contextCompressed': {
|
|
514
|
+
compressedTokens: number;
|
|
515
|
+
originalTokens: number;
|
|
516
|
+
strategy: 'middle_removal' | 'oldest_removal' | 'summary';
|
|
517
|
+
};
|
|
518
|
+
/**
|
|
519
|
+
* Emitted when context is approaching the token limit.
|
|
520
|
+
* @property {number} currentTokens - Current token count
|
|
521
|
+
* @property {number} maxTokens - Maximum allowed tokens
|
|
522
|
+
* @property {number} utilizationPercent - Percentage of context used (0-100)
|
|
523
|
+
*/
|
|
524
|
+
'llmservice:contextOverflow': {
|
|
525
|
+
currentTokens: number;
|
|
526
|
+
maxTokens: number;
|
|
527
|
+
utilizationPercent: number;
|
|
528
|
+
};
|
|
529
|
+
/**
|
|
530
|
+
* Emitted when old tool outputs are pruned to save context space.
|
|
531
|
+
* @property {number} pruneCount - Number of tool outputs pruned
|
|
532
|
+
* @property {'manual' | 'overflow'} reason - Why pruning was triggered
|
|
533
|
+
* @property {number} tokensSaved - Estimated tokens saved
|
|
534
|
+
*/
|
|
535
|
+
'llmservice:contextPruned': {
|
|
536
|
+
pruneCount: number;
|
|
537
|
+
reason: 'manual' | 'overflow';
|
|
538
|
+
tokensSaved: number;
|
|
539
|
+
};
|
|
540
|
+
/**
|
|
541
|
+
* Emitted when a doom loop is detected (repeated identical tool calls).
|
|
542
|
+
* The tool call is automatically rejected to prevent infinite loops.
|
|
543
|
+
* @property {Record<string, unknown>} args - Arguments that were repeated
|
|
544
|
+
* @property {'exact_repeat' | 'oscillation'} loopType - Type of loop detected
|
|
545
|
+
* @property {number} repeatCount - Number of times the pattern repeated
|
|
546
|
+
* @property {string} toolName - Name of the tool involved in the loop
|
|
547
|
+
*/
|
|
548
|
+
'llmservice:doomLoopDetected': {
|
|
549
|
+
args: Record<string, unknown>;
|
|
550
|
+
loopType: 'exact_repeat' | 'oscillation';
|
|
551
|
+
repeatCount: number;
|
|
552
|
+
toolName: string;
|
|
553
|
+
};
|
|
314
554
|
/**
|
|
315
555
|
* Emitted when an error occurs during LLM service operation.
|
|
316
556
|
* @property {string} [code] - Error code (optional)
|
|
@@ -372,6 +612,18 @@ export interface SessionEventMap {
|
|
|
372
612
|
callId?: string;
|
|
373
613
|
toolName: string;
|
|
374
614
|
};
|
|
615
|
+
/**
|
|
616
|
+
* Emitted when a tool streams metadata updates during execution.
|
|
617
|
+
* Allows tools to push real-time updates (e.g., bash output streaming).
|
|
618
|
+
* @property {string} callId - Tool call identifier
|
|
619
|
+
* @property {Record<string, unknown>} metadata - The metadata update
|
|
620
|
+
* @property {string} toolName - Name of the tool streaming metadata
|
|
621
|
+
*/
|
|
622
|
+
'llmservice:toolMetadata': {
|
|
623
|
+
callId: string;
|
|
624
|
+
metadata: Record<string, unknown>;
|
|
625
|
+
toolName: string;
|
|
626
|
+
};
|
|
375
627
|
/**
|
|
376
628
|
* Emitted when a tool execution completes.
|
|
377
629
|
* @property {string} [callId] - Tool call identifier
|
|
@@ -409,7 +661,108 @@ export interface SessionEventMap {
|
|
|
409
661
|
model?: string;
|
|
410
662
|
provider?: string;
|
|
411
663
|
};
|
|
664
|
+
/**
|
|
665
|
+
* Emitted when queued messages are dequeued for processing.
|
|
666
|
+
* @property {number} count - Number of messages that were dequeued
|
|
667
|
+
*/
|
|
668
|
+
'message:dequeued': {
|
|
669
|
+
count: number;
|
|
670
|
+
};
|
|
671
|
+
/**
|
|
672
|
+
* Emitted when a message is queued because session is busy.
|
|
673
|
+
* @property {object} message - The queued message
|
|
674
|
+
* @property {string} message.id - Unique identifier for the queued message
|
|
675
|
+
* @property {string} message.content - Message text content
|
|
676
|
+
* @property {number} message.queuedAt - Timestamp when queued
|
|
677
|
+
* @property {number} position - Position in the queue (1-based)
|
|
678
|
+
*/
|
|
679
|
+
'message:queued': {
|
|
680
|
+
message: {
|
|
681
|
+
content: string;
|
|
682
|
+
id: string;
|
|
683
|
+
queuedAt: number;
|
|
684
|
+
};
|
|
685
|
+
position: number;
|
|
686
|
+
};
|
|
687
|
+
/**
|
|
688
|
+
* Emitted when a session run completes (streaming API lifecycle event).
|
|
689
|
+
* @property {number} durationMs - Execution duration in milliseconds
|
|
690
|
+
* @property {Error} [error] - Error if terminated due to error
|
|
691
|
+
* @property {'cancelled' | 'error' | 'max-iterations' | 'stop' | 'timeout'} finishReason - Why execution terminated
|
|
692
|
+
* @property {number} stepCount - Number of agentic steps completed
|
|
693
|
+
*/
|
|
694
|
+
'run:complete': {
|
|
695
|
+
durationMs: number;
|
|
696
|
+
error?: Error;
|
|
697
|
+
finishReason: 'cancelled' | 'error' | 'max-iterations' | 'stop' | 'timeout';
|
|
698
|
+
stepCount: number;
|
|
699
|
+
};
|
|
700
|
+
/**
|
|
701
|
+
* Emitted when session status changes.
|
|
702
|
+
* Tracks the lifecycle state of a session (idle, busy, retry, waiting).
|
|
703
|
+
* @property {SessionStatusType} status - The new session status
|
|
704
|
+
*/
|
|
705
|
+
'session:statusChanged': {
|
|
706
|
+
status: SessionStatusType;
|
|
707
|
+
};
|
|
708
|
+
/**
|
|
709
|
+
* Emitted when an execution step finishes.
|
|
710
|
+
* Provides per-step cost and token tracking.
|
|
711
|
+
* @property {number} cost - Cost in dollars for this step
|
|
712
|
+
* @property {'max_tokens' | 'stop' | 'tool_calls'} finishReason - Why step finished
|
|
713
|
+
* @property {number} stepIndex - Step index (0-based)
|
|
714
|
+
* @property {StepTokenUsage} tokens - Token usage for this step
|
|
715
|
+
*/
|
|
716
|
+
'step:finished': {
|
|
717
|
+
cost: number;
|
|
718
|
+
finishReason: 'max_tokens' | 'stop' | 'tool_calls';
|
|
719
|
+
stepIndex: number;
|
|
720
|
+
tokens: StepTokenUsage;
|
|
721
|
+
};
|
|
722
|
+
/**
|
|
723
|
+
* Emitted when an execution step starts.
|
|
724
|
+
* @property {number} stepIndex - Step index (0-based)
|
|
725
|
+
*/
|
|
726
|
+
'step:started': {
|
|
727
|
+
stepIndex: number;
|
|
728
|
+
};
|
|
412
729
|
}
|
|
730
|
+
/**
|
|
731
|
+
* Token usage for a single execution step.
|
|
732
|
+
*/
|
|
733
|
+
export interface StepTokenUsage {
|
|
734
|
+
/** Cache tokens (read/write) */
|
|
735
|
+
cache?: {
|
|
736
|
+
read: number;
|
|
737
|
+
write: number;
|
|
738
|
+
};
|
|
739
|
+
/** Input tokens consumed */
|
|
740
|
+
input: number;
|
|
741
|
+
/** Output tokens generated */
|
|
742
|
+
output: number;
|
|
743
|
+
/** Reasoning tokens (if extended thinking enabled) */
|
|
744
|
+
reasoning?: number;
|
|
745
|
+
}
|
|
746
|
+
/**
|
|
747
|
+
* Session status type representing lifecycle states.
|
|
748
|
+
* - busy: Session is currently executing a request
|
|
749
|
+
* - idle: Session is ready to accept new messages
|
|
750
|
+
* - retry: Session is waiting to retry after a transient error
|
|
751
|
+
* - waiting_permission: Session is waiting for user permission (e.g., tool confirmation)
|
|
752
|
+
*/
|
|
753
|
+
export type SessionStatusType = {
|
|
754
|
+
attempt: number;
|
|
755
|
+
message: string;
|
|
756
|
+
nextRetryAt: number;
|
|
757
|
+
type: 'retry';
|
|
758
|
+
} | {
|
|
759
|
+
toolName: string;
|
|
760
|
+
type: 'waiting_permission';
|
|
761
|
+
} | {
|
|
762
|
+
type: 'busy';
|
|
763
|
+
} | {
|
|
764
|
+
type: 'idle';
|
|
765
|
+
};
|
|
413
766
|
/**
|
|
414
767
|
* Prevent unused variable warnings for compile-time checks.
|
|
415
768
|
*/
|
|
@@ -17,15 +17,26 @@ export const AGENT_EVENT_NAMES = [
|
|
|
17
17
|
*/
|
|
18
18
|
export const SESSION_EVENT_NAMES = [
|
|
19
19
|
'llmservice:chunk',
|
|
20
|
+
'llmservice:contextCompressed',
|
|
21
|
+
'llmservice:contextOverflow',
|
|
22
|
+
'llmservice:contextPruned',
|
|
23
|
+
'llmservice:doomLoopDetected',
|
|
20
24
|
'llmservice:error',
|
|
21
25
|
'llmservice:outputTruncated',
|
|
22
26
|
'llmservice:response',
|
|
23
27
|
'llmservice:thinking',
|
|
24
28
|
'llmservice:thought',
|
|
25
29
|
'llmservice:toolCall',
|
|
30
|
+
'llmservice:toolMetadata',
|
|
26
31
|
'llmservice:toolResult',
|
|
27
32
|
'llmservice:unsupportedInput',
|
|
28
33
|
'llmservice:warning',
|
|
34
|
+
'message:dequeued',
|
|
35
|
+
'message:queued',
|
|
36
|
+
'run:complete',
|
|
37
|
+
'session:statusChanged',
|
|
38
|
+
'step:finished',
|
|
39
|
+
'step:started',
|
|
29
40
|
];
|
|
30
41
|
/**
|
|
31
42
|
* All event names (union of agent and session events).
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Normalizer
|
|
3
|
+
*
|
|
4
|
+
* Converts various error types into a unified, normalized format.
|
|
5
|
+
* Following the OpenCode pattern of MessageV2.fromError() for consistent
|
|
6
|
+
* error handling across providers.
|
|
7
|
+
*
|
|
8
|
+
* Key features:
|
|
9
|
+
* - Discriminated union for error types
|
|
10
|
+
* - Provider-agnostic error representation
|
|
11
|
+
* - Retryable error detection
|
|
12
|
+
* - Consistent error structure for UI consumption
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Normalized error types following OpenCode pattern.
|
|
16
|
+
* Discriminated by the `type` field for easy pattern matching.
|
|
17
|
+
*/
|
|
18
|
+
export type NormalizedError = NormalizedAbortedError | NormalizedApiError | NormalizedAuthError | NormalizedConfigError | NormalizedOutputLengthError | NormalizedRateLimitError | NormalizedToolError | NormalizedUnknownError;
|
|
19
|
+
/**
|
|
20
|
+
* Authentication/authorization error.
|
|
21
|
+
*/
|
|
22
|
+
export interface NormalizedAuthError {
|
|
23
|
+
/** Error message */
|
|
24
|
+
message: string;
|
|
25
|
+
/** Provider that rejected auth */
|
|
26
|
+
providerId: string;
|
|
27
|
+
type: 'auth';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* API call error (network, server errors, etc.).
|
|
31
|
+
*/
|
|
32
|
+
export interface NormalizedApiError {
|
|
33
|
+
/** Whether this error can be retried */
|
|
34
|
+
isRetryable: boolean;
|
|
35
|
+
/** Error message */
|
|
36
|
+
message: string;
|
|
37
|
+
/** Model that was being used */
|
|
38
|
+
model?: string;
|
|
39
|
+
/** Provider that returned the error */
|
|
40
|
+
providerId?: string;
|
|
41
|
+
/** HTTP status code if available */
|
|
42
|
+
statusCode?: number;
|
|
43
|
+
type: 'api';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Request was aborted/cancelled.
|
|
47
|
+
*/
|
|
48
|
+
export interface NormalizedAbortedError {
|
|
49
|
+
/** Error message */
|
|
50
|
+
message: string;
|
|
51
|
+
type: 'aborted';
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Output length exceeded (max tokens).
|
|
55
|
+
*/
|
|
56
|
+
export interface NormalizedOutputLengthError {
|
|
57
|
+
/** Maximum tokens that were allowed */
|
|
58
|
+
maxTokens?: number;
|
|
59
|
+
/** Error message */
|
|
60
|
+
message: string;
|
|
61
|
+
type: 'output_length';
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Rate limit exceeded.
|
|
65
|
+
*/
|
|
66
|
+
export interface NormalizedRateLimitError {
|
|
67
|
+
/** Error message */
|
|
68
|
+
message: string;
|
|
69
|
+
/** Provider that rate limited */
|
|
70
|
+
providerId: string;
|
|
71
|
+
/** When to retry (seconds) */
|
|
72
|
+
retryAfter?: number;
|
|
73
|
+
type: 'rate_limit';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Tool execution error.
|
|
77
|
+
*/
|
|
78
|
+
export interface NormalizedToolError {
|
|
79
|
+
/** Error message */
|
|
80
|
+
message: string;
|
|
81
|
+
/** Name of the tool that failed */
|
|
82
|
+
toolName: string;
|
|
83
|
+
type: 'tool';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Configuration error.
|
|
87
|
+
*/
|
|
88
|
+
export interface NormalizedConfigError {
|
|
89
|
+
/** Configuration key that's problematic */
|
|
90
|
+
configKey: string;
|
|
91
|
+
/** Error message */
|
|
92
|
+
message: string;
|
|
93
|
+
/** Provider if applicable */
|
|
94
|
+
providerId?: string;
|
|
95
|
+
type: 'config';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Unknown/unclassified error.
|
|
99
|
+
*/
|
|
100
|
+
export interface NormalizedUnknownError {
|
|
101
|
+
/** Error message */
|
|
102
|
+
message: string;
|
|
103
|
+
/** Original error if available */
|
|
104
|
+
originalError?: Error;
|
|
105
|
+
type: 'unknown';
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Context for error normalization.
|
|
109
|
+
*/
|
|
110
|
+
export interface ErrorContext {
|
|
111
|
+
/** Model being used */
|
|
112
|
+
model?: string;
|
|
113
|
+
/** Provider being used */
|
|
114
|
+
providerId?: string;
|
|
115
|
+
/** Session ID if applicable */
|
|
116
|
+
sessionId?: string;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Normalize any error into a consistent format.
|
|
120
|
+
*
|
|
121
|
+
* This function handles all known error types and converts them
|
|
122
|
+
* to a unified NormalizedError format for consistent handling.
|
|
123
|
+
*
|
|
124
|
+
* @param error - The error to normalize
|
|
125
|
+
* @param context - Optional context about the operation
|
|
126
|
+
* @returns Normalized error with consistent structure
|
|
127
|
+
*
|
|
128
|
+
* @example
|
|
129
|
+
* ```typescript
|
|
130
|
+
* try {
|
|
131
|
+
* await llm.generate(prompt)
|
|
132
|
+
* } catch (error) {
|
|
133
|
+
* const normalized = normalizeError(error, { providerId: 'claude' })
|
|
134
|
+
*
|
|
135
|
+
* switch (normalized.type) {
|
|
136
|
+
* case 'rate_limit':
|
|
137
|
+
* await sleep(normalized.retryAfter * 1000)
|
|
138
|
+
* break
|
|
139
|
+
* case 'auth':
|
|
140
|
+
* showLoginPrompt()
|
|
141
|
+
* break
|
|
142
|
+
* default:
|
|
143
|
+
* logError(normalized.message)
|
|
144
|
+
* }
|
|
145
|
+
* }
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
export declare function normalizeError(error: unknown, context?: ErrorContext): NormalizedError;
|
|
149
|
+
/**
|
|
150
|
+
* Check if a normalized error is retryable.
|
|
151
|
+
*/
|
|
152
|
+
export declare function isNormalizedErrorRetryable(error: NormalizedError): boolean;
|
|
153
|
+
/**
|
|
154
|
+
* Get a user-friendly message for a normalized error.
|
|
155
|
+
*/
|
|
156
|
+
export declare function getErrorDisplayMessage(error: NormalizedError): string;
|