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,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CharacterService —— 角色定义读写(阶段 1:get + seed)。
|
|
3
|
+
*
|
|
4
|
+
* 表句柄来自 tavern Storage Domain 的 characters 表(defineDomain +
|
|
5
|
+
* domainTable + ctx.storageDomain.open,禁止 ctx.storage.namespace)。
|
|
6
|
+
* CharacterDefinition 是静态档案,不保存任何运行态 session id。
|
|
7
|
+
*/
|
|
8
|
+
import { ELAINE_SEED } from '../seed/elaine.js';
|
|
9
|
+
/** 内置角色艾琳的稳定 id。 */
|
|
10
|
+
export const ELAINE_ID = 'elaine';
|
|
11
|
+
export class CharacterService {
|
|
12
|
+
#table;
|
|
13
|
+
constructor(table) {
|
|
14
|
+
this.#table = table;
|
|
15
|
+
}
|
|
16
|
+
/** 读一个角色定义;不存在返回 null。 */
|
|
17
|
+
get(id) {
|
|
18
|
+
return this.#table.get(id) ?? null;
|
|
19
|
+
}
|
|
20
|
+
/** 幂等种子:若 elaine 不存在则创建(只创建,不覆盖已有 revision)。 */
|
|
21
|
+
async seed() {
|
|
22
|
+
if (this.get(ELAINE_ID) !== null)
|
|
23
|
+
return;
|
|
24
|
+
const now = new Date().toISOString();
|
|
25
|
+
await this.#table.put(ELAINE_ID, {
|
|
26
|
+
...ELAINE_SEED,
|
|
27
|
+
id: ELAINE_ID,
|
|
28
|
+
createdAt: now,
|
|
29
|
+
updatedAt: now,
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** 活跃角色定义(UI 角色选择用;createdAt 升序)。 */
|
|
33
|
+
listAll() {
|
|
34
|
+
const result = [];
|
|
35
|
+
for (const [, character] of this.#table.entries()) {
|
|
36
|
+
if (character.status === 'trashed')
|
|
37
|
+
continue;
|
|
38
|
+
result.push(character);
|
|
39
|
+
}
|
|
40
|
+
result.sort((a, b) => (a.createdAt < b.createdAt ? -1 : a.createdAt > b.createdAt ? 1 : 0));
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
/** Tavern 回收站:不清除角色或其聊天记录,只改变可见性与可用性。 */
|
|
44
|
+
async trash(id) {
|
|
45
|
+
const character = this.#table.get(id);
|
|
46
|
+
if (character === undefined)
|
|
47
|
+
throw new Error(`[Tavern] 角色不存在:${id}`);
|
|
48
|
+
const next = { ...character, status: 'trashed', trashedAt: new Date().toISOString(), updatedAt: new Date().toISOString() };
|
|
49
|
+
await this.#table.put(id, next);
|
|
50
|
+
return next;
|
|
51
|
+
}
|
|
52
|
+
async restore(id) {
|
|
53
|
+
const character = this.#table.get(id);
|
|
54
|
+
if (character === undefined)
|
|
55
|
+
throw new Error(`[Tavern] 角色不存在:${id}`);
|
|
56
|
+
const next = { ...character, status: 'active', trashedAt: undefined, updatedAt: new Date().toISOString() };
|
|
57
|
+
await this.#table.put(id, next);
|
|
58
|
+
return next;
|
|
59
|
+
}
|
|
60
|
+
listTrashed() {
|
|
61
|
+
const result = [];
|
|
62
|
+
for (const [, character] of this.#table.entries())
|
|
63
|
+
if (character.status === 'trashed')
|
|
64
|
+
result.push(character);
|
|
65
|
+
return result.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt));
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=character-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-service.js","sourceRoot":"","sources":["../../src/core/character-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatFileIO —— 聊天文件导入导出(呈现方案 v2,M3)。
|
|
3
|
+
*
|
|
4
|
+
* 格式:SillyTavern 聊天导出 jsonl(双向兼容)。
|
|
5
|
+
* 第 1 行:{"chat_metadata": {...}, "user_name": "...", "character_name": "..."}
|
|
6
|
+
* 后续每行一条消息:{"name", "is_user", "send_date", "mes", "extra"?, "swipe_id"?, "swipes"?}
|
|
7
|
+
*
|
|
8
|
+
* 导出:消息树 → jsonl(assistant 带角色名/模型信息;swipes 简化当前版本)。
|
|
9
|
+
* 导入:jsonl → 新聊天文件(Conversation + 线性消息树,send_date 保留为 createdAt)。
|
|
10
|
+
*/
|
|
11
|
+
import type { CharacterService } from './character-service.js';
|
|
12
|
+
import type { ChatService } from './chat-service.js';
|
|
13
|
+
import type { ConversationRepository } from './conversation-repository.js';
|
|
14
|
+
export declare class ChatFileIO {
|
|
15
|
+
#private;
|
|
16
|
+
constructor(characters: CharacterService, chatService: ChatService, conversations: ConversationRepository);
|
|
17
|
+
/** 导出为 SillyTavern 兼容 jsonl 文本。 */
|
|
18
|
+
exportJsonl(conversationId: string): Promise<string>;
|
|
19
|
+
/** 从 SillyTavern jsonl 导入为新聊天文件。 */
|
|
20
|
+
importJsonl(params: {
|
|
21
|
+
characterId: string;
|
|
22
|
+
content: string;
|
|
23
|
+
title?: string;
|
|
24
|
+
}): Promise<{
|
|
25
|
+
conversationId: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=chat-file-io.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-file-io.d.ts","sourceRoot":"","sources":["../../src/core/chat-file-io.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAW1E,qBAAa,UAAU;;gBAMnB,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,sBAAsB;IAOvC,mCAAmC;IAC7B,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0C1D,oCAAoC;IAC9B,WAAW,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CA2CzH"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ChatFileIO —— 聊天文件导入导出(呈现方案 v2,M3)。
|
|
3
|
+
*
|
|
4
|
+
* 格式:SillyTavern 聊天导出 jsonl(双向兼容)。
|
|
5
|
+
* 第 1 行:{"chat_metadata": {...}, "user_name": "...", "character_name": "..."}
|
|
6
|
+
* 后续每行一条消息:{"name", "is_user", "send_date", "mes", "extra"?, "swipe_id"?, "swipes"?}
|
|
7
|
+
*
|
|
8
|
+
* 导出:消息树 → jsonl(assistant 带角色名/模型信息;swipes 简化当前版本)。
|
|
9
|
+
* 导入:jsonl → 新聊天文件(Conversation + 线性消息树,send_date 保留为 createdAt)。
|
|
10
|
+
*/
|
|
11
|
+
import { randomUUID } from 'node:crypto';
|
|
12
|
+
export class ChatFileIO {
|
|
13
|
+
#characters;
|
|
14
|
+
#chatService;
|
|
15
|
+
#conversations;
|
|
16
|
+
constructor(characters, chatService, conversations) {
|
|
17
|
+
this.#characters = characters;
|
|
18
|
+
this.#chatService = chatService;
|
|
19
|
+
this.#conversations = conversations;
|
|
20
|
+
}
|
|
21
|
+
/** 导出为 SillyTavern 兼容 jsonl 文本。 */
|
|
22
|
+
async exportJsonl(conversationId) {
|
|
23
|
+
const conversation = await this.#conversations.get(conversationId);
|
|
24
|
+
if (conversation === null)
|
|
25
|
+
throw new Error(`[Tavern] 聊天文件不存在:${conversationId}`);
|
|
26
|
+
const character = this.#characters.get(conversation.characterId);
|
|
27
|
+
const characterName = character?.name ?? conversation.characterId;
|
|
28
|
+
const messages = await this.#chatService.listMessages(conversationId);
|
|
29
|
+
const lines = [
|
|
30
|
+
JSON.stringify({
|
|
31
|
+
chat_metadata: { integrity: randomUUID(), tainted: false },
|
|
32
|
+
user_name: '用户',
|
|
33
|
+
character_name: characterName,
|
|
34
|
+
}),
|
|
35
|
+
];
|
|
36
|
+
for (const message of messages) {
|
|
37
|
+
if (message.role === 'system')
|
|
38
|
+
continue;
|
|
39
|
+
const row = {
|
|
40
|
+
name: message.role === 'user' ? '用户' : characterName,
|
|
41
|
+
is_user: message.role === 'user',
|
|
42
|
+
is_system: false,
|
|
43
|
+
send_date: message.createdAt,
|
|
44
|
+
mes: message.content,
|
|
45
|
+
};
|
|
46
|
+
if (message.role === 'assistant') {
|
|
47
|
+
row.swipe_id = 0;
|
|
48
|
+
row.swipes = [message.content];
|
|
49
|
+
if (message.modelInfo !== undefined) {
|
|
50
|
+
row.extra = {
|
|
51
|
+
...(typeof message.modelInfo.api === 'string' ? { api: message.modelInfo.api } : {}),
|
|
52
|
+
...(typeof message.modelInfo.model === 'string' ? { model: message.modelInfo.model } : {}),
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
row.extra = {};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
row.extra = { isSmallSys: false };
|
|
61
|
+
}
|
|
62
|
+
lines.push(JSON.stringify(row));
|
|
63
|
+
}
|
|
64
|
+
return `${lines.join('\n')}\n`;
|
|
65
|
+
}
|
|
66
|
+
/** 从 SillyTavern jsonl 导入为新聊天文件。 */
|
|
67
|
+
async importJsonl(params) {
|
|
68
|
+
const rows = [];
|
|
69
|
+
for (const line of params.content.split('\n')) {
|
|
70
|
+
const trimmed = line.trim();
|
|
71
|
+
if (trimmed === '')
|
|
72
|
+
continue;
|
|
73
|
+
try {
|
|
74
|
+
const parsed = JSON.parse(trimmed);
|
|
75
|
+
// 第 1 行是 chat_metadata(无 mes);其它行保留 user/assistant 内容。
|
|
76
|
+
// 用户提供的导出文件中 is_user=true,当前解析本应保留;显式兼容
|
|
77
|
+
// is_system 行,避免把 Tavern 小系统提示误当作角色回复。
|
|
78
|
+
if (typeof parsed.mes === 'string' && parsed.is_system !== true)
|
|
79
|
+
rows.push(parsed);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// 坏行跳过(容错导入)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (rows.length === 0)
|
|
86
|
+
throw new Error('[Tavern] 导入内容为空或格式无效(需要 SillyTavern jsonl)');
|
|
87
|
+
const { conversationId } = await this.#chatService.startConversation({ characterId: params.characterId });
|
|
88
|
+
if (params.title?.trim() !== undefined && params.title.trim() !== '') {
|
|
89
|
+
await this.#conversations.update(conversationId, { title: params.title.trim().slice(0, 120) });
|
|
90
|
+
}
|
|
91
|
+
// 聊天内容一律按 is_user 写入,绝不依赖 name 字段推断角色。
|
|
92
|
+
let parentId;
|
|
93
|
+
for (const row of rows) {
|
|
94
|
+
const message = await this.#conversations.addMessage({
|
|
95
|
+
id: randomUUID(),
|
|
96
|
+
conversationId,
|
|
97
|
+
...(parentId === undefined ? {} : { parentMessageId: parentId }),
|
|
98
|
+
role: row.is_user === true ? 'user' : 'assistant',
|
|
99
|
+
content: row.mes ?? '',
|
|
100
|
+
status: 'active',
|
|
101
|
+
...(row.send_date === undefined ? {} : { createdAt: new Date(row.send_date).toISOString() }),
|
|
102
|
+
...(row.extra?.model === undefined && row.extra?.api === undefined
|
|
103
|
+
? {}
|
|
104
|
+
: { modelInfo: { api: row.extra.api, model: row.extra.model } }),
|
|
105
|
+
});
|
|
106
|
+
parentId = message.id;
|
|
107
|
+
}
|
|
108
|
+
if (parentId !== undefined) {
|
|
109
|
+
await this.#conversations.updateActiveLeaf(conversationId, parentId);
|
|
110
|
+
}
|
|
111
|
+
return { conversationId };
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=chat-file-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-file-io.js","sourceRoot":"","sources":["../../src/core/chat-file-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** @deprecated Use application/chat/chat-application-service instead. */
|
|
2
|
+
export { ChatApplicationService as ChatService } from '../application/chat/chat-application-service.js';
|
|
3
|
+
export type { ModelSelection } from '../application/chat/chat-application-service.js';
|
|
4
|
+
//# sourceMappingURL=chat-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-service.d.ts","sourceRoot":"","sources":["../../src/core/chat-service.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,sBAAsB,IAAI,WAAW,EAAE,MAAM,iDAAiD,CAAA;AACvG,YAAY,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-service.js","sourceRoot":"","sources":["../../src/core/chat-service.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,OAAO,EAAE,sBAAsB,IAAI,WAAW,EAAE,MAAM,iDAAiD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-arguments.d.ts","sourceRoot":"","sources":["../../src/core/command-arguments.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAyB7D"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export function parseCommandArguments(input) {
|
|
2
|
+
const args = [];
|
|
3
|
+
let current = '';
|
|
4
|
+
let quote = null;
|
|
5
|
+
let escaped = false;
|
|
6
|
+
for (const character of input.trim()) {
|
|
7
|
+
if (escaped) {
|
|
8
|
+
current += character;
|
|
9
|
+
escaped = false;
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
if (character === '\\' && quote !== null) {
|
|
13
|
+
escaped = true;
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
if (quote !== null) {
|
|
17
|
+
if (character === quote)
|
|
18
|
+
quote = null;
|
|
19
|
+
else
|
|
20
|
+
current += character;
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
if (character === '"' || character === "'") {
|
|
24
|
+
quote = character;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (/\s/.test(character)) {
|
|
28
|
+
if (current) {
|
|
29
|
+
args.push(current);
|
|
30
|
+
current = '';
|
|
31
|
+
}
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
current += character;
|
|
35
|
+
}
|
|
36
|
+
if (escaped || quote !== null)
|
|
37
|
+
throw new Error('[Tavern] 指令参数中的引号未闭合');
|
|
38
|
+
if (current)
|
|
39
|
+
args.push(current);
|
|
40
|
+
return args;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=command-arguments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-arguments.js","sourceRoot":"","sources":["../../src/core/command-arguments.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,IAAI,GAAa,EAAE,CAAA;IACzB,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,KAAK,GAAqB,IAAI,CAAA;IAClC,IAAI,OAAO,GAAG,KAAK,CAAA;IAEnB,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE,CAAC;YAAC,OAAO,IAAI,SAAS,CAAC;YAAC,OAAO,GAAG,KAAK,CAAC;YAAC,SAAQ;QAAC,CAAC;QAChE,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;YAAC,SAAQ;QAAC,CAAC;QACtE,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,SAAS,KAAK,KAAK;gBAAE,KAAK,GAAG,IAAI,CAAA;;gBAChC,OAAO,IAAI,SAAS,CAAA;YACzB,SAAQ;QACV,CAAC;QACD,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,GAAG,SAAS,CAAC;YAAC,SAAQ;QAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACzB,IAAI,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAA;YAAC,CAAC;YACjD,SAAQ;QACV,CAAC;QACD,OAAO,IAAI,SAAS,CAAA;IACtB,CAAC;IAED,IAAI,OAAO,IAAI,KAAK,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACtE,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/B,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-child-agent-service.d.ts","sourceRoot":"","sources":["../../src/core/companion-child-agent-service.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,cAAc,qDAAqD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-child-agent-service.js","sourceRoot":"","sources":["../../src/core/companion-child-agent-service.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,cAAc,qDAAqD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-invocation-service.d.ts","sourceRoot":"","sources":["../../src/core/companion-invocation-service.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,0DAA0D,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-invocation-service.js","sourceRoot":"","sources":["../../src/core/companion-invocation-service.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,cAAc,0DAA0D,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-profile-service.d.ts","sourceRoot":"","sources":["../../src/core/companion-profile-service.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,uDAAuD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-profile-service.js","sourceRoot":"","sources":["../../src/core/companion-profile-service.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,cAAc,uDAAuD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-promotion-service.d.ts","sourceRoot":"","sources":["../../src/core/companion-promotion-service.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,cAAc,yDAAyD,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"companion-promotion-service.js","sourceRoot":"","sources":["../../src/core/companion-promotion-service.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,cAAc,yDAAyD,CAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ContextAssembler —— 世界书 + 记忆上下文组装(阶段 4 + 5.2)。
|
|
3
|
+
*
|
|
4
|
+
* 每次 summon / followup 前调用:按用户消息检索角色世界书的关键词条目与
|
|
5
|
+
* 独立记忆(MemoryService.recall),稳定排序(Lore 优先,Memory 次之),
|
|
6
|
+
* 按条目数与字符预算截断,生成注入的 ContentBlock[] 与确定性 fingerprint
|
|
7
|
+
* (审计用)。记忆块格式遵循产品文档:
|
|
8
|
+
* <context source="tavern:memory">\n- fact\n- fact\n</context>
|
|
9
|
+
* 位于 Lore 块之后、用户消息之前。
|
|
10
|
+
*
|
|
11
|
+
* 注意:constant(始终激活)世界书条目在导入时已并入 persona,不参与检索;
|
|
12
|
+
* 本模块只处理**非 constant 的触发条目**(社区卡的世界书主体内容)。
|
|
13
|
+
*/
|
|
14
|
+
import type { ContentBlock } from '@deepseek-ai/dsh-llm';
|
|
15
|
+
import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
|
|
16
|
+
import type { CharacterDefinition, LorebookDefinition, LoreEntry, MemoryEntry } from '../domain/schemas.js';
|
|
17
|
+
import type { MemoryRetriever } from './memory-retriever.js';
|
|
18
|
+
/** 默认注入预算:最多 5 条 / 2000 字符。 */
|
|
19
|
+
export declare const DEFAULT_MAX_LORE_ENTRIES = 5;
|
|
20
|
+
export declare const DEFAULT_MAX_LORE_CHARS = 2000;
|
|
21
|
+
/** 记忆注入预算:最多 3 条 / 1000 字符。 */
|
|
22
|
+
export declare const DEFAULT_MAX_MEMORY_ENTRIES = 3;
|
|
23
|
+
export declare const DEFAULT_MAX_MEMORY_CHARS = 1000;
|
|
24
|
+
export interface AssembleParams {
|
|
25
|
+
readonly characterId: string;
|
|
26
|
+
readonly userMessage: string;
|
|
27
|
+
/** 场景归属(阶段 5.3):提供时记忆只在该场景内检索(隔离)。 */
|
|
28
|
+
readonly sceneId?: string;
|
|
29
|
+
readonly maxLoreEntries?: number;
|
|
30
|
+
readonly maxLoreChars?: number;
|
|
31
|
+
readonly maxMemoryEntries?: number;
|
|
32
|
+
readonly maxMemoryChars?: number;
|
|
33
|
+
}
|
|
34
|
+
export interface LoreMatch {
|
|
35
|
+
readonly entryId: string;
|
|
36
|
+
readonly key: string;
|
|
37
|
+
}
|
|
38
|
+
export interface LoreSelection {
|
|
39
|
+
readonly entries: readonly LoreEntry[];
|
|
40
|
+
readonly matched: readonly LoreMatch[];
|
|
41
|
+
/** 截断统计:候选数 → 保留数,保留字符总数。 */
|
|
42
|
+
readonly requested: number;
|
|
43
|
+
readonly kept: number;
|
|
44
|
+
readonly keptChars: number;
|
|
45
|
+
}
|
|
46
|
+
export interface AssembledContext {
|
|
47
|
+
readonly injectedLore: readonly LoreEntry[];
|
|
48
|
+
readonly injectedMemory: readonly MemoryEntry[];
|
|
49
|
+
readonly matched: readonly LoreMatch[];
|
|
50
|
+
readonly contentBlocks: readonly ContentBlock[];
|
|
51
|
+
readonly fingerprint: string;
|
|
52
|
+
/** Lore 截断统计(候选数 → 保留数,保留字符总数)。 */
|
|
53
|
+
readonly truncated: {
|
|
54
|
+
readonly requested: number;
|
|
55
|
+
readonly kept: number;
|
|
56
|
+
readonly keptChars: number;
|
|
57
|
+
};
|
|
58
|
+
/** Memory 截断统计(候选数 → 保留数,保留字符总数)。 */
|
|
59
|
+
readonly memoryTruncated: {
|
|
60
|
+
readonly requested: number;
|
|
61
|
+
readonly kept: number;
|
|
62
|
+
readonly keptChars: number;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** 单个关键词是否命中(contains=子串;word=完整词 \b 边界)。 */
|
|
66
|
+
export declare function keyMatches(entry: LoreEntry, key: string, message: string): boolean;
|
|
67
|
+
/** 检索 + 排序 + 截断的纯函数(单元测试核心)。 */
|
|
68
|
+
export declare function selectLoreEntries(lorebook: LorebookDefinition | undefined, userMessage: string, maxEntries: number, maxChars: number): LoreSelection;
|
|
69
|
+
/** 命中条目 → 注入的 ContentBlock[](每条一个块,带关键词标注)。 */
|
|
70
|
+
export declare function buildLoreContentBlocks(entries: readonly LoreEntry[]): ContentBlock[];
|
|
71
|
+
/** 记忆字符预算截断(salience 已在 recall 内排序;首条超长仍保留)。 */
|
|
72
|
+
export declare function truncateMemoriesByChars(entries: readonly MemoryEntry[], maxChars: number): MemoryEntry[];
|
|
73
|
+
/** 记忆 → 注入块(单块,格式见文件头文档)。 */
|
|
74
|
+
export declare function buildMemoryContextBlock(entries: readonly MemoryEntry[]): ContentBlock | undefined;
|
|
75
|
+
/** 确定性指纹:sha256(characterId|message|entryIds|contents)。 */
|
|
76
|
+
export declare function loreFingerprint(characterId: string, userMessage: string, entries: readonly LoreEntry[]): string;
|
|
77
|
+
/** 确定性指纹:sha256(characterId|message|memoryIds|facts)。 */
|
|
78
|
+
export declare function memoryFingerprint(characterId: string, userMessage: string, entries: readonly MemoryEntry[]): string;
|
|
79
|
+
/** 带存储的组装器:characterId → 角色 → lorebookIds[0] → 世界书 → 记忆 → 注入。 */
|
|
80
|
+
export declare class ContextAssembler {
|
|
81
|
+
#private;
|
|
82
|
+
constructor(characters: KvTable<string, CharacterDefinition>, lorebooks: KvTable<string, LorebookDefinition>, memories: MemoryRetriever);
|
|
83
|
+
/** 角色的世界书(未绑定或不存在返回 undefined)。 */
|
|
84
|
+
lorebookOf(characterId: string): LorebookDefinition | undefined;
|
|
85
|
+
/**
|
|
86
|
+
* 组装一次投递的世界书 + 记忆上下文。空消息 / 无世界书 / 无命中均返回
|
|
87
|
+
* 空结果(不抛异常);fingerprint 在空结果时也确定性可算。
|
|
88
|
+
* 顺序:Lore 块在前,Memory 块在后(均位于用户消息之前)。
|
|
89
|
+
*/
|
|
90
|
+
assemble(params: AssembleParams): Promise<AssembledContext>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=context-assembler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-assembler.d.ts","sourceRoot":"","sources":["../../src/core/context-assembler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAC3G,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAE5D,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,IAAI,CAAA;AACzC,eAAO,MAAM,sBAAsB,OAAO,CAAA;AAC1C,+BAA+B;AAC/B,eAAO,MAAM,0BAA0B,IAAI,CAAA;AAC3C,eAAO,MAAM,wBAAwB,OAAO,CAAA;AAE5C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CACjC;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IACtC,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAA;IAC3C,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/C,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAA;IACtC,QAAQ,CAAC,aAAa,EAAE,SAAS,YAAY,EAAE,CAAA;IAC/C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,mCAAmC;IACnC,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACrG,qCAAqC;IACrC,QAAQ,CAAC,eAAe,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;CAC5G;AAED,6CAA6C;AAC7C,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CASlF;AAED,gCAAgC;AAChC,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,kBAAkB,GAAG,SAAS,EACxC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,aAAa,CAmCf;AAED,+CAA+C;AAC/C,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,YAAY,EAAE,CAKpF;AAED,gDAAgD;AAChD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE,CASxG;AAED,6BAA6B;AAC7B,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,YAAY,GAAG,SAAS,CAIjG;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,CAO/G;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAOnH;AAED,iEAAiE;AACjE,qBAAa,gBAAgB;;gBAMzB,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAChD,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAC9C,QAAQ,EAAE,eAAe;IAO3B,mCAAmC;IACnC,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAO/D;;;;OAIG;IACG,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;CA4ClE"}
|