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,143 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Permission values for agent operations.
|
|
4
|
+
* - allow: Operation is permitted without asking
|
|
5
|
+
* - deny: Operation is blocked
|
|
6
|
+
* - ask: User must approve the operation
|
|
7
|
+
*/
|
|
8
|
+
export const PermissionValue = z.enum(['allow', 'deny', 'ask']);
|
|
9
|
+
/**
|
|
10
|
+
* Agent mode determines how the agent can be used.
|
|
11
|
+
* - primary: Entry point agent (e.g., plan, cipher)
|
|
12
|
+
* - subagent: Can only be invoked by primary agents via TaskTool
|
|
13
|
+
* - all: Can be used as both primary and subagent
|
|
14
|
+
*/
|
|
15
|
+
export const AgentMode = z.enum(['primary', 'subagent', 'all']);
|
|
16
|
+
/**
|
|
17
|
+
* Permission configuration for an agent.
|
|
18
|
+
* Controls what operations the agent is allowed to perform.
|
|
19
|
+
*/
|
|
20
|
+
export const AgentPermissionSchema = z.object({
|
|
21
|
+
/**
|
|
22
|
+
* Permission map for bash commands.
|
|
23
|
+
* Keys are command patterns (supports wildcards like 'git*', 'ls*').
|
|
24
|
+
* Value '*' applies to all commands not matched by other patterns.
|
|
25
|
+
* @default { '*': 'allow' }
|
|
26
|
+
*/
|
|
27
|
+
bash: z.record(z.string(), PermissionValue).default({ '*': 'allow' }),
|
|
28
|
+
/**
|
|
29
|
+
* Permission for file editing operations (edit_file, write_file).
|
|
30
|
+
* @default 'allow'
|
|
31
|
+
*/
|
|
32
|
+
edit: PermissionValue.default('allow'),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Agent information schema.
|
|
36
|
+
* Defines the configuration for a Cipher agent (modeled after OpenCode's Agent.Info).
|
|
37
|
+
*/
|
|
38
|
+
export const AgentInfoSchema = z.object({
|
|
39
|
+
/**
|
|
40
|
+
* Optional color for UI display (hex code like #RRGGBB).
|
|
41
|
+
*/
|
|
42
|
+
color: z.string().optional(),
|
|
43
|
+
/**
|
|
44
|
+
* Human-readable description of when to use this agent.
|
|
45
|
+
* Displayed to LLM when selecting subagents via TaskTool.
|
|
46
|
+
*/
|
|
47
|
+
description: z.string().optional(),
|
|
48
|
+
/**
|
|
49
|
+
* Whether this agent is hidden from user selection.
|
|
50
|
+
* Hidden agents can still be invoked programmatically.
|
|
51
|
+
* @default false
|
|
52
|
+
*/
|
|
53
|
+
hidden: z.boolean().default(false),
|
|
54
|
+
/**
|
|
55
|
+
* Maximum number of LLM iterations for this agent.
|
|
56
|
+
* Overrides the default maxIterations from config.
|
|
57
|
+
*/
|
|
58
|
+
maxIterations: z.number().int().positive().optional(),
|
|
59
|
+
/**
|
|
60
|
+
* Agent mode: primary, subagent, or all.
|
|
61
|
+
* - primary: Direct entry point for users
|
|
62
|
+
* - subagent: Invoked via TaskTool from primary agents
|
|
63
|
+
* - all: Can be used in both contexts
|
|
64
|
+
*/
|
|
65
|
+
mode: AgentMode,
|
|
66
|
+
/**
|
|
67
|
+
* Optional model override for this agent.
|
|
68
|
+
* If not specified, uses the default model from agent config.
|
|
69
|
+
*/
|
|
70
|
+
model: z
|
|
71
|
+
.object({
|
|
72
|
+
modelId: z.string(),
|
|
73
|
+
providerId: z.string().optional(),
|
|
74
|
+
})
|
|
75
|
+
.optional(),
|
|
76
|
+
/**
|
|
77
|
+
* Unique identifier for the agent.
|
|
78
|
+
* Used to reference the agent in TaskTool and registry.
|
|
79
|
+
*/
|
|
80
|
+
name: z.string().min(1),
|
|
81
|
+
/**
|
|
82
|
+
* Whether this is a native (built-in) agent.
|
|
83
|
+
* Native agents are defined in code, not config files.
|
|
84
|
+
* @default true
|
|
85
|
+
*/
|
|
86
|
+
native: z.boolean().default(true),
|
|
87
|
+
/**
|
|
88
|
+
* Permission configuration for this agent.
|
|
89
|
+
* Controls file editing and bash command access.
|
|
90
|
+
*/
|
|
91
|
+
permission: AgentPermissionSchema.default({
|
|
92
|
+
bash: { '*': 'allow' },
|
|
93
|
+
edit: 'allow',
|
|
94
|
+
}),
|
|
95
|
+
/**
|
|
96
|
+
* Inline system prompt for this agent.
|
|
97
|
+
* Used when promptFile is not specified.
|
|
98
|
+
*/
|
|
99
|
+
prompt: z.string().optional(),
|
|
100
|
+
/**
|
|
101
|
+
* Reference to a YAML prompt file in src/resources/prompts/.
|
|
102
|
+
* The file content will be used as the agent's system prompt.
|
|
103
|
+
* Takes precedence over inline `prompt` if both are specified.
|
|
104
|
+
*/
|
|
105
|
+
promptFile: z.string().optional(),
|
|
106
|
+
/**
|
|
107
|
+
* LLM temperature for this agent.
|
|
108
|
+
* Controls randomness/creativity of responses.
|
|
109
|
+
*/
|
|
110
|
+
temperature: z.number().min(0).max(2).optional(),
|
|
111
|
+
/**
|
|
112
|
+
* Tool enable/disable configuration.
|
|
113
|
+
* Keys are tool names, values are boolean (true = enabled, false = disabled).
|
|
114
|
+
* Supports wildcard '*' for all tools.
|
|
115
|
+
* Tools not listed inherit from parent/default configuration.
|
|
116
|
+
*/
|
|
117
|
+
tools: z.record(z.string(), z.boolean()).default({}),
|
|
118
|
+
});
|
|
119
|
+
/**
|
|
120
|
+
* Default permission configuration for agents.
|
|
121
|
+
*/
|
|
122
|
+
export const DEFAULT_AGENT_PERMISSION = {
|
|
123
|
+
bash: { '*': 'allow' },
|
|
124
|
+
edit: 'allow',
|
|
125
|
+
};
|
|
126
|
+
/**
|
|
127
|
+
* Read-only permission configuration (for planning agents).
|
|
128
|
+
*/
|
|
129
|
+
export const READONLY_AGENT_PERMISSION = {
|
|
130
|
+
bash: {
|
|
131
|
+
'*': 'ask',
|
|
132
|
+
'cat*': 'allow',
|
|
133
|
+
'find*': 'allow',
|
|
134
|
+
'git*': 'allow',
|
|
135
|
+
'grep*': 'allow',
|
|
136
|
+
'head*': 'allow',
|
|
137
|
+
'ls*': 'allow',
|
|
138
|
+
'pwd*': 'allow',
|
|
139
|
+
'tail*': 'allow',
|
|
140
|
+
'tree*': 'allow',
|
|
141
|
+
},
|
|
142
|
+
edit: 'deny',
|
|
143
|
+
};
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { AgentInfo } from './agent-info.js';
|
|
2
|
+
/**
|
|
3
|
+
* Built-in agent names.
|
|
4
|
+
* These constants ensure type safety and prevent typos.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AgentName: {
|
|
7
|
+
/** Default primary agent with full capabilities */
|
|
8
|
+
readonly CIPHER: "cipher";
|
|
9
|
+
/** Subagent for creating/updating knowledge topics */
|
|
10
|
+
readonly CURATE: "curate";
|
|
11
|
+
/** Subagent for context tree explore and knowledge discovery */
|
|
12
|
+
readonly EXPLORE: "explore";
|
|
13
|
+
/** Primary agent for orchestrating curation workflow */
|
|
14
|
+
readonly PLAN: "plan";
|
|
15
|
+
};
|
|
16
|
+
export type KnownAgent = (typeof AgentName)[keyof typeof AgentName];
|
|
17
|
+
/**
|
|
18
|
+
* AgentRegistry - Singleton registry for managing agent definitions.
|
|
19
|
+
*
|
|
20
|
+
* Provides methods to:
|
|
21
|
+
* - Get agent by name
|
|
22
|
+
* - List all agents
|
|
23
|
+
* - List agents by mode (primary, subagent)
|
|
24
|
+
* - Register custom agents
|
|
25
|
+
*/
|
|
26
|
+
export declare class AgentRegistry {
|
|
27
|
+
private static instance;
|
|
28
|
+
private agents;
|
|
29
|
+
private constructor();
|
|
30
|
+
/**
|
|
31
|
+
* Get the singleton instance of AgentRegistry.
|
|
32
|
+
*/
|
|
33
|
+
static getInstance(): AgentRegistry;
|
|
34
|
+
/**
|
|
35
|
+
* Reset the singleton instance (for testing).
|
|
36
|
+
*/
|
|
37
|
+
static reset(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Get an agent by name.
|
|
40
|
+
* @param name - Agent name
|
|
41
|
+
* @returns Agent info or undefined if not found
|
|
42
|
+
*/
|
|
43
|
+
get(name: string): AgentInfo | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Get agent names as a formatted list for display.
|
|
46
|
+
* @returns Formatted string of agent names and descriptions
|
|
47
|
+
*/
|
|
48
|
+
getSubagentDescriptions(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Check if an agent exists.
|
|
51
|
+
* @param name - Agent name
|
|
52
|
+
* @returns true if agent exists
|
|
53
|
+
*/
|
|
54
|
+
has(name: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* List all registered agents.
|
|
57
|
+
* @returns Array of agent info objects
|
|
58
|
+
*/
|
|
59
|
+
list(): AgentInfo[];
|
|
60
|
+
/**
|
|
61
|
+
* List agents by mode.
|
|
62
|
+
* @param mode - Agent mode to filter by
|
|
63
|
+
* @returns Array of agents matching the mode
|
|
64
|
+
*/
|
|
65
|
+
listByMode(mode: 'all' | 'primary' | 'subagent'): AgentInfo[];
|
|
66
|
+
/**
|
|
67
|
+
* List primary agents available for direct user interaction.
|
|
68
|
+
* Returns agents that can be used as entry points (mode: 'primary' or 'all').
|
|
69
|
+
* Excludes hidden agents.
|
|
70
|
+
* @returns Array of primary agent info objects
|
|
71
|
+
*/
|
|
72
|
+
listPrimaryAgents(): AgentInfo[];
|
|
73
|
+
/**
|
|
74
|
+
* List subagents available for TaskTool.
|
|
75
|
+
* Returns agents that can be invoked as subagents (mode: 'subagent' or 'all').
|
|
76
|
+
* Excludes hidden agents.
|
|
77
|
+
* @returns Array of subagent info objects
|
|
78
|
+
*/
|
|
79
|
+
listSubagents(): AgentInfo[];
|
|
80
|
+
/**
|
|
81
|
+
* Register a custom agent.
|
|
82
|
+
* @param agent - Agent info to register
|
|
83
|
+
* @throws Error if agent with same name already exists (unless overwrite is true)
|
|
84
|
+
*/
|
|
85
|
+
register(agent: AgentInfo, overwrite?: boolean): void;
|
|
86
|
+
/**
|
|
87
|
+
* Unregister an agent.
|
|
88
|
+
* @param name - Agent name to remove
|
|
89
|
+
* @returns true if agent was removed, false if not found
|
|
90
|
+
*/
|
|
91
|
+
unregister(name: string): boolean;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Convenience function to get the AgentRegistry instance.
|
|
95
|
+
*/
|
|
96
|
+
export declare function getAgentRegistry(): AgentRegistry;
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { ToolName } from '../tools/constants.js';
|
|
2
|
+
import { AgentInfoSchema, DEFAULT_AGENT_PERMISSION, READONLY_AGENT_PERMISSION, } from './agent-info.js';
|
|
3
|
+
/**
|
|
4
|
+
* Built-in agent names.
|
|
5
|
+
* These constants ensure type safety and prevent typos.
|
|
6
|
+
*/
|
|
7
|
+
export const AgentName = {
|
|
8
|
+
/** Default primary agent with full capabilities */
|
|
9
|
+
CIPHER: 'cipher',
|
|
10
|
+
/** Subagent for creating/updating knowledge topics */
|
|
11
|
+
CURATE: 'curate',
|
|
12
|
+
/** Subagent for context tree explore and knowledge discovery */
|
|
13
|
+
EXPLORE: 'explore',
|
|
14
|
+
/** Primary agent for orchestrating curation workflow */
|
|
15
|
+
PLAN: 'plan',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Tools available to the Query subagent.
|
|
19
|
+
* Read-only tools for context tree exploration.
|
|
20
|
+
*/
|
|
21
|
+
const EXPLORE_AGENT_TOOLS = {
|
|
22
|
+
[ToolName.BASH_EXEC]: false,
|
|
23
|
+
[ToolName.CREATE_KNOWLEDGE_TOPIC]: false,
|
|
24
|
+
[ToolName.CURATE]: false,
|
|
25
|
+
[ToolName.EDIT_FILE]: false,
|
|
26
|
+
[ToolName.GLOB_FILES]: true,
|
|
27
|
+
[ToolName.GREP_CONTENT]: true,
|
|
28
|
+
[ToolName.LIST_DIRECTORY]: true,
|
|
29
|
+
[ToolName.READ_FILE]: true,
|
|
30
|
+
[ToolName.WRITE_FILE]: false,
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Tools available to the Curate subagent.
|
|
34
|
+
* Context building and modification tools.
|
|
35
|
+
*/
|
|
36
|
+
const CURATE_AGENT_TOOLS = {
|
|
37
|
+
[ToolName.BASH_EXEC]: false,
|
|
38
|
+
[ToolName.CURATE]: true,
|
|
39
|
+
[ToolName.EDIT_FILE]: false,
|
|
40
|
+
[ToolName.GLOB_FILES]: true,
|
|
41
|
+
[ToolName.GREP_CONTENT]: true,
|
|
42
|
+
[ToolName.LIST_DIRECTORY]: true,
|
|
43
|
+
[ToolName.READ_FILE]: true,
|
|
44
|
+
[ToolName.SPEC_ANALYZE]: true,
|
|
45
|
+
[ToolName.WRITE_FILE]: false,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Tools available to the Plan agent.
|
|
49
|
+
* Read-only tools plus TaskTool for delegation.
|
|
50
|
+
*/
|
|
51
|
+
const PLAN_AGENT_TOOLS = {
|
|
52
|
+
// TaskTool for subagent delegation (will be added when registered)
|
|
53
|
+
task: true,
|
|
54
|
+
[ToolName.BASH_EXEC]: false,
|
|
55
|
+
[ToolName.CREATE_KNOWLEDGE_TOPIC]: false,
|
|
56
|
+
[ToolName.CURATE]: false,
|
|
57
|
+
[ToolName.EDIT_FILE]: false,
|
|
58
|
+
[ToolName.GLOB_FILES]: true,
|
|
59
|
+
[ToolName.GREP_CONTENT]: true,
|
|
60
|
+
[ToolName.LIST_DIRECTORY]: true,
|
|
61
|
+
[ToolName.READ_FILE]: true,
|
|
62
|
+
[ToolName.WRITE_FILE]: false,
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Built-in agent definitions.
|
|
66
|
+
* These are the native agents available in the system.
|
|
67
|
+
*/
|
|
68
|
+
const BUILT_IN_AGENTS = {
|
|
69
|
+
/**
|
|
70
|
+
* Cipher Agent - Default primary agent with full capabilities.
|
|
71
|
+
* Used for general-purpose tasks.
|
|
72
|
+
*/
|
|
73
|
+
[AgentName.CIPHER]: AgentInfoSchema.parse({
|
|
74
|
+
description: 'Default agent with full capabilities for general-purpose tasks.',
|
|
75
|
+
hidden: false,
|
|
76
|
+
mode: 'primary',
|
|
77
|
+
name: AgentName.CIPHER,
|
|
78
|
+
native: true,
|
|
79
|
+
permission: DEFAULT_AGENT_PERMISSION,
|
|
80
|
+
promptFile: 'system-prompt.yml',
|
|
81
|
+
tools: {}, // All tools enabled by default
|
|
82
|
+
}),
|
|
83
|
+
/**
|
|
84
|
+
* Curate Agent - Subagent for creating/updating knowledge topics.
|
|
85
|
+
* Handles the actual context tree modification.
|
|
86
|
+
*/
|
|
87
|
+
[AgentName.CURATE]: AgentInfoSchema.parse({
|
|
88
|
+
description: 'Agent for creating and updating knowledge topics in the context tree. Use this to curate context after gathering information.',
|
|
89
|
+
hidden: false,
|
|
90
|
+
mode: 'subagent',
|
|
91
|
+
name: AgentName.CURATE,
|
|
92
|
+
native: true,
|
|
93
|
+
permission: {
|
|
94
|
+
bash: { '*': 'deny' },
|
|
95
|
+
edit: 'deny', // Only uses curate tool, not general file editing
|
|
96
|
+
},
|
|
97
|
+
promptFile: 'curate.yml',
|
|
98
|
+
tools: CURATE_AGENT_TOOLS,
|
|
99
|
+
}),
|
|
100
|
+
/**
|
|
101
|
+
* Query Agent - Subagent for context tree retrieval.
|
|
102
|
+
* Specialized for searching and retrieving information from the context tree.
|
|
103
|
+
*/
|
|
104
|
+
[AgentName.EXPLORE]: AgentInfoSchema.parse({
|
|
105
|
+
description: 'Specialized agent for context tree retrieval and knowledge discovery. Use this to search and retrieve relevant information from the context tree.',
|
|
106
|
+
hidden: false,
|
|
107
|
+
mode: 'subagent',
|
|
108
|
+
name: AgentName.EXPLORE,
|
|
109
|
+
native: true,
|
|
110
|
+
permission: {
|
|
111
|
+
bash: { '*': 'deny' },
|
|
112
|
+
edit: 'deny',
|
|
113
|
+
},
|
|
114
|
+
promptFile: 'explore.yml',
|
|
115
|
+
tools: EXPLORE_AGENT_TOOLS,
|
|
116
|
+
}),
|
|
117
|
+
/**
|
|
118
|
+
* Plan Agent - Primary agent for orchestrating curation workflow.
|
|
119
|
+
* Uses TaskTool to delegate to Query and Curate subagents.
|
|
120
|
+
*/
|
|
121
|
+
[AgentName.PLAN]: AgentInfoSchema.parse({
|
|
122
|
+
description: 'Planning agent that orchestrates context exploration and curation. Analyzes requests and delegates to explore and curate subagents.',
|
|
123
|
+
hidden: false,
|
|
124
|
+
mode: 'primary',
|
|
125
|
+
name: AgentName.PLAN,
|
|
126
|
+
native: true,
|
|
127
|
+
permission: READONLY_AGENT_PERMISSION,
|
|
128
|
+
promptFile: 'plan.yml',
|
|
129
|
+
tools: PLAN_AGENT_TOOLS,
|
|
130
|
+
}),
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* AgentRegistry - Singleton registry for managing agent definitions.
|
|
134
|
+
*
|
|
135
|
+
* Provides methods to:
|
|
136
|
+
* - Get agent by name
|
|
137
|
+
* - List all agents
|
|
138
|
+
* - List agents by mode (primary, subagent)
|
|
139
|
+
* - Register custom agents
|
|
140
|
+
*/
|
|
141
|
+
export class AgentRegistry {
|
|
142
|
+
static instance = null;
|
|
143
|
+
agents;
|
|
144
|
+
constructor() {
|
|
145
|
+
this.agents = new Map();
|
|
146
|
+
// Register built-in agents
|
|
147
|
+
for (const [name, agent] of Object.entries(BUILT_IN_AGENTS)) {
|
|
148
|
+
this.agents.set(name, agent);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Get the singleton instance of AgentRegistry.
|
|
153
|
+
*/
|
|
154
|
+
static getInstance() {
|
|
155
|
+
if (!AgentRegistry.instance) {
|
|
156
|
+
AgentRegistry.instance = new AgentRegistry();
|
|
157
|
+
}
|
|
158
|
+
return AgentRegistry.instance;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Reset the singleton instance (for testing).
|
|
162
|
+
*/
|
|
163
|
+
static reset() {
|
|
164
|
+
AgentRegistry.instance = null;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Get an agent by name.
|
|
168
|
+
* @param name - Agent name
|
|
169
|
+
* @returns Agent info or undefined if not found
|
|
170
|
+
*/
|
|
171
|
+
get(name) {
|
|
172
|
+
return this.agents.get(name);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get agent names as a formatted list for display.
|
|
176
|
+
* @returns Formatted string of agent names and descriptions
|
|
177
|
+
*/
|
|
178
|
+
getSubagentDescriptions() {
|
|
179
|
+
return this.listSubagents()
|
|
180
|
+
.map((agent) => `- ${agent.name}: ${agent.description || 'No description'}`)
|
|
181
|
+
.join('\n');
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Check if an agent exists.
|
|
185
|
+
* @param name - Agent name
|
|
186
|
+
* @returns true if agent exists
|
|
187
|
+
*/
|
|
188
|
+
has(name) {
|
|
189
|
+
return this.agents.has(name);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* List all registered agents.
|
|
193
|
+
* @returns Array of agent info objects
|
|
194
|
+
*/
|
|
195
|
+
list() {
|
|
196
|
+
return [...this.agents.values()];
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* List agents by mode.
|
|
200
|
+
* @param mode - Agent mode to filter by
|
|
201
|
+
* @returns Array of agents matching the mode
|
|
202
|
+
*/
|
|
203
|
+
listByMode(mode) {
|
|
204
|
+
return this.list().filter((agent) => {
|
|
205
|
+
if (mode === 'all')
|
|
206
|
+
return true;
|
|
207
|
+
return agent.mode === mode || agent.mode === 'all';
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* List primary agents available for direct user interaction.
|
|
212
|
+
* Returns agents that can be used as entry points (mode: 'primary' or 'all').
|
|
213
|
+
* Excludes hidden agents.
|
|
214
|
+
* @returns Array of primary agent info objects
|
|
215
|
+
*/
|
|
216
|
+
listPrimaryAgents() {
|
|
217
|
+
return this.list().filter((agent) => !agent.hidden && (agent.mode === 'primary' || agent.mode === 'all'));
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* List subagents available for TaskTool.
|
|
221
|
+
* Returns agents that can be invoked as subagents (mode: 'subagent' or 'all').
|
|
222
|
+
* Excludes hidden agents.
|
|
223
|
+
* @returns Array of subagent info objects
|
|
224
|
+
*/
|
|
225
|
+
listSubagents() {
|
|
226
|
+
return this.list().filter((agent) => !agent.hidden && (agent.mode === 'subagent' || agent.mode === 'all'));
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Register a custom agent.
|
|
230
|
+
* @param agent - Agent info to register
|
|
231
|
+
* @throws Error if agent with same name already exists (unless overwrite is true)
|
|
232
|
+
*/
|
|
233
|
+
register(agent, overwrite = false) {
|
|
234
|
+
const validated = AgentInfoSchema.parse(agent);
|
|
235
|
+
if (this.agents.has(validated.name) && !overwrite) {
|
|
236
|
+
throw new Error(`Agent '${validated.name}' already exists. Use overwrite=true to replace.`);
|
|
237
|
+
}
|
|
238
|
+
this.agents.set(validated.name, validated);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Unregister an agent.
|
|
242
|
+
* @param name - Agent name to remove
|
|
243
|
+
* @returns true if agent was removed, false if not found
|
|
244
|
+
*/
|
|
245
|
+
unregister(name) {
|
|
246
|
+
return this.agents.delete(name);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Convenience function to get the AgentRegistry instance.
|
|
251
|
+
*/
|
|
252
|
+
export function getAgentRegistry() {
|
|
253
|
+
return AgentRegistry.getInstance();
|
|
254
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Module
|
|
3
3
|
*
|
|
4
|
-
* Exports agent state management types and classes
|
|
4
|
+
* Exports agent state management types and classes,
|
|
5
|
+
* as well as the multi-agent system components.
|
|
5
6
|
*/
|
|
7
|
+
export { AgentInfo, AgentInfoSchema, AgentMode, AgentPermission, AgentPermissionSchema, DEFAULT_AGENT_PERMISSION, PermissionValue, READONLY_AGENT_PERMISSION, } from './agent-info.js';
|
|
8
|
+
export { AgentName, AgentRegistry, getAgentRegistry, KnownAgent, } from './agent-registry.js';
|
|
6
9
|
export { AgentStateMachine } from './agent-state-machine.js';
|
|
7
10
|
export { AgentExecutionContext, AgentState, TerminationReason } from './agent-state.js';
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Agent Module
|
|
3
3
|
*
|
|
4
|
-
* Exports agent state management types and classes
|
|
4
|
+
* Exports agent state management types and classes,
|
|
5
|
+
* as well as the multi-agent system components.
|
|
5
6
|
*/
|
|
7
|
+
// Multi-agent system (agent-info.js)
|
|
8
|
+
export { AgentInfoSchema, AgentMode, AgentPermissionSchema, DEFAULT_AGENT_PERMISSION, PermissionValue, READONLY_AGENT_PERMISSION, } from './agent-info.js';
|
|
9
|
+
// Multi-agent system (agent-registry.js)
|
|
10
|
+
export { AgentName, AgentRegistry, getAgentRegistry, } from './agent-registry.js';
|
|
11
|
+
// State management
|
|
6
12
|
export { AgentStateMachine } from './agent-state-machine.js';
|
|
7
13
|
export { AgentState, TerminationReason } from './agent-state.js';
|