dsh-tavern-bundle 0.1.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/LICENSE +21 -0
- package/README.md +216 -0
- package/cordis.patch.yml +14 -0
- package/lib/adapters/model-gateway.d.ts +4 -0
- package/lib/adapters/model-gateway.d.ts.map +1 -0
- package/lib/adapters/model-gateway.js +3 -0
- package/lib/adapters/model-gateway.js.map +1 -0
- package/lib/adapters/prestep-spike.d.ts +16 -0
- package/lib/adapters/prestep-spike.d.ts.map +1 -0
- package/lib/adapters/prestep-spike.js +114 -0
- package/lib/adapters/prestep-spike.js.map +1 -0
- package/lib/adapters/runtime-probe.d.ts +67 -0
- package/lib/adapters/runtime-probe.d.ts.map +1 -0
- package/lib/adapters/runtime-probe.js +106 -0
- package/lib/adapters/runtime-probe.js.map +1 -0
- package/lib/adapters/session-agent-provider.d.ts +3 -0
- package/lib/adapters/session-agent-provider.d.ts.map +1 -0
- package/lib/adapters/session-agent-provider.js +3 -0
- package/lib/adapters/session-agent-provider.js.map +1 -0
- package/lib/adapters/subagent-gateway.d.ts +3 -0
- package/lib/adapters/subagent-gateway.d.ts.map +1 -0
- package/lib/adapters/subagent-gateway.js +3 -0
- package/lib/adapters/subagent-gateway.js.map +1 -0
- package/lib/application/chat/chat-application-service.d.ts +94 -0
- package/lib/application/chat/chat-application-service.d.ts.map +1 -0
- package/lib/application/chat/chat-application-service.js +291 -0
- package/lib/application/chat/chat-application-service.js.map +1 -0
- package/lib/application/companion/agent-orchestrator.d.ts +91 -0
- package/lib/application/companion/agent-orchestrator.d.ts.map +1 -0
- package/lib/application/companion/agent-orchestrator.js +298 -0
- package/lib/application/companion/agent-orchestrator.js.map +1 -0
- package/lib/application/companion/companion-child-service.d.ts +47 -0
- package/lib/application/companion/companion-child-service.d.ts.map +1 -0
- package/lib/application/companion/companion-child-service.js +30 -0
- package/lib/application/companion/companion-child-service.js.map +1 -0
- package/lib/application/companion/companion-invocation-service.d.ts +42 -0
- package/lib/application/companion/companion-invocation-service.d.ts.map +1 -0
- package/lib/application/companion/companion-invocation-service.js +50 -0
- package/lib/application/companion/companion-invocation-service.js.map +1 -0
- package/lib/application/companion/companion-profile-service.d.ts +32 -0
- package/lib/application/companion/companion-profile-service.d.ts.map +1 -0
- package/lib/application/companion/companion-profile-service.js +112 -0
- package/lib/application/companion/companion-profile-service.js.map +1 -0
- package/lib/application/companion/companion-promotion-service.d.ts +69 -0
- package/lib/application/companion/companion-promotion-service.d.ts.map +1 -0
- package/lib/application/companion/companion-promotion-service.js +129 -0
- package/lib/application/companion/companion-promotion-service.js.map +1 -0
- package/lib/application/group-chat/group-chat-execution-service.d.ts +22 -0
- package/lib/application/group-chat/group-chat-execution-service.d.ts.map +1 -0
- package/lib/application/group-chat/group-chat-execution-service.js +110 -0
- package/lib/application/group-chat/group-chat-execution-service.js.map +1 -0
- package/lib/application/group-chat/group-chat-orchestrator.d.ts +51 -0
- package/lib/application/group-chat/group-chat-orchestrator.d.ts.map +1 -0
- package/lib/application/group-chat/group-chat-orchestrator.js +57 -0
- package/lib/application/group-chat/group-chat-orchestrator.js.map +1 -0
- package/lib/application/memory/memory-retriever.d.ts +37 -0
- package/lib/application/memory/memory-retriever.d.ts.map +1 -0
- package/lib/application/memory/memory-retriever.js +91 -0
- package/lib/application/memory/memory-retriever.js.map +1 -0
- package/lib/application/memory/memory-service.d.ts +128 -0
- package/lib/application/memory/memory-service.d.ts.map +1 -0
- package/lib/application/memory/memory-service.js +346 -0
- package/lib/application/memory/memory-service.js.map +1 -0
- package/lib/application/ports/companion-runtime-port.d.ts +72 -0
- package/lib/application/ports/companion-runtime-port.d.ts.map +1 -0
- package/lib/application/ports/companion-runtime-port.js +2 -0
- package/lib/application/ports/companion-runtime-port.js.map +1 -0
- package/lib/application/ports/llm-port.d.ts +7 -0
- package/lib/application/ports/llm-port.d.ts.map +1 -0
- package/lib/application/ports/llm-port.js +2 -0
- package/lib/application/ports/llm-port.js.map +1 -0
- package/lib/application/ports/message-source.d.ts +4 -0
- package/lib/application/ports/message-source.d.ts.map +1 -0
- package/lib/application/ports/message-source.js +5 -0
- package/lib/application/ports/message-source.js.map +1 -0
- package/lib/application/ports/session-context-port.d.ts +13 -0
- package/lib/application/ports/session-context-port.d.ts.map +1 -0
- package/lib/application/ports/session-context-port.js +2 -0
- package/lib/application/ports/session-context-port.js.map +1 -0
- package/lib/application/ports/subagent-port.d.ts +31 -0
- package/lib/application/ports/subagent-port.d.ts.map +1 -0
- package/lib/application/ports/subagent-port.js +2 -0
- package/lib/application/ports/subagent-port.js.map +1 -0
- package/lib/application/ports/user-resolver-port.d.ts +5 -0
- package/lib/application/ports/user-resolver-port.d.ts.map +1 -0
- package/lib/application/ports/user-resolver-port.js +2 -0
- package/lib/application/ports/user-resolver-port.js.map +1 -0
- package/lib/application/relationship/relationship-event-service.d.ts +31 -0
- package/lib/application/relationship/relationship-event-service.d.ts.map +1 -0
- package/lib/application/relationship/relationship-event-service.js +43 -0
- package/lib/application/relationship/relationship-event-service.js.map +1 -0
- package/lib/application/relationship/relationship-policy.d.ts +20 -0
- package/lib/application/relationship/relationship-policy.d.ts.map +1 -0
- package/lib/application/relationship/relationship-policy.js +24 -0
- package/lib/application/relationship/relationship-policy.js.map +1 -0
- package/lib/application/relationship/relationship-projection.d.ts +14 -0
- package/lib/application/relationship/relationship-projection.d.ts.map +1 -0
- package/lib/application/relationship/relationship-projection.js +25 -0
- package/lib/application/relationship/relationship-projection.js.map +1 -0
- package/lib/application/relationship/relationship-service.d.ts +95 -0
- package/lib/application/relationship/relationship-service.d.ts.map +1 -0
- package/lib/application/relationship/relationship-service.js +254 -0
- package/lib/application/relationship/relationship-service.js.map +1 -0
- package/lib/application/workspace/workspace-service.d.ts +106 -0
- package/lib/application/workspace/workspace-service.d.ts.map +1 -0
- package/lib/application/workspace/workspace-service.js +44 -0
- package/lib/application/workspace/workspace-service.js.map +1 -0
- package/lib/bootstrap/create-domain.d.ts +5 -0
- package/lib/bootstrap/create-domain.d.ts.map +1 -0
- package/lib/bootstrap/create-domain.js +14 -0
- package/lib/bootstrap/create-domain.js.map +1 -0
- package/lib/bootstrap/create-repositories.d.ts +403 -0
- package/lib/bootstrap/create-repositories.d.ts.map +1 -0
- package/lib/bootstrap/create-repositories.js +39 -0
- package/lib/bootstrap/create-repositories.js.map +1 -0
- package/lib/bootstrap/create-runtime.d.ts +8 -0
- package/lib/bootstrap/create-runtime.d.ts.map +1 -0
- package/lib/bootstrap/create-runtime.js +10 -0
- package/lib/bootstrap/create-runtime.js.map +1 -0
- package/lib/bootstrap/create-services.d.ts +52 -0
- package/lib/bootstrap/create-services.d.ts.map +1 -0
- package/lib/bootstrap/create-services.js +79 -0
- package/lib/bootstrap/create-services.js.map +1 -0
- package/lib/bootstrap/install-commands.d.ts +4 -0
- package/lib/bootstrap/install-commands.d.ts.map +1 -0
- package/lib/bootstrap/install-commands.js +322 -0
- package/lib/bootstrap/install-commands.js.map +1 -0
- package/lib/bootstrap/install-http.d.ts +7 -0
- package/lib/bootstrap/install-http.d.ts.map +1 -0
- package/lib/bootstrap/install-http.js +265 -0
- package/lib/bootstrap/install-http.js.map +1 -0
- package/lib/bootstrap/lifecycle.d.ts +14 -0
- package/lib/bootstrap/lifecycle.d.ts.map +1 -0
- package/lib/bootstrap/lifecycle.js +56 -0
- package/lib/bootstrap/lifecycle.js.map +1 -0
- package/lib/bootstrap/types.d.ts +9 -0
- package/lib/bootstrap/types.d.ts.map +1 -0
- package/lib/bootstrap/types.js +2 -0
- package/lib/bootstrap/types.js.map +1 -0
- package/lib/client.js +6 -0
- package/lib/client.js.map +1 -0
- package/lib/core/audit-service.d.ts +43 -0
- package/lib/core/audit-service.d.ts.map +1 -0
- package/lib/core/audit-service.js +75 -0
- package/lib/core/audit-service.js.map +1 -0
- package/lib/core/candidate-extractor.d.ts +31 -0
- package/lib/core/candidate-extractor.d.ts.map +1 -0
- package/lib/core/candidate-extractor.js +83 -0
- package/lib/core/candidate-extractor.js.map +1 -0
- package/lib/core/candidate-service.d.ts +72 -0
- package/lib/core/candidate-service.d.ts.map +1 -0
- package/lib/core/candidate-service.js +283 -0
- package/lib/core/candidate-service.js.map +1 -0
- package/lib/core/character-service.d.ts +26 -0
- package/lib/core/character-service.d.ts.map +1 -0
- package/lib/core/character-service.js +68 -0
- package/lib/core/character-service.js.map +1 -0
- package/lib/core/chat-file-io.d.ts +28 -0
- package/lib/core/chat-file-io.d.ts.map +1 -0
- package/lib/core/chat-file-io.js +114 -0
- package/lib/core/chat-file-io.js.map +1 -0
- package/lib/core/chat-service.d.ts +4 -0
- package/lib/core/chat-service.d.ts.map +1 -0
- package/lib/core/chat-service.js +3 -0
- package/lib/core/chat-service.js.map +1 -0
- package/lib/core/command-arguments.d.ts +2 -0
- package/lib/core/command-arguments.d.ts.map +1 -0
- package/lib/core/command-arguments.js +42 -0
- package/lib/core/command-arguments.js.map +1 -0
- package/lib/core/companion-child-agent-service.d.ts +3 -0
- package/lib/core/companion-child-agent-service.d.ts.map +1 -0
- package/lib/core/companion-child-agent-service.js +3 -0
- package/lib/core/companion-child-agent-service.js.map +1 -0
- package/lib/core/companion-invocation-service.d.ts +3 -0
- package/lib/core/companion-invocation-service.d.ts.map +1 -0
- package/lib/core/companion-invocation-service.js +3 -0
- package/lib/core/companion-invocation-service.js.map +1 -0
- package/lib/core/companion-profile-service.d.ts +3 -0
- package/lib/core/companion-profile-service.d.ts.map +1 -0
- package/lib/core/companion-profile-service.js +3 -0
- package/lib/core/companion-profile-service.js.map +1 -0
- package/lib/core/companion-promotion-service.d.ts +3 -0
- package/lib/core/companion-promotion-service.d.ts.map +1 -0
- package/lib/core/companion-promotion-service.js +3 -0
- package/lib/core/companion-promotion-service.js.map +1 -0
- package/lib/core/context-assembler.d.ts +92 -0
- package/lib/core/context-assembler.d.ts.map +1 -0
- package/lib/core/context-assembler.js +185 -0
- package/lib/core/context-assembler.js.map +1 -0
- package/lib/core/conversation-repository.d.ts +42 -0
- package/lib/core/conversation-repository.d.ts.map +1 -0
- package/lib/core/conversation-repository.js +94 -0
- package/lib/core/conversation-repository.js.map +1 -0
- package/lib/core/group-chat-execution-service.d.ts +3 -0
- package/lib/core/group-chat-execution-service.d.ts.map +1 -0
- package/lib/core/group-chat-execution-service.js +3 -0
- package/lib/core/group-chat-execution-service.js.map +1 -0
- package/lib/core/group-chat-orchestrator.d.ts +3 -0
- package/lib/core/group-chat-orchestrator.d.ts.map +1 -0
- package/lib/core/group-chat-orchestrator.js +3 -0
- package/lib/core/group-chat-orchestrator.js.map +1 -0
- package/lib/core/memory-retriever.d.ts +3 -0
- package/lib/core/memory-retriever.d.ts.map +1 -0
- package/lib/core/memory-retriever.js +3 -0
- package/lib/core/memory-retriever.js.map +1 -0
- package/lib/core/memory-service.d.ts +3 -0
- package/lib/core/memory-service.d.ts.map +1 -0
- package/lib/core/memory-service.js +3 -0
- package/lib/core/memory-service.js.map +1 -0
- package/lib/core/personality-candidate-service.d.ts +46 -0
- package/lib/core/personality-candidate-service.d.ts.map +1 -0
- package/lib/core/personality-candidate-service.js +65 -0
- package/lib/core/personality-candidate-service.js.map +1 -0
- package/lib/core/prompt-assembler.d.ts +43 -0
- package/lib/core/prompt-assembler.d.ts.map +1 -0
- package/lib/core/prompt-assembler.js +67 -0
- package/lib/core/prompt-assembler.js.map +1 -0
- package/lib/core/relationship-event-service.d.ts +3 -0
- package/lib/core/relationship-event-service.d.ts.map +1 -0
- package/lib/core/relationship-event-service.js +3 -0
- package/lib/core/relationship-event-service.js.map +1 -0
- package/lib/core/relationship-policy.d.ts +3 -0
- package/lib/core/relationship-policy.d.ts.map +1 -0
- package/lib/core/relationship-policy.js +3 -0
- package/lib/core/relationship-policy.js.map +1 -0
- package/lib/core/relationship-projection.d.ts +3 -0
- package/lib/core/relationship-projection.d.ts.map +1 -0
- package/lib/core/relationship-projection.js +3 -0
- package/lib/core/relationship-projection.js.map +1 -0
- package/lib/core/relationship-service.d.ts +3 -0
- package/lib/core/relationship-service.d.ts.map +1 -0
- package/lib/core/relationship-service.js +3 -0
- package/lib/core/relationship-service.js.map +1 -0
- package/lib/core/roleplay-contract.d.ts +11 -0
- package/lib/core/roleplay-contract.d.ts.map +1 -0
- package/lib/core/roleplay-contract.js +27 -0
- package/lib/core/roleplay-contract.js.map +1 -0
- package/lib/core/runtime-binding-service.d.ts +19 -0
- package/lib/core/runtime-binding-service.d.ts.map +1 -0
- package/lib/core/runtime-binding-service.js +66 -0
- package/lib/core/runtime-binding-service.js.map +1 -0
- package/lib/core/scene-service.d.ts +60 -0
- package/lib/core/scene-service.d.ts.map +1 -0
- package/lib/core/scene-service.js +212 -0
- package/lib/core/scene-service.js.map +1 -0
- package/lib/core/session-binding-service.d.ts +51 -0
- package/lib/core/session-binding-service.d.ts.map +1 -0
- package/lib/core/session-binding-service.js +106 -0
- package/lib/core/session-binding-service.js.map +1 -0
- package/lib/core/skill-service.d.ts +82 -0
- package/lib/core/skill-service.d.ts.map +1 -0
- package/lib/core/skill-service.js +45 -0
- package/lib/core/skill-service.js.map +1 -0
- package/lib/core/tavern-session-bridge.d.ts +3 -0
- package/lib/core/tavern-session-bridge.d.ts.map +1 -0
- package/lib/core/tavern-session-bridge.js +3 -0
- package/lib/core/tavern-session-bridge.js.map +1 -0
- package/lib/core/user-resolver.d.ts +15 -0
- package/lib/core/user-resolver.d.ts.map +1 -0
- package/lib/core/user-resolver.js +17 -0
- package/lib/core/user-resolver.js.map +1 -0
- package/lib/core/workspace-service.d.ts +3 -0
- package/lib/core/workspace-service.d.ts.map +1 -0
- package/lib/core/workspace-service.js +3 -0
- package/lib/core/workspace-service.js.map +1 -0
- package/lib/core/workspace-session-service.d.ts +11 -0
- package/lib/core/workspace-session-service.d.ts.map +1 -0
- package/lib/core/workspace-session-service.js +14 -0
- package/lib/core/workspace-session-service.js.map +1 -0
- package/lib/domain/schemas.d.ts +1173 -0
- package/lib/domain/schemas.d.ts.map +1 -0
- package/lib/domain/schemas.js +590 -0
- package/lib/domain/schemas.js.map +1 -0
- package/lib/domain/spec.d.ts +494 -0
- package/lib/domain/spec.d.ts.map +1 -0
- package/lib/domain/spec.js +63 -0
- package/lib/domain/spec.js.map +1 -0
- package/lib/import/artifact-service.d.ts +33 -0
- package/lib/import/artifact-service.d.ts.map +1 -0
- package/lib/import/artifact-service.js +67 -0
- package/lib/import/artifact-service.js.map +1 -0
- package/lib/import/import-service.d.ts +30 -0
- package/lib/import/import-service.d.ts.map +1 -0
- package/lib/import/import-service.js +154 -0
- package/lib/import/import-service.js.map +1 -0
- package/lib/import/parser.d.ts +81 -0
- package/lib/import/parser.d.ts.map +1 -0
- package/lib/import/parser.js +423 -0
- package/lib/import/parser.js.map +1 -0
- package/lib/index.d.ts +60 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +111 -0
- package/lib/index.js.map +1 -0
- package/lib/infrastructure/dsh/llm/llm-port.d.ts +3 -0
- package/lib/infrastructure/dsh/llm/llm-port.d.ts.map +1 -0
- package/lib/infrastructure/dsh/llm/llm-port.js +2 -0
- package/lib/infrastructure/dsh/llm/llm-port.js.map +1 -0
- package/lib/infrastructure/dsh/llm/model-gateway.d.ts +10 -0
- package/lib/infrastructure/dsh/llm/model-gateway.d.ts.map +1 -0
- package/lib/infrastructure/dsh/llm/model-gateway.js +21 -0
- package/lib/infrastructure/dsh/llm/model-gateway.js.map +1 -0
- package/lib/infrastructure/dsh/session/session-agent-provider.d.ts +28 -0
- package/lib/infrastructure/dsh/session/session-agent-provider.d.ts.map +1 -0
- package/lib/infrastructure/dsh/session/session-agent-provider.js +40 -0
- package/lib/infrastructure/dsh/session/session-agent-provider.js.map +1 -0
- package/lib/infrastructure/dsh/session/tavern-session-bridge.d.ts +142 -0
- package/lib/infrastructure/dsh/session/tavern-session-bridge.d.ts.map +1 -0
- package/lib/infrastructure/dsh/session/tavern-session-bridge.js +544 -0
- package/lib/infrastructure/dsh/session/tavern-session-bridge.js.map +1 -0
- package/lib/infrastructure/dsh/subagent/subagent-gateway.d.ts +63 -0
- package/lib/infrastructure/dsh/subagent/subagent-gateway.d.ts.map +1 -0
- package/lib/infrastructure/dsh/subagent/subagent-gateway.js +70 -0
- package/lib/infrastructure/dsh/subagent/subagent-gateway.js.map +1 -0
- package/lib/infrastructure/runtime/companion-runtime.d.ts +128 -0
- package/lib/infrastructure/runtime/companion-runtime.d.ts.map +1 -0
- package/lib/infrastructure/runtime/companion-runtime.js +127 -0
- package/lib/infrastructure/runtime/companion-runtime.js.map +1 -0
- package/lib/infrastructure/runtime/runtime-factory.d.ts +10 -0
- package/lib/infrastructure/runtime/runtime-factory.d.ts.map +1 -0
- package/lib/infrastructure/runtime/runtime-factory.js +14 -0
- package/lib/infrastructure/runtime/runtime-factory.js.map +1 -0
- package/lib/interfaces/http/chat/chat-http.d.ts +23 -0
- package/lib/interfaces/http/chat/chat-http.d.ts.map +1 -0
- package/lib/interfaces/http/chat/chat-http.js +310 -0
- package/lib/interfaces/http/chat/chat-http.js.map +1 -0
- package/lib/interfaces/http/companion/companion-http.d.ts +8 -0
- package/lib/interfaces/http/companion/companion-http.d.ts.map +1 -0
- package/lib/interfaces/http/companion/companion-http.js +76 -0
- package/lib/interfaces/http/companion/companion-http.js.map +1 -0
- package/lib/interfaces/http/companion/promotion-http.d.ts +6 -0
- package/lib/interfaces/http/companion/promotion-http.d.ts.map +1 -0
- package/lib/interfaces/http/companion/promotion-http.js +25 -0
- package/lib/interfaces/http/companion/promotion-http.js.map +1 -0
- package/lib/interfaces/http/companion/runtime-http.d.ts +13 -0
- package/lib/interfaces/http/companion/runtime-http.d.ts.map +1 -0
- package/lib/interfaces/http/companion/runtime-http.js +51 -0
- package/lib/interfaces/http/companion/runtime-http.js.map +1 -0
- package/lib/interfaces/http/companion/stage4-companion-http.d.ts +30 -0
- package/lib/interfaces/http/companion/stage4-companion-http.d.ts.map +1 -0
- package/lib/interfaces/http/companion/stage4-companion-http.js +149 -0
- package/lib/interfaces/http/companion/stage4-companion-http.js.map +1 -0
- package/lib/interfaces/http/group/group-http.d.ts +11 -0
- package/lib/interfaces/http/group/group-http.d.ts.map +1 -0
- package/lib/interfaces/http/group/group-http.js +77 -0
- package/lib/interfaces/http/group/group-http.js.map +1 -0
- package/lib/interfaces/http/memory/candidate-http.d.ts +8 -0
- package/lib/interfaces/http/memory/candidate-http.d.ts.map +1 -0
- package/lib/interfaces/http/memory/candidate-http.js +86 -0
- package/lib/interfaces/http/memory/candidate-http.js.map +1 -0
- package/lib/interfaces/http/relationship/companion-relationship-http.d.ts +7 -0
- package/lib/interfaces/http/relationship/companion-relationship-http.d.ts.map +1 -0
- package/lib/interfaces/http/relationship/companion-relationship-http.js +30 -0
- package/lib/interfaces/http/relationship/companion-relationship-http.js.map +1 -0
- package/lib/interfaces/http/workspace/workspace-http.d.ts +19 -0
- package/lib/interfaces/http/workspace/workspace-http.d.ts.map +1 -0
- package/lib/interfaces/http/workspace/workspace-http.js +78 -0
- package/lib/interfaces/http/workspace/workspace-http.js.map +1 -0
- package/lib/interfaces/read-model/tavern-read-api.d.ts +44 -0
- package/lib/interfaces/read-model/tavern-read-api.d.ts.map +1 -0
- package/lib/interfaces/read-model/tavern-read-api.js +189 -0
- package/lib/interfaces/read-model/tavern-read-api.js.map +1 -0
- package/lib/remote/candidate-api.d.ts +3 -0
- package/lib/remote/candidate-api.d.ts.map +1 -0
- package/lib/remote/candidate-api.js +3 -0
- package/lib/remote/candidate-api.js.map +1 -0
- package/lib/remote/chat-api.d.ts +3 -0
- package/lib/remote/chat-api.d.ts.map +1 -0
- package/lib/remote/chat-api.js +3 -0
- package/lib/remote/chat-api.js.map +1 -0
- package/lib/remote/companion-api.d.ts +3 -0
- package/lib/remote/companion-api.d.ts.map +1 -0
- package/lib/remote/companion-api.js +3 -0
- package/lib/remote/companion-api.js.map +1 -0
- package/lib/remote/companion-promotion-api.d.ts +3 -0
- package/lib/remote/companion-promotion-api.d.ts.map +1 -0
- package/lib/remote/companion-promotion-api.js +3 -0
- package/lib/remote/companion-promotion-api.js.map +1 -0
- package/lib/remote/import-http.d.ts +29 -0
- package/lib/remote/import-http.d.ts.map +1 -0
- package/lib/remote/import-http.js +106 -0
- package/lib/remote/import-http.js.map +1 -0
- package/lib/remote/stage4-api.d.ts +6 -0
- package/lib/remote/stage4-api.d.ts.map +1 -0
- package/lib/remote/stage4-api.js +4 -0
- package/lib/remote/stage4-api.js.map +1 -0
- package/lib/remote/stage5-runtime-api.d.ts +4 -0
- package/lib/remote/stage5-runtime-api.d.ts.map +1 -0
- package/lib/remote/stage5-runtime-api.js +2 -0
- package/lib/remote/stage5-runtime-api.js.map +1 -0
- package/lib/remote/stage6-group-api.d.ts +4 -0
- package/lib/remote/stage6-group-api.d.ts.map +1 -0
- package/lib/remote/stage6-group-api.js +2 -0
- package/lib/remote/stage6-group-api.js.map +1 -0
- package/lib/remote/tavern-api.d.ts +3 -0
- package/lib/remote/tavern-api.d.ts.map +1 -0
- package/lib/remote/tavern-api.js +3 -0
- package/lib/remote/tavern-api.js.map +1 -0
- package/lib/runtime/agent-orchestrator.d.ts +3 -0
- package/lib/runtime/agent-orchestrator.d.ts.map +1 -0
- package/lib/runtime/agent-orchestrator.js +3 -0
- package/lib/runtime/agent-orchestrator.js.map +1 -0
- package/lib/runtime/companion-runtime.d.ts +3 -0
- package/lib/runtime/companion-runtime.d.ts.map +1 -0
- package/lib/runtime/companion-runtime.js +3 -0
- package/lib/runtime/companion-runtime.js.map +1 -0
- package/lib/runtime/langgraph-graph.d.ts +32 -0
- package/lib/runtime/langgraph-graph.d.ts.map +1 -0
- package/lib/runtime/langgraph-graph.js +32 -0
- package/lib/runtime/langgraph-graph.js.map +1 -0
- package/lib/runtime/state.d.ts +38 -0
- package/lib/runtime/state.d.ts.map +1 -0
- package/lib/runtime/state.js +16 -0
- package/lib/runtime/state.js.map +1 -0
- package/lib/seed/elaine.d.ts +9 -0
- package/lib/seed/elaine.d.ts.map +1 -0
- package/lib/seed/elaine.js +27 -0
- package/lib/seed/elaine.js.map +1 -0
- package/lib/tools/import-character.d.ts +16 -0
- package/lib/tools/import-character.d.ts.map +1 -0
- package/lib/tools/import-character.js +98 -0
- package/lib/tools/import-character.js.map +1 -0
- package/package.json +108 -0
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentOrchestrator —— 实例编排器(阶段 1 起,5.3 场景化)。
|
|
3
|
+
*
|
|
4
|
+
* 职责:summon(创建角色的 continuable 子 Agent 并归属场景)与 followup
|
|
5
|
+
* (向该子 Agent 续推,验证场景归属),并记录 parent/child session 关系。
|
|
6
|
+
* 调用方**不需要**传 parentAgent:当前会话的 Agent 由 SessionAgentProvider
|
|
7
|
+
* 从调用上下文(命令入口)解析。
|
|
8
|
+
*
|
|
9
|
+
* 场景模型(阶段 5.3):
|
|
10
|
+
* - 实例按 `characterId@sceneId` 索引(单实例每角色每场景;同一角色可在
|
|
11
|
+
* 不同场景各有实例,记忆/关系按场景隔离);
|
|
12
|
+
* - summon 解析场景:显式 sceneId(须存在)→ 用户首个 active 场景 →
|
|
13
|
+
* 自动创建(sceneTitle 或「{角色} 的场景」);
|
|
14
|
+
* - followup 解析场景:显式 sceneId → 最后活跃场景 → 该用户唯一候选实例;
|
|
15
|
+
* 多场景同角色且无显式 sceneId 时抛错(需显式指定);
|
|
16
|
+
* - 场景归属验证:followup 要求当前用户是该场景的 active 参与者(否则
|
|
17
|
+
* 跨场景调用被拒绝)。
|
|
18
|
+
*
|
|
19
|
+
* 持久化:summon 成功后把实例(含 sceneId)写入 instances 表;构造时从表
|
|
20
|
+
* 恢复 active 实例(Host 重启后 followup 可直接继续)。
|
|
21
|
+
*
|
|
22
|
+
* 状态语义:followup 成功仅表示 inbox 已接受(accepted),绝不等于角色已
|
|
23
|
+
* 回复完成(completed)——completed 需要可验证的运行时完成信号(turn/end)。
|
|
24
|
+
*/
|
|
25
|
+
var _a;
|
|
26
|
+
import { ContextAssembler } from '../../core/context-assembler.js';
|
|
27
|
+
function tavernMessageSource() {
|
|
28
|
+
return { kind: 'plugin', plugin: 'dsh-tavern-bundle', form: 'relay' };
|
|
29
|
+
}
|
|
30
|
+
import { buildRoleplayPersona, normalizeRoleplayOpening } from '../../core/roleplay-contract.js';
|
|
31
|
+
export class AgentOrchestrator {
|
|
32
|
+
#characters;
|
|
33
|
+
#gateway;
|
|
34
|
+
#sessionAgents;
|
|
35
|
+
#logger;
|
|
36
|
+
/** instances 表(tavern domain):实例的持久化存储。 */
|
|
37
|
+
#instanceStore;
|
|
38
|
+
/** 上下文组装器:每次投递前世界书 + 记忆检索注入 + 审计 fingerprint。 */
|
|
39
|
+
#contextAssembler;
|
|
40
|
+
/** 关系图谱服务:summon 后登记 character-instance / user 节点。 */
|
|
41
|
+
#relationships;
|
|
42
|
+
/** 场景服务(阶段 5.3):场景生命周期与参与者。 */
|
|
43
|
+
#scenes;
|
|
44
|
+
/** 审计服务(阶段 5.4):summon/followup 状态变更可溯源。 */
|
|
45
|
+
#audit;
|
|
46
|
+
/** 内存 registry:`characterId@sceneId` → 实例。 */
|
|
47
|
+
#instances = new Map();
|
|
48
|
+
/** 内存:parentSessionId → 最后活跃场景(重启后丢失,回退唯一候选)。 */
|
|
49
|
+
#lastScene = new Map();
|
|
50
|
+
constructor(characters, gateway, sessionAgents, instanceStore, contextAssembler, relationships, scenes, audit, logger) {
|
|
51
|
+
this.#characters = characters;
|
|
52
|
+
this.#gateway = gateway;
|
|
53
|
+
this.#sessionAgents = sessionAgents;
|
|
54
|
+
this.#instanceStore = instanceStore;
|
|
55
|
+
this.#contextAssembler = contextAssembler;
|
|
56
|
+
this.#relationships = relationships;
|
|
57
|
+
this.#scenes = scenes;
|
|
58
|
+
this.#audit = audit;
|
|
59
|
+
this.#logger = logger;
|
|
60
|
+
this.#recoverInstances();
|
|
61
|
+
}
|
|
62
|
+
/** 实例 registry 键:`characterId@sceneId`(单实例每角色每场景)。 */
|
|
63
|
+
static instanceKey(characterId, sceneId) {
|
|
64
|
+
return `${characterId}@${sceneId}`;
|
|
65
|
+
}
|
|
66
|
+
/** 组装一次投递的世界书 + 记忆上下文(场景内检索)并写审计日志。 */
|
|
67
|
+
async #assemble(characterId, sceneId, userMessage) {
|
|
68
|
+
const assembled = await this.#contextAssembler.assemble({ characterId, userMessage, sceneId });
|
|
69
|
+
const hitIds = assembled.injectedLore.map(entry => entry.id);
|
|
70
|
+
const memoryIds = assembled.injectedMemory.map(memory => memory.id);
|
|
71
|
+
this.#logger.info(`上下文组装:character=${characterId} scene=${sceneId.slice(0, 8)}… lore=[${hitIds.join(',') || '无'}]`
|
|
72
|
+
+ `(${assembled.truncated.requested}→${assembled.truncated.kept} 条)`
|
|
73
|
+
+ ` memory=[${memoryIds.join(',') || '无'}]`
|
|
74
|
+
+ `(${assembled.memoryTruncated.requested}→${assembled.memoryTruncated.kept} 条)`
|
|
75
|
+
+ ` fingerprint=${assembled.fingerprint}`);
|
|
76
|
+
return assembled;
|
|
77
|
+
}
|
|
78
|
+
/** 恢复:把持久化的 active 实例载入内存 registry(重启后 followup 可直接继续)。 */
|
|
79
|
+
#recoverInstances() {
|
|
80
|
+
for (const [, record] of this.#instanceStore.entries()) {
|
|
81
|
+
if (record.status !== 'active')
|
|
82
|
+
continue;
|
|
83
|
+
this.#instances.set(_a.instanceKey(record.characterId, record.sceneId), {
|
|
84
|
+
characterId: record.characterId,
|
|
85
|
+
sceneId: record.sceneId,
|
|
86
|
+
parentSessionId: record.parentSessionId,
|
|
87
|
+
childId: record.childSessionId,
|
|
88
|
+
createdAt: record.createdAt,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (this.#instances.size > 0) {
|
|
92
|
+
this.#logger.info(`恢复 ${this.#instances.size} 个角色实例(阶段 2 最小恢复器)`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/** 已召唤实例快照(只读)。 */
|
|
96
|
+
listInstances() {
|
|
97
|
+
return [...this.#instances.values()];
|
|
98
|
+
}
|
|
99
|
+
/** 当前用户(会话粒度):后续接入全局用户身份。 */
|
|
100
|
+
#userIdOf(parentSessionId) {
|
|
101
|
+
return String(parentSessionId);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 解析 summon 的场景:显式 sceneId(须存在)→ 用户首个 active 场景 →
|
|
105
|
+
* 自动创建(title = sceneTitle ?? 「{角色} 的场景」)。
|
|
106
|
+
*/
|
|
107
|
+
async #resolveSummonScene(userId, characterName, params) {
|
|
108
|
+
if (params.sceneId !== undefined) {
|
|
109
|
+
const scene = this.#scenes.getScene(params.sceneId);
|
|
110
|
+
if (scene === null)
|
|
111
|
+
throw new Error(`[Tavern] 场景不存在:${params.sceneId}`);
|
|
112
|
+
return params.sceneId;
|
|
113
|
+
}
|
|
114
|
+
const scenes = await this.#scenes.getUserScenes(userId);
|
|
115
|
+
const active = scenes.filter(scene => scene.status === 'active');
|
|
116
|
+
if (active.length > 0)
|
|
117
|
+
return active[0].id;
|
|
118
|
+
const created = await this.#scenes.createScene({
|
|
119
|
+
ownerUserId: userId,
|
|
120
|
+
title: params.sceneTitle ?? `${characterName} 的场景`,
|
|
121
|
+
});
|
|
122
|
+
return created.id;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* 解析 followup 的场景:显式 sceneId → 最后活跃场景 → 该用户唯一候选实例。
|
|
126
|
+
* 多场景同角色且无显式 sceneId / 最后活跃场景时抛错。
|
|
127
|
+
*/
|
|
128
|
+
async #resolveFollowupScene(userId, characterId) {
|
|
129
|
+
const candidates = [];
|
|
130
|
+
for (const instance of this.#instances.values()) {
|
|
131
|
+
if (instance.characterId !== characterId)
|
|
132
|
+
continue;
|
|
133
|
+
const participants = await this.#scenes.getParticipants(instance.sceneId);
|
|
134
|
+
const joined = participants.some(participant => participant.entityKind === 'user' && participant.entityId === userId && participant.leftAt === undefined);
|
|
135
|
+
if (joined)
|
|
136
|
+
candidates.push(instance);
|
|
137
|
+
}
|
|
138
|
+
if (candidates.length === 0)
|
|
139
|
+
throw new Error(`[Tavern] 角色未召唤:${characterId}`);
|
|
140
|
+
const last = this.#lastScene.get(userId);
|
|
141
|
+
const byLast = last === undefined ? undefined : candidates.find(instance => instance.sceneId === last);
|
|
142
|
+
if (byLast !== undefined)
|
|
143
|
+
return byLast.sceneId;
|
|
144
|
+
if (candidates.length === 1)
|
|
145
|
+
return candidates[0].sceneId;
|
|
146
|
+
throw new Error(`[Tavern] 角色「${characterId}」在多个场景中各有实例(${candidates.map(item => item.sceneId.slice(0, 8)).join('、')}…),请显式指定 sceneId`);
|
|
147
|
+
}
|
|
148
|
+
/** 召唤角色:解析/创建场景 → 登记参与者 → 建立 continuable 子 Agent。 */
|
|
149
|
+
async summon(params) {
|
|
150
|
+
const character = this.#characters.get(params.characterId);
|
|
151
|
+
if (character === null) {
|
|
152
|
+
throw new Error(`[Tavern] 角色不存在:${params.characterId}`);
|
|
153
|
+
}
|
|
154
|
+
// 当前会话的 Agent 由调用上下文解析(命令入口自动携带),调用方无需传。
|
|
155
|
+
const parentAgent = this.#sessionAgents.getCurrentAgent();
|
|
156
|
+
const userId = this.#userIdOf(parentAgent.session.id);
|
|
157
|
+
const sceneId = await this.#resolveSummonScene(userId, character.name, params);
|
|
158
|
+
const instanceKey = _a.instanceKey(character.id, sceneId);
|
|
159
|
+
if (this.#instances.has(instanceKey)) {
|
|
160
|
+
throw new Error(`[Tavern] 角色已召唤(单实例每角色每场景):${character.id} @ ${sceneId}`);
|
|
161
|
+
}
|
|
162
|
+
const signal = params.signal ?? new AbortController().signal;
|
|
163
|
+
const messageText = normalizeRoleplayOpening(params.initialMessage ?? character.firstMessage ?? `(${character.name} 已就位)`);
|
|
164
|
+
// 阶段 4 + 5.2:世界书 + 记忆检索注入(场景内;命中块作为 prompt 前置块)。
|
|
165
|
+
const lore = await this.#assemble(character.id, sceneId, messageText);
|
|
166
|
+
const started = await this.#gateway.startContinuable({
|
|
167
|
+
provider: 'spawn',
|
|
168
|
+
label: character.name,
|
|
169
|
+
parent: parentAgent,
|
|
170
|
+
prompt: [
|
|
171
|
+
...lore.contentBlocks,
|
|
172
|
+
{ type: 'text', text: messageText },
|
|
173
|
+
],
|
|
174
|
+
persona: buildRoleplayPersona({ characterName: character.name, characterPersona: character.persona, mode: 'roleplay' }),
|
|
175
|
+
signal,
|
|
176
|
+
});
|
|
177
|
+
const instance = {
|
|
178
|
+
characterId: character.id,
|
|
179
|
+
sceneId,
|
|
180
|
+
parentSessionId: parentAgent.session.id,
|
|
181
|
+
childId: started.childId,
|
|
182
|
+
createdAt: new Date().toISOString(),
|
|
183
|
+
};
|
|
184
|
+
// 持久化实例(阶段 2 最小地基):await 写入后再登记内存。
|
|
185
|
+
// 记录 id = `characterId@sceneId`(同角色多场景各一条,互不覆盖)。
|
|
186
|
+
const record = {
|
|
187
|
+
id: `${character.id}@${sceneId}`,
|
|
188
|
+
characterId: character.id,
|
|
189
|
+
characterRevision: character.revision,
|
|
190
|
+
parentSessionId: instance.parentSessionId,
|
|
191
|
+
childSessionId: started.childId,
|
|
192
|
+
sceneId,
|
|
193
|
+
status: 'active',
|
|
194
|
+
createdAt: instance.createdAt,
|
|
195
|
+
};
|
|
196
|
+
await this.#instanceStore.put(record.id, record);
|
|
197
|
+
this.#instances.set(instanceKey, instance);
|
|
198
|
+
this.#lastScene.set(userId, sceneId);
|
|
199
|
+
this.#logger.info(`summon 完成:character=${character.id} scene=${sceneId.slice(0, 8)}… child=${started.childId}`
|
|
200
|
+
+ ` parent=${instance.parentSessionId}(实例已持久化 id=${record.id})`);
|
|
201
|
+
// 阶段 5.4:实例创建审计(source=user,actor=当前用户)。
|
|
202
|
+
await this.#audit.log({
|
|
203
|
+
entityType: 'instance',
|
|
204
|
+
entityId: record.id,
|
|
205
|
+
action: 'create',
|
|
206
|
+
after: {
|
|
207
|
+
characterId: character.id,
|
|
208
|
+
characterRevision: character.revision,
|
|
209
|
+
sceneId,
|
|
210
|
+
childId: String(started.childId),
|
|
211
|
+
parentSessionId: String(instance.parentSessionId),
|
|
212
|
+
},
|
|
213
|
+
source: 'user',
|
|
214
|
+
actorId: userId,
|
|
215
|
+
sceneId,
|
|
216
|
+
});
|
|
217
|
+
// 阶段 5.1/5.2:登记关系节点 + 场景参与者。辅助数据,失败仅告警不阻断召唤。
|
|
218
|
+
try {
|
|
219
|
+
await this.#relationships.ensureNode('character-instance', record.id, character.name);
|
|
220
|
+
await this.#relationships.ensureNode('user', userId, '旅人');
|
|
221
|
+
const scene = this.#scenes.getScene(sceneId);
|
|
222
|
+
await this.#scenes.addParticipant({
|
|
223
|
+
sceneId,
|
|
224
|
+
entityId: userId,
|
|
225
|
+
entityKind: 'user',
|
|
226
|
+
role: scene?.ownerUserId === userId ? 'owner' : 'member',
|
|
227
|
+
});
|
|
228
|
+
await this.#scenes.addParticipant({
|
|
229
|
+
sceneId,
|
|
230
|
+
entityId: record.id,
|
|
231
|
+
entityKind: 'character-instance',
|
|
232
|
+
role: 'member',
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
this.#logger.info(`关系节点/参与者记录失败(不影响召唤):instance=${record.id} ${error instanceof Error ? error.message : String(error)}`);
|
|
237
|
+
}
|
|
238
|
+
return { childId: started.childId, messageId: started.messageId, sceneId };
|
|
239
|
+
}
|
|
240
|
+
/** 向角色实例续推一条消息。返回仅表示 accepted,不是 completed。 */
|
|
241
|
+
async followup(params) {
|
|
242
|
+
const parentAgent = this.#sessionAgents.getCurrentAgent();
|
|
243
|
+
const parentSessionId = parentAgent.session.id;
|
|
244
|
+
const userId = this.#userIdOf(parentSessionId);
|
|
245
|
+
const sceneId = params.sceneId ?? await this.#resolveFollowupScene(userId, params.characterId);
|
|
246
|
+
const instance = this.#instances.get(_a.instanceKey(params.characterId, sceneId));
|
|
247
|
+
if (instance === undefined) {
|
|
248
|
+
throw new Error(`[Tavern] 角色未召唤:${params.characterId}(场景 ${sceneId.slice(0, 8)}…)`);
|
|
249
|
+
}
|
|
250
|
+
if (parentSessionId !== instance.parentSessionId) {
|
|
251
|
+
throw new Error(`[Tavern] parent 不匹配:followup 必须由创建该子 Agent 的直接父 Agent 发起`
|
|
252
|
+
+ `(期望 ${instance.parentSessionId},实际 ${parentSessionId})`);
|
|
253
|
+
}
|
|
254
|
+
// 场景归属验证:当前用户必须是该场景的 active 参与者(跨场景调用被拒绝)。
|
|
255
|
+
const participants = await this.#scenes.getParticipants(sceneId);
|
|
256
|
+
const joined = participants.some(participant => participant.entityKind === 'user' && participant.entityId === userId && participant.leftAt === undefined);
|
|
257
|
+
if (!joined) {
|
|
258
|
+
throw new Error(`[Tavern] 当前会话不属于场景 ${sceneId.slice(0, 8)}…(跨场景调用被拒绝)`);
|
|
259
|
+
}
|
|
260
|
+
this.#lastScene.set(userId, sceneId);
|
|
261
|
+
const signal = params.signal ?? new AbortController().signal;
|
|
262
|
+
// 阶段 4 + 5.2:世界书 + 记忆检索注入(场景内;命中块作为 content 前置块)。
|
|
263
|
+
const lore = await this.#assemble(params.characterId, sceneId, params.message);
|
|
264
|
+
const messageId = await this.#gateway.followup({
|
|
265
|
+
parent: parentAgent,
|
|
266
|
+
childId: instance.childId,
|
|
267
|
+
content: [
|
|
268
|
+
...lore.contentBlocks,
|
|
269
|
+
{ type: 'text', text: params.message },
|
|
270
|
+
],
|
|
271
|
+
source: tavernMessageSource(),
|
|
272
|
+
signal,
|
|
273
|
+
});
|
|
274
|
+
// accepted ≠ completed:只有 inbox 接受被保证;completed 需完成信号(阶段 2)。
|
|
275
|
+
this.#logger.info(`followup accepted(≠ completed):character=${params.characterId} scene=${sceneId.slice(0, 8)}…`
|
|
276
|
+
+ ` child=${instance.childId} messageId=${messageId}`);
|
|
277
|
+
// 阶段 5.4:投递审计(sourceEventId = messageId,经此查询全链路)。
|
|
278
|
+
await this.#audit.log({
|
|
279
|
+
entityType: 'delivery',
|
|
280
|
+
entityId: String(messageId),
|
|
281
|
+
action: 'create',
|
|
282
|
+
after: {
|
|
283
|
+
characterId: params.characterId,
|
|
284
|
+
sceneId,
|
|
285
|
+
childId: String(instance.childId),
|
|
286
|
+
accepted: true,
|
|
287
|
+
message: params.message,
|
|
288
|
+
},
|
|
289
|
+
source: 'user',
|
|
290
|
+
sourceEventId: String(messageId),
|
|
291
|
+
actorId: userId,
|
|
292
|
+
sceneId,
|
|
293
|
+
});
|
|
294
|
+
return { accepted: true, messageId };
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
_a = AgentOrchestrator;
|
|
298
|
+
//# sourceMappingURL=agent-orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-orchestrator.js","sourceRoot":"","sources":["../../../src/application/companion/agent-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Agent, AgentOptions } from '@deepseek-ai/dsh-agent';
|
|
2
|
+
import type { ContentBlock } from '@deepseek-ai/dsh-llm';
|
|
3
|
+
import type { ToolRestriction } from '@deepseek-ai/dsh-tools';
|
|
4
|
+
import type { CompanionModelPreference, RuntimeBindingRecord } from '../../domain/schemas.js';
|
|
5
|
+
import type { RuntimeBindingService } from '../../core/runtime-binding-service.js';
|
|
6
|
+
import type { SubagentStartPortResult, SubagentPort } from '../ports/subagent-port.js';
|
|
7
|
+
export interface CompanionChildGateway extends SubagentPort {
|
|
8
|
+
startContinuable(input: {
|
|
9
|
+
provider: string;
|
|
10
|
+
label: string;
|
|
11
|
+
parent: Agent;
|
|
12
|
+
prompt: ContentBlock[];
|
|
13
|
+
persona?: string;
|
|
14
|
+
toolFilter?: ToolRestriction;
|
|
15
|
+
agentOptions?: AgentOptions;
|
|
16
|
+
signal?: AbortSignal;
|
|
17
|
+
}): Promise<SubagentStartPortResult>;
|
|
18
|
+
}
|
|
19
|
+
export interface StartCompanionChildParams {
|
|
20
|
+
readonly ownerUserId: string;
|
|
21
|
+
readonly companionProfileId: string;
|
|
22
|
+
readonly label: string;
|
|
23
|
+
readonly parent: Agent;
|
|
24
|
+
readonly prompt: ContentBlock[];
|
|
25
|
+
readonly persona?: string;
|
|
26
|
+
readonly toolFilter?: ToolRestriction;
|
|
27
|
+
readonly workspaceId?: string;
|
|
28
|
+
readonly modelPreference?: CompanionModelPreference;
|
|
29
|
+
readonly sceneId?: string;
|
|
30
|
+
readonly signal?: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
/** Creates a DSH child only through a supplied, direct parent Agent. */
|
|
33
|
+
export declare class CompanionChildAgentService {
|
|
34
|
+
private readonly bindings;
|
|
35
|
+
private readonly gateway;
|
|
36
|
+
constructor(bindings: RuntimeBindingService, gateway: CompanionChildGateway);
|
|
37
|
+
start(params: StartCompanionChildParams): Promise<{
|
|
38
|
+
binding: RuntimeBindingRecord;
|
|
39
|
+
childId: string;
|
|
40
|
+
messageId: string;
|
|
41
|
+
route: {
|
|
42
|
+
provider?: string;
|
|
43
|
+
model?: string;
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=companion-child-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-child-service.d.ts","sourceRoot":"","sources":["../../../src/application/companion/companion-child-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC7F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAEtF,MAAM,WAAW,qBAAsB,SAAQ,YAAY;IACzD,gBAAgB,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,YAAY,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,eAAe,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;CACzO;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,CAAA;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAA;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,wBAAwB,CAAA;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAC9B;AAED,wEAAwE;AACxE,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAyB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAzD,QAAQ,EAAE,qBAAqB,EAAmB,OAAO,EAAE,qBAAqB;IAEvG,KAAK,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE;YAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAiB7K"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Creates a DSH child only through a supplied, direct parent Agent. */
|
|
2
|
+
export class CompanionChildAgentService {
|
|
3
|
+
bindings;
|
|
4
|
+
gateway;
|
|
5
|
+
constructor(bindings, gateway) {
|
|
6
|
+
this.bindings = bindings;
|
|
7
|
+
this.gateway = gateway;
|
|
8
|
+
}
|
|
9
|
+
async start(params) {
|
|
10
|
+
const parentSessionId = String(params.parent?.session?.id ?? '');
|
|
11
|
+
const preference = params.modelPreference ?? { mode: 'inherit-dsh-session' };
|
|
12
|
+
if (preference.mode === 'inherit-dsh-default' || preference.mode === 'runtime-default')
|
|
13
|
+
throw new Error(`[Tavern] 模型策略 ${preference.mode} 当前 DSH Host 未暴露可解析的默认模型,已拒绝静默回退`);
|
|
14
|
+
const route = preference.providerId === undefined && preference.modelId === undefined ? {} : { ...(preference.providerId === undefined ? {} : { provider: preference.providerId }), ...(preference.modelId === undefined ? {} : { model: preference.modelId }) };
|
|
15
|
+
const agentOptions = Object.keys(route).length === 0 ? undefined : route;
|
|
16
|
+
if (!parentSessionId.trim())
|
|
17
|
+
throw new Error('[Tavern] Companion child requires a valid direct parent Agent');
|
|
18
|
+
const requested = await this.bindings.create({ runtimeType: 'dsh-child', runtimeId: `requested:${parentSessionId}`, ownerUserId: params.ownerUserId, companionProfileId: params.companionProfileId, ...(params.workspaceId === undefined ? {} : { workspaceId: params.workspaceId }), ...(params.sceneId === undefined ? {} : { sceneId: params.sceneId }), purpose: 'companion', status: 'requested' });
|
|
19
|
+
try {
|
|
20
|
+
const started = await this.gateway.startContinuable({ provider: 'spawn', label: params.label, parent: params.parent, prompt: params.prompt, ...(params.persona === undefined ? {} : { persona: params.persona }), ...(params.toolFilter === undefined ? {} : { toolFilter: params.toolFilter }), ...(agentOptions === undefined ? {} : { agentOptions }), ...(params.signal === undefined ? {} : { signal: params.signal }) });
|
|
21
|
+
const binding = await this.bindings.activate(params.ownerUserId, requested.id, String(started.childId));
|
|
22
|
+
return { binding, childId: String(started.childId), messageId: String(started.messageId), route };
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
await this.bindings.transition(params.ownerUserId, requested.id, 'orphaned');
|
|
26
|
+
throw error;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=companion-child-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-child-service.js","sourceRoot":"","sources":["../../../src/application/companion/companion-child-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
|
|
2
|
+
import type { CompanionProfile, RelationshipEdge, RuntimeBindingRecord } from '../../domain/schemas.js';
|
|
3
|
+
import type { CompanionRuntimePort, CompanionEvent } from '../ports/companion-runtime-port.js';
|
|
4
|
+
import type { WorkspaceService } from '../workspace/workspace-service.js';
|
|
5
|
+
import type { SceneService } from '../../core/scene-service.js';
|
|
6
|
+
import type { MemoryService } from '../memory/memory-service.js';
|
|
7
|
+
import type { RuntimeBindingService } from '../../core/runtime-binding-service.js';
|
|
8
|
+
import type { RoleplayMode } from '../../core/roleplay-contract.js';
|
|
9
|
+
export interface InvokeCompanionParams {
|
|
10
|
+
readonly ownerUserId: string;
|
|
11
|
+
readonly companionProfileId: string;
|
|
12
|
+
readonly message: string;
|
|
13
|
+
readonly requestId: string;
|
|
14
|
+
readonly traceId: string;
|
|
15
|
+
readonly idempotencyKey: string;
|
|
16
|
+
readonly directParentSessionId: string;
|
|
17
|
+
readonly workspaceId?: string;
|
|
18
|
+
readonly sceneId?: string;
|
|
19
|
+
readonly bindingPurpose?: 'companion' | 'group-delivery' | 'chat-generation';
|
|
20
|
+
readonly roleplayMode?: RoleplayMode;
|
|
21
|
+
readonly groupThreadHistory?: readonly {
|
|
22
|
+
role: 'user' | 'companion';
|
|
23
|
+
senderId: string;
|
|
24
|
+
content: string;
|
|
25
|
+
}[];
|
|
26
|
+
}
|
|
27
|
+
/** Starts a tool-free Companion runtime after identity and workspace checks. */
|
|
28
|
+
export declare class CompanionInvocationService {
|
|
29
|
+
private readonly profiles;
|
|
30
|
+
private readonly bindings;
|
|
31
|
+
private readonly workspaces;
|
|
32
|
+
private readonly scenes;
|
|
33
|
+
private readonly runtime;
|
|
34
|
+
private readonly memory?;
|
|
35
|
+
private readonly relationshipView?;
|
|
36
|
+
constructor(profiles: KvTable<string, CompanionProfile>, bindings: RuntimeBindingService, workspaces: WorkspaceService, scenes: SceneService, runtime: CompanionRuntimePort, memory?: MemoryService | undefined, relationshipView?: ((ownerUserId: string, profileId: string, sceneId?: string) => Promise<RelationshipEdge[]>) | undefined);
|
|
37
|
+
invoke(params: InvokeCompanionParams): Promise<{
|
|
38
|
+
binding: RuntimeBindingRecord;
|
|
39
|
+
events: AsyncIterable<CompanionEvent>;
|
|
40
|
+
}>;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=companion-invocation-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-invocation-service.d.ts","sourceRoot":"","sources":["../../../src/application/companion/companion-invocation-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AACvG,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAC9F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAEnE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,WAAW,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC3G;AAED,gFAAgF;AAChF,qBAAa,0BAA0B;IAEnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBANjB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAC3C,QAAQ,EAAE,qBAAqB,EAC/B,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,oBAAoB,EAC7B,MAAM,CAAC,EAAE,aAAa,YAAA,EACtB,gBAAgB,CAAC,GAAE,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,aAAA;IAGzH,MAAM,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;KAAE,CAAC;CAyB/H"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Starts a tool-free Companion runtime after identity and workspace checks. */
|
|
2
|
+
export class CompanionInvocationService {
|
|
3
|
+
profiles;
|
|
4
|
+
bindings;
|
|
5
|
+
workspaces;
|
|
6
|
+
scenes;
|
|
7
|
+
runtime;
|
|
8
|
+
memory;
|
|
9
|
+
relationshipView;
|
|
10
|
+
constructor(profiles, bindings, workspaces, scenes, runtime, memory, relationshipView) {
|
|
11
|
+
this.profiles = profiles;
|
|
12
|
+
this.bindings = bindings;
|
|
13
|
+
this.workspaces = workspaces;
|
|
14
|
+
this.scenes = scenes;
|
|
15
|
+
this.runtime = runtime;
|
|
16
|
+
this.memory = memory;
|
|
17
|
+
this.relationshipView = relationshipView;
|
|
18
|
+
}
|
|
19
|
+
async invoke(params) {
|
|
20
|
+
if (!params.directParentSessionId.trim())
|
|
21
|
+
throw new Error('[Tavern] Companion invocation requires a valid DSH direct parent');
|
|
22
|
+
const profile = this.profiles.get(params.companionProfileId);
|
|
23
|
+
if (!profile || profile.ownerUserId !== params.ownerUserId || profile.status !== 'active')
|
|
24
|
+
throw new Error('[Tavern] Active Companion not found or not owned');
|
|
25
|
+
if (params.workspaceId !== undefined) {
|
|
26
|
+
const workspace = this.workspaces.getForOwner(params.ownerUserId, params.workspaceId);
|
|
27
|
+
if (!workspace || workspace.status !== 'active' || !this.workspaces.hasActiveCompanion(workspace.id, profile.id))
|
|
28
|
+
throw new Error('[Tavern] Workspace membership rejected');
|
|
29
|
+
if (params.sceneId !== undefined && !this.workspaces.hasActiveSceneBinding(workspace.id, params.sceneId))
|
|
30
|
+
throw new Error('[Tavern] Scene is not bound to Workspace');
|
|
31
|
+
}
|
|
32
|
+
if (params.sceneId !== undefined) {
|
|
33
|
+
const scene = this.scenes.getScene(params.sceneId);
|
|
34
|
+
if (!scene || scene.ownerUserId !== params.ownerUserId || scene.status !== 'active')
|
|
35
|
+
throw new Error('[Tavern] Scene is unavailable');
|
|
36
|
+
}
|
|
37
|
+
const memories = this.memory?.listActiveByCharacter(profile.characterId, params.sceneId).filter(item => (item.ownerUserId === undefined || item.ownerUserId === params.ownerUserId) && (item.sourceEventId === undefined || ((!item.sourceEventId.startsWith('promotion:') && !item.sourceEventId.startsWith('shared-history:')) || item.sourceEventId === `promotion:${profile.id}` || item.sourceEventId.startsWith(`shared-history:${profile.id}:`)))) ?? [];
|
|
38
|
+
const relationships = this.relationshipView === undefined ? [] : await this.relationshipView(params.ownerUserId, profile.id, params.sceneId);
|
|
39
|
+
const context = {
|
|
40
|
+
profile: { id: profile.id, characterId: profile.characterId, ...(profile.identitySummary === undefined ? {} : { identitySummary: profile.identitySummary }), ...(profile.personalitySummary === undefined ? {} : { personalitySummary: profile.personalitySummary }), personalityTraits: profile.personalityTraits ?? [], boundaries: profile.boundaries, goals: profile.goals, ...(profile.modelPreference === undefined ? {} : { modelPreference: profile.modelPreference }) },
|
|
41
|
+
confirmedMemoryFacts: memories.map(item => item.fact),
|
|
42
|
+
relationshipView: relationships,
|
|
43
|
+
roleplayMode: params.roleplayMode ?? (params.bindingPurpose === 'group-delivery' ? 'group-roleplay' : 'roleplay'),
|
|
44
|
+
...(params.groupThreadHistory === undefined ? {} : { groupThreadHistory: params.groupThreadHistory }),
|
|
45
|
+
};
|
|
46
|
+
const binding = await this.bindings.create({ runtimeType: 'generation', runtimeId: `generation:${params.idempotencyKey}`, ownerUserId: params.ownerUserId, companionProfileId: profile.id, ...(params.workspaceId === undefined ? {} : { workspaceId: params.workspaceId }), ...(params.sceneId === undefined ? {} : { sceneId: params.sceneId }), purpose: params.bindingPurpose ?? 'companion', status: 'active' });
|
|
47
|
+
return { binding, events: this.runtime.invoke({ ...params, characterId: profile.characterId, runtimeBindingId: binding.id, context, roleplayMode: context.roleplayMode }) };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=companion-invocation-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-invocation-service.js","sourceRoot":"","sources":["../../../src/application/companion/companion-invocation-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
|
|
2
|
+
import type { AuditService } from '../../core/audit-service.js';
|
|
3
|
+
import type { CharacterDefinition, CompanionModelPreference, CompanionProfile, CompanionProfileStatus, RelationshipEdge } from '../../domain/schemas.js';
|
|
4
|
+
import type { RelationshipService } from '../relationship/relationship-service.js';
|
|
5
|
+
export interface PromoteCompanionParams {
|
|
6
|
+
readonly ownerUserId: string;
|
|
7
|
+
readonly character: CharacterDefinition;
|
|
8
|
+
readonly displayName?: string;
|
|
9
|
+
readonly identitySummary?: string;
|
|
10
|
+
readonly communicationPreferences?: string;
|
|
11
|
+
readonly userRelationshipSummary?: string;
|
|
12
|
+
readonly sharedHistorySummary?: string;
|
|
13
|
+
readonly boundaries?: readonly string[];
|
|
14
|
+
readonly goals?: readonly string[];
|
|
15
|
+
}
|
|
16
|
+
export declare class CompanionProfileService {
|
|
17
|
+
#private;
|
|
18
|
+
constructor(profiles: KvTable<string, CompanionProfile>, audit: AuditService, relationships?: RelationshipService);
|
|
19
|
+
getForUser(ownerUserId: string, id: string): CompanionProfile | null;
|
|
20
|
+
listForUser(ownerUserId: string): CompanionProfile[];
|
|
21
|
+
findActive(ownerUserId: string, characterId: string): CompanionProfile | null;
|
|
22
|
+
promote(params: PromoteCompanionParams): Promise<{
|
|
23
|
+
profile: CompanionProfile;
|
|
24
|
+
created: boolean;
|
|
25
|
+
}>;
|
|
26
|
+
/** 当前 owner 可见的 Companion ↔ Companion 有向边。无 sceneId 时仅返回全局边。 */
|
|
27
|
+
listCompanionRelationships(ownerUserId: string, profileId: string, sceneId?: string): Promise<RelationshipEdge[]>;
|
|
28
|
+
rename(ownerUserId: string, id: string, displayName: string): Promise<CompanionProfile>;
|
|
29
|
+
setModelPreference(ownerUserId: string, id: string, preference: CompanionModelPreference): Promise<CompanionProfile>;
|
|
30
|
+
transition(ownerUserId: string, id: string, target: CompanionProfileStatus): Promise<CompanionProfile>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=companion-profile-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-profile-service.d.ts","sourceRoot":"","sources":["../../../src/application/companion/companion-profile-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACxJ,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAElF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAA;IACvC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAA;IAC1C,QAAQ,CAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACvC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACnC;AAMD,qBAAa,uBAAuB;;gBAItB,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAEjH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIpE,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAGpD,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIvE,OAAO,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAqBvG,gEAAgE;IAC1D,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAqBjH,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAYvF,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,wBAAwB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAUpH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAW7G"}
|