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,25 @@
|
|
|
1
|
+
import type { ContributorContext, SystemPromptContributor } from '../../../../core/domain/cipher/system-prompt/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* DateTime contributor that provides current date and time.
|
|
4
|
+
*
|
|
5
|
+
* Returns the current date/time in ISO format wrapped in XML tags
|
|
6
|
+
* for clear delineation in the system prompt.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DateTimeContributor implements SystemPromptContributor {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly priority: number;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new datetime contributor.
|
|
13
|
+
*
|
|
14
|
+
* @param id - Unique identifier for this contributor
|
|
15
|
+
* @param priority - Execution priority (lower = first)
|
|
16
|
+
*/
|
|
17
|
+
constructor(id: string, priority: number);
|
|
18
|
+
/**
|
|
19
|
+
* Returns the current date and time in ISO format.
|
|
20
|
+
*
|
|
21
|
+
* @param _context - Contributor context (unused)
|
|
22
|
+
* @returns Formatted datetime string with XML tags
|
|
23
|
+
*/
|
|
24
|
+
getContent(_context: ContributorContext): Promise<string>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DateTime contributor that provides current date and time.
|
|
3
|
+
*
|
|
4
|
+
* Returns the current date/time in ISO format wrapped in XML tags
|
|
5
|
+
* for clear delineation in the system prompt.
|
|
6
|
+
*/
|
|
7
|
+
export class DateTimeContributor {
|
|
8
|
+
id;
|
|
9
|
+
priority;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new datetime contributor.
|
|
12
|
+
*
|
|
13
|
+
* @param id - Unique identifier for this contributor
|
|
14
|
+
* @param priority - Execution priority (lower = first)
|
|
15
|
+
*/
|
|
16
|
+
constructor(id, priority) {
|
|
17
|
+
this.id = id;
|
|
18
|
+
this.priority = priority;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Returns the current date and time in ISO format.
|
|
22
|
+
*
|
|
23
|
+
* @param _context - Contributor context (unused)
|
|
24
|
+
* @returns Formatted datetime string with XML tags
|
|
25
|
+
*/
|
|
26
|
+
async getContent(_context) {
|
|
27
|
+
return `<dateTime>Current date and time: ${new Date().toISOString()}</dateTime>`;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ContributorContext, SystemPromptContributor } from '../../../../core/domain/cipher/system-prompt/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Environment contributor that provides environment context.
|
|
4
|
+
*
|
|
5
|
+
* Formats the environment context (working directory, git status,
|
|
6
|
+
* platform info, file tree, etc.) for inclusion in the system prompt.
|
|
7
|
+
*/
|
|
8
|
+
export declare class EnvironmentContributor implements SystemPromptContributor {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly priority: number;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new environment contributor.
|
|
13
|
+
*
|
|
14
|
+
* @param id - Unique identifier for this contributor
|
|
15
|
+
* @param priority - Execution priority (lower = first)
|
|
16
|
+
*/
|
|
17
|
+
constructor(id: string, priority: number);
|
|
18
|
+
/**
|
|
19
|
+
* Formats and returns the environment context.
|
|
20
|
+
*
|
|
21
|
+
* @param context - Contributor context with environment context
|
|
22
|
+
* @returns Formatted environment context string, or empty string if not available
|
|
23
|
+
*/
|
|
24
|
+
getContent(context: ContributorContext): Promise<string>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment contributor that provides environment context.
|
|
3
|
+
*
|
|
4
|
+
* Formats the environment context (working directory, git status,
|
|
5
|
+
* platform info, file tree, etc.) for inclusion in the system prompt.
|
|
6
|
+
*/
|
|
7
|
+
export class EnvironmentContributor {
|
|
8
|
+
id;
|
|
9
|
+
priority;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new environment contributor.
|
|
12
|
+
*
|
|
13
|
+
* @param id - Unique identifier for this contributor
|
|
14
|
+
* @param priority - Execution priority (lower = first)
|
|
15
|
+
*/
|
|
16
|
+
constructor(id, priority) {
|
|
17
|
+
this.id = id;
|
|
18
|
+
this.priority = priority;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Formats and returns the environment context.
|
|
22
|
+
*
|
|
23
|
+
* @param context - Contributor context with environment context
|
|
24
|
+
* @returns Formatted environment context string, or empty string if not available
|
|
25
|
+
*/
|
|
26
|
+
async getContent(context) {
|
|
27
|
+
if (!context.environmentContext) {
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
const env = context.environmentContext;
|
|
31
|
+
const dateOptions = {
|
|
32
|
+
day: 'numeric',
|
|
33
|
+
month: 'short',
|
|
34
|
+
weekday: 'short',
|
|
35
|
+
year: 'numeric',
|
|
36
|
+
};
|
|
37
|
+
const formattedDate = new Date().toLocaleDateString('en-US', dateOptions);
|
|
38
|
+
let result = '<env>\n';
|
|
39
|
+
result += ` Working directory: ${env.workingDirectory}\n`;
|
|
40
|
+
result += ` Is directory a git repo: ${env.isGitRepository ? 'Yes' : 'No'}\n`;
|
|
41
|
+
result += ` Platform: ${env.platform}\n`;
|
|
42
|
+
result += ` OS Version: ${env.osVersion}\n`;
|
|
43
|
+
result += ` Node Version: ${env.nodeVersion}\n`;
|
|
44
|
+
result += ` Today's date: ${formattedDate}\n`;
|
|
45
|
+
result += '</env>';
|
|
46
|
+
if (env.fileTree) {
|
|
47
|
+
result += '\n\n' + env.fileTree;
|
|
48
|
+
}
|
|
49
|
+
if (env.brvStructure) {
|
|
50
|
+
result += '\n\n' + env.brvStructure;
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ContributorContext, SystemPromptContributor } from '../../../../core/domain/cipher/system-prompt/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Options for file contributor configuration.
|
|
4
|
+
*/
|
|
5
|
+
export interface FileContributorOptions {
|
|
6
|
+
/** Base path for resolving relative file paths */
|
|
7
|
+
basePath?: string;
|
|
8
|
+
/** Whether to cache file contents (default: true) */
|
|
9
|
+
cache?: boolean;
|
|
10
|
+
/** Whether to render template variables (default: false) */
|
|
11
|
+
renderTemplate?: boolean;
|
|
12
|
+
/** Whether to validate file modification time (default: true) */
|
|
13
|
+
validateMtime?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* File contributor that loads prompt content from YAML files.
|
|
17
|
+
*
|
|
18
|
+
* Features:
|
|
19
|
+
* - Loads and parses YAML prompt files
|
|
20
|
+
* - Validates content using Zod schema
|
|
21
|
+
* - Caches content with optional mtime validation
|
|
22
|
+
*/
|
|
23
|
+
export declare class FileContributor implements SystemPromptContributor {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
readonly priority: number;
|
|
26
|
+
private readonly basePath;
|
|
27
|
+
private readonly cache;
|
|
28
|
+
private readonly filepath;
|
|
29
|
+
private readonly renderTemplate;
|
|
30
|
+
private readonly useCache;
|
|
31
|
+
private readonly validateMtime;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new file contributor.
|
|
34
|
+
*
|
|
35
|
+
* @param id - Unique identifier for this contributor
|
|
36
|
+
* @param priority - Execution priority (lower = first)
|
|
37
|
+
* @param filepath - Path to the YAML prompt file
|
|
38
|
+
* @param options - Configuration options
|
|
39
|
+
*/
|
|
40
|
+
constructor(id: string, priority: number, filepath: string, options?: FileContributorOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Loads and returns the prompt content from the file.
|
|
43
|
+
*
|
|
44
|
+
* @param context - Contributor context with template variables
|
|
45
|
+
* @returns Prompt content string
|
|
46
|
+
*/
|
|
47
|
+
getContent(context: ContributorContext): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Invalidate the cache for this contributor's file.
|
|
50
|
+
*/
|
|
51
|
+
invalidateCache(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Render template variables in the prompt content.
|
|
54
|
+
*
|
|
55
|
+
* @param template - Template string with {{variable}} placeholders
|
|
56
|
+
* @param context - Contributor context with values
|
|
57
|
+
* @returns Rendered string
|
|
58
|
+
*/
|
|
59
|
+
private renderTemplateVariables;
|
|
60
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { load as loadYaml } from 'js-yaml';
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { SystemPromptError } from '../../../../core/domain/cipher/errors/system-prompt-error.js';
|
|
5
|
+
import { PromptCache } from '../prompt-cache.js';
|
|
6
|
+
import { PromptConfigSchema } from '../schemas.js';
|
|
7
|
+
/**
|
|
8
|
+
* File contributor that loads prompt content from YAML files.
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - Loads and parses YAML prompt files
|
|
12
|
+
* - Validates content using Zod schema
|
|
13
|
+
* - Caches content with optional mtime validation
|
|
14
|
+
*/
|
|
15
|
+
export class FileContributor {
|
|
16
|
+
id;
|
|
17
|
+
priority;
|
|
18
|
+
basePath;
|
|
19
|
+
cache;
|
|
20
|
+
filepath;
|
|
21
|
+
renderTemplate;
|
|
22
|
+
useCache;
|
|
23
|
+
validateMtime;
|
|
24
|
+
/**
|
|
25
|
+
* Creates a new file contributor.
|
|
26
|
+
*
|
|
27
|
+
* @param id - Unique identifier for this contributor
|
|
28
|
+
* @param priority - Execution priority (lower = first)
|
|
29
|
+
* @param filepath - Path to the YAML prompt file
|
|
30
|
+
* @param options - Configuration options
|
|
31
|
+
*/
|
|
32
|
+
constructor(id, priority, filepath, options = {}) {
|
|
33
|
+
this.id = id;
|
|
34
|
+
this.priority = priority;
|
|
35
|
+
this.filepath = filepath;
|
|
36
|
+
this.basePath = options.basePath ?? '';
|
|
37
|
+
this.useCache = options.cache ?? true;
|
|
38
|
+
this.renderTemplate = options.renderTemplate ?? false;
|
|
39
|
+
this.validateMtime = options.validateMtime ?? true;
|
|
40
|
+
this.cache = new PromptCache({
|
|
41
|
+
maxSize: 50,
|
|
42
|
+
validateMtime: this.validateMtime,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Loads and returns the prompt content from the file.
|
|
47
|
+
*
|
|
48
|
+
* @param context - Contributor context with template variables
|
|
49
|
+
* @returns Prompt content string
|
|
50
|
+
*/
|
|
51
|
+
async getContent(context) {
|
|
52
|
+
const fullPath = this.basePath ? path.join(this.basePath, this.filepath) : this.filepath;
|
|
53
|
+
// Check cache first (only for raw content, not rendered)
|
|
54
|
+
let prompt;
|
|
55
|
+
if (this.useCache) {
|
|
56
|
+
const cached = this.cache.get(fullPath);
|
|
57
|
+
if (cached?.prompt) {
|
|
58
|
+
prompt = cached.prompt;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Load from file if not cached
|
|
62
|
+
if (!prompt) {
|
|
63
|
+
if (!fs.existsSync(fullPath)) {
|
|
64
|
+
throw SystemPromptError.fileNotFound(fullPath);
|
|
65
|
+
}
|
|
66
|
+
let yamlContent;
|
|
67
|
+
try {
|
|
68
|
+
yamlContent = fs.readFileSync(fullPath, 'utf8');
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
72
|
+
throw SystemPromptError.fileReadFailed(fullPath, reason);
|
|
73
|
+
}
|
|
74
|
+
const rawConfig = loadYaml(yamlContent);
|
|
75
|
+
// Validate with Zod schema
|
|
76
|
+
const parseResult = PromptConfigSchema.safeParse(rawConfig);
|
|
77
|
+
if (!parseResult.success) {
|
|
78
|
+
const errorMessages = parseResult.error.errors.map((err) => `${err.path.join('.')}: ${err.message}`).join('; ');
|
|
79
|
+
throw SystemPromptError.configInvalid(errorMessages, parseResult.error.errors);
|
|
80
|
+
}
|
|
81
|
+
const config = parseResult.data;
|
|
82
|
+
if (!config.prompt) {
|
|
83
|
+
throw SystemPromptError.configMissingField('prompt', fullPath);
|
|
84
|
+
}
|
|
85
|
+
// Cache the config
|
|
86
|
+
if (this.useCache) {
|
|
87
|
+
this.cache.set(fullPath, config);
|
|
88
|
+
}
|
|
89
|
+
prompt = config.prompt;
|
|
90
|
+
}
|
|
91
|
+
// Render template if enabled
|
|
92
|
+
if (this.renderTemplate) {
|
|
93
|
+
return this.renderTemplateVariables(prompt, context);
|
|
94
|
+
}
|
|
95
|
+
return prompt;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Invalidate the cache for this contributor's file.
|
|
99
|
+
*/
|
|
100
|
+
invalidateCache() {
|
|
101
|
+
const fullPath = this.basePath ? path.join(this.basePath, this.filepath) : this.filepath;
|
|
102
|
+
this.cache.invalidate(fullPath);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Render template variables in the prompt content.
|
|
106
|
+
*
|
|
107
|
+
* @param template - Template string with {{variable}} placeholders
|
|
108
|
+
* @param context - Contributor context with values
|
|
109
|
+
* @returns Rendered string
|
|
110
|
+
*/
|
|
111
|
+
renderTemplateVariables(template, context) {
|
|
112
|
+
let result = template;
|
|
113
|
+
// Build variables from context
|
|
114
|
+
/* eslint-disable camelcase */
|
|
115
|
+
const variables = {
|
|
116
|
+
available_markers: context.availableMarkers ? Object.keys(context.availableMarkers).join(', ') : '',
|
|
117
|
+
available_tools: context.availableTools?.join(', ') ?? '',
|
|
118
|
+
datetime: `<dateTime>Current date and time: ${new Date().toISOString()}</dateTime>`,
|
|
119
|
+
};
|
|
120
|
+
/* eslint-enable camelcase */
|
|
121
|
+
// Replace {{variable}} with values
|
|
122
|
+
for (const [key, value] of Object.entries(variables)) {
|
|
123
|
+
const regex = new RegExp(`{{\\s*${key}\\s*}}`, 'g');
|
|
124
|
+
result = result.replaceAll(regex, value ?? '');
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export { AgentPromptContributor } from './agent-prompt-contributor.js';
|
|
2
|
+
export type { AgentPromptContributorOptions } from './agent-prompt-contributor.js';
|
|
3
|
+
export { CompanionContributor } from './companion-contributor.js';
|
|
4
|
+
export type { CompanionContributorOptions } from './companion-contributor.js';
|
|
5
|
+
export { ContextTreeStructureContributor } from './context-tree-structure-contributor.js';
|
|
6
|
+
export type { ContextTreeStructureContributorOptions } from './context-tree-structure-contributor.js';
|
|
7
|
+
export { DateTimeContributor } from './datetime-contributor.js';
|
|
8
|
+
export { EnvironmentContributor } from './environment-contributor.js';
|
|
9
|
+
export { FileContributor } from './file-contributor.js';
|
|
10
|
+
export type { FileContributorOptions } from './file-contributor.js';
|
|
11
|
+
export { MemoryContributor } from './memory-contributor.js';
|
|
12
|
+
export type { MemoryContributorOptions } from './memory-contributor.js';
|
|
13
|
+
export { StaticContributor } from './static-contributor.js';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { AgentPromptContributor } from './agent-prompt-contributor.js';
|
|
2
|
+
export { CompanionContributor } from './companion-contributor.js';
|
|
3
|
+
export { ContextTreeStructureContributor } from './context-tree-structure-contributor.js';
|
|
4
|
+
export { DateTimeContributor } from './datetime-contributor.js';
|
|
5
|
+
export { EnvironmentContributor } from './environment-contributor.js';
|
|
6
|
+
export { FileContributor } from './file-contributor.js';
|
|
7
|
+
export { MemoryContributor } from './memory-contributor.js';
|
|
8
|
+
export { StaticContributor } from './static-contributor.js';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ContributorContext, SystemPromptContributor } from '../../../../core/domain/cipher/system-prompt/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Options for memory contributor configuration.
|
|
4
|
+
*/
|
|
5
|
+
export interface MemoryContributorOptions {
|
|
6
|
+
/** Whether to include tags in memory display (default: true) */
|
|
7
|
+
includeTags?: boolean;
|
|
8
|
+
/** Maximum number of memories to include (default: 20) */
|
|
9
|
+
limit?: number;
|
|
10
|
+
/** Only include pinned memories (default: false) */
|
|
11
|
+
pinnedOnly?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Memory contributor that loads agent memories.
|
|
15
|
+
*
|
|
16
|
+
* Retrieves memories from the memory manager and formats them
|
|
17
|
+
* for inclusion in the system prompt.
|
|
18
|
+
*/
|
|
19
|
+
export declare class MemoryContributor implements SystemPromptContributor {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly priority: number;
|
|
22
|
+
private readonly includeTags;
|
|
23
|
+
private readonly limit;
|
|
24
|
+
private readonly pinnedOnly;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a new memory contributor.
|
|
27
|
+
*
|
|
28
|
+
* @param id - Unique identifier for this contributor
|
|
29
|
+
* @param priority - Execution priority (lower = first)
|
|
30
|
+
* @param options - Configuration options
|
|
31
|
+
*/
|
|
32
|
+
constructor(id: string, priority: number, options?: MemoryContributorOptions);
|
|
33
|
+
/**
|
|
34
|
+
* Loads and formats memories from the memory manager.
|
|
35
|
+
*
|
|
36
|
+
* @param context - Contributor context with memory manager
|
|
37
|
+
* @returns Formatted memories string, or empty string if no memories
|
|
38
|
+
*/
|
|
39
|
+
getContent(context: ContributorContext): Promise<string>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory contributor that loads agent memories.
|
|
3
|
+
*
|
|
4
|
+
* Retrieves memories from the memory manager and formats them
|
|
5
|
+
* for inclusion in the system prompt.
|
|
6
|
+
*/
|
|
7
|
+
export class MemoryContributor {
|
|
8
|
+
id;
|
|
9
|
+
priority;
|
|
10
|
+
includeTags;
|
|
11
|
+
limit;
|
|
12
|
+
pinnedOnly;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new memory contributor.
|
|
15
|
+
*
|
|
16
|
+
* @param id - Unique identifier for this contributor
|
|
17
|
+
* @param priority - Execution priority (lower = first)
|
|
18
|
+
* @param options - Configuration options
|
|
19
|
+
*/
|
|
20
|
+
constructor(id, priority, options = {}) {
|
|
21
|
+
this.id = id;
|
|
22
|
+
this.priority = priority;
|
|
23
|
+
this.includeTags = options.includeTags ?? true;
|
|
24
|
+
this.limit = options.limit ?? 20;
|
|
25
|
+
this.pinnedOnly = options.pinnedOnly ?? false;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Loads and formats memories from the memory manager.
|
|
29
|
+
*
|
|
30
|
+
* @param context - Contributor context with memory manager
|
|
31
|
+
* @returns Formatted memories string, or empty string if no memories
|
|
32
|
+
*/
|
|
33
|
+
async getContent(context) {
|
|
34
|
+
if (!context.memoryManager) {
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
const memories = await context.memoryManager.list({
|
|
39
|
+
limit: this.limit,
|
|
40
|
+
...(this.pinnedOnly && { pinned: true }),
|
|
41
|
+
});
|
|
42
|
+
if (!memories || memories.length === 0) {
|
|
43
|
+
return '';
|
|
44
|
+
}
|
|
45
|
+
const items = memories.map((memory) => {
|
|
46
|
+
const tags = this.includeTags && memory.tags?.length ? ` [${memory.tags.join(', ')}]` : '';
|
|
47
|
+
return `- ${memory.content}${tags}`;
|
|
48
|
+
});
|
|
49
|
+
return `\n# Agent Memories\n${items.join('\n')}\n`;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Silently return empty string on error to not break prompt generation
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ContributorContext, SystemPromptContributor } from '../../../../core/domain/cipher/system-prompt/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Static contributor that returns inline content.
|
|
4
|
+
*
|
|
5
|
+
* Use this for fixed prompt content that doesn't change at runtime.
|
|
6
|
+
*/
|
|
7
|
+
export declare class StaticContributor implements SystemPromptContributor {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly priority: number;
|
|
10
|
+
private readonly content;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new static contributor.
|
|
13
|
+
*
|
|
14
|
+
* @param id - Unique identifier for this contributor
|
|
15
|
+
* @param priority - Execution priority (lower = first)
|
|
16
|
+
* @param content - Static content to return
|
|
17
|
+
*/
|
|
18
|
+
constructor(id: string, priority: number, content: string);
|
|
19
|
+
/**
|
|
20
|
+
* Returns the static content.
|
|
21
|
+
*
|
|
22
|
+
* @param _context - Contributor context (unused)
|
|
23
|
+
* @returns Static content string
|
|
24
|
+
*/
|
|
25
|
+
getContent(_context: ContributorContext): Promise<string>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static contributor that returns inline content.
|
|
3
|
+
*
|
|
4
|
+
* Use this for fixed prompt content that doesn't change at runtime.
|
|
5
|
+
*/
|
|
6
|
+
export class StaticContributor {
|
|
7
|
+
id;
|
|
8
|
+
priority;
|
|
9
|
+
content;
|
|
10
|
+
/**
|
|
11
|
+
* Creates a new static contributor.
|
|
12
|
+
*
|
|
13
|
+
* @param id - Unique identifier for this contributor
|
|
14
|
+
* @param priority - Execution priority (lower = first)
|
|
15
|
+
* @param content - Static content to return
|
|
16
|
+
*/
|
|
17
|
+
constructor(id, priority, content) {
|
|
18
|
+
this.id = id;
|
|
19
|
+
this.priority = priority;
|
|
20
|
+
this.content = content;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Returns the static content.
|
|
24
|
+
*
|
|
25
|
+
* @param _context - Contributor context (unused)
|
|
26
|
+
* @returns Static content string
|
|
27
|
+
*/
|
|
28
|
+
async getContent(_context) {
|
|
29
|
+
return this.content;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment context information for system prompts.
|
|
3
|
+
* Provides the Cipher agent with awareness of its operating environment.
|
|
4
|
+
*/
|
|
5
|
+
export interface EnvironmentContext {
|
|
6
|
+
/** Formatted .brv directory structure explanation */
|
|
7
|
+
brvStructure: string;
|
|
8
|
+
/** Formatted project file tree */
|
|
9
|
+
fileTree: string;
|
|
10
|
+
/** Whether the working directory is a git repository */
|
|
11
|
+
isGitRepository: boolean;
|
|
12
|
+
/** Node.js version */
|
|
13
|
+
nodeVersion: string;
|
|
14
|
+
/** Operating system version */
|
|
15
|
+
osVersion: string;
|
|
16
|
+
/** Operating system platform (darwin, linux, win32) */
|
|
17
|
+
platform: string;
|
|
18
|
+
/** Absolute path to the working directory */
|
|
19
|
+
workingDirectory: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Options for building environment context.
|
|
23
|
+
* @deprecated Use ValidatedEnvironmentContextOptions from schemas.ts instead
|
|
24
|
+
*/
|
|
25
|
+
export interface EnvironmentContextOptions {
|
|
26
|
+
/** Whether to include .brv structure explanation (default: true) */
|
|
27
|
+
includeBrvStructure?: boolean;
|
|
28
|
+
/** Whether to include file tree (default: true) */
|
|
29
|
+
includeFileTree?: boolean;
|
|
30
|
+
/** Maximum depth for file tree traversal (default: 3) */
|
|
31
|
+
maxFileTreeDepth?: number;
|
|
32
|
+
/** Maximum number of entries in file tree (default: 100) */
|
|
33
|
+
maxFileTreeEntries?: number;
|
|
34
|
+
/** Working directory path */
|
|
35
|
+
workingDirectory: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Builds environment context for system prompts.
|
|
39
|
+
*
|
|
40
|
+
* Gathers information about:
|
|
41
|
+
* - Working directory
|
|
42
|
+
* - Git repository status
|
|
43
|
+
* - Platform and OS version
|
|
44
|
+
* - Project file tree
|
|
45
|
+
* - .brv directory structure
|
|
46
|
+
*/
|
|
47
|
+
export declare class EnvironmentContextBuilder {
|
|
48
|
+
/**
|
|
49
|
+
* Build the complete environment context.
|
|
50
|
+
*
|
|
51
|
+
* @param options - Configuration options
|
|
52
|
+
* @returns Environment context object
|
|
53
|
+
*/
|
|
54
|
+
build(options: EnvironmentContextOptions): Promise<EnvironmentContext>;
|
|
55
|
+
/**
|
|
56
|
+
* Build an explanation of the .brv directory structure.
|
|
57
|
+
*
|
|
58
|
+
* @param dir - Working directory path
|
|
59
|
+
* @returns Formatted .brv structure explanation
|
|
60
|
+
*/
|
|
61
|
+
private buildBrvStructure;
|
|
62
|
+
/**
|
|
63
|
+
* Build a formatted file tree of the project.
|
|
64
|
+
*
|
|
65
|
+
* @param dir - Root directory to start from
|
|
66
|
+
* @param maxDepth - Maximum traversal depth
|
|
67
|
+
* @param maxEntries - Maximum number of entries to include
|
|
68
|
+
* @returns Formatted file tree string
|
|
69
|
+
*/
|
|
70
|
+
private buildFileTree;
|
|
71
|
+
/**
|
|
72
|
+
* Check if a directory is a git repository.
|
|
73
|
+
*
|
|
74
|
+
* @param dir - Directory path to check
|
|
75
|
+
* @returns True if the directory contains a .git folder
|
|
76
|
+
*/
|
|
77
|
+
private detectGitRepository;
|
|
78
|
+
/**
|
|
79
|
+
* Get description for a .brv directory.
|
|
80
|
+
*
|
|
81
|
+
* @param name - Directory name
|
|
82
|
+
* @returns Description string
|
|
83
|
+
*/
|
|
84
|
+
private getBrvDirectoryDescription;
|
|
85
|
+
/**
|
|
86
|
+
* Get description for a .brv file.
|
|
87
|
+
*
|
|
88
|
+
* @param name - File name
|
|
89
|
+
* @returns Description string
|
|
90
|
+
*/
|
|
91
|
+
private getBrvFileDescription;
|
|
92
|
+
/**
|
|
93
|
+
* Check if a file or directory should be excluded from the tree.
|
|
94
|
+
*
|
|
95
|
+
* @param name - File or directory name
|
|
96
|
+
* @returns True if should be excluded
|
|
97
|
+
*/
|
|
98
|
+
private shouldExclude;
|
|
99
|
+
/**
|
|
100
|
+
* Recursively traverse a directory and build tree lines.
|
|
101
|
+
*
|
|
102
|
+
* @param options - Traversal options
|
|
103
|
+
* @param options.dir - Current directory path
|
|
104
|
+
* @param options.maxDepth - Maximum depth to traverse
|
|
105
|
+
* @param options.maxEntries - Maximum entries to include
|
|
106
|
+
* @param options.currentDepth - Current traversal depth
|
|
107
|
+
* @param options.entriesCount - Counter for entries added (mutable object with value property)
|
|
108
|
+
* @param options.truncatedCount - Counter for truncated entries (mutable object with value property)
|
|
109
|
+
* @param options.lines - Array to append lines to
|
|
110
|
+
*/
|
|
111
|
+
private traverseDirectory;
|
|
112
|
+
}
|