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,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactService —— 原始导入资产的持久化(内容寻址 + SHA-256 去重)。
|
|
3
|
+
*
|
|
4
|
+
* artifacts 表(tavern domain)以内容哈希为 id:同一字节内容只存一份。
|
|
5
|
+
* 导入内容是不可信数据:仅保存原始字节的哈希引用与元数据,不解析、不执行。
|
|
6
|
+
*/
|
|
7
|
+
import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
|
|
8
|
+
import type { Artifact, ArtifactKind } from '../domain/schemas.js';
|
|
9
|
+
export interface ArtifactMetadata {
|
|
10
|
+
readonly fileName?: string;
|
|
11
|
+
readonly cardVersion?: number;
|
|
12
|
+
readonly characterId?: string;
|
|
13
|
+
readonly unsupportedFields?: readonly string[];
|
|
14
|
+
}
|
|
15
|
+
export interface StoredArtifactResult {
|
|
16
|
+
/** 内容哈希(= artifact id)。 */
|
|
17
|
+
readonly hash: string;
|
|
18
|
+
/** 是否已存在(去重命中)。 */
|
|
19
|
+
readonly existed: boolean;
|
|
20
|
+
readonly artifact: Artifact;
|
|
21
|
+
}
|
|
22
|
+
export declare class ArtifactService {
|
|
23
|
+
#private;
|
|
24
|
+
constructor(artifacts: KvTable<string, Artifact>);
|
|
25
|
+
/** 按内容哈希读取资产;不存在返回 null。 */
|
|
26
|
+
getArtifact(hash: string): Artifact | null;
|
|
27
|
+
/**
|
|
28
|
+
* 保存原始资产(幂等):同 hash 已存在则直接返回(去重),
|
|
29
|
+
* 否则写入并返回。metadata 变更时合并更新(例如绑定 characterId)。
|
|
30
|
+
*/
|
|
31
|
+
storeArtifact(bytes: Uint8Array, kind: ArtifactKind, metadata: ArtifactMetadata): Promise<StoredArtifactResult>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=artifact-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-service.d.ts","sourceRoot":"","sources":["../../src/import/artifact-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAE9D,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAElE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,mBAAmB;IACnB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;CAC5B;AAED,qBAAa,eAAe;;gBAGd,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;IAIhD,4BAA4B;IAC5B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAI1C;;;OAGG;IACG,aAAa,CACjB,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,gBAAgB,GACzB,OAAO,CAAC,oBAAoB,CAAC;CAuCjC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ArtifactService —— 原始导入资产的持久化(内容寻址 + SHA-256 去重)。
|
|
3
|
+
*
|
|
4
|
+
* artifacts 表(tavern domain)以内容哈希为 id:同一字节内容只存一份。
|
|
5
|
+
* 导入内容是不可信数据:仅保存原始字节的哈希引用与元数据,不解析、不执行。
|
|
6
|
+
*/
|
|
7
|
+
import { sha256 } from './parser.js';
|
|
8
|
+
export class ArtifactService {
|
|
9
|
+
#artifacts;
|
|
10
|
+
constructor(artifacts) {
|
|
11
|
+
this.#artifacts = artifacts;
|
|
12
|
+
}
|
|
13
|
+
/** 按内容哈希读取资产;不存在返回 null。 */
|
|
14
|
+
getArtifact(hash) {
|
|
15
|
+
return this.#artifacts.get(hash) ?? null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* 保存原始资产(幂等):同 hash 已存在则直接返回(去重),
|
|
19
|
+
* 否则写入并返回。metadata 变更时合并更新(例如绑定 characterId)。
|
|
20
|
+
*/
|
|
21
|
+
async storeArtifact(bytes, kind, metadata) {
|
|
22
|
+
const hash = sha256(bytes);
|
|
23
|
+
const existing = this.getArtifact(hash);
|
|
24
|
+
if (existing !== null) {
|
|
25
|
+
const merged = this.#mergeMetadata(existing, metadata);
|
|
26
|
+
if (merged !== existing)
|
|
27
|
+
await this.#artifacts.put(hash, merged);
|
|
28
|
+
return { hash, existed: true, artifact: merged };
|
|
29
|
+
}
|
|
30
|
+
const artifact = {
|
|
31
|
+
id: hash,
|
|
32
|
+
kind,
|
|
33
|
+
hash,
|
|
34
|
+
size: bytes.byteLength,
|
|
35
|
+
metadata: this.#plainMetadata(metadata),
|
|
36
|
+
storedAt: new Date().toISOString(),
|
|
37
|
+
};
|
|
38
|
+
await this.#artifacts.put(hash, artifact);
|
|
39
|
+
return { hash, existed: false, artifact };
|
|
40
|
+
}
|
|
41
|
+
#mergeMetadata(existing, metadata) {
|
|
42
|
+
const merged = { ...existing.metadata };
|
|
43
|
+
if (metadata.fileName !== undefined && typeof merged.fileName !== 'string')
|
|
44
|
+
merged.fileName = metadata.fileName;
|
|
45
|
+
if (metadata.cardVersion !== undefined && typeof merged.cardVersion !== 'number')
|
|
46
|
+
merged.cardVersion = metadata.cardVersion;
|
|
47
|
+
if (metadata.characterId !== undefined)
|
|
48
|
+
merged.characterId = metadata.characterId;
|
|
49
|
+
if (metadata.unsupportedFields !== undefined && !Array.isArray(merged.unsupportedFields)) {
|
|
50
|
+
merged.unsupportedFields = [...metadata.unsupportedFields];
|
|
51
|
+
}
|
|
52
|
+
return { ...existing, metadata: merged };
|
|
53
|
+
}
|
|
54
|
+
#plainMetadata(metadata) {
|
|
55
|
+
const result = {};
|
|
56
|
+
if (metadata.fileName !== undefined)
|
|
57
|
+
result.fileName = metadata.fileName;
|
|
58
|
+
if (metadata.cardVersion !== undefined)
|
|
59
|
+
result.cardVersion = metadata.cardVersion;
|
|
60
|
+
if (metadata.characterId !== undefined)
|
|
61
|
+
result.characterId = metadata.characterId;
|
|
62
|
+
if (metadata.unsupportedFields !== undefined)
|
|
63
|
+
result.unsupportedFields = [...metadata.unsupportedFields];
|
|
64
|
+
return result;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=artifact-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-service.js","sourceRoot":"","sources":["../../src/import/artifact-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ImportService —— 角色卡导入流水线编排。
|
|
3
|
+
*
|
|
4
|
+
* 上传 artifact → 类型检测 → 解析提取 → 规范化(补全/降级/诊断)→
|
|
5
|
+
* 内容哈希去重并保存原始 artifact → 创建 CharacterDefinition(revision=1,
|
|
6
|
+
* capabilityProfileId 固定 companion,不可提升)→ 返回导入诊断。
|
|
7
|
+
*
|
|
8
|
+
* 安全:导入内容不可信,全部解析在 parser.ts 的边界内完成;本服务不执行
|
|
9
|
+
* 任何卡内代码,正则/脚本/HTML 等字段仅保留元数据并标记 unsupported。
|
|
10
|
+
*/
|
|
11
|
+
import type { KvTable } from '@deepseek-ai/dsh-storage-domain';
|
|
12
|
+
import type { Artifact, CharacterDefinition, ImportDiagnostic, LorebookDefinition } from '../domain/schemas.js';
|
|
13
|
+
/** 导入角色固定使用的 CapabilityProfile(角色卡无法提升权限)。 */
|
|
14
|
+
export declare const IMPORT_CAPABILITY_PROFILE_ID = "companion";
|
|
15
|
+
export interface CharacterImportResult {
|
|
16
|
+
readonly characterId: string;
|
|
17
|
+
readonly name: string;
|
|
18
|
+
readonly revision: number;
|
|
19
|
+
/** 内容哈希去重命中(同内容重复导入)。 */
|
|
20
|
+
readonly deduplicated: boolean;
|
|
21
|
+
readonly artifactHash: string;
|
|
22
|
+
readonly diagnostics: readonly ImportDiagnostic[];
|
|
23
|
+
}
|
|
24
|
+
export declare class ImportService {
|
|
25
|
+
#private;
|
|
26
|
+
constructor(characters: KvTable<string, CharacterDefinition>, artifacts: KvTable<string, Artifact>, lorebooks: KvTable<string, LorebookDefinition>);
|
|
27
|
+
/** 编排一次导入。解析失败抛错(带明确信息),成功返回诊断。 */
|
|
28
|
+
importCharacter(bytes: Uint8Array, fileName?: string): Promise<CharacterImportResult>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=import-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-service.d.ts","sourceRoot":"","sources":["../../src/import/import-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,gBAAgB,EAEhB,kBAAkB,EACnB,MAAM,sBAAsB,CAAA;AAI7B,8CAA8C;AAC9C,eAAO,MAAM,4BAA4B,cAAc,CAAA;AAEvD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,yBAAyB;IACzB,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAA;CAClD;AAUD,qBAAa,aAAa;;gBAMtB,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAChD,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,EACpC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,kBAAkB,CAAC;IAOhD,mCAAmC;IAC7B,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA4H5F"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ImportService —— 角色卡导入流水线编排。
|
|
3
|
+
*
|
|
4
|
+
* 上传 artifact → 类型检测 → 解析提取 → 规范化(补全/降级/诊断)→
|
|
5
|
+
* 内容哈希去重并保存原始 artifact → 创建 CharacterDefinition(revision=1,
|
|
6
|
+
* capabilityProfileId 固定 companion,不可提升)→ 返回导入诊断。
|
|
7
|
+
*
|
|
8
|
+
* 安全:导入内容不可信,全部解析在 parser.ts 的边界内完成;本服务不执行
|
|
9
|
+
* 任何卡内代码,正则/脚本/HTML 等字段仅保留元数据并标记 unsupported。
|
|
10
|
+
*/
|
|
11
|
+
import { ArtifactService } from './artifact-service.js';
|
|
12
|
+
import { detectCardKind, parseCard } from './parser.js';
|
|
13
|
+
/** 导入角色固定使用的 CapabilityProfile(角色卡无法提升权限)。 */
|
|
14
|
+
export const IMPORT_CAPABILITY_PROFILE_ID = 'companion';
|
|
15
|
+
function info(field, message) {
|
|
16
|
+
return { level: 'info', field, message };
|
|
17
|
+
}
|
|
18
|
+
function warning(field, message) {
|
|
19
|
+
return { level: 'warning', field, message };
|
|
20
|
+
}
|
|
21
|
+
export class ImportService {
|
|
22
|
+
#characters;
|
|
23
|
+
#artifacts;
|
|
24
|
+
#lorebooks;
|
|
25
|
+
constructor(characters, artifacts, lorebooks) {
|
|
26
|
+
this.#characters = characters;
|
|
27
|
+
this.#artifacts = new ArtifactService(artifacts);
|
|
28
|
+
this.#lorebooks = lorebooks;
|
|
29
|
+
}
|
|
30
|
+
/** 编排一次导入。解析失败抛错(带明确信息),成功返回诊断。 */
|
|
31
|
+
async importCharacter(bytes, fileName) {
|
|
32
|
+
const kind = detectCardKind(fileName, bytes);
|
|
33
|
+
const card = parseCard(bytes, kind);
|
|
34
|
+
const diagnostics = [];
|
|
35
|
+
// 字段映射诊断
|
|
36
|
+
diagnostics.push(info('name', `name -> ${card.name}`));
|
|
37
|
+
if (card.persona.trim() === '') {
|
|
38
|
+
diagnostics.push(warning('persona', 'description/personality/system_prompt/constant 世界书全为空:角色将无人设,仅按系统默认行为运行'));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
diagnostics.push(info('persona', `persona 已组合(${card.persona.length} 字符;含 description/personality/system_prompt 与 constant 世界书条目)`));
|
|
42
|
+
}
|
|
43
|
+
if (card.constantLoreCount > 0) {
|
|
44
|
+
diagnostics.push(info('character_book', `${card.constantLoreCount} 条 constant 世界书条目已并入 persona(始终激活)`));
|
|
45
|
+
}
|
|
46
|
+
if (card.scenario !== undefined)
|
|
47
|
+
diagnostics.push(info('scenario', 'scenario 已映射'));
|
|
48
|
+
else
|
|
49
|
+
diagnostics.push(warning('scenario', '缺少 scenario,留空'));
|
|
50
|
+
if (card.exampleDialogue !== undefined)
|
|
51
|
+
diagnostics.push(info('exampleDialogue', 'mes_example -> exampleDialogue 已映射'));
|
|
52
|
+
else
|
|
53
|
+
diagnostics.push(warning('exampleDialogue', '缺少 mes_example,留空'));
|
|
54
|
+
if (card.firstMessage !== undefined)
|
|
55
|
+
diagnostics.push(info('firstMessage', 'first_mes -> firstMessage 已映射'));
|
|
56
|
+
else
|
|
57
|
+
diagnostics.push(warning('firstMessage', '缺少 first_mes,开场白留空'));
|
|
58
|
+
diagnostics.push(info('alternateGreetings', `alternate_greetings ${card.alternateGreetings.length} 条`));
|
|
59
|
+
if (card.lorebook !== undefined) {
|
|
60
|
+
diagnostics.push(info('lorebook', '内嵌世界书已保留在 artifact 元数据,阶段 4 规范化'));
|
|
61
|
+
}
|
|
62
|
+
for (const item of card.unsupported) {
|
|
63
|
+
diagnostics.push(warning(item.field, `${item.detail}(仅保留元数据)`));
|
|
64
|
+
}
|
|
65
|
+
if (card.unknownFields.length > 0) {
|
|
66
|
+
diagnostics.push(warning('unknown', `未知字段忽略:${card.unknownFields.slice(0, 8).join('、')}${card.unknownFields.length > 8 ? '…' : ''}`));
|
|
67
|
+
}
|
|
68
|
+
// 内容哈希去重 + 保存原始 artifact
|
|
69
|
+
const unsupportedFields = card.unsupported.map(item => `${item.field}: ${item.detail}`);
|
|
70
|
+
const stored = await this.#artifacts.storeArtifact(bytes, kind, {
|
|
71
|
+
...(fileName === undefined ? {} : { fileName }),
|
|
72
|
+
cardVersion: card.version,
|
|
73
|
+
unsupportedFields,
|
|
74
|
+
});
|
|
75
|
+
diagnostics.push(info('artifact', `原始资产已保存(kind=${kind} hash=${stored.hash.slice(0, 12)}… ${stored.existed ? '去重命中' : '新建'})`));
|
|
76
|
+
// 去重:同 hash 已关联角色则复用
|
|
77
|
+
const existingCharacterId = stored.artifact.metadata.characterId;
|
|
78
|
+
if (typeof existingCharacterId === 'string' && this.#characters.get(existingCharacterId) !== undefined) {
|
|
79
|
+
const existing = this.#characters.get(existingCharacterId);
|
|
80
|
+
diagnostics.push(warning('deduplicate', `同内容已导入过(characterId=${existingCharacterId} revision=${existing.revision}),复用`));
|
|
81
|
+
return {
|
|
82
|
+
characterId: existingCharacterId,
|
|
83
|
+
name: existing.name,
|
|
84
|
+
revision: existing.revision,
|
|
85
|
+
deduplicated: true,
|
|
86
|
+
artifactHash: stored.hash,
|
|
87
|
+
diagnostics,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
// 创建 CharacterDefinition(revision=1,固定 companion)
|
|
91
|
+
const now = new Date().toISOString();
|
|
92
|
+
const characterId = `card-${stored.hash.slice(0, 16)}`;
|
|
93
|
+
// 内嵌世界书 → LorebookDefinition(绑定到角色;constant 条目已并入 persona
|
|
94
|
+
// 且带标记,ContextAssembler 检索时跳过,避免重复注入)。
|
|
95
|
+
let lorebookIds = [];
|
|
96
|
+
if (card.lorebook !== undefined && card.lorebook.entries.length > 0) {
|
|
97
|
+
const lorebookId = `lore-${characterId}`;
|
|
98
|
+
const entries = card.lorebook.entries.map(entry => ({
|
|
99
|
+
id: entry.id,
|
|
100
|
+
keys: [...entry.keys],
|
|
101
|
+
content: entry.content,
|
|
102
|
+
priority: entry.priority,
|
|
103
|
+
enabled: entry.enabled,
|
|
104
|
+
constant: entry.constant,
|
|
105
|
+
caseSensitive: entry.caseSensitive,
|
|
106
|
+
matchMode: entry.matchMode,
|
|
107
|
+
}));
|
|
108
|
+
await this.#lorebooks.put(lorebookId, {
|
|
109
|
+
id: lorebookId,
|
|
110
|
+
name: card.lorebook.name,
|
|
111
|
+
entries,
|
|
112
|
+
createdAt: now,
|
|
113
|
+
updatedAt: now,
|
|
114
|
+
});
|
|
115
|
+
lorebookIds = [lorebookId];
|
|
116
|
+
diagnostics.push(info('lorebook', `世界书已创建(id=${lorebookId},${entries.length} 条,其中 ${card.lorebook.constantCount} 条 constant 已并入 persona,其余按关键词触发注入)`));
|
|
117
|
+
}
|
|
118
|
+
const definition = {
|
|
119
|
+
id: characterId,
|
|
120
|
+
revision: 1,
|
|
121
|
+
name: card.name,
|
|
122
|
+
persona: card.persona,
|
|
123
|
+
...(card.scenario === undefined ? {} : { scenario: card.scenario }),
|
|
124
|
+
...(card.exampleDialogue === undefined ? {} : { exampleDialogue: card.exampleDialogue }),
|
|
125
|
+
...(card.firstMessage === undefined ? {} : { firstMessage: card.firstMessage }),
|
|
126
|
+
alternateGreetings: [...card.alternateGreetings],
|
|
127
|
+
capabilityProfileId: IMPORT_CAPABILITY_PROFILE_ID,
|
|
128
|
+
lorebookIds,
|
|
129
|
+
importRecordId: stored.hash,
|
|
130
|
+
status: 'active',
|
|
131
|
+
createdAt: now,
|
|
132
|
+
updatedAt: now,
|
|
133
|
+
};
|
|
134
|
+
await this.#characters.put(characterId, definition);
|
|
135
|
+
// 绑定 artifact → characterId(去重可复用)
|
|
136
|
+
await this.#artifacts.storeArtifact(bytes, kind, {
|
|
137
|
+
...(fileName === undefined ? {} : { fileName }),
|
|
138
|
+
cardVersion: card.version,
|
|
139
|
+
characterId,
|
|
140
|
+
unsupportedFields,
|
|
141
|
+
});
|
|
142
|
+
diagnostics.push(info('capabilityProfileId', `导入角色固定 ${IMPORT_CAPABILITY_PROFILE_ID}(角色卡无法提升权限)`));
|
|
143
|
+
diagnostics.push(info('created', `CharacterDefinition 已创建(id=${characterId} revision=1)`));
|
|
144
|
+
return {
|
|
145
|
+
characterId,
|
|
146
|
+
name: card.name,
|
|
147
|
+
revision: 1,
|
|
148
|
+
deduplicated: false,
|
|
149
|
+
artifactHash: stored.hash,
|
|
150
|
+
diagnostics,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=import-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-service.js","sourceRoot":"","sources":["../../src/import/import-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 角色卡解析器(Tavern Character Card V1/V2/V3)。
|
|
3
|
+
*
|
|
4
|
+
* 安全模型:导入内容一律视为不可信数据——
|
|
5
|
+
* - 只解析,不执行任何代码(无 eval、无动态 import、无脚本宿主);
|
|
6
|
+
* - JSON / PNG 元数据 / CHARX 解压全部有字节与条目上限;
|
|
7
|
+
* - UTF-8 fatal 解码(拒绝非法编码,不做替换字符猜测);
|
|
8
|
+
* - base64 规范校验(canonicality);
|
|
9
|
+
* - CHARX 路径穿越防护(normalizeCharxPath)。
|
|
10
|
+
*
|
|
11
|
+
* 降级规则:regex / Tavern Helper / HTML / 远程代码等字段仅保留原始
|
|
12
|
+
* 元数据并标记 unsupported,绝不执行。
|
|
13
|
+
*/
|
|
14
|
+
import type { LoreMatchMode } from '../domain/schemas.js';
|
|
15
|
+
/** 单个角色卡 JSON(解码后)的最大字节数。 */
|
|
16
|
+
export declare const MAX_CARD_JSON_BYTES: number;
|
|
17
|
+
/** 单个导入文件(压缩前)的最大字节数。 */
|
|
18
|
+
export declare const MAX_IMPORT_BYTES: number;
|
|
19
|
+
/** CHARX 解压总字节上限。 */
|
|
20
|
+
export declare const MAX_CHARX_UNCOMPRESSED_BYTES: number;
|
|
21
|
+
/** CHARX 条目数上限。 */
|
|
22
|
+
export declare const MAX_CHARX_ENTRIES = 512;
|
|
23
|
+
export type CardKind = 'character-card-json' | 'character-card-png' | 'charx';
|
|
24
|
+
/** 规范化的世界书(角色卡内嵌 character_book):constant 条目并入 persona,
|
|
25
|
+
* 全部条目保留供存储与溯源;检索注入仅针对非 constant 条目(阶段 4 修复)。 */
|
|
26
|
+
export interface ParsedLorebook {
|
|
27
|
+
readonly name: string;
|
|
28
|
+
readonly entries: readonly {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly keys: readonly string[];
|
|
31
|
+
readonly content: string;
|
|
32
|
+
readonly priority: number;
|
|
33
|
+
readonly enabled: boolean;
|
|
34
|
+
/** constant(始终激活):已并入 persona,检索阶段跳过。 */
|
|
35
|
+
readonly constant: boolean;
|
|
36
|
+
readonly caseSensitive: boolean;
|
|
37
|
+
readonly matchMode: LoreMatchMode;
|
|
38
|
+
}[];
|
|
39
|
+
/** constant(始终激活)条目数——这些已并入 persona,不参与检索。 */
|
|
40
|
+
readonly constantCount: number;
|
|
41
|
+
}
|
|
42
|
+
export interface ParsedCharacterCard {
|
|
43
|
+
readonly version: 1 | 2 | 3;
|
|
44
|
+
readonly specVersion: string;
|
|
45
|
+
readonly name: string;
|
|
46
|
+
readonly persona: string;
|
|
47
|
+
/** 并入 persona 的 constant 世界书条目数(始终激活)。 */
|
|
48
|
+
readonly constantLoreCount: number;
|
|
49
|
+
readonly scenario?: string;
|
|
50
|
+
readonly exampleDialogue?: string;
|
|
51
|
+
readonly firstMessage?: string;
|
|
52
|
+
readonly alternateGreetings: readonly string[];
|
|
53
|
+
/** 规范化后的内嵌世界书(无则 undefined)。 */
|
|
54
|
+
readonly lorebook?: ParsedLorebook;
|
|
55
|
+
/** 降级项:保留元数据、不执行的字段。 */
|
|
56
|
+
readonly unsupported: readonly {
|
|
57
|
+
readonly field: string;
|
|
58
|
+
readonly detail: string;
|
|
59
|
+
}[];
|
|
60
|
+
/** 被忽略的未知字段。 */
|
|
61
|
+
readonly unknownFields: readonly string[];
|
|
62
|
+
/** 解析后的原始 JSON(用于 artifact 溯源)。 */
|
|
63
|
+
readonly raw: unknown;
|
|
64
|
+
}
|
|
65
|
+
/** 检测文件种类:文件名扩展名优先,magic bytes 兜底。 */
|
|
66
|
+
export declare function detectCardKind(fileName: string | undefined, bytes: Uint8Array): CardKind;
|
|
67
|
+
/** 宽容解析一张卡 JSON;仅 name 缺失时报错,其余字段缺失给空值由调用方诊断。 */
|
|
68
|
+
export declare function parseCardJson(parsed: unknown): ParsedCharacterCard;
|
|
69
|
+
/** 解析 JSON 角色卡字节(V1/V2/V3)。 */
|
|
70
|
+
export declare function parseJSONCard(bytes: Uint8Array): ParsedCharacterCard;
|
|
71
|
+
/** 解析 PNG 角色卡(chara / ccv3 元数据)。 */
|
|
72
|
+
export declare function parsePNGCard(bytes: Uint8Array): ParsedCharacterCard;
|
|
73
|
+
/** 规范化 CHARX 条目路径:防穿越、防绝对路径、防重复。 */
|
|
74
|
+
export declare function normalizeCharxPath(value: string): string;
|
|
75
|
+
/** 解析 CHARX 压缩包:card.json 必须位于根且为 V3。 */
|
|
76
|
+
export declare function parseCHARXCard(bytes: Uint8Array): ParsedCharacterCard;
|
|
77
|
+
/** 内容哈希(SHA-256 hex)——导入去重与 artifact 内容寻址。 */
|
|
78
|
+
export declare function sha256(bytes: Uint8Array): string;
|
|
79
|
+
/** 统一入口:按检测出的类型解析。 */
|
|
80
|
+
export declare function parseCard(bytes: Uint8Array, kind: CardKind): ParsedCharacterCard;
|
|
81
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/import/parser.ts"],"names":[],"mappings":"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"}
|