byterover-cli 0.4.1 → 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/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
|
@@ -0,0 +1,252 @@
|
|
|
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
|
+
// ==================== TEXT PART FACTORY ====================
|
|
11
|
+
/**
|
|
12
|
+
* Create a TextPart with the given text content.
|
|
13
|
+
*/
|
|
14
|
+
export function createTextPart(text, options) {
|
|
15
|
+
return {
|
|
16
|
+
text,
|
|
17
|
+
type: 'text',
|
|
18
|
+
...(options?.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
19
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
// ==================== IMAGE PART FACTORY ====================
|
|
23
|
+
/**
|
|
24
|
+
* Create an ImagePart with the given image data.
|
|
25
|
+
*/
|
|
26
|
+
export function createImagePart(image, mimeType, options) {
|
|
27
|
+
return {
|
|
28
|
+
image,
|
|
29
|
+
type: 'image',
|
|
30
|
+
...(mimeType && { mimeType }),
|
|
31
|
+
...(options?.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
32
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
// ==================== FILE PART FACTORY ====================
|
|
36
|
+
/**
|
|
37
|
+
* Create a FilePart with the given file data.
|
|
38
|
+
*/
|
|
39
|
+
export function createFilePart(data, mimeType, filename, options) {
|
|
40
|
+
return {
|
|
41
|
+
data,
|
|
42
|
+
mimeType,
|
|
43
|
+
type: 'file',
|
|
44
|
+
...(filename && { filename }),
|
|
45
|
+
...(options?.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
46
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
// ==================== REASONING PART FACTORY ====================
|
|
50
|
+
/**
|
|
51
|
+
* Create a ReasoningPart with the given thinking text.
|
|
52
|
+
*/
|
|
53
|
+
export function createReasoningPart(text, summary, options) {
|
|
54
|
+
return {
|
|
55
|
+
text,
|
|
56
|
+
type: 'reasoning',
|
|
57
|
+
...(summary && { summary }),
|
|
58
|
+
...(options?.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
59
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
// ==================== TOOL PART FACTORY ====================
|
|
63
|
+
/**
|
|
64
|
+
* Create a ToolPart in pending state.
|
|
65
|
+
*/
|
|
66
|
+
export function createToolPart(callId, toolName, input, options) {
|
|
67
|
+
const state = {
|
|
68
|
+
input,
|
|
69
|
+
status: 'pending',
|
|
70
|
+
};
|
|
71
|
+
return {
|
|
72
|
+
callId,
|
|
73
|
+
state,
|
|
74
|
+
toolName,
|
|
75
|
+
type: 'tool',
|
|
76
|
+
...(options?.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
77
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Create a ToolPart in running state.
|
|
82
|
+
*/
|
|
83
|
+
export function createRunningToolPart(callId, toolName, input, options) {
|
|
84
|
+
const state = {
|
|
85
|
+
input,
|
|
86
|
+
startedAt: options?.startedAt ?? Date.now(),
|
|
87
|
+
status: 'running',
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
callId,
|
|
91
|
+
state,
|
|
92
|
+
toolName,
|
|
93
|
+
type: 'tool',
|
|
94
|
+
...(options?.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
95
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Create a ToolPart in completed state.
|
|
100
|
+
*/
|
|
101
|
+
export function createCompletedToolPart(options) {
|
|
102
|
+
const time = options.time ?? { end: Date.now(), start: Date.now() };
|
|
103
|
+
const state = {
|
|
104
|
+
input: options.input,
|
|
105
|
+
output: options.output,
|
|
106
|
+
status: 'completed',
|
|
107
|
+
time,
|
|
108
|
+
...(options.additionalOptions?.attachments && { attachments: options.additionalOptions.attachments }),
|
|
109
|
+
...(options.additionalOptions?.compactedAt && { compactedAt: options.additionalOptions.compactedAt }),
|
|
110
|
+
...(options.additionalOptions?.metadata && { metadata: options.additionalOptions.metadata }),
|
|
111
|
+
...(options.additionalOptions?.title && { title: options.additionalOptions.title }),
|
|
112
|
+
};
|
|
113
|
+
return {
|
|
114
|
+
callId: options.callId,
|
|
115
|
+
state,
|
|
116
|
+
toolName: options.toolName,
|
|
117
|
+
type: 'tool',
|
|
118
|
+
...(options.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
119
|
+
...(options.metadata && { metadata: options.metadata }),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Create a ToolPart in error state.
|
|
124
|
+
*/
|
|
125
|
+
export function createErrorToolPart(options) {
|
|
126
|
+
const time = options.time ?? { end: Date.now(), start: Date.now() };
|
|
127
|
+
const state = {
|
|
128
|
+
error: options.error,
|
|
129
|
+
input: options.input,
|
|
130
|
+
status: 'error',
|
|
131
|
+
time,
|
|
132
|
+
};
|
|
133
|
+
return {
|
|
134
|
+
callId: options.callId,
|
|
135
|
+
state,
|
|
136
|
+
toolName: options.toolName,
|
|
137
|
+
type: 'tool',
|
|
138
|
+
...(options.synthetic !== undefined && { synthetic: options.synthetic }),
|
|
139
|
+
...(options.metadata && { metadata: options.metadata }),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
// ==================== TOOL STATE TRANSITIONS ====================
|
|
143
|
+
/**
|
|
144
|
+
* Transition a tool state from pending to running.
|
|
145
|
+
*/
|
|
146
|
+
export function transitionToRunning(state, startedAt = Date.now()) {
|
|
147
|
+
return {
|
|
148
|
+
input: state.input,
|
|
149
|
+
startedAt,
|
|
150
|
+
status: 'running',
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Transition a tool state from running to completed.
|
|
155
|
+
*/
|
|
156
|
+
export function transitionToCompleted(state, output, endedAt = Date.now(), additionalOptions) {
|
|
157
|
+
return {
|
|
158
|
+
input: state.input,
|
|
159
|
+
output,
|
|
160
|
+
status: 'completed',
|
|
161
|
+
time: { end: endedAt, start: state.startedAt },
|
|
162
|
+
...(additionalOptions?.attachments && { attachments: additionalOptions.attachments }),
|
|
163
|
+
...(additionalOptions?.metadata && { metadata: additionalOptions.metadata }),
|
|
164
|
+
...(additionalOptions?.title && { title: additionalOptions.title }),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Transition a tool state from running to error.
|
|
169
|
+
*/
|
|
170
|
+
export function transitionToError(state, error, endedAt = Date.now()) {
|
|
171
|
+
return {
|
|
172
|
+
error,
|
|
173
|
+
input: state.input,
|
|
174
|
+
status: 'error',
|
|
175
|
+
time: { end: endedAt, start: state.startedAt },
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
// ==================== TOOL CALL FACTORY ====================
|
|
179
|
+
/**
|
|
180
|
+
* Create a ToolCall from function name and arguments.
|
|
181
|
+
*/
|
|
182
|
+
export function createToolCall(id, name, args) {
|
|
183
|
+
return {
|
|
184
|
+
function: {
|
|
185
|
+
arguments: typeof args === 'string' ? args : JSON.stringify(args),
|
|
186
|
+
name,
|
|
187
|
+
},
|
|
188
|
+
id,
|
|
189
|
+
type: 'function',
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Create a system message.
|
|
194
|
+
*/
|
|
195
|
+
export function createSystemMessage(content, options) {
|
|
196
|
+
return {
|
|
197
|
+
content,
|
|
198
|
+
role: 'system',
|
|
199
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Create a user message with text content.
|
|
204
|
+
*/
|
|
205
|
+
export function createUserMessage(content, options) {
|
|
206
|
+
return {
|
|
207
|
+
content: typeof content === 'string' ? content : content,
|
|
208
|
+
role: 'user',
|
|
209
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Create an assistant message with text content.
|
|
214
|
+
*/
|
|
215
|
+
export function createAssistantMessage(content, additionalOptions, options) {
|
|
216
|
+
return {
|
|
217
|
+
content,
|
|
218
|
+
role: 'assistant',
|
|
219
|
+
...(additionalOptions?.reasoning && { reasoning: additionalOptions.reasoning }),
|
|
220
|
+
...(additionalOptions?.thought && { thought: additionalOptions.thought }),
|
|
221
|
+
...(additionalOptions?.thoughtSummary && { thoughtSummary: additionalOptions.thoughtSummary }),
|
|
222
|
+
...(additionalOptions?.toolCalls && { toolCalls: additionalOptions.toolCalls }),
|
|
223
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Create a tool result message.
|
|
228
|
+
*/
|
|
229
|
+
export function createToolResultMessage(content, toolCallId, name, options) {
|
|
230
|
+
return {
|
|
231
|
+
content,
|
|
232
|
+
name,
|
|
233
|
+
role: 'tool',
|
|
234
|
+
toolCallId,
|
|
235
|
+
...(options?.metadata && { metadata: options.metadata }),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Create a summary message (used by compression strategies).
|
|
240
|
+
*/
|
|
241
|
+
export function createSummaryMessage(summaryContent, summarizedMessageCount, options) {
|
|
242
|
+
return {
|
|
243
|
+
content: `[Conversation Summary]\n${summaryContent}`,
|
|
244
|
+
metadata: {
|
|
245
|
+
compactedAt: Date.now(),
|
|
246
|
+
isSummary: true,
|
|
247
|
+
summarizedMessageCount,
|
|
248
|
+
...options?.additionalMetadata,
|
|
249
|
+
},
|
|
250
|
+
role: 'system',
|
|
251
|
+
};
|
|
252
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guards for discriminated union types in the message system.
|
|
3
|
+
*
|
|
4
|
+
* These guards provide runtime type narrowing for:
|
|
5
|
+
* - MessagePart union (text, image, file, reasoning, tool)
|
|
6
|
+
* - ToolState union (pending, running, completed, error)
|
|
7
|
+
* - InternalMessage roles (system, user, assistant, tool)
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
import type { FilePart, ImagePart, InternalMessage, MessagePart, ReasoningPart, TextPart, ToolPart, ToolState, ToolStateCompleted, ToolStateError, ToolStatePending, ToolStateRunning } from './message-types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Check if a message part is a TextPart.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isTextPart(part: MessagePart): part is TextPart;
|
|
15
|
+
/**
|
|
16
|
+
* Check if a message part is an ImagePart.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isImagePart(part: MessagePart): part is ImagePart;
|
|
19
|
+
/**
|
|
20
|
+
* Check if a message part is a FilePart.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isFilePart(part: MessagePart): part is FilePart;
|
|
23
|
+
/**
|
|
24
|
+
* Check if a message part is a ReasoningPart.
|
|
25
|
+
*/
|
|
26
|
+
export declare function isReasoningPart(part: MessagePart): part is ReasoningPart;
|
|
27
|
+
/**
|
|
28
|
+
* Check if a message part is a ToolPart.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isToolPart(part: MessagePart): part is ToolPart;
|
|
31
|
+
/**
|
|
32
|
+
* Check if a tool state is pending.
|
|
33
|
+
*/
|
|
34
|
+
export declare function isToolPending(state: ToolState): state is ToolStatePending;
|
|
35
|
+
/**
|
|
36
|
+
* Check if a tool state is running.
|
|
37
|
+
*/
|
|
38
|
+
export declare function isToolRunning(state: ToolState): state is ToolStateRunning;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a tool state is completed.
|
|
41
|
+
*/
|
|
42
|
+
export declare function isToolCompleted(state: ToolState): state is ToolStateCompleted;
|
|
43
|
+
/**
|
|
44
|
+
* Check if a tool state is error.
|
|
45
|
+
*/
|
|
46
|
+
export declare function isToolError(state: ToolState): state is ToolStateError;
|
|
47
|
+
/**
|
|
48
|
+
* Type for system messages.
|
|
49
|
+
*/
|
|
50
|
+
export type SystemMessage = InternalMessage & {
|
|
51
|
+
role: 'system';
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Type for user messages.
|
|
55
|
+
*/
|
|
56
|
+
export type UserMessage = InternalMessage & {
|
|
57
|
+
role: 'user';
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Type for assistant messages.
|
|
61
|
+
*/
|
|
62
|
+
export type AssistantMessage = InternalMessage & {
|
|
63
|
+
role: 'assistant';
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Type for tool messages.
|
|
67
|
+
*/
|
|
68
|
+
export type ToolMessage = InternalMessage & {
|
|
69
|
+
role: 'tool';
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Check if a message is a system message.
|
|
73
|
+
*/
|
|
74
|
+
export declare function isSystemMessage(msg: InternalMessage): msg is SystemMessage;
|
|
75
|
+
/**
|
|
76
|
+
* Check if a message is a user message.
|
|
77
|
+
*/
|
|
78
|
+
export declare function isUserMessage(msg: InternalMessage): msg is UserMessage;
|
|
79
|
+
/**
|
|
80
|
+
* Check if a message is an assistant message.
|
|
81
|
+
*/
|
|
82
|
+
export declare function isAssistantMessage(msg: InternalMessage): msg is AssistantMessage;
|
|
83
|
+
/**
|
|
84
|
+
* Check if a message is a tool message.
|
|
85
|
+
*/
|
|
86
|
+
export declare function isToolMessage(msg: InternalMessage): msg is ToolMessage;
|
|
87
|
+
/**
|
|
88
|
+
* Check if message content is a string.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isStringContent(content: InternalMessage['content']): content is string;
|
|
91
|
+
/**
|
|
92
|
+
* Check if message content is an array of parts.
|
|
93
|
+
*/
|
|
94
|
+
export declare function isPartsContent(content: InternalMessage['content']): content is MessagePart[];
|
|
95
|
+
/**
|
|
96
|
+
* Check if message content is null (e.g., assistant message with only tool calls).
|
|
97
|
+
*/
|
|
98
|
+
export declare function isNullContent(content: InternalMessage['content']): content is null;
|
|
99
|
+
/**
|
|
100
|
+
* Extract text content from a message part array.
|
|
101
|
+
* Returns concatenated text from all TextParts.
|
|
102
|
+
*/
|
|
103
|
+
export declare function extractTextFromParts(parts: MessagePart[]): string;
|
|
104
|
+
/**
|
|
105
|
+
* Extract all images from a message part array.
|
|
106
|
+
*/
|
|
107
|
+
export declare function extractImagesFromParts(parts: MessagePart[]): ImagePart[];
|
|
108
|
+
/**
|
|
109
|
+
* Extract all files from a message part array.
|
|
110
|
+
*/
|
|
111
|
+
export declare function extractFilesFromParts(parts: MessagePart[]): FilePart[];
|
|
112
|
+
/**
|
|
113
|
+
* Extract all tool parts from a message part array.
|
|
114
|
+
*/
|
|
115
|
+
export declare function extractToolPartsFromParts(parts: MessagePart[]): ToolPart[];
|
|
116
|
+
/**
|
|
117
|
+
* Check if a message has any attachments (images or files).
|
|
118
|
+
*/
|
|
119
|
+
export declare function hasAttachments(parts: MessagePart[]): boolean;
|
|
120
|
+
/**
|
|
121
|
+
* Check if a message has any tool calls.
|
|
122
|
+
*/
|
|
123
|
+
export declare function hasToolCalls(msg: InternalMessage): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Get completed tool parts from a message part array.
|
|
126
|
+
*/
|
|
127
|
+
export declare function getCompletedToolParts(parts: MessagePart[]): ToolPart[];
|
|
128
|
+
/**
|
|
129
|
+
* Get error tool parts from a message part array.
|
|
130
|
+
*/
|
|
131
|
+
export declare function getErrorToolParts(parts: MessagePart[]): ToolPart[];
|
|
132
|
+
/**
|
|
133
|
+
* Get running tool parts from a message part array.
|
|
134
|
+
*/
|
|
135
|
+
export declare function getRunningToolParts(parts: MessagePart[]): ToolPart[];
|
|
136
|
+
/**
|
|
137
|
+
* Get pending tool parts from a message part array.
|
|
138
|
+
*/
|
|
139
|
+
export declare function getPendingToolParts(parts: MessagePart[]): ToolPart[];
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type guards for discriminated union types in the message system.
|
|
3
|
+
*
|
|
4
|
+
* These guards provide runtime type narrowing for:
|
|
5
|
+
* - MessagePart union (text, image, file, reasoning, tool)
|
|
6
|
+
* - ToolState union (pending, running, completed, error)
|
|
7
|
+
* - InternalMessage roles (system, user, assistant, tool)
|
|
8
|
+
*
|
|
9
|
+
*/
|
|
10
|
+
// ==================== MESSAGE PART TYPE GUARDS ====================
|
|
11
|
+
/**
|
|
12
|
+
* Check if a message part is a TextPart.
|
|
13
|
+
*/
|
|
14
|
+
export function isTextPart(part) {
|
|
15
|
+
return part.type === 'text';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Check if a message part is an ImagePart.
|
|
19
|
+
*/
|
|
20
|
+
export function isImagePart(part) {
|
|
21
|
+
return part.type === 'image';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a message part is a FilePart.
|
|
25
|
+
*/
|
|
26
|
+
export function isFilePart(part) {
|
|
27
|
+
return part.type === 'file';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if a message part is a ReasoningPart.
|
|
31
|
+
*/
|
|
32
|
+
export function isReasoningPart(part) {
|
|
33
|
+
return part.type === 'reasoning';
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Check if a message part is a ToolPart.
|
|
37
|
+
*/
|
|
38
|
+
export function isToolPart(part) {
|
|
39
|
+
return part.type === 'tool';
|
|
40
|
+
}
|
|
41
|
+
// ==================== TOOL STATE TYPE GUARDS ====================
|
|
42
|
+
/**
|
|
43
|
+
* Check if a tool state is pending.
|
|
44
|
+
*/
|
|
45
|
+
export function isToolPending(state) {
|
|
46
|
+
return state.status === 'pending';
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if a tool state is running.
|
|
50
|
+
*/
|
|
51
|
+
export function isToolRunning(state) {
|
|
52
|
+
return state.status === 'running';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Check if a tool state is completed.
|
|
56
|
+
*/
|
|
57
|
+
export function isToolCompleted(state) {
|
|
58
|
+
return state.status === 'completed';
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Check if a tool state is error.
|
|
62
|
+
*/
|
|
63
|
+
export function isToolError(state) {
|
|
64
|
+
return state.status === 'error';
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Check if a message is a system message.
|
|
68
|
+
*/
|
|
69
|
+
export function isSystemMessage(msg) {
|
|
70
|
+
return msg.role === 'system';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Check if a message is a user message.
|
|
74
|
+
*/
|
|
75
|
+
export function isUserMessage(msg) {
|
|
76
|
+
return msg.role === 'user';
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Check if a message is an assistant message.
|
|
80
|
+
*/
|
|
81
|
+
export function isAssistantMessage(msg) {
|
|
82
|
+
return msg.role === 'assistant';
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Check if a message is a tool message.
|
|
86
|
+
*/
|
|
87
|
+
export function isToolMessage(msg) {
|
|
88
|
+
return msg.role === 'tool';
|
|
89
|
+
}
|
|
90
|
+
// ==================== CONTENT TYPE GUARDS ====================
|
|
91
|
+
/**
|
|
92
|
+
* Check if message content is a string.
|
|
93
|
+
*/
|
|
94
|
+
export function isStringContent(content) {
|
|
95
|
+
return typeof content === 'string';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if message content is an array of parts.
|
|
99
|
+
*/
|
|
100
|
+
export function isPartsContent(content) {
|
|
101
|
+
return Array.isArray(content);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if message content is null (e.g., assistant message with only tool calls).
|
|
105
|
+
*/
|
|
106
|
+
export function isNullContent(content) {
|
|
107
|
+
return content === null;
|
|
108
|
+
}
|
|
109
|
+
// ==================== UTILITY FUNCTIONS ====================
|
|
110
|
+
/**
|
|
111
|
+
* Extract text content from a message part array.
|
|
112
|
+
* Returns concatenated text from all TextParts.
|
|
113
|
+
*/
|
|
114
|
+
export function extractTextFromParts(parts) {
|
|
115
|
+
return parts
|
|
116
|
+
.filter((p) => isTextPart(p))
|
|
117
|
+
.map((p) => p.text)
|
|
118
|
+
.join('\n');
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Extract all images from a message part array.
|
|
122
|
+
*/
|
|
123
|
+
export function extractImagesFromParts(parts) {
|
|
124
|
+
return parts.filter((p) => isImagePart(p));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Extract all files from a message part array.
|
|
128
|
+
*/
|
|
129
|
+
export function extractFilesFromParts(parts) {
|
|
130
|
+
return parts.filter((p) => isFilePart(p));
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Extract all tool parts from a message part array.
|
|
134
|
+
*/
|
|
135
|
+
export function extractToolPartsFromParts(parts) {
|
|
136
|
+
return parts.filter((p) => isToolPart(p));
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Check if a message has any attachments (images or files).
|
|
140
|
+
*/
|
|
141
|
+
export function hasAttachments(parts) {
|
|
142
|
+
return parts.some((p) => isImagePart(p) || isFilePart(p));
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Check if a message has any tool calls.
|
|
146
|
+
*/
|
|
147
|
+
export function hasToolCalls(msg) {
|
|
148
|
+
return Array.isArray(msg.toolCalls) && msg.toolCalls.length > 0;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get completed tool parts from a message part array.
|
|
152
|
+
*/
|
|
153
|
+
export function getCompletedToolParts(parts) {
|
|
154
|
+
return parts.filter((p) => isToolPart(p) && isToolCompleted(p.state));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get error tool parts from a message part array.
|
|
158
|
+
*/
|
|
159
|
+
export function getErrorToolParts(parts) {
|
|
160
|
+
return parts.filter((p) => isToolPart(p) && isToolError(p.state));
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Get running tool parts from a message part array.
|
|
164
|
+
*/
|
|
165
|
+
export function getRunningToolParts(parts) {
|
|
166
|
+
return parts.filter((p) => isToolPart(p) && isToolRunning(p.state));
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Get pending tool parts from a message part array.
|
|
170
|
+
*/
|
|
171
|
+
export function getPendingToolParts(parts) {
|
|
172
|
+
return parts.filter((p) => isToolPart(p) && isToolPending(p.state));
|
|
173
|
+
}
|