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,218 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { useTransport } from './transport-context.js';
|
|
4
|
+
const TasksContext = createContext(undefined);
|
|
5
|
+
/**
|
|
6
|
+
* Provider component that subscribes to task events and maintains task state.
|
|
7
|
+
* Tracks task lifecycle and LLM tool calls for all tasks.
|
|
8
|
+
*
|
|
9
|
+
* Event Flow:
|
|
10
|
+
* 1. task:created → Create task with 'created' status
|
|
11
|
+
* 2. task:started → Update to 'started' status
|
|
12
|
+
* 3. llmservice:toolCall → Add tool call with 'running' status
|
|
13
|
+
* 4. llmservice:toolResult → Update tool call status to 'completed' or 'error'
|
|
14
|
+
* 5. llmservice:response → Update task result content from LLM response
|
|
15
|
+
* 6. task:completed | task:error | task:cancelled → Terminal state
|
|
16
|
+
*/
|
|
17
|
+
export function TasksProvider({ children }) {
|
|
18
|
+
const { client } = useTransport();
|
|
19
|
+
const [tasks, setTasks] = useState(new Map());
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!client)
|
|
22
|
+
return;
|
|
23
|
+
const unsubscribers = [];
|
|
24
|
+
// Handle task:created - Initialize new task
|
|
25
|
+
const handleTaskCreated = (data) => {
|
|
26
|
+
setTasks((prev) => {
|
|
27
|
+
const newTasks = new Map(prev);
|
|
28
|
+
newTasks.set(data.taskId, {
|
|
29
|
+
completedAt: undefined,
|
|
30
|
+
content: data.content,
|
|
31
|
+
createdAt: Date.now(),
|
|
32
|
+
error: undefined,
|
|
33
|
+
files: data.files,
|
|
34
|
+
input: data.content,
|
|
35
|
+
result: undefined,
|
|
36
|
+
sessionId: undefined,
|
|
37
|
+
startedAt: undefined,
|
|
38
|
+
status: 'created',
|
|
39
|
+
taskId: data.taskId,
|
|
40
|
+
toolCalls: [],
|
|
41
|
+
type: data.type,
|
|
42
|
+
});
|
|
43
|
+
return newTasks;
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
// Handle task:started - Update status and timestamp
|
|
47
|
+
const handleTaskStarted = (data) => {
|
|
48
|
+
setTasks((prev) => {
|
|
49
|
+
const task = prev.get(data.taskId);
|
|
50
|
+
if (!task)
|
|
51
|
+
return prev;
|
|
52
|
+
const newTasks = new Map(prev);
|
|
53
|
+
newTasks.set(data.taskId, {
|
|
54
|
+
...task,
|
|
55
|
+
startedAt: Date.now(),
|
|
56
|
+
status: 'started',
|
|
57
|
+
});
|
|
58
|
+
return newTasks;
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
// Handle task:completed - Set result and completion time
|
|
62
|
+
const handleTaskCompleted = (data) => {
|
|
63
|
+
setTasks((prev) => {
|
|
64
|
+
const task = prev.get(data.taskId);
|
|
65
|
+
if (!task)
|
|
66
|
+
return prev;
|
|
67
|
+
const newTasks = new Map(prev);
|
|
68
|
+
newTasks.set(data.taskId, {
|
|
69
|
+
...task,
|
|
70
|
+
completedAt: Date.now(),
|
|
71
|
+
status: 'completed',
|
|
72
|
+
});
|
|
73
|
+
return newTasks;
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
// Handle task:error - Set error and completion time
|
|
77
|
+
const handleTaskError = (data) => {
|
|
78
|
+
setTasks((prev) => {
|
|
79
|
+
const task = prev.get(data.taskId);
|
|
80
|
+
if (!task)
|
|
81
|
+
return prev;
|
|
82
|
+
const newTasks = new Map(prev);
|
|
83
|
+
newTasks.set(data.taskId, {
|
|
84
|
+
...task,
|
|
85
|
+
completedAt: Date.now(),
|
|
86
|
+
error: data.error,
|
|
87
|
+
status: 'error',
|
|
88
|
+
});
|
|
89
|
+
return newTasks;
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
// Handle task:cancelled - Set cancelled status
|
|
93
|
+
const handleTaskCancelled = (data) => {
|
|
94
|
+
setTasks((prev) => {
|
|
95
|
+
const task = prev.get(data.taskId);
|
|
96
|
+
if (!task)
|
|
97
|
+
return prev;
|
|
98
|
+
const newTasks = new Map(prev);
|
|
99
|
+
newTasks.set(data.taskId, {
|
|
100
|
+
...task,
|
|
101
|
+
completedAt: Date.now(),
|
|
102
|
+
status: 'cancelled',
|
|
103
|
+
});
|
|
104
|
+
return newTasks;
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
// Handle llmservice:toolCall - Add new tool call with 'running' status
|
|
108
|
+
const handleToolCall = (data) => {
|
|
109
|
+
setTasks((prev) => {
|
|
110
|
+
const task = prev.get(data.taskId);
|
|
111
|
+
if (!task)
|
|
112
|
+
return prev;
|
|
113
|
+
const newTasks = new Map(prev);
|
|
114
|
+
newTasks.set(data.taskId, {
|
|
115
|
+
...task,
|
|
116
|
+
sessionId: data.sessionId,
|
|
117
|
+
toolCalls: [
|
|
118
|
+
...task.toolCalls,
|
|
119
|
+
{
|
|
120
|
+
args: data.args,
|
|
121
|
+
callId: data.callId,
|
|
122
|
+
sessionId: data.sessionId,
|
|
123
|
+
status: 'running',
|
|
124
|
+
toolName: data.toolName,
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
return newTasks;
|
|
129
|
+
});
|
|
130
|
+
};
|
|
131
|
+
// Handle llmservice:toolResult - Update tool call status
|
|
132
|
+
const handleToolResult = (data) => {
|
|
133
|
+
setTasks((prev) => {
|
|
134
|
+
const task = prev.get(data.taskId);
|
|
135
|
+
if (!task)
|
|
136
|
+
return prev;
|
|
137
|
+
// Find the tool call to update (match by callId if present, otherwise by toolName and most recent)
|
|
138
|
+
const toolCallIndex = task.toolCalls.findIndex((tc) => tc.callId === data.callId);
|
|
139
|
+
if (toolCallIndex === -1)
|
|
140
|
+
return prev;
|
|
141
|
+
const updatedToolCalls = [...task.toolCalls];
|
|
142
|
+
updatedToolCalls[toolCallIndex] = {
|
|
143
|
+
...updatedToolCalls[toolCallIndex],
|
|
144
|
+
error: data.error,
|
|
145
|
+
errorType: data.errorType,
|
|
146
|
+
result: data.result,
|
|
147
|
+
status: data.success ? 'completed' : 'error',
|
|
148
|
+
};
|
|
149
|
+
const newTasks = new Map(prev);
|
|
150
|
+
newTasks.set(data.taskId, {
|
|
151
|
+
...task,
|
|
152
|
+
toolCalls: updatedToolCalls,
|
|
153
|
+
});
|
|
154
|
+
return newTasks;
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
// Handle llmservice:response - Update task content from LLM response
|
|
158
|
+
const handleResponse = (data) => {
|
|
159
|
+
setTasks((prev) => {
|
|
160
|
+
const task = prev.get(data.taskId);
|
|
161
|
+
if (!task)
|
|
162
|
+
return prev;
|
|
163
|
+
const newTasks = new Map(prev);
|
|
164
|
+
newTasks.set(data.taskId, {
|
|
165
|
+
...task,
|
|
166
|
+
result: data.content,
|
|
167
|
+
sessionId: data.sessionId,
|
|
168
|
+
});
|
|
169
|
+
return newTasks;
|
|
170
|
+
});
|
|
171
|
+
};
|
|
172
|
+
// Subscribe to events
|
|
173
|
+
unsubscribers.push(client.on('task:created', handleTaskCreated), client.on('task:started', handleTaskStarted), client.on('task:completed', handleTaskCompleted), client.on('task:error', handleTaskError), client.on('task:cancelled', handleTaskCancelled), client.on('llmservice:toolCall', handleToolCall), client.on('llmservice:toolResult', handleToolResult), client.on('llmservice:response', handleResponse));
|
|
174
|
+
// Cleanup subscriptions
|
|
175
|
+
return () => {
|
|
176
|
+
for (const unsub of unsubscribers)
|
|
177
|
+
unsub();
|
|
178
|
+
};
|
|
179
|
+
}, [client]);
|
|
180
|
+
// Clear all tasks from memory
|
|
181
|
+
const clearTasks = useCallback(() => {
|
|
182
|
+
setTasks(new Map());
|
|
183
|
+
}, []);
|
|
184
|
+
// Helper function to get task by ID
|
|
185
|
+
const getTask = useCallback((taskId) => tasks.get(taskId), [tasks]);
|
|
186
|
+
// Calculate transport stats
|
|
187
|
+
const stats = useMemo(() => {
|
|
188
|
+
let created = 0;
|
|
189
|
+
let started = 0;
|
|
190
|
+
for (const task of tasks.values()) {
|
|
191
|
+
if (task.status === 'created') {
|
|
192
|
+
created++;
|
|
193
|
+
}
|
|
194
|
+
else if (task.status === 'started') {
|
|
195
|
+
started++;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return { created, started };
|
|
199
|
+
}, [tasks]);
|
|
200
|
+
const value = {
|
|
201
|
+
clearTasks,
|
|
202
|
+
getTask,
|
|
203
|
+
stats,
|
|
204
|
+
tasks,
|
|
205
|
+
};
|
|
206
|
+
return _jsx(TasksContext.Provider, { value: value, children: children });
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Hook to access tasks context.
|
|
210
|
+
* Must be used within a TasksProvider.
|
|
211
|
+
*/
|
|
212
|
+
export function useTasks() {
|
|
213
|
+
const context = useContext(TasksContext);
|
|
214
|
+
if (!context) {
|
|
215
|
+
throw new Error('useTasks must be used within a TasksProvider');
|
|
216
|
+
}
|
|
217
|
+
return context;
|
|
218
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ConnectionState, ITransportClient } from '../../core/interfaces/transport/i-transport-client.js';
|
|
3
|
+
/**
|
|
4
|
+
* Context value for transport client state.
|
|
5
|
+
*/
|
|
6
|
+
export type TransportContextValue = {
|
|
7
|
+
/** The connected transport client, or null if not connected */
|
|
8
|
+
client: ITransportClient | null;
|
|
9
|
+
/** Current connection state */
|
|
10
|
+
connectionState: ConnectionState;
|
|
11
|
+
/** Connection error if any */
|
|
12
|
+
error: Error | null;
|
|
13
|
+
/** Whether the client is connected */
|
|
14
|
+
isConnected: boolean;
|
|
15
|
+
/** Number of reconnection attempts */
|
|
16
|
+
reconnectCount: number;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Provider component that manages transport client connection and state.
|
|
20
|
+
* Subscribes to task and LLM events from the transport server.
|
|
21
|
+
*/
|
|
22
|
+
export declare function TransportProvider({ children }: {
|
|
23
|
+
children: React.ReactNode;
|
|
24
|
+
}): React.ReactElement;
|
|
25
|
+
/**
|
|
26
|
+
* Hook to access transport client from context.
|
|
27
|
+
* @throws Error if used outside TransportProvider
|
|
28
|
+
*/
|
|
29
|
+
export declare function useTransport(): TransportContextValue;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext, useEffect, useState } from 'react';
|
|
3
|
+
import { createTransportClientFactory } from '../../infra/transport/transport-client-factory.js';
|
|
4
|
+
const TransportContext = createContext(undefined);
|
|
5
|
+
/**
|
|
6
|
+
* Provider component that manages transport client connection and state.
|
|
7
|
+
* Subscribes to task and LLM events from the transport server.
|
|
8
|
+
*/
|
|
9
|
+
export function TransportProvider({ children }) {
|
|
10
|
+
const [client, setClient] = useState(null);
|
|
11
|
+
const [connectionState, setConnectionState] = useState('disconnected');
|
|
12
|
+
const [error, setError] = useState(null);
|
|
13
|
+
const [reconnectCount, setReconnectCount] = useState(0);
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
let mounted = true;
|
|
16
|
+
let transportClient = null;
|
|
17
|
+
let stateChangeUnsubscribe;
|
|
18
|
+
async function initializeTransport() {
|
|
19
|
+
try {
|
|
20
|
+
setConnectionState('connecting');
|
|
21
|
+
// Create factory and connect
|
|
22
|
+
const factory = createTransportClientFactory();
|
|
23
|
+
const { client: newClient } = await factory.connect();
|
|
24
|
+
if (!mounted) {
|
|
25
|
+
await newClient.disconnect();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
transportClient = newClient;
|
|
29
|
+
// Subscribe to connection state changes
|
|
30
|
+
stateChangeUnsubscribe = newClient.onStateChange((state) => {
|
|
31
|
+
setConnectionState(state);
|
|
32
|
+
if (state === 'reconnecting') {
|
|
33
|
+
setReconnectCount((prev) => prev + 1);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
// Join broadcast room to receive all events
|
|
37
|
+
await newClient.joinRoom('broadcast-room');
|
|
38
|
+
// Set client in state
|
|
39
|
+
setClient(newClient);
|
|
40
|
+
setConnectionState(newClient.getState());
|
|
41
|
+
setError(null);
|
|
42
|
+
}
|
|
43
|
+
catch (error_) {
|
|
44
|
+
if (mounted) {
|
|
45
|
+
setError(error_ instanceof Error ? error_ : new Error(String(error_)));
|
|
46
|
+
setConnectionState('disconnected');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
initializeTransport();
|
|
51
|
+
return () => {
|
|
52
|
+
mounted = false;
|
|
53
|
+
if (stateChangeUnsubscribe) {
|
|
54
|
+
stateChangeUnsubscribe();
|
|
55
|
+
}
|
|
56
|
+
if (transportClient) {
|
|
57
|
+
transportClient.disconnect().catch(() => {
|
|
58
|
+
// Ignore errors during cleanup
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
}, []);
|
|
63
|
+
const value = {
|
|
64
|
+
client,
|
|
65
|
+
connectionState,
|
|
66
|
+
error,
|
|
67
|
+
isConnected: connectionState === 'connected',
|
|
68
|
+
reconnectCount,
|
|
69
|
+
};
|
|
70
|
+
return _jsx(TransportContext.Provider, { value: value, children: children });
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Hook to access transport client from context.
|
|
74
|
+
* @throws Error if used outside TransportProvider
|
|
75
|
+
*/
|
|
76
|
+
export function useTransport() {
|
|
77
|
+
const context = useContext(TransportContext);
|
|
78
|
+
if (!context) {
|
|
79
|
+
throw new Error('useTransport must be used within a TransportProvider');
|
|
80
|
+
}
|
|
81
|
+
return context;
|
|
82
|
+
}
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TUI Hooks
|
|
3
3
|
*/
|
|
4
|
-
export { CommandsProvider, useCommands } from '../contexts/
|
|
5
|
-
export { ModeProvider, useMode } from '../contexts/
|
|
6
|
-
export { ThemeProvider, useTheme } from '../contexts/
|
|
7
|
-
export {
|
|
4
|
+
export { CommandsProvider, useCommands } from '../contexts/commands-context.js';
|
|
5
|
+
export { ModeProvider, useMode } from '../contexts/mode-context.js';
|
|
6
|
+
export { ThemeProvider, useTheme } from '../contexts/theme-context.js';
|
|
7
|
+
export { parseExecutionContent, useActivityLogs } from './use-activity-logs.js';
|
|
8
8
|
export type { UseActivityLogsReturn } from './use-activity-logs.js';
|
|
9
|
-
export {
|
|
9
|
+
export { useAuthPolling } from './use-auth-polling.js';
|
|
10
|
+
export type { UseAuthPollingOptions } from './use-auth-polling.js';
|
|
10
11
|
export { useOnboarding } from './use-onboarding.js';
|
|
11
12
|
export type { OnboardingStep, UseOnboardingReturn } from './use-onboarding.js';
|
|
12
|
-
export { useQueuePolling, useQueuePollingCleanup } from './use-queue-polling.js';
|
|
13
13
|
export { useSlashCommandProcessor } from './use-slash-command-processor.js';
|
|
14
14
|
export { useSlashCompletion } from './use-slash-completion.js';
|
|
15
15
|
export { useTabNavigation } from './use-tab-navigation.js';
|
|
16
|
+
export { useTerminalBreakpoint } from './use-terminal-breakpoint.js';
|
|
17
|
+
export type { TerminalBreakpoint, TerminalBreakpointReturn } from './use-terminal-breakpoint.js';
|
|
18
|
+
export { useUIHeights } from './use-ui-heights.js';
|
|
19
|
+
export type { MessageItemHeights, UIHeights } from './use-ui-heights.js';
|
|
16
20
|
export { useVisibleWindow } from './use-visible-window.js';
|
|
17
21
|
export type { UseVisibleWindowReturn } from './use-visible-window.js';
|
package/dist/tui/hooks/index.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* TUI Hooks
|
|
3
3
|
*/
|
|
4
|
-
export { CommandsProvider, useCommands } from '../contexts/
|
|
5
|
-
export { ModeProvider, useMode } from '../contexts/
|
|
6
|
-
export { ThemeProvider, useTheme } from '../contexts/
|
|
7
|
-
export {
|
|
8
|
-
export {
|
|
4
|
+
export { CommandsProvider, useCommands } from '../contexts/commands-context.js';
|
|
5
|
+
export { ModeProvider, useMode } from '../contexts/mode-context.js';
|
|
6
|
+
export { ThemeProvider, useTheme } from '../contexts/theme-context.js';
|
|
7
|
+
export { parseExecutionContent, useActivityLogs } from './use-activity-logs.js';
|
|
8
|
+
export { useAuthPolling } from './use-auth-polling.js';
|
|
9
9
|
export { useOnboarding } from './use-onboarding.js';
|
|
10
|
-
export { useQueuePolling, useQueuePollingCleanup } from './use-queue-polling.js';
|
|
11
10
|
export { useSlashCommandProcessor } from './use-slash-command-processor.js';
|
|
12
11
|
export { useSlashCompletion } from './use-slash-completion.js';
|
|
13
12
|
export { useTabNavigation } from './use-tab-navigation.js';
|
|
13
|
+
export { useTerminalBreakpoint } from './use-terminal-breakpoint.js';
|
|
14
|
+
export { useUIHeights } from './use-ui-heights.js';
|
|
14
15
|
export { useVisibleWindow } from './use-visible-window.js';
|
|
@@ -1,26 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Activity Logs Hook
|
|
3
3
|
*
|
|
4
|
-
* Transforms
|
|
4
|
+
* Transforms tasks from transport events into ActivityLog format for display.
|
|
5
5
|
*/
|
|
6
|
-
import type { ToolCall } from '../../core/domain/cipher/queue/types.js';
|
|
7
6
|
import type { ActivityLog } from '../types.js';
|
|
8
7
|
/**
|
|
9
8
|
* Parse execution input to extract content
|
|
10
9
|
*/
|
|
11
10
|
export declare function parseExecutionContent(input: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Extract file changes from curate tool calls
|
|
14
|
-
*/
|
|
15
|
-
export declare function composeChangesFromToolCalls(toolCalls: ToolCall[]): {
|
|
16
|
-
created: string[];
|
|
17
|
-
updated: string[];
|
|
18
|
-
};
|
|
19
11
|
export interface UseActivityLogsReturn {
|
|
20
|
-
/** Activity logs derived from
|
|
12
|
+
/** Activity logs derived from tasks */
|
|
21
13
|
logs: ActivityLog[];
|
|
22
14
|
}
|
|
23
15
|
/**
|
|
24
|
-
* Hook that transforms
|
|
16
|
+
* Hook that transforms tasks from transport events into ActivityLog format
|
|
25
17
|
*/
|
|
26
18
|
export declare function useActivityLogs(): UseActivityLogsReturn;
|
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Activity Logs Hook
|
|
3
3
|
*
|
|
4
|
-
* Transforms
|
|
4
|
+
* Transforms tasks from transport events into ActivityLog format for display.
|
|
5
5
|
*/
|
|
6
|
-
import { join } from 'node:path';
|
|
7
6
|
import { useMemo } from 'react';
|
|
8
7
|
import { array as zArray, object as zObject, string as zString } from 'zod';
|
|
9
|
-
import {
|
|
10
|
-
import { useConsumer } from '../contexts/index.js';
|
|
8
|
+
import { useTasks } from '../contexts/tasks-context.js';
|
|
11
9
|
const ExecutionInputSchema = zObject({
|
|
12
10
|
content: zString(),
|
|
13
11
|
});
|
|
14
12
|
const CurateResultSchema = zObject({
|
|
15
13
|
result: zObject({
|
|
16
14
|
applied: zArray(zObject({
|
|
15
|
+
filePath: zString(),
|
|
17
16
|
path: zString(),
|
|
18
17
|
status: zString(),
|
|
19
18
|
type: zString(),
|
|
@@ -32,16 +31,24 @@ export function parseExecutionContent(input) {
|
|
|
32
31
|
}
|
|
33
32
|
}
|
|
34
33
|
/**
|
|
35
|
-
* Extract file changes from curate tool calls
|
|
34
|
+
* Extract file changes from curate tool calls (transport events)
|
|
36
35
|
*/
|
|
37
|
-
|
|
36
|
+
function composeChangesFromToolCalls(toolCalls) {
|
|
38
37
|
const changes = { created: [], updated: [] };
|
|
39
|
-
const contextTreeDir = join(BRV_DIR, CONTEXT_TREE_DIR);
|
|
40
38
|
for (const tc of toolCalls) {
|
|
41
|
-
if (tc.status !== 'completed' || tc.
|
|
39
|
+
if (tc.status !== 'completed' || tc.toolName !== 'curate' || !tc.result) {
|
|
42
40
|
continue;
|
|
43
41
|
}
|
|
44
|
-
|
|
42
|
+
// Parse JSON - skip if invalid
|
|
43
|
+
let parsed;
|
|
44
|
+
try {
|
|
45
|
+
parsed = JSON.parse(String(tc.result));
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Validate schema with safeParse
|
|
51
|
+
const parseResult = CurateResultSchema.safeParse(parsed);
|
|
45
52
|
if (!parseResult.success) {
|
|
46
53
|
continue;
|
|
47
54
|
}
|
|
@@ -50,41 +57,87 @@ export function composeChangesFromToolCalls(toolCalls) {
|
|
|
50
57
|
if (operation.status !== 'success') {
|
|
51
58
|
continue;
|
|
52
59
|
}
|
|
53
|
-
const contextPath = join(contextTreeDir, operation.path, 'context.md');
|
|
54
60
|
if (operation.type === 'ADD') {
|
|
55
|
-
changes.created.push(
|
|
61
|
+
changes.created.push(operation.filePath);
|
|
56
62
|
}
|
|
57
63
|
else if (operation.type === 'UPDATE') {
|
|
58
|
-
changes.updated.push(
|
|
64
|
+
changes.updated.push(operation.filePath);
|
|
59
65
|
}
|
|
60
66
|
}
|
|
61
67
|
}
|
|
62
68
|
return changes;
|
|
63
69
|
}
|
|
64
70
|
/**
|
|
65
|
-
*
|
|
71
|
+
* Map task status to execution status
|
|
72
|
+
*/
|
|
73
|
+
function mapTaskStatusToExecutionStatus(taskStatus) {
|
|
74
|
+
switch (taskStatus) {
|
|
75
|
+
case 'cancelled': {
|
|
76
|
+
return 'failed';
|
|
77
|
+
}
|
|
78
|
+
case 'completed': {
|
|
79
|
+
return 'completed';
|
|
80
|
+
}
|
|
81
|
+
case 'created':
|
|
82
|
+
case 'started': {
|
|
83
|
+
return 'running';
|
|
84
|
+
}
|
|
85
|
+
case 'error': {
|
|
86
|
+
return 'failed';
|
|
87
|
+
}
|
|
88
|
+
default: {
|
|
89
|
+
return 'running';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Map tool call status to ToolCallStatus
|
|
95
|
+
*/
|
|
96
|
+
function mapToolCallStatus(status) {
|
|
97
|
+
switch (status) {
|
|
98
|
+
case 'completed': {
|
|
99
|
+
return 'completed';
|
|
100
|
+
}
|
|
101
|
+
case 'error': {
|
|
102
|
+
return 'failed';
|
|
103
|
+
}
|
|
104
|
+
case 'running': {
|
|
105
|
+
return 'running';
|
|
106
|
+
}
|
|
107
|
+
default: {
|
|
108
|
+
return 'running';
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Hook that transforms tasks from transport events into ActivityLog format
|
|
66
114
|
*/
|
|
67
115
|
export function useActivityLogs() {
|
|
68
|
-
const {
|
|
69
|
-
const logs = useMemo(() =>
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
116
|
+
const { tasks } = useTasks();
|
|
117
|
+
const logs = useMemo(() => {
|
|
118
|
+
const taskArray = [...tasks.values()];
|
|
119
|
+
return taskArray
|
|
120
|
+
.filter((task) => task.status !== 'created')
|
|
121
|
+
.map((task) => {
|
|
122
|
+
const progress = task.toolCalls.map((tc, index) => ({
|
|
123
|
+
id: tc.callId ?? `${task.taskId}-${index}`,
|
|
124
|
+
status: mapToolCallStatus(tc.status),
|
|
125
|
+
toolCallName: tc.toolName,
|
|
126
|
+
}));
|
|
127
|
+
const changes = composeChangesFromToolCalls(task.toolCalls);
|
|
128
|
+
const activityLog = {
|
|
129
|
+
changes,
|
|
130
|
+
content: task.status === 'error' ? task.error?.message ?? '' : task.result ?? '',
|
|
131
|
+
id: task.taskId,
|
|
132
|
+
input: task.content,
|
|
133
|
+
progress,
|
|
134
|
+
source: 'agent',
|
|
135
|
+
status: mapTaskStatusToExecutionStatus(task.status),
|
|
136
|
+
timestamp: new Date(task.completedAt ?? task.startedAt ?? task.createdAt),
|
|
137
|
+
type: task.type,
|
|
138
|
+
};
|
|
139
|
+
return activityLog;
|
|
140
|
+
});
|
|
141
|
+
}, [tasks]);
|
|
89
142
|
return { logs };
|
|
90
143
|
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Polling Hook
|
|
3
|
+
*
|
|
4
|
+
* Periodically checks auth state and refreshes token when needed.
|
|
5
|
+
*/
|
|
6
|
+
import type { AuthToken } from '../../core/domain/entities/auth-token.js';
|
|
7
|
+
import type { ITokenStore } from '../../core/interfaces/i-token-store.js';
|
|
8
|
+
export interface UseAuthPollingOptions {
|
|
9
|
+
/** Current auth token */
|
|
10
|
+
authToken: AuthToken | undefined;
|
|
11
|
+
/** Callback when token is refreshed or cleared */
|
|
12
|
+
onTokenChange: (token?: AuthToken) => void;
|
|
13
|
+
/** Token store for persistence */
|
|
14
|
+
tokenStore: ITokenStore;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Hook that polls auth state and refreshes token when needed.
|
|
18
|
+
*
|
|
19
|
+
* - Polls every 30 seconds when authorized
|
|
20
|
+
* - Validates token by calling user API
|
|
21
|
+
* - Refreshes token if validation fails
|
|
22
|
+
* - Clears auth state if refresh fails
|
|
23
|
+
*/
|
|
24
|
+
export declare function useAuthPolling({ authToken, onTokenChange, tokenStore }: UseAuthPollingOptions): void;
|