byterover-cli 0.4.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -9
- package/dist/commands/curate.d.ts +1 -3
- package/dist/commands/curate.js +14 -51
- package/dist/commands/main.d.ts +8 -0
- package/dist/commands/main.js +29 -8
- package/dist/commands/query.d.ts +1 -3
- package/dist/commands/query.js +8 -35
- package/dist/config/context-tree-domains.d.ts +5 -0
- package/dist/config/context-tree-domains.js +6 -1
- package/dist/config/environment.js +9 -9
- package/dist/constants.d.ts +14 -0
- package/dist/constants.js +18 -0
- package/dist/core/domain/cipher/agent/agent-info.d.ts +199 -0
- package/dist/core/domain/cipher/agent/agent-info.js +143 -0
- package/dist/core/domain/cipher/agent/agent-registry.d.ts +96 -0
- package/dist/core/domain/cipher/agent/agent-registry.js +254 -0
- package/dist/core/domain/cipher/agent/index.d.ts +4 -1
- package/dist/core/domain/cipher/agent/index.js +7 -1
- package/dist/core/domain/cipher/agent-events/types.d.ts +355 -2
- package/dist/core/domain/cipher/agent-events/types.js +11 -0
- package/dist/core/domain/cipher/errors/error-normalizer.d.ts +156 -0
- package/dist/core/domain/cipher/errors/error-normalizer.js +379 -0
- package/dist/core/domain/cipher/errors/file-system-error.d.ts +2 -1
- package/dist/core/domain/cipher/errors/file-system-error.js +3 -2
- package/dist/core/domain/cipher/errors/system-prompt-error-codes.d.ts +79 -0
- package/dist/core/domain/cipher/errors/system-prompt-error-codes.js +80 -0
- package/dist/core/domain/cipher/errors/system-prompt-error.d.ts +114 -0
- package/dist/core/domain/cipher/errors/system-prompt-error.js +144 -0
- package/dist/core/domain/cipher/file-system/types.d.ts +57 -0
- package/dist/core/domain/cipher/llm/error-codes.d.ts +51 -0
- package/dist/core/domain/cipher/llm/error-codes.js +51 -0
- package/dist/core/domain/cipher/llm/index.d.ts +9 -0
- package/dist/core/domain/cipher/llm/index.js +13 -0
- package/dist/core/domain/cipher/llm/registry.d.ts +113 -0
- package/dist/core/domain/cipher/llm/registry.js +244 -0
- package/dist/core/domain/cipher/llm/schemas.d.ts +155 -0
- package/dist/core/domain/cipher/llm/schemas.js +151 -0
- package/dist/core/domain/cipher/llm/types.d.ts +121 -0
- package/dist/core/domain/cipher/llm/types.js +60 -0
- package/dist/core/domain/cipher/storage/message-storage-types.d.ts +114 -5
- package/dist/core/domain/cipher/streaming/types.d.ts +119 -0
- package/dist/core/domain/cipher/streaming/types.js +16 -0
- package/dist/core/domain/cipher/system-prompt/types.d.ts +44 -0
- package/dist/core/domain/cipher/todos/types.d.ts +34 -0
- package/dist/core/domain/cipher/tools/constants.d.ts +5 -2
- package/dist/core/domain/cipher/tools/constants.js +5 -2
- package/dist/core/domain/cipher/tools/types.d.ts +31 -0
- package/dist/core/domain/entities/event.d.ts +1 -1
- package/dist/core/domain/entities/event.js +3 -1
- package/dist/core/domain/errors/connection-error.d.ts +33 -0
- package/dist/core/domain/errors/connection-error.js +54 -0
- package/dist/core/domain/errors/core-process-error.d.ts +27 -0
- package/dist/core/domain/errors/core-process-error.js +43 -0
- package/dist/core/domain/errors/task-error.d.ts +64 -0
- package/dist/core/domain/errors/task-error.js +116 -0
- package/dist/core/domain/errors/transport-error.d.ts +72 -0
- package/dist/core/domain/errors/transport-error.js +114 -0
- package/dist/core/domain/instance/index.d.ts +1 -0
- package/dist/core/domain/instance/index.js +1 -0
- package/dist/core/domain/instance/types.d.ts +57 -0
- package/dist/core/domain/instance/types.js +72 -0
- package/dist/core/domain/knowledge/directory-manager.d.ts +16 -0
- package/dist/core/domain/knowledge/directory-manager.js +31 -0
- package/dist/core/domain/transport/index.d.ts +2 -0
- package/dist/core/domain/transport/index.js +2 -0
- package/dist/core/domain/transport/schemas.d.ts +1149 -0
- package/dist/core/domain/transport/schemas.js +554 -0
- package/dist/core/domain/transport/types.d.ts +67 -0
- package/dist/core/domain/transport/types.js +7 -0
- package/dist/core/interfaces/cipher/cipher-services.d.ts +15 -3
- package/dist/core/interfaces/cipher/i-chat-session.d.ts +47 -5
- package/dist/core/interfaces/cipher/i-cipher-agent.d.ts +39 -4
- package/dist/core/interfaces/cipher/i-content-generator.d.ts +3 -5
- package/dist/core/interfaces/cipher/i-file-system.d.ts +12 -1
- package/dist/core/interfaces/cipher/i-llm-service.d.ts +4 -5
- package/dist/core/interfaces/cipher/i-todo-storage.d.ts +24 -0
- package/dist/core/interfaces/cipher/i-todo-storage.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-plugin.d.ts +90 -0
- package/dist/core/interfaces/cipher/i-tool-plugin.js +1 -0
- package/dist/core/interfaces/cipher/i-tool-provider.d.ts +3 -2
- package/dist/core/interfaces/cipher/i-tool-scheduler.d.ts +4 -0
- package/dist/core/interfaces/cipher/index.d.ts +35 -0
- package/dist/core/interfaces/cipher/index.js +11 -0
- package/dist/core/interfaces/cipher/message-factory.d.ts +155 -0
- package/dist/core/interfaces/cipher/message-factory.js +252 -0
- package/dist/core/interfaces/cipher/message-type-guards.d.ts +139 -0
- package/dist/core/interfaces/cipher/message-type-guards.js +173 -0
- package/dist/core/interfaces/cipher/message-types.d.ts +279 -5
- package/dist/core/interfaces/cipher/message-types.js +6 -0
- package/dist/core/interfaces/cipher/sanitization-types.d.ts +147 -0
- package/dist/core/interfaces/cipher/sanitization-types.js +46 -0
- package/dist/core/interfaces/executor/i-curate-executor.d.ts +34 -0
- package/dist/core/interfaces/executor/i-curate-executor.js +1 -0
- package/dist/core/interfaces/executor/i-query-executor.d.ts +32 -0
- package/dist/core/interfaces/executor/i-query-executor.js +1 -0
- package/dist/core/interfaces/executor/index.d.ts +2 -0
- package/dist/core/interfaces/executor/index.js +2 -0
- package/dist/core/interfaces/instance/i-instance-discovery.d.ts +45 -0
- package/dist/core/interfaces/instance/i-instance-discovery.js +1 -0
- package/dist/core/interfaces/instance/i-instance-manager.d.ts +58 -0
- package/dist/core/interfaces/instance/i-instance-manager.js +1 -0
- package/dist/core/interfaces/instance/index.d.ts +2 -0
- package/dist/core/interfaces/instance/index.js +2 -0
- package/dist/core/interfaces/noop-implementations.d.ts +53 -0
- package/dist/core/interfaces/noop-implementations.js +62 -0
- package/dist/core/interfaces/transport/i-transport-client.d.ts +97 -0
- package/dist/core/interfaces/transport/i-transport-client.js +1 -0
- package/dist/core/interfaces/transport/i-transport-server.d.ts +93 -0
- package/dist/core/interfaces/transport/i-transport-server.js +1 -0
- package/dist/core/interfaces/transport/index.d.ts +2 -0
- package/dist/core/interfaces/transport/index.js +2 -0
- package/dist/hooks/init/welcome.js +9 -24
- package/dist/infra/cipher/agent/agent-error-codes.d.ts +16 -0
- package/dist/infra/cipher/agent/agent-error-codes.js +17 -0
- package/dist/infra/cipher/agent/agent-error.d.ts +54 -0
- package/dist/infra/cipher/agent/agent-error.js +79 -0
- package/dist/infra/cipher/agent/agent-schemas.d.ts +264 -0
- package/dist/infra/cipher/agent/agent-schemas.js +97 -0
- package/dist/infra/cipher/agent/agent-state-manager.d.ts +140 -0
- package/dist/infra/cipher/agent/agent-state-manager.js +275 -0
- package/dist/infra/cipher/agent/base-agent.d.ts +118 -0
- package/dist/infra/cipher/agent/base-agent.js +240 -0
- package/dist/infra/cipher/agent/cipher-agent.d.ts +165 -0
- package/dist/infra/cipher/agent/cipher-agent.js +546 -0
- package/dist/infra/cipher/agent/index.d.ts +22 -0
- package/dist/infra/cipher/agent/index.js +24 -0
- package/dist/infra/cipher/agent/service-initializer.d.ts +79 -0
- package/dist/infra/cipher/{agent-service-factory.js → agent/service-initializer.js} +117 -68
- package/dist/infra/cipher/agent/types.d.ts +35 -0
- package/dist/infra/cipher/agent/types.js +1 -0
- package/dist/infra/cipher/blob/blob-reference-resolver.d.ts +107 -0
- package/dist/infra/cipher/blob/blob-reference-resolver.js +228 -0
- package/dist/infra/cipher/blob/blob-reference-utils.d.ts +117 -0
- package/dist/infra/cipher/blob/blob-reference-utils.js +230 -0
- package/dist/infra/cipher/consumer/consumer-lock.js +1 -0
- package/dist/infra/cipher/consumer/consumer-service.js +1 -0
- package/dist/infra/cipher/consumer/execution-consumer.d.ts +6 -1
- package/dist/infra/cipher/consumer/execution-consumer.js +54 -16
- package/dist/infra/cipher/consumer/index.d.ts +1 -1
- package/dist/infra/cipher/consumer/index.js +2 -1
- package/dist/infra/cipher/consumer/queue-polling-service.js +1 -0
- package/dist/infra/cipher/file-system/binary-utils.d.ts +43 -0
- package/dist/infra/cipher/file-system/binary-utils.js +164 -0
- package/dist/infra/cipher/file-system/context-tree-file-system-factory.d.ts +9 -0
- package/dist/infra/cipher/file-system/context-tree-file-system-factory.js +24 -0
- package/dist/infra/cipher/file-system/file-system-service.d.ts +17 -1
- package/dist/infra/cipher/file-system/file-system-service.js +327 -36
- package/dist/infra/cipher/file-system/path-validator.d.ts +32 -0
- package/dist/infra/cipher/file-system/path-validator.js +111 -6
- package/dist/infra/cipher/interactive-loop.js +41 -33
- package/dist/infra/cipher/llm/capability-cache.d.ts +87 -0
- package/dist/infra/cipher/llm/capability-cache.js +125 -0
- package/dist/infra/cipher/llm/context/compaction/compaction-service.d.ts +32 -0
- package/dist/infra/cipher/llm/context/compaction/compaction-service.js +44 -3
- package/dist/infra/cipher/llm/context/compression/enhanced-compaction.d.ts +112 -0
- package/dist/infra/cipher/llm/context/compression/enhanced-compaction.js +175 -0
- package/dist/infra/cipher/llm/context/compression/filter-compacted.d.ts +83 -0
- package/dist/infra/cipher/llm/context/compression/filter-compacted.js +150 -0
- package/dist/infra/cipher/llm/context/compression/index.d.ts +5 -0
- package/dist/infra/cipher/llm/context/compression/index.js +6 -0
- package/dist/infra/cipher/llm/context/compression/reactive-overflow.d.ts +107 -0
- package/dist/infra/cipher/llm/context/compression/reactive-overflow.js +272 -0
- package/dist/infra/cipher/llm/context/context-manager.d.ts +47 -1
- package/dist/infra/cipher/llm/context/context-manager.js +129 -0
- package/dist/infra/cipher/llm/context/utils.js +17 -4
- package/dist/infra/cipher/llm/generators/byterover-content-generator.js +4 -2
- package/dist/infra/cipher/llm/internal-llm-service.d.ts +50 -17
- package/dist/infra/cipher/llm/internal-llm-service.js +273 -50
- package/dist/infra/cipher/llm/openrouter-llm-service.d.ts +6 -8
- package/dist/infra/cipher/llm/openrouter-llm-service.js +14 -16
- package/dist/infra/cipher/llm/retry/retry-policy.d.ts +1 -0
- package/dist/infra/cipher/llm/retry/retry-policy.js +11 -0
- package/dist/infra/cipher/llm/retry/retry-with-backoff.js +3 -2
- package/dist/infra/cipher/llm/sanitization/base64-utils.d.ts +102 -0
- package/dist/infra/cipher/llm/sanitization/base64-utils.js +182 -0
- package/dist/infra/cipher/llm/sanitization/index.d.ts +12 -0
- package/dist/infra/cipher/llm/sanitization/index.js +13 -0
- package/dist/infra/cipher/llm/sanitization/tool-sanitizer.d.ts +74 -0
- package/dist/infra/cipher/llm/sanitization/tool-sanitizer.js +398 -0
- package/dist/infra/cipher/llm/stream-processor.d.ts +158 -0
- package/dist/infra/cipher/llm/stream-processor.js +276 -0
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.d.ts +13 -20
- package/dist/infra/cipher/llm/tokenizers/claude-tokenizer.js +17 -24
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.d.ts +12 -11
- package/dist/infra/cipher/llm/tokenizers/gemini-tokenizer.js +16 -15
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.d.ts +15 -7
- package/dist/infra/cipher/llm/tokenizers/openrouter-tokenizer.js +22 -10
- package/dist/infra/cipher/llm/tool-output-processor.d.ts +51 -0
- package/dist/infra/cipher/llm/tool-output-processor.js +139 -0
- package/dist/infra/cipher/process/command-validator.d.ts +23 -0
- package/dist/infra/cipher/process/command-validator.js +75 -0
- package/dist/infra/cipher/process/path-utils.d.ts +66 -0
- package/dist/infra/cipher/process/path-utils.js +94 -0
- package/dist/infra/cipher/process/process-service.d.ts +32 -0
- package/dist/infra/cipher/process/process-service.js +98 -17
- package/dist/infra/cipher/session/chat-session.d.ts +56 -7
- package/dist/infra/cipher/session/chat-session.js +163 -13
- package/dist/infra/cipher/session/index.d.ts +1 -0
- package/dist/infra/cipher/session/index.js +2 -0
- package/dist/infra/cipher/session/message-queue.d.ts +65 -0
- package/dist/infra/cipher/session/message-queue.js +90 -0
- package/dist/infra/cipher/session/session-manager.d.ts +106 -5
- package/dist/infra/cipher/session/session-manager.js +254 -7
- package/dist/infra/cipher/session/session-status.d.ts +137 -0
- package/dist/infra/cipher/session/session-status.js +184 -0
- package/dist/infra/cipher/session/title-generator.d.ts +8 -0
- package/dist/infra/cipher/session/title-generator.js +31 -0
- package/dist/infra/cipher/storage/message-storage-service.d.ts +65 -2
- package/dist/infra/cipher/storage/message-storage-service.js +300 -54
- package/dist/infra/cipher/storage/tool-part-factory.d.ts +116 -0
- package/dist/infra/cipher/storage/tool-part-factory.js +197 -0
- package/dist/infra/cipher/system-prompt/contributor-schemas.d.ts +516 -0
- package/dist/infra/cipher/system-prompt/contributor-schemas.js +85 -0
- package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.d.ts +59 -0
- package/dist/infra/cipher/system-prompt/contributors/agent-prompt-contributor.js +131 -0
- package/dist/infra/cipher/system-prompt/contributors/companion-contributor.d.ts +54 -0
- package/dist/infra/cipher/system-prompt/contributors/companion-contributor.js +107 -0
- package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.d.ts +68 -0
- package/dist/infra/cipher/system-prompt/contributors/context-tree-structure-contributor.js +179 -0
- package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.d.ts +25 -0
- package/dist/infra/cipher/system-prompt/contributors/datetime-contributor.js +29 -0
- package/dist/infra/cipher/system-prompt/contributors/environment-contributor.d.ts +25 -0
- package/dist/infra/cipher/system-prompt/contributors/environment-contributor.js +54 -0
- package/dist/infra/cipher/system-prompt/contributors/file-contributor.d.ts +60 -0
- package/dist/infra/cipher/system-prompt/contributors/file-contributor.js +128 -0
- package/dist/infra/cipher/system-prompt/contributors/index.d.ts +13 -0
- package/dist/infra/cipher/system-prompt/contributors/index.js +8 -0
- package/dist/infra/cipher/system-prompt/contributors/memory-contributor.d.ts +40 -0
- package/dist/infra/cipher/system-prompt/contributors/memory-contributor.js +56 -0
- package/dist/infra/cipher/system-prompt/contributors/static-contributor.d.ts +26 -0
- package/dist/infra/cipher/system-prompt/contributors/static-contributor.js +31 -0
- package/dist/infra/cipher/system-prompt/environment-context-builder.d.ts +112 -0
- package/dist/infra/cipher/system-prompt/environment-context-builder.js +256 -0
- package/dist/infra/cipher/system-prompt/prompt-cache.d.ts +102 -0
- package/dist/infra/cipher/system-prompt/prompt-cache.js +156 -0
- package/dist/infra/cipher/system-prompt/schemas.d.ts +151 -0
- package/dist/infra/cipher/system-prompt/schemas.js +94 -0
- package/dist/infra/cipher/system-prompt/system-prompt-manager.d.ts +136 -0
- package/dist/infra/cipher/system-prompt/system-prompt-manager.js +307 -0
- package/dist/infra/cipher/todos/todo-storage-service.d.ts +26 -0
- package/dist/infra/cipher/todos/todo-storage-service.js +28 -0
- package/dist/infra/cipher/tools/core-tool-scheduler.js +5 -1
- package/dist/infra/cipher/tools/default-policy-rules.js +1 -1
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.d.ts +1 -0
- package/dist/infra/cipher/tools/implementations/bash-exec-tool.js +27 -10
- package/dist/infra/cipher/tools/implementations/bash-output-tool.js +1 -5
- package/dist/infra/cipher/tools/implementations/batch-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/batch-tool.js +142 -0
- package/dist/infra/cipher/tools/implementations/curate-tool.js +195 -68
- package/dist/infra/cipher/tools/implementations/list-directory-tool.d.ts +12 -0
- package/dist/infra/cipher/tools/implementations/list-directory-tool.js +52 -0
- package/dist/infra/cipher/tools/implementations/read-file-tool.d.ts +8 -1
- package/dist/infra/cipher/tools/implementations/read-file-tool.js +17 -7
- package/dist/infra/cipher/tools/implementations/read-todos-tool.d.ts +11 -0
- package/dist/infra/cipher/tools/implementations/read-todos-tool.js +39 -0
- package/dist/infra/cipher/tools/implementations/{detect-domains-tool.d.ts → spec-analyze-tool.d.ts} +1 -1
- package/dist/infra/cipher/tools/implementations/{detect-domains-tool.js → spec-analyze-tool.js} +9 -7
- package/dist/infra/cipher/tools/implementations/task-tool.d.ts +34 -0
- package/dist/infra/cipher/tools/implementations/task-tool.js +207 -0
- package/dist/infra/cipher/tools/implementations/write-todos-tool.d.ts +4 -1
- package/dist/infra/cipher/tools/implementations/write-todos-tool.js +19 -63
- package/dist/infra/cipher/tools/index.d.ts +1 -1
- package/dist/infra/cipher/tools/index.js +1 -1
- package/dist/infra/cipher/tools/plugins/index.d.ts +3 -0
- package/dist/infra/cipher/tools/plugins/index.js +2 -0
- package/dist/infra/cipher/tools/plugins/logging-plugin.d.ts +28 -0
- package/dist/infra/cipher/tools/plugins/logging-plugin.js +66 -0
- package/dist/infra/cipher/tools/plugins/plugin-manager.d.ts +81 -0
- package/dist/infra/cipher/tools/plugins/plugin-manager.js +122 -0
- package/dist/infra/cipher/tools/streaming/index.d.ts +1 -0
- package/dist/infra/cipher/tools/streaming/index.js +1 -0
- package/dist/infra/cipher/tools/streaming/metadata-handler.d.ts +31 -0
- package/dist/infra/cipher/tools/streaming/metadata-handler.js +39 -0
- package/dist/infra/cipher/tools/tool-description-loader.d.ts +57 -0
- package/dist/infra/cipher/tools/tool-description-loader.js +108 -0
- package/dist/infra/cipher/tools/tool-manager.d.ts +38 -4
- package/dist/infra/cipher/tools/tool-manager.js +107 -11
- package/dist/infra/cipher/tools/tool-provider-getter.d.ts +6 -0
- package/dist/infra/cipher/tools/tool-provider-getter.js +1 -0
- package/dist/infra/cipher/tools/tool-provider.d.ts +32 -7
- package/dist/infra/cipher/tools/tool-provider.js +81 -25
- package/dist/infra/cipher/tools/tool-registry.d.ts +23 -0
- package/dist/infra/cipher/tools/tool-registry.js +58 -16
- package/dist/infra/context-tree/file-context-tree-snapshot-service.js +10 -4
- package/dist/infra/context-tree/file-context-tree-writer-service.d.ts +4 -3
- package/dist/infra/context-tree/file-context-tree-writer-service.js +6 -4
- package/dist/infra/context-tree/path-utils.d.ts +7 -0
- package/dist/infra/context-tree/path-utils.js +7 -0
- package/dist/infra/core/executors/curate-executor.d.ts +35 -0
- package/dist/infra/core/executors/curate-executor.js +123 -0
- package/dist/infra/core/executors/index.d.ts +2 -0
- package/dist/infra/core/executors/index.js +2 -0
- package/dist/infra/core/executors/query-executor.d.ts +23 -0
- package/dist/infra/core/executors/query-executor.js +51 -0
- package/dist/infra/core/task-processor.d.ts +81 -0
- package/dist/infra/core/task-processor.js +115 -0
- package/dist/infra/instance/file-instance-discovery.d.ts +31 -0
- package/dist/infra/instance/file-instance-discovery.js +84 -0
- package/dist/infra/instance/file-instance-manager.d.ts +46 -0
- package/dist/infra/instance/file-instance-manager.js +123 -0
- package/dist/infra/instance/index.d.ts +3 -0
- package/dist/infra/instance/index.js +3 -0
- package/dist/infra/instance/process-utils.d.ts +14 -0
- package/dist/infra/instance/process-utils.js +39 -0
- package/dist/infra/process/agent-worker.d.ts +20 -0
- package/dist/infra/process/agent-worker.js +602 -0
- package/dist/infra/process/index.d.ts +12 -0
- package/dist/infra/process/index.js +11 -0
- package/dist/infra/process/ipc-types.d.ts +55 -0
- package/dist/infra/process/ipc-types.js +12 -0
- package/dist/infra/process/process-manager.d.ts +154 -0
- package/dist/infra/process/process-manager.js +471 -0
- package/dist/infra/process/task-queue-manager.d.ts +123 -0
- package/dist/infra/process/task-queue-manager.js +226 -0
- package/dist/infra/process/transport-handlers.d.ts +124 -0
- package/dist/infra/process/transport-handlers.js +348 -0
- package/dist/infra/process/transport-worker.d.ts +20 -0
- package/dist/infra/process/transport-worker.js +168 -0
- package/dist/infra/repl/commands/curate-command.js +0 -5
- package/dist/infra/repl/commands/query-command.js +0 -3
- package/dist/infra/repl/repl-startup.d.ts +4 -0
- package/dist/infra/repl/repl-startup.js +10 -1
- package/dist/infra/repl/transport-client-helper.d.ts +9 -0
- package/dist/infra/repl/transport-client-helper.js +96 -0
- package/dist/infra/transport/index.d.ts +4 -0
- package/dist/infra/transport/index.js +4 -0
- package/dist/infra/transport/port-utils.d.ts +42 -0
- package/dist/infra/transport/port-utils.js +84 -0
- package/dist/infra/transport/socket-io-transport-client.d.ts +45 -0
- package/dist/infra/transport/socket-io-transport-client.js +270 -0
- package/dist/infra/transport/socket-io-transport-server.d.ts +35 -0
- package/dist/infra/transport/socket-io-transport-server.js +207 -0
- package/dist/infra/transport/transport-client-factory.d.ts +76 -0
- package/dist/infra/transport/transport-client-factory.js +168 -0
- package/dist/infra/transport/transport-factory.d.ts +33 -0
- package/dist/infra/transport/transport-factory.js +59 -0
- package/dist/infra/usecase/curate-use-case.d.ts +8 -55
- package/dist/infra/usecase/curate-use-case.js +73 -259
- package/dist/infra/usecase/init-use-case.js +19 -8
- package/dist/infra/usecase/login-use-case.js +9 -3
- package/dist/infra/usecase/query-use-case.d.ts +18 -45
- package/dist/infra/usecase/query-use-case.js +251 -326
- package/dist/infra/usecase/status-use-case.js +1 -1
- package/dist/resources/prompts/{curate-context-tree-curation.yml → curate.yml} +25 -22
- package/dist/resources/prompts/explore.yml +78 -0
- package/dist/resources/prompts/plan.yml +114 -0
- package/dist/resources/prompts/reflection.yml +1 -1
- package/dist/resources/prompts/system-prompt.yml +15 -8
- package/dist/resources/prompts/tool-outputs.yml +0 -5
- package/dist/resources/tools/bash_exec.txt +98 -0
- package/dist/resources/tools/bash_output.txt +40 -0
- package/dist/resources/tools/batch.txt +28 -0
- package/dist/resources/tools/create_knowledge_topic.txt +23 -0
- package/dist/resources/tools/curate.txt +22 -0
- package/dist/resources/tools/delete_memory.txt +1 -0
- package/dist/resources/tools/detect_domains.txt +11 -0
- package/dist/resources/tools/edit_file.txt +1 -0
- package/dist/resources/tools/edit_memory.txt +1 -0
- package/dist/resources/tools/glob_files.txt +20 -0
- package/dist/resources/tools/grep_content.txt +18 -0
- package/dist/resources/tools/kill_process.txt +16 -0
- package/dist/resources/tools/list_directory.txt +16 -0
- package/dist/resources/tools/list_memories.txt +1 -0
- package/dist/resources/tools/read_file.txt +31 -0
- package/dist/resources/tools/read_memory.txt +1 -0
- package/dist/resources/tools/read_todos.txt +17 -0
- package/dist/resources/tools/search_history.txt +1 -0
- package/dist/resources/tools/task.txt +23 -0
- package/dist/resources/tools/write_file.txt +1 -0
- package/dist/resources/tools/write_memory.txt +1 -0
- package/dist/resources/tools/write_todos.txt +29 -0
- package/dist/tui/app.js +9 -13
- package/dist/tui/components/command-details.d.ts +14 -0
- package/dist/tui/components/command-details.js +35 -0
- package/dist/tui/components/execution/execution-changes.d.ts +5 -0
- package/dist/tui/components/execution/execution-changes.js +19 -4
- package/dist/tui/components/execution/execution-content.d.ts +4 -2
- package/dist/tui/components/execution/execution-content.js +26 -13
- package/dist/tui/components/execution/execution-input.js +3 -3
- package/dist/tui/components/execution/execution-progress.d.ts +2 -2
- package/dist/tui/components/execution/execution-progress.js +8 -6
- package/dist/tui/components/execution/log-item.d.ts +3 -4
- package/dist/tui/components/execution/log-item.js +2 -5
- package/dist/tui/components/footer.js +9 -4
- package/dist/tui/components/header.d.ts +3 -3
- package/dist/tui/components/header.js +5 -3
- package/dist/tui/components/index.d.ts +1 -0
- package/dist/tui/components/index.js +1 -0
- package/dist/tui/components/onboarding/copyable-prompt.d.ts +5 -3
- package/dist/tui/components/onboarding/copyable-prompt.js +7 -8
- package/dist/tui/components/onboarding/onboarding-flow.js +35 -25
- package/dist/tui/components/scrollable-list.js +12 -10
- package/dist/tui/components/suggestions.js +39 -41
- package/dist/tui/components/tab-bar.d.ts +2 -1
- package/dist/tui/components/tab-bar.js +3 -4
- package/dist/tui/constants.d.ts +0 -5
- package/dist/tui/constants.js +0 -5
- package/dist/tui/contexts/auth-context.js +9 -2
- package/dist/tui/contexts/{use-commands.js → commands-context.js} +6 -5
- package/dist/tui/contexts/index.d.ts +6 -1
- package/dist/tui/contexts/index.js +6 -1
- package/dist/tui/contexts/onboarding-context.d.ts +1 -1
- package/dist/tui/contexts/onboarding-context.js +9 -9
- package/dist/tui/contexts/tasks-context.d.ts +84 -0
- package/dist/tui/contexts/tasks-context.js +218 -0
- package/dist/tui/contexts/transport-context.d.ts +29 -0
- package/dist/tui/contexts/transport-context.js +82 -0
- package/dist/tui/hooks/index.d.ts +10 -6
- package/dist/tui/hooks/index.js +7 -6
- package/dist/tui/hooks/use-activity-logs.d.ts +3 -11
- package/dist/tui/hooks/use-activity-logs.js +87 -34
- package/dist/tui/hooks/use-auth-polling.d.ts +24 -0
- package/dist/tui/hooks/use-auth-polling.js +104 -0
- package/dist/tui/hooks/use-slash-command-processor.js +0 -1
- package/dist/tui/hooks/use-slash-completion.js +1 -1
- package/dist/tui/hooks/use-tab-navigation.d.ts +2 -1
- package/dist/tui/hooks/use-tab-navigation.js +16 -7
- package/dist/tui/hooks/use-terminal-breakpoint.d.ts +21 -0
- package/dist/tui/hooks/use-terminal-breakpoint.js +38 -0
- package/dist/tui/hooks/use-ui-heights.d.ts +120 -0
- package/dist/tui/hooks/use-ui-heights.js +88 -0
- package/dist/tui/providers/app-providers.js +2 -6
- package/dist/tui/types/commands.d.ts +0 -26
- package/dist/tui/types/index.d.ts +1 -1
- package/dist/tui/types/ui.d.ts +9 -4
- package/dist/tui/utils/line.d.ts +11 -0
- package/dist/tui/utils/line.js +16 -0
- package/dist/tui/utils/log.d.ts +27 -0
- package/dist/tui/utils/log.js +114 -0
- package/dist/tui/views/command-view.d.ts +7 -0
- package/dist/tui/views/command-view.js +103 -80
- package/dist/tui/views/login-view.js +7 -4
- package/dist/tui/views/logs-view.d.ts +13 -0
- package/dist/tui/views/logs-view.js +27 -52
- package/dist/utils/connection-error-handler.d.ts +16 -0
- package/dist/utils/connection-error-handler.js +49 -0
- package/dist/utils/crash-log.d.ts +14 -0
- package/dist/utils/crash-log.js +19 -0
- package/dist/utils/file-helpers.d.ts +14 -0
- package/dist/utils/file-helpers.js +21 -0
- package/dist/utils/global-logs-path.d.ts +11 -0
- package/dist/utils/global-logs-path.js +37 -0
- package/dist/utils/process-logger.d.ts +53 -0
- package/dist/utils/process-logger.js +253 -0
- package/dist/utils/sandbox-detector.d.ts +31 -0
- package/dist/utils/sandbox-detector.js +122 -0
- package/oclif.manifest.json +10 -198
- package/package.json +5 -1
- package/dist/commands/cipher-agent/run.d.ts +0 -142
- package/dist/commands/cipher-agent/run.js +0 -555
- package/dist/commands/cipher-agent/set-prompt.d.ts +0 -16
- package/dist/commands/cipher-agent/set-prompt.js +0 -58
- package/dist/commands/cipher-agent/show-prompt.d.ts +0 -13
- package/dist/commands/cipher-agent/show-prompt.js +0 -53
- package/dist/commands/foo.d.ts +0 -14
- package/dist/commands/foo.js +0 -66
- package/dist/infra/cipher/agent-service-factory.d.ts +0 -93
- package/dist/infra/cipher/cipher-agent-state-manager.d.ts +0 -63
- package/dist/infra/cipher/cipher-agent-state-manager.js +0 -108
- package/dist/infra/cipher/cipher-agent.d.ts +0 -182
- package/dist/infra/cipher/cipher-agent.js +0 -317
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.d.ts +0 -106
- package/dist/infra/cipher/system-prompt/simple-prompt-factory.js +0 -297
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.d.ts +0 -7
- package/dist/infra/cipher/tools/implementations/find-knowledge-topics-tool.js +0 -424
- package/dist/resources/prompts/modes/autonomous.yml +0 -9
- package/dist/resources/prompts/query-context-tree-retrieval.yml +0 -48
- package/dist/tui/contexts/consumer.d.ts +0 -31
- package/dist/tui/contexts/consumer.js +0 -56
- package/dist/tui/hooks/use-consumer.d.ts +0 -12
- package/dist/tui/hooks/use-consumer.js +0 -50
- package/dist/tui/hooks/use-queue-polling.d.ts +0 -31
- package/dist/tui/hooks/use-queue-polling.js +0 -90
- /package/dist/tui/contexts/{use-commands.d.ts → commands-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-mode.d.ts → mode-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-mode.js → mode-context.js} +0 -0
- /package/dist/tui/contexts/{use-theme.d.ts → theme-context.d.ts} +0 -0
- /package/dist/tui/contexts/{use-theme.js → theme-context.js} +0 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Polling Hook
|
|
3
|
+
*
|
|
4
|
+
* Periodically checks auth state and refreshes token when needed.
|
|
5
|
+
*/
|
|
6
|
+
import { useEffect, useRef } from 'react';
|
|
7
|
+
import { getAuthConfig } from '../../config/auth.config.js';
|
|
8
|
+
import { getCurrentConfig } from '../../config/environment.js';
|
|
9
|
+
import { AuthToken as AuthTokenClass } from '../../core/domain/entities/auth-token.js';
|
|
10
|
+
import { OAuthService } from '../../infra/auth/oauth-service.js';
|
|
11
|
+
import { OidcDiscoveryService } from '../../infra/auth/oidc-discovery-service.js';
|
|
12
|
+
import { HttpUserService } from '../../infra/user/http-user-service.js';
|
|
13
|
+
/** Auth state polling interval in milliseconds (15 seconds) */
|
|
14
|
+
const AUTH_POLL_INTERVAL_MS = 15 * 1000;
|
|
15
|
+
/**
|
|
16
|
+
* Hook that polls auth state and refreshes token when needed.
|
|
17
|
+
*
|
|
18
|
+
* - Polls every 30 seconds when authorized
|
|
19
|
+
* - Validates token by calling user API
|
|
20
|
+
* - Refreshes token if validation fails
|
|
21
|
+
* - Clears auth state if refresh fails
|
|
22
|
+
*/
|
|
23
|
+
export function useAuthPolling({ authToken, onTokenChange, tokenStore }) {
|
|
24
|
+
// Track if validation/refresh is in progress to prevent concurrent operations
|
|
25
|
+
const isProcessingRef = useRef(false);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
// Only poll when authorized
|
|
28
|
+
if (!authToken) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const checkAndRefreshAuth = async () => {
|
|
32
|
+
// Skip if already processing
|
|
33
|
+
if (isProcessingRef.current) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
isProcessingRef.current = true;
|
|
37
|
+
try {
|
|
38
|
+
// Validate token by calling user API
|
|
39
|
+
const isValid = await validateToken(authToken);
|
|
40
|
+
if (!isValid) {
|
|
41
|
+
// Token invalid - attempt refresh
|
|
42
|
+
await refreshToken(authToken, tokenStore, onTokenChange);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
isProcessingRef.current = false;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
// Run immediately on mount/token change
|
|
50
|
+
checkAndRefreshAuth();
|
|
51
|
+
// Set up polling interval
|
|
52
|
+
const pollInterval = setInterval(checkAndRefreshAuth, AUTH_POLL_INTERVAL_MS);
|
|
53
|
+
return () => {
|
|
54
|
+
clearInterval(pollInterval);
|
|
55
|
+
};
|
|
56
|
+
}, [authToken, onTokenChange, tokenStore]);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Validate token by calling user API
|
|
60
|
+
* @returns true if token is valid, false otherwise
|
|
61
|
+
*/
|
|
62
|
+
async function validateToken(authToken) {
|
|
63
|
+
try {
|
|
64
|
+
const config = getCurrentConfig();
|
|
65
|
+
const userService = new HttpUserService({ apiBaseUrl: config.apiBaseUrl });
|
|
66
|
+
// Try to get current user - if this fails, token is invalid
|
|
67
|
+
await userService.getCurrentUser(authToken.accessToken, authToken.sessionKey);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Refresh the token using refresh token
|
|
76
|
+
*/
|
|
77
|
+
async function refreshToken(authToken, tokenStore, onTokenChange) {
|
|
78
|
+
try {
|
|
79
|
+
const discoveryService = new OidcDiscoveryService();
|
|
80
|
+
const authConfig = await getAuthConfig(discoveryService);
|
|
81
|
+
const authService = new OAuthService(authConfig);
|
|
82
|
+
// Refresh the token
|
|
83
|
+
const newTokenData = await authService.refreshToken(authToken.refreshToken);
|
|
84
|
+
// Create new AuthToken with refreshed data but preserve user info
|
|
85
|
+
const refreshedToken = new AuthTokenClass({
|
|
86
|
+
accessToken: newTokenData.accessToken,
|
|
87
|
+
expiresAt: newTokenData.expiresAt,
|
|
88
|
+
refreshToken: newTokenData.refreshToken,
|
|
89
|
+
sessionKey: newTokenData.sessionKey,
|
|
90
|
+
tokenType: newTokenData.tokenType,
|
|
91
|
+
userEmail: authToken.userEmail,
|
|
92
|
+
userId: authToken.userId,
|
|
93
|
+
});
|
|
94
|
+
// Persist the new token
|
|
95
|
+
await tokenStore.save(refreshedToken);
|
|
96
|
+
// Update state
|
|
97
|
+
onTokenChange(refreshedToken);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Refresh failed - token is invalid, force logout
|
|
101
|
+
await tokenStore.clear();
|
|
102
|
+
onTokenChange();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
4
|
-
import { useCommands } from '../contexts/
|
|
4
|
+
import { useCommands } from '../contexts/commands-context.js';
|
|
5
5
|
/**
|
|
6
6
|
* Generate file suggestions based on @ prefix
|
|
7
7
|
* Returns files from the current working directory matching the search pattern
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tab Navigation Hook
|
|
3
3
|
*/
|
|
4
|
-
import type { TabId } from '../types.js';
|
|
4
|
+
import type { Tab, TabId } from '../types.js';
|
|
5
5
|
interface UseTabNavigationResult {
|
|
6
6
|
activeTab: TabId;
|
|
7
7
|
setActiveTab: (tab: TabId) => void;
|
|
8
|
+
tabs: Tab[];
|
|
8
9
|
}
|
|
9
10
|
export declare function useTabNavigation(): UseTabNavigationResult;
|
|
10
11
|
export {};
|
|
@@ -2,26 +2,35 @@
|
|
|
2
2
|
* Tab Navigation Hook
|
|
3
3
|
*/
|
|
4
4
|
import { useApp, useInput } from 'ink';
|
|
5
|
-
import { useEffect, useState } from 'react';
|
|
5
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
6
6
|
import { stopQueuePollingService } from '../../infra/cipher/consumer/queue-polling-service.js';
|
|
7
7
|
import { DEFAULT_TAB, TABS } from '../constants.js';
|
|
8
|
-
import { useMode } from '../contexts/
|
|
8
|
+
import { useMode } from '../contexts/mode-context.js';
|
|
9
9
|
import { useOnboarding } from './use-onboarding.js';
|
|
10
10
|
export function useTabNavigation() {
|
|
11
11
|
const { exit } = useApp();
|
|
12
12
|
const { shouldShowOnboarding } = useOnboarding();
|
|
13
13
|
const { mode, setMode } = useMode();
|
|
14
14
|
const [activeTab, setActiveTab] = useState(DEFAULT_TAB);
|
|
15
|
+
// Filter tabs based on onboarding state - hide console during onboarding
|
|
16
|
+
const tabs = useMemo(() => (shouldShowOnboarding ? TABS.filter((t) => t.id !== 'console') : TABS), [shouldShowOnboarding]);
|
|
15
17
|
// Sync mode with active tab on mount and when activeTab changes
|
|
16
18
|
useEffect(() => {
|
|
17
19
|
setMode(activeTab === 'activity' ? 'activity' : 'console');
|
|
18
20
|
}, [activeTab, setMode]);
|
|
21
|
+
// Reset to activity tab if current tab is not available
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
const isCurrentTabAvailable = tabs.some((t) => t.id === activeTab);
|
|
24
|
+
if (!isCurrentTabAvailable) {
|
|
25
|
+
setActiveTab(DEFAULT_TAB);
|
|
26
|
+
}
|
|
27
|
+
}, [tabs, activeTab]);
|
|
19
28
|
useInput((input, key) => {
|
|
20
|
-
// Tab: cycle through tabs (blocked during onboarding)
|
|
29
|
+
// Tab: cycle through available tabs (blocked during onboarding)
|
|
21
30
|
if (key.tab && !shouldShowOnboarding) {
|
|
22
|
-
const currentIndex =
|
|
23
|
-
const nextIndex = currentIndex >=
|
|
24
|
-
const nextTab =
|
|
31
|
+
const currentIndex = tabs.findIndex((t) => t.id === activeTab);
|
|
32
|
+
const nextIndex = currentIndex >= tabs.length - 1 ? 0 : currentIndex + 1;
|
|
33
|
+
const nextTab = tabs[nextIndex].id;
|
|
25
34
|
setActiveTab(nextTab);
|
|
26
35
|
// Mode will be synced by useEffect
|
|
27
36
|
}
|
|
@@ -31,5 +40,5 @@ export function useTabNavigation() {
|
|
|
31
40
|
exit();
|
|
32
41
|
}
|
|
33
42
|
}, { isActive: mode === 'activity' || mode === 'console' });
|
|
34
|
-
return { activeTab, setActiveTab };
|
|
43
|
+
return { activeTab, setActiveTab, tabs };
|
|
35
44
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useTerminalBreakpoint Hook
|
|
3
|
+
*
|
|
4
|
+
* Watches terminal row count and returns current breakpoint.
|
|
5
|
+
*/
|
|
6
|
+
export type TerminalBreakpoint = 'compact' | 'normal';
|
|
7
|
+
export interface TerminalBreakpointReturn {
|
|
8
|
+
breakpoint: TerminalBreakpoint;
|
|
9
|
+
columns: number;
|
|
10
|
+
rows: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Hook for determining terminal breakpoint based on row count
|
|
14
|
+
*
|
|
15
|
+
* Breakpoints:
|
|
16
|
+
* - compact: 0 - 23 rows (small terminal, limited space)
|
|
17
|
+
* - normal: >= 24 rows (standard terminal, comfortable space)
|
|
18
|
+
*
|
|
19
|
+
* @returns Current breakpoint and terminal dimensions
|
|
20
|
+
*/
|
|
21
|
+
export declare function useTerminalBreakpoint(): TerminalBreakpointReturn;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useTerminalBreakpoint Hook
|
|
3
|
+
*
|
|
4
|
+
* Watches terminal row count and returns current breakpoint.
|
|
5
|
+
*/
|
|
6
|
+
import { useStdout } from 'ink';
|
|
7
|
+
import { useEffect, useState } from 'react';
|
|
8
|
+
/**
|
|
9
|
+
* Hook for determining terminal breakpoint based on row count
|
|
10
|
+
*
|
|
11
|
+
* Breakpoints:
|
|
12
|
+
* - compact: 0 - 23 rows (small terminal, limited space)
|
|
13
|
+
* - normal: >= 24 rows (standard terminal, comfortable space)
|
|
14
|
+
*
|
|
15
|
+
* @returns Current breakpoint and terminal dimensions
|
|
16
|
+
*/
|
|
17
|
+
export function useTerminalBreakpoint() {
|
|
18
|
+
const { stdout } = useStdout();
|
|
19
|
+
const [dimensions, setDimensions] = useState({
|
|
20
|
+
columns: stdout?.columns ?? 80,
|
|
21
|
+
rows: stdout?.rows ?? 24,
|
|
22
|
+
});
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
const handleResize = () => {
|
|
25
|
+
setDimensions({
|
|
26
|
+
columns: process.stdout.columns,
|
|
27
|
+
rows: process.stdout.rows,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
process.stdout.on('resize', handleResize);
|
|
31
|
+
return () => {
|
|
32
|
+
process.stdout.off('resize', handleResize);
|
|
33
|
+
};
|
|
34
|
+
}, []);
|
|
35
|
+
const { columns, rows } = dimensions;
|
|
36
|
+
const breakpoint = rows >= 22 ? 'normal' : 'compact';
|
|
37
|
+
return { breakpoint, columns, rows };
|
|
38
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration object defining all UI element heights per breakpoint
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for UI layout across different terminal sizes.
|
|
5
|
+
* Each breakpoint defines a complete set of height values for all UI elements.
|
|
6
|
+
*
|
|
7
|
+
* Breakpoints:
|
|
8
|
+
* - compact (0-23 rows): Minimal heights for small terminals
|
|
9
|
+
* - normal (≥24 rows): Standard heights for comfortable viewing
|
|
10
|
+
*
|
|
11
|
+
* Note: Object keys are ordered top-to-bottom according to actual UI layout.
|
|
12
|
+
* perfectionist/sort-objects is disabled to preserve this logical ordering.
|
|
13
|
+
*/
|
|
14
|
+
declare const BREAKPOINT_HEIGHTS: {
|
|
15
|
+
readonly compact: {
|
|
16
|
+
readonly header: 2;
|
|
17
|
+
readonly tab: 3;
|
|
18
|
+
readonly messageItem: {
|
|
19
|
+
readonly header: 1;
|
|
20
|
+
readonly input: 3;
|
|
21
|
+
readonly maxProgressItems: 2;
|
|
22
|
+
readonly contentBottomMargin: 0;
|
|
23
|
+
readonly maxChanges: {
|
|
24
|
+
readonly created: 2;
|
|
25
|
+
readonly updated: 2;
|
|
26
|
+
};
|
|
27
|
+
readonly bottomMargin: 1;
|
|
28
|
+
};
|
|
29
|
+
readonly commandInput: 3;
|
|
30
|
+
readonly footer: 1;
|
|
31
|
+
readonly appBottomPadding: 0;
|
|
32
|
+
};
|
|
33
|
+
readonly normal: {
|
|
34
|
+
readonly header: 2;
|
|
35
|
+
readonly tab: 3;
|
|
36
|
+
readonly messageItem: {
|
|
37
|
+
readonly header: 1;
|
|
38
|
+
readonly input: 3;
|
|
39
|
+
readonly maxProgressItems: 3;
|
|
40
|
+
readonly contentBottomMargin: 1;
|
|
41
|
+
readonly maxChanges: {
|
|
42
|
+
readonly created: 3;
|
|
43
|
+
readonly updated: 3;
|
|
44
|
+
};
|
|
45
|
+
readonly bottomMargin: 1;
|
|
46
|
+
};
|
|
47
|
+
readonly commandInput: 3;
|
|
48
|
+
readonly footer: 1;
|
|
49
|
+
readonly appBottomPadding: 0;
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Message item heights interface
|
|
54
|
+
*
|
|
55
|
+
* Defines height constraints for individual message item components
|
|
56
|
+
* in the activity logs view. These values control how much vertical
|
|
57
|
+
* space each part of a message can consume.
|
|
58
|
+
*
|
|
59
|
+
*/
|
|
60
|
+
export interface MessageItemHeights {
|
|
61
|
+
bottomMargin: number;
|
|
62
|
+
contentBottomMargin: number;
|
|
63
|
+
header: number;
|
|
64
|
+
input: number;
|
|
65
|
+
maxChanges: {
|
|
66
|
+
created: number;
|
|
67
|
+
updated: number;
|
|
68
|
+
};
|
|
69
|
+
maxContentLines: number;
|
|
70
|
+
maxProgressItems: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Breakpoint configuration type derived from BREAKPOINT_HEIGHTS
|
|
74
|
+
*
|
|
75
|
+
* Single source of truth - directly represents the configuration structure.
|
|
76
|
+
* This type automatically infers the shape from BREAKPOINT_HEIGHTS object,
|
|
77
|
+
* ensuring type safety when accessing height values.
|
|
78
|
+
*
|
|
79
|
+
* Structure:
|
|
80
|
+
* - header: Height of header section
|
|
81
|
+
* - tab: Height of tab bar
|
|
82
|
+
* - footer: Height of footer section
|
|
83
|
+
* - messageItem: Nested heights for message item components
|
|
84
|
+
* - appBottomPadding: Bottom padding for the entire app
|
|
85
|
+
*/
|
|
86
|
+
export type BreakpointConfig = typeof BREAKPOINT_HEIGHTS[keyof typeof BREAKPOINT_HEIGHTS];
|
|
87
|
+
/**
|
|
88
|
+
* Complete UI heights return type
|
|
89
|
+
*
|
|
90
|
+
* Extends BreakpointConfig with the current breakpoint name.
|
|
91
|
+
* Use this to access all height values directly without nested structure.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* const {breakpoint, header, tab, footer, messageItem, appBottomPadding} = useUIHeights()
|
|
95
|
+
* const totalFixed = header + tab + footer
|
|
96
|
+
*/
|
|
97
|
+
export type UIHeights = BreakpointConfig & {
|
|
98
|
+
breakpoint: 'compact' | 'normal';
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Hook for providing breakpoint-specific UI heights
|
|
102
|
+
*
|
|
103
|
+
* Detects the current terminal breakpoint and returns the corresponding
|
|
104
|
+
* height configuration from BREAKPOINT_HEIGHTS. All height values are
|
|
105
|
+
* returned at the top level for easy destructuring.
|
|
106
|
+
*
|
|
107
|
+
* @returns {UIHeights} Object containing:
|
|
108
|
+
* - breakpoint: Current breakpoint ('compact' | 'normal')
|
|
109
|
+
* - header: Header section height
|
|
110
|
+
* - tab: Tab bar height
|
|
111
|
+
* - footer: Footer section height
|
|
112
|
+
* - messageItem: Message item component heights
|
|
113
|
+
* - appBottomPadding: App bottom padding
|
|
114
|
+
*
|
|
115
|
+
* @example
|
|
116
|
+
* const {breakpoint, header, tab, footer, messageItem} = useUIHeights()
|
|
117
|
+
* const availableHeight = terminalRows - header - tab - footer
|
|
118
|
+
*/
|
|
119
|
+
export declare function useUIHeights(): UIHeights;
|
|
120
|
+
export {};
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/* eslint-disable perfectionist/sort-objects */
|
|
2
|
+
/**
|
|
3
|
+
* useUIHeights Hook
|
|
4
|
+
*
|
|
5
|
+
* Provides breakpoint-specific height configuration for all UI elements.
|
|
6
|
+
* Returns the complete configuration object from BREAKPOINT_HEIGHTS
|
|
7
|
+
* based on current terminal size, including header, tab, footer, messageItem,
|
|
8
|
+
* commandItem, and appBottomPadding values.
|
|
9
|
+
*/
|
|
10
|
+
import { useTerminalBreakpoint } from './use-terminal-breakpoint.js';
|
|
11
|
+
/**
|
|
12
|
+
* Configuration object defining all UI element heights per breakpoint
|
|
13
|
+
*
|
|
14
|
+
* Single source of truth for UI layout across different terminal sizes.
|
|
15
|
+
* Each breakpoint defines a complete set of height values for all UI elements.
|
|
16
|
+
*
|
|
17
|
+
* Breakpoints:
|
|
18
|
+
* - compact (0-23 rows): Minimal heights for small terminals
|
|
19
|
+
* - normal (≥24 rows): Standard heights for comfortable viewing
|
|
20
|
+
*
|
|
21
|
+
* Note: Object keys are ordered top-to-bottom according to actual UI layout.
|
|
22
|
+
* perfectionist/sort-objects is disabled to preserve this logical ordering.
|
|
23
|
+
*/
|
|
24
|
+
const BREAKPOINT_HEIGHTS = {
|
|
25
|
+
compact: {
|
|
26
|
+
header: 2,
|
|
27
|
+
tab: 3,
|
|
28
|
+
messageItem: {
|
|
29
|
+
header: 1,
|
|
30
|
+
input: 3,
|
|
31
|
+
maxProgressItems: 2,
|
|
32
|
+
contentBottomMargin: 0,
|
|
33
|
+
maxChanges: {
|
|
34
|
+
created: 2,
|
|
35
|
+
updated: 2,
|
|
36
|
+
},
|
|
37
|
+
bottomMargin: 1,
|
|
38
|
+
},
|
|
39
|
+
commandInput: 3,
|
|
40
|
+
footer: 1,
|
|
41
|
+
appBottomPadding: 0,
|
|
42
|
+
},
|
|
43
|
+
normal: {
|
|
44
|
+
header: 2,
|
|
45
|
+
tab: 3,
|
|
46
|
+
messageItem: {
|
|
47
|
+
header: 1,
|
|
48
|
+
input: 3,
|
|
49
|
+
maxProgressItems: 3,
|
|
50
|
+
contentBottomMargin: 1,
|
|
51
|
+
maxChanges: {
|
|
52
|
+
created: 3,
|
|
53
|
+
updated: 3,
|
|
54
|
+
},
|
|
55
|
+
bottomMargin: 1,
|
|
56
|
+
},
|
|
57
|
+
commandInput: 3,
|
|
58
|
+
footer: 1,
|
|
59
|
+
appBottomPadding: 0,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Hook for providing breakpoint-specific UI heights
|
|
64
|
+
*
|
|
65
|
+
* Detects the current terminal breakpoint and returns the corresponding
|
|
66
|
+
* height configuration from BREAKPOINT_HEIGHTS. All height values are
|
|
67
|
+
* returned at the top level for easy destructuring.
|
|
68
|
+
*
|
|
69
|
+
* @returns {UIHeights} Object containing:
|
|
70
|
+
* - breakpoint: Current breakpoint ('compact' | 'normal')
|
|
71
|
+
* - header: Header section height
|
|
72
|
+
* - tab: Tab bar height
|
|
73
|
+
* - footer: Footer section height
|
|
74
|
+
* - messageItem: Message item component heights
|
|
75
|
+
* - appBottomPadding: App bottom padding
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* const {breakpoint, header, tab, footer, messageItem} = useUIHeights()
|
|
79
|
+
* const availableHeight = terminalRows - header - tab - footer
|
|
80
|
+
*/
|
|
81
|
+
export function useUIHeights() {
|
|
82
|
+
const { breakpoint } = useTerminalBreakpoint();
|
|
83
|
+
const config = BREAKPOINT_HEIGHTS[breakpoint];
|
|
84
|
+
return {
|
|
85
|
+
breakpoint,
|
|
86
|
+
...config,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { AuthProvider,
|
|
3
|
-
import { OnboardingProvider } from '../contexts/onboarding-context.js';
|
|
4
|
-
import { CommandsProvider } from '../contexts/use-commands.js';
|
|
5
|
-
import { ModeProvider } from '../contexts/use-mode.js';
|
|
6
|
-
import { ThemeProvider } from '../contexts/use-theme.js';
|
|
2
|
+
import { AuthProvider, CommandsProvider, ModeProvider, OnboardingProvider, ServicesProvider, TasksProvider, ThemeProvider, TransportProvider, } from '../contexts/index.js';
|
|
7
3
|
export function AppProviders({ children, initialAuthToken, initialBrvConfig, onboardingPreferenceStore, projectConfigStore, tokenStore, trackingService, version, }) {
|
|
8
|
-
return (_jsx(ServicesProvider, { onboardingPreferenceStore: onboardingPreferenceStore, projectConfigStore: projectConfigStore, tokenStore: tokenStore, trackingService: trackingService, version: version, children: _jsx(AuthProvider, { initialAuthToken: initialAuthToken, initialBrvConfig: initialBrvConfig, children: _jsx(ThemeProvider, { children: _jsx(CommandsProvider, { children: _jsx(ModeProvider, { children: _jsx(
|
|
4
|
+
return (_jsx(ServicesProvider, { onboardingPreferenceStore: onboardingPreferenceStore, projectConfigStore: projectConfigStore, tokenStore: tokenStore, trackingService: trackingService, version: version, children: _jsx(AuthProvider, { initialAuthToken: initialAuthToken, initialBrvConfig: initialBrvConfig, children: _jsx(ThemeProvider, { children: _jsx(CommandsProvider, { children: _jsx(ModeProvider, { children: _jsx(TransportProvider, { children: _jsx(TasksProvider, { children: _jsx(OnboardingProvider, { children: children }) }) }) }) }) }) }) }));
|
|
9
5
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type React from 'react';
|
|
5
5
|
import type { PromptRequest, StreamingMessage } from './index.js';
|
|
6
|
-
import type { Message } from './messages.js';
|
|
7
6
|
/**
|
|
8
7
|
* Command kind indicates the source/type of command
|
|
9
8
|
* Based on Gemini CLI pattern for extensibility
|
|
@@ -59,31 +58,6 @@ export interface CommandContext {
|
|
|
59
58
|
/** Full raw input string */
|
|
60
59
|
raw: string;
|
|
61
60
|
};
|
|
62
|
-
/**
|
|
63
|
-
* All loaded slash commands (for help command, etc.)
|
|
64
|
-
*/
|
|
65
|
-
slashCommands?: readonly SlashCommand[];
|
|
66
|
-
/**
|
|
67
|
-
* UI operations available to commands
|
|
68
|
-
*/
|
|
69
|
-
ui?: {
|
|
70
|
-
/**
|
|
71
|
-
* Add a message to the message history
|
|
72
|
-
*/
|
|
73
|
-
addMessage: (msg: Message) => void;
|
|
74
|
-
/**
|
|
75
|
-
* Clear all messages from the history
|
|
76
|
-
*/
|
|
77
|
-
clearMessages: () => void;
|
|
78
|
-
/**
|
|
79
|
-
* Remove the currently displayed custom dialog
|
|
80
|
-
*/
|
|
81
|
-
removeDialog: () => void;
|
|
82
|
-
/**
|
|
83
|
-
* Set processing state
|
|
84
|
-
*/
|
|
85
|
-
setIsProcessing: (processing: boolean) => void;
|
|
86
|
-
};
|
|
87
61
|
/**
|
|
88
62
|
* CLI version
|
|
89
63
|
*/
|
|
@@ -8,4 +8,4 @@ export type { ClearActionReturn, CommandArg, CommandContext, CommandFlag, Comman
|
|
|
8
8
|
export type { ConfirmationRequest, CurateContextInputRequest, CurateDialogRequest, QueryDialogRequest, } from './dialogs.js';
|
|
9
9
|
export type { ActivityLog, CommandMessage, Message, StreamingMessage } from './messages.js';
|
|
10
10
|
export type { ConfirmPromptRequest, FileSelectorItemResult, FileSelectorMode, FileSelectorPromptRequest, InputPromptRequest, PromptChoice, PromptRequest, SearchPromptRequest, SelectPromptRequest, } from './prompts.js';
|
|
11
|
-
export type { AuthState, ConsumerStatus,
|
|
11
|
+
export type { AuthState, ConsumerStatus, Tab, TabId, TaskStats } from './ui.js';
|
package/dist/tui/types/ui.d.ts
CHANGED
|
@@ -7,8 +7,13 @@ export interface Tab {
|
|
|
7
7
|
id: TabId;
|
|
8
8
|
label: string;
|
|
9
9
|
}
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Statistics for task states.
|
|
12
|
+
*/
|
|
13
|
+
export type TaskStats = {
|
|
14
|
+
/** Number of tasks in 'created' status */
|
|
15
|
+
created: number;
|
|
16
|
+
/** Number of tasks in 'started' status */
|
|
17
|
+
started: number;
|
|
18
|
+
};
|
|
14
19
|
export type ConsumerStatus = 'error' | 'running' | 'starting' | 'stopped';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line utility functions for calculating visual line counts
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Calculate visual line count for a single line, accounting for wrapping
|
|
6
|
+
*
|
|
7
|
+
* @param line - The text line to measure
|
|
8
|
+
* @param maxCharsPerLine - Maximum characters per line (terminal width)
|
|
9
|
+
* @returns Number of visual lines this text will occupy
|
|
10
|
+
*/
|
|
11
|
+
export declare function getVisualLineCount(line: string, maxCharsPerLine: number): number;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Line utility functions for calculating visual line counts
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Calculate visual line count for a single line, accounting for wrapping
|
|
6
|
+
*
|
|
7
|
+
* @param line - The text line to measure
|
|
8
|
+
* @param maxCharsPerLine - Maximum characters per line (terminal width)
|
|
9
|
+
* @returns Number of visual lines this text will occupy
|
|
10
|
+
*/
|
|
11
|
+
export function getVisualLineCount(line, maxCharsPerLine) {
|
|
12
|
+
if (maxCharsPerLine <= 0 || line.length === 0) {
|
|
13
|
+
return 1;
|
|
14
|
+
}
|
|
15
|
+
return Math.ceil(line.length / maxCharsPerLine) || 1;
|
|
16
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Log utility functions for height calculations
|
|
3
|
+
*/
|
|
4
|
+
import type { MessageItemHeights } from '../hooks/index.js';
|
|
5
|
+
import type { ActivityLog } from '../types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Calculate the actual rendered height of a log item.
|
|
8
|
+
* This reflects the real space the item takes up when rendered.
|
|
9
|
+
*
|
|
10
|
+
* @param log - The activity log to analyze
|
|
11
|
+
* @param baseHeights - Base height configuration from breakpoint (maxContentLines is optional)
|
|
12
|
+
* @returns Total height in lines that this log item will occupy
|
|
13
|
+
*/
|
|
14
|
+
export declare function calculateActualLogHeight(log: ActivityLog, baseHeights: MessageItemHeights): number;
|
|
15
|
+
/**
|
|
16
|
+
* Calculate dynamic space usage for each part of a log
|
|
17
|
+
* Returns array showing how many lines each field uses
|
|
18
|
+
*
|
|
19
|
+
* @param log - The activity log to analyze
|
|
20
|
+
* @param scrollableHeight - Total available height for content area
|
|
21
|
+
* @param baseHeights - Base height configuration from breakpoint
|
|
22
|
+
* @returns Array of { field, lines } showing space breakdown, including calculated content lines
|
|
23
|
+
*/
|
|
24
|
+
export declare function calculateLogContentLimit(log: ActivityLog, scrollableHeight: number, baseHeights: Omit<MessageItemHeights, 'maxContentLines'>): Array<{
|
|
25
|
+
field: string;
|
|
26
|
+
lines: number;
|
|
27
|
+
}>;
|