@lemoncat7/dsh-partner 2.8.7 → 2.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -1
- package/docs/THIRD_PARTY_LICENSES.md +67 -0
- package/docs/blobfox-manifest.json +109 -0
- package/docs/character-cards-and-renewal.md +23 -0
- package/docs/chat-delivery.md +25 -0
- package/docs/licenses/Apache-2.0.txt +202 -0
- package/docs/natural-conversation-port.md +58 -0
- package/docs/qq-attention.md +51 -0
- package/docs/qq-channel.md +80 -0
- package/docs/releases/2.10.0.md +14 -0
- package/docs/releases/2.10.1.md +12 -0
- package/docs/releases/2.11.0.md +9 -0
- package/docs/releases/2.11.1.md +9 -0
- package/docs/releases/2.11.2.md +7 -0
- package/docs/releases/2.11.3.md +11 -0
- package/docs/releases/2.11.4.md +7 -0
- package/docs/releases/2.11.5.md +7 -0
- package/docs/releases/2.11.6.md +9 -0
- package/docs/releases/2.11.7.md +9 -0
- package/docs/releases/2.12.0.md +14 -0
- package/docs/releases/2.13.0.md +9 -0
- package/docs/releases/2.14.0.md +9 -0
- package/docs/releases/2.15.0.md +9 -0
- package/docs/releases/2.15.1.md +9 -0
- package/docs/releases/2.16.0.md +18 -0
- package/docs/releases/2.17.0.md +23 -0
- package/docs/releases/2.17.1.md +9 -0
- package/docs/releases/2.18.0.md +9 -0
- package/docs/releases/2.18.1.md +5 -0
- package/docs/releases/2.19.0.md +14 -0
- package/docs/releases/2.19.1.md +7 -0
- package/docs/releases/2.19.2.md +9 -0
- package/docs/releases/2.19.3.md +5 -0
- package/docs/releases/2.20.0.md +10 -0
- package/docs/releases/2.20.1.md +8 -0
- package/docs/releases/2.21.0.md +7 -0
- package/docs/releases/2.21.1.md +8 -0
- package/docs/releases/2.21.2.md +10 -0
- package/docs/releases/2.21.3.md +7 -0
- package/docs/releases/2.21.4.md +8 -0
- package/docs/releases/2.21.5.md +15 -0
- package/docs/releases/2.9.0.md +13 -0
- package/docs/releases/2.9.1.md +11 -0
- package/docs/releases/2.9.2.md +11 -0
- package/docs/storage-read-performance.md +35 -0
- package/docs/tool-entry-compatibility.md +11 -0
- package/lib/agent-runtime.d.ts +25 -2
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +498 -86
- package/lib/agent-runtime.js.map +1 -1
- package/lib/api/features/stickers-api.d.ts +5 -0
- package/lib/api/features/stickers-api.d.ts.map +1 -0
- package/lib/api/features/stickers-api.js +35 -0
- package/lib/api/features/stickers-api.js.map +1 -0
- package/lib/api.d.ts +3 -0
- package/lib/api.d.ts.map +1 -1
- package/lib/api.js +126 -26
- package/lib/api.js.map +1 -1
- package/lib/attachments/storage-admin.js +1 -1
- package/lib/attachments/storage-admin.js.map +1 -1
- package/lib/channel-message.d.ts +24 -0
- package/lib/channel-message.d.ts.map +1 -1
- package/lib/channel-message.js.map +1 -1
- package/lib/channels/delivery-policy.d.ts +3 -0
- package/lib/channels/delivery-policy.d.ts.map +1 -1
- package/lib/channels/delivery-policy.js +24 -3
- package/lib/channels/delivery-policy.js.map +1 -1
- package/lib/channels/direct/dispatcher.d.ts +2 -2
- package/lib/channels/direct/dispatcher.d.ts.map +1 -1
- package/lib/channels/direct/dispatcher.js +13 -4
- package/lib/channels/direct/dispatcher.js.map +1 -1
- package/lib/channels/direct/login.d.ts.map +1 -1
- package/lib/channels/direct/login.js +4 -0
- package/lib/channels/direct/login.js.map +1 -1
- package/lib/channels/direct/media.d.ts +2 -0
- package/lib/channels/direct/media.d.ts.map +1 -1
- package/lib/channels/direct/media.js +27 -23
- package/lib/channels/direct/media.js.map +1 -1
- package/lib/channels/direct/message-format.js +127 -127
- package/lib/channels/direct/message-format.js.map +1 -1
- package/lib/channels/direct/transport.d.ts +26 -3
- package/lib/channels/direct/transport.d.ts.map +1 -1
- package/lib/channels/direct/transport.js +31 -5
- package/lib/channels/direct/transport.js.map +1 -1
- package/lib/channels/manager.d.ts +34 -0
- package/lib/channels/manager.d.ts.map +1 -1
- package/lib/channels/manager.js +639 -135
- package/lib/channels/manager.js.map +1 -1
- package/lib/channels/notification-delivery.d.ts +4 -0
- package/lib/channels/notification-delivery.d.ts.map +1 -1
- package/lib/channels/notification-delivery.js +24 -10
- package/lib/channels/notification-delivery.js.map +1 -1
- package/lib/channels/notification-route.d.ts.map +1 -1
- package/lib/channels/notification-route.js +10 -4
- package/lib/channels/notification-route.js.map +1 -1
- package/lib/channels/notification-timeout.d.ts.map +1 -1
- package/lib/channels/notification-timeout.js +2 -0
- package/lib/channels/notification-timeout.js.map +1 -1
- package/lib/channels/outbound-media.d.ts.map +1 -1
- package/lib/channels/outbound-media.js +3 -1
- package/lib/channels/outbound-media.js.map +1 -1
- package/lib/channels/qq/action-catalog.d.ts +38 -0
- package/lib/channels/qq/action-catalog.d.ts.map +1 -0
- package/lib/channels/qq/action-catalog.js +2731 -0
- package/lib/channels/qq/action-catalog.js.map +1 -0
- package/lib/channels/qq/actions.d.ts +21 -0
- package/lib/channels/qq/actions.d.ts.map +1 -0
- package/lib/channels/qq/actions.js +226 -0
- package/lib/channels/qq/actions.js.map +1 -0
- package/lib/channels/qq/affection-adapter.d.ts +3 -0
- package/lib/channels/qq/affection-adapter.d.ts.map +1 -0
- package/lib/channels/qq/affection-adapter.js +16 -0
- package/lib/channels/qq/affection-adapter.js.map +1 -0
- package/lib/channels/qq/attention-classifier.d.ts +10 -0
- package/lib/channels/qq/attention-classifier.d.ts.map +1 -0
- package/lib/channels/qq/attention-classifier.js +62 -0
- package/lib/channels/qq/attention-classifier.js.map +1 -0
- package/lib/channels/qq/authority.d.ts +10 -0
- package/lib/channels/qq/authority.d.ts.map +1 -0
- package/lib/channels/qq/authority.js +50 -0
- package/lib/channels/qq/authority.js.map +1 -0
- package/lib/channels/qq/autonomy.d.ts +30 -0
- package/lib/channels/qq/autonomy.d.ts.map +1 -0
- package/lib/channels/qq/autonomy.js +88 -0
- package/lib/channels/qq/autonomy.js.map +1 -0
- package/lib/channels/qq/catalog.d.ts +14 -0
- package/lib/channels/qq/catalog.d.ts.map +1 -0
- package/lib/channels/qq/catalog.js +34 -0
- package/lib/channels/qq/catalog.js.map +1 -0
- package/lib/channels/qq/connection.d.ts +28 -0
- package/lib/channels/qq/connection.d.ts.map +1 -0
- package/lib/channels/qq/connection.js +200 -0
- package/lib/channels/qq/connection.js.map +1 -0
- package/lib/channels/qq/identity-binding.d.ts +14 -0
- package/lib/channels/qq/identity-binding.d.ts.map +1 -0
- package/lib/channels/qq/identity-binding.js +58 -0
- package/lib/channels/qq/identity-binding.js.map +1 -0
- package/lib/channels/qq/latency.d.ts +22 -0
- package/lib/channels/qq/latency.d.ts.map +1 -0
- package/lib/channels/qq/latency.js +21 -0
- package/lib/channels/qq/latency.js.map +1 -0
- package/lib/channels/qq/message.d.ts +6 -0
- package/lib/channels/qq/message.d.ts.map +1 -0
- package/lib/channels/qq/message.js +49 -0
- package/lib/channels/qq/message.js.map +1 -0
- package/lib/channels/qq/reply-rules.d.ts +30 -0
- package/lib/channels/qq/reply-rules.d.ts.map +1 -0
- package/lib/channels/qq/reply-rules.js +72 -0
- package/lib/channels/qq/reply-rules.js.map +1 -0
- package/lib/channels/qq/reply-tool.d.ts +6 -0
- package/lib/channels/qq/reply-tool.d.ts.map +1 -0
- package/lib/channels/qq/reply-tool.js +113 -0
- package/lib/channels/qq/reply-tool.js.map +1 -0
- package/lib/channels/qq/settings.d.ts +42 -0
- package/lib/channels/qq/settings.d.ts.map +1 -0
- package/lib/channels/qq/settings.js +68 -0
- package/lib/channels/qq/settings.js.map +1 -0
- package/lib/channels/qq/sticker-adapter.d.ts +5 -0
- package/lib/channels/qq/sticker-adapter.d.ts.map +1 -0
- package/lib/channels/qq/sticker-adapter.js +43 -0
- package/lib/channels/qq/sticker-adapter.js.map +1 -0
- package/lib/channels/qq/transport.d.ts +29 -0
- package/lib/channels/qq/transport.d.ts.map +1 -0
- package/lib/channels/qq/transport.js +187 -0
- package/lib/channels/qq/transport.js.map +1 -0
- package/lib/channels/reply-access.d.ts +25 -0
- package/lib/channels/reply-access.d.ts.map +1 -0
- package/lib/channels/reply-access.js +29 -0
- package/lib/channels/reply-access.js.map +1 -0
- package/lib/channels/reply-progress-controller.d.ts +1 -0
- package/lib/channels/reply-progress-controller.d.ts.map +1 -1
- package/lib/channels/reply-progress-controller.js +8 -0
- package/lib/channels/reply-progress-controller.js.map +1 -1
- package/lib/channels/weixin/connect.d.ts +3 -1
- package/lib/channels/weixin/connect.d.ts.map +1 -1
- package/lib/character/activity-tool.d.ts +7 -0
- package/lib/character/activity-tool.d.ts.map +1 -0
- package/lib/character/activity-tool.js +38 -0
- package/lib/character/activity-tool.js.map +1 -0
- package/lib/character/affection-adapter.d.ts +13 -0
- package/lib/character/affection-adapter.d.ts.map +1 -0
- package/lib/character/affection-adapter.js +13 -0
- package/lib/character/affection-adapter.js.map +1 -0
- package/lib/character/affection-context.d.ts +7 -0
- package/lib/character/affection-context.d.ts.map +1 -0
- package/lib/character/affection-context.js +33 -0
- package/lib/character/affection-context.js.map +1 -0
- package/lib/character/affection.d.ts +47 -0
- package/lib/character/affection.d.ts.map +1 -0
- package/lib/character/affection.js +41 -0
- package/lib/character/affection.js.map +1 -0
- package/lib/character/conversation-behavior.d.ts +10 -0
- package/lib/character/conversation-behavior.d.ts.map +1 -0
- package/lib/character/conversation-behavior.js +60 -0
- package/lib/character/conversation-behavior.js.map +1 -0
- package/lib/character/domain.d.ts +53 -0
- package/lib/character/domain.d.ts.map +1 -0
- package/lib/character/domain.js +124 -0
- package/lib/character/domain.js.map +1 -0
- package/lib/character/identity-guide.d.ts +4 -0
- package/lib/character/identity-guide.d.ts.map +1 -0
- package/lib/character/identity-guide.js +14 -0
- package/lib/character/identity-guide.js.map +1 -0
- package/lib/character/idle-contact.d.ts +42 -0
- package/lib/character/idle-contact.d.ts.map +1 -0
- package/lib/character/idle-contact.js +90 -0
- package/lib/character/idle-contact.js.map +1 -0
- package/lib/character/post-reply.d.ts +19 -0
- package/lib/character/post-reply.d.ts.map +1 -0
- package/lib/character/post-reply.js +33 -0
- package/lib/character/post-reply.js.map +1 -0
- package/lib/character/preview.d.ts +12 -0
- package/lib/character/preview.d.ts.map +1 -0
- package/lib/character/preview.js +74 -0
- package/lib/character/preview.js.map +1 -0
- package/lib/character/relationship-adapter.d.ts +18 -0
- package/lib/character/relationship-adapter.d.ts.map +1 -0
- package/lib/character/relationship-adapter.js +18 -0
- package/lib/character/relationship-adapter.js.map +1 -0
- package/lib/character/sleep-service.d.ts +35 -0
- package/lib/character/sleep-service.d.ts.map +1 -0
- package/lib/character/sleep-service.js +278 -0
- package/lib/character/sleep-service.js.map +1 -0
- package/lib/character/sleep.d.ts +43 -0
- package/lib/character/sleep.d.ts.map +1 -0
- package/lib/character/sleep.js +36 -0
- package/lib/character/sleep.js.map +1 -0
- package/lib/character/state-policy.d.ts +4 -0
- package/lib/character/state-policy.d.ts.map +1 -0
- package/lib/character/state-policy.js +14 -0
- package/lib/character/state-policy.js.map +1 -0
- package/lib/character/store.d.ts +8 -0
- package/lib/character/store.d.ts.map +1 -0
- package/lib/character/store.js +27 -0
- package/lib/character/store.js.map +1 -0
- package/lib/chat/conversation.d.ts +13 -0
- package/lib/chat/conversation.d.ts.map +1 -0
- package/lib/chat/conversation.js +36 -0
- package/lib/chat/conversation.js.map +1 -0
- package/lib/chat/protocol.d.ts +51 -0
- package/lib/chat/protocol.d.ts.map +1 -0
- package/lib/chat/protocol.js +90 -0
- package/lib/chat/protocol.js.map +1 -0
- package/lib/chat/sticker-adapter.d.ts +34 -0
- package/lib/chat/sticker-adapter.d.ts.map +1 -0
- package/lib/chat/sticker-adapter.js +30 -0
- package/lib/chat/sticker-adapter.js.map +1 -0
- package/lib/chat/sticker-builtins.d.ts +9 -0
- package/lib/chat/sticker-builtins.d.ts.map +1 -0
- package/lib/chat/sticker-builtins.js +243 -0
- package/lib/chat/sticker-builtins.js.map +1 -0
- package/lib/chat/sticker-import.d.ts +13 -0
- package/lib/chat/sticker-import.d.ts.map +1 -0
- package/lib/chat/sticker-import.js +27 -0
- package/lib/chat/sticker-import.js.map +1 -0
- package/lib/chat/stickers.d.ts +28 -0
- package/lib/chat/stickers.d.ts.map +1 -0
- package/lib/chat/stickers.js +113 -0
- package/lib/chat/stickers.js.map +1 -0
- package/lib/chat/tools.d.ts +8 -0
- package/lib/chat/tools.d.ts.map +1 -0
- package/lib/chat/tools.js +137 -0
- package/lib/chat/tools.js.map +1 -0
- package/lib/client-api.d.ts +25 -1
- package/lib/client-api.d.ts.map +1 -1
- package/lib/client-api.js.map +1 -1
- package/lib/client.d.ts.map +1 -1
- package/lib/client.js +7083 -2327
- package/lib/client.js.map +4 -4
- package/lib/collaboration/composition.d.ts +4 -0
- package/lib/collaboration/composition.d.ts.map +1 -1
- package/lib/collaboration/composition.js +36 -9
- package/lib/collaboration/composition.js.map +1 -1
- package/lib/collaboration/tool-discovery.d.ts +12 -0
- package/lib/collaboration/tool-discovery.d.ts.map +1 -0
- package/lib/collaboration/tool-discovery.js +148 -0
- package/lib/collaboration/tool-discovery.js.map +1 -0
- package/lib/companions/identity-tool.d.ts +176 -0
- package/lib/companions/identity-tool.d.ts.map +1 -0
- package/lib/companions/identity-tool.js +67 -0
- package/lib/companions/identity-tool.js.map +1 -0
- package/lib/companions/identity.d.ts +24 -0
- package/lib/companions/identity.d.ts.map +1 -0
- package/lib/companions/identity.js +49 -0
- package/lib/companions/identity.js.map +1 -0
- package/lib/companions/management-tool.d.ts +1 -1
- package/lib/companions/management-tool.d.ts.map +1 -1
- package/lib/companions/management-tool.js +4 -2
- package/lib/companions/management-tool.js.map +1 -1
- package/lib/companions/management.d.ts +21 -9
- package/lib/companions/management.d.ts.map +1 -1
- package/lib/companions/management.js +18 -4
- package/lib/companions/management.js.map +1 -1
- package/lib/companions/service.js +2 -0
- package/lib/companions/service.js.map +1 -1
- package/lib/companions/session-configuration.js +2 -2
- package/lib/companions/session-configuration.js.map +1 -1
- package/lib/concern-store.d.ts +1 -0
- package/lib/concern-store.d.ts.map +1 -1
- package/lib/concern-store.js +20 -7
- package/lib/concern-store.js.map +1 -1
- package/lib/context-renewal.d.ts +5 -0
- package/lib/context-renewal.d.ts.map +1 -0
- package/lib/context-renewal.js +30 -0
- package/lib/context-renewal.js.map +1 -0
- package/lib/daily-review.d.ts +9 -1
- package/lib/daily-review.d.ts.map +1 -1
- package/lib/daily-review.js +41 -12
- package/lib/daily-review.js.map +1 -1
- package/lib/domain.d.ts +45 -1
- package/lib/domain.d.ts.map +1 -1
- package/lib/domain.js +13 -1
- package/lib/domain.js.map +1 -1
- package/lib/execution/agent-support.d.ts +1 -1
- package/lib/execution/agent-support.d.ts.map +1 -1
- package/lib/execution/agent-support.js +14 -3
- package/lib/execution/agent-support.js.map +1 -1
- package/lib/execution/operation-tool-access.d.ts +13 -0
- package/lib/execution/operation-tool-access.d.ts.map +1 -0
- package/lib/execution/operation-tool-access.js +49 -0
- package/lib/execution/operation-tool-access.js.map +1 -0
- package/lib/execution/service.d.ts.map +1 -1
- package/lib/execution/service.js +2 -10
- package/lib/execution/service.js.map +1 -1
- package/lib/execution/tool-access-adapter.d.ts +23 -0
- package/lib/execution/tool-access-adapter.d.ts.map +1 -0
- package/lib/execution/tool-access-adapter.js +25 -0
- package/lib/execution/tool-access-adapter.js.map +1 -0
- package/lib/heartbeat.d.ts +1 -0
- package/lib/heartbeat.d.ts.map +1 -1
- package/lib/heartbeat.js +14 -2
- package/lib/heartbeat.js.map +1 -1
- package/lib/history-search.d.ts +6 -0
- package/lib/history-search.d.ts.map +1 -0
- package/lib/history-search.js +51 -0
- package/lib/history-search.js.map +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +35 -1
- package/lib/index.js.map +1 -1
- package/lib/memory-domain.d.ts +4 -0
- package/lib/memory-domain.d.ts.map +1 -1
- package/lib/memory-prompt-context.js +2 -0
- package/lib/memory-prompt-context.js.map +1 -1
- package/lib/memory-reflection.d.ts.map +1 -1
- package/lib/memory-reflection.js +19 -3
- package/lib/memory-reflection.js.map +1 -1
- package/lib/memory-scope.d.ts +2 -1
- package/lib/memory-scope.d.ts.map +1 -1
- package/lib/memory-scope.js +3 -1
- package/lib/memory-scope.js.map +1 -1
- package/lib/memory-store.d.ts +20 -1
- package/lib/memory-store.d.ts.map +1 -1
- package/lib/memory-store.js +78 -27
- package/lib/memory-store.js.map +1 -1
- package/lib/notifications/service.d.ts.map +1 -1
- package/lib/notifications/service.js +3 -1
- package/lib/notifications/service.js.map +1 -1
- package/lib/observation-knowledge-entry.d.ts +2 -0
- package/lib/observation-knowledge-entry.d.ts.map +1 -0
- package/lib/observation-knowledge-entry.js +13 -0
- package/lib/observation-knowledge-entry.js.map +1 -0
- package/lib/observation-loop.d.ts.map +1 -1
- package/lib/observation-loop.js +3 -0
- package/lib/observation-loop.js.map +1 -1
- package/lib/scheduler/final-reply.d.ts +2 -0
- package/lib/scheduler/final-reply.d.ts.map +1 -1
- package/lib/storage/split-state.d.ts +1 -0
- package/lib/storage/split-state.d.ts.map +1 -1
- package/lib/storage/split-state.js +9 -2
- package/lib/storage/split-state.js.map +1 -1
- package/lib/storage/sqlite-schema.d.ts +7 -0
- package/lib/storage/sqlite-schema.d.ts.map +1 -0
- package/lib/storage/sqlite-schema.js +36 -0
- package/lib/storage/sqlite-schema.js.map +1 -0
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +7 -0
- package/lib/store.js.map +1 -1
- package/lib/ui/affection-panel.d.ts +10 -0
- package/lib/ui/affection-panel.d.ts.map +1 -0
- package/lib/ui/affection-panel.js +44 -0
- package/lib/ui/affection-panel.js.map +1 -0
- package/lib/ui/capability-editor.d.ts.map +1 -1
- package/lib/ui/capability-editor.js +1 -1
- package/lib/ui/capability-editor.js.map +1 -1
- package/lib/ui/channels-panel.d.ts.map +1 -1
- package/lib/ui/channels-panel.js +13 -9
- package/lib/ui/channels-panel.js.map +1 -1
- package/lib/ui/character-editor.d.ts +11 -0
- package/lib/ui/character-editor.d.ts.map +1 -0
- package/lib/ui/character-editor.js +110 -0
- package/lib/ui/character-editor.js.map +1 -0
- package/lib/ui/character-memory-editor.d.ts +9 -0
- package/lib/ui/character-memory-editor.d.ts.map +1 -0
- package/lib/ui/character-memory-editor.js +56 -0
- package/lib/ui/character-memory-editor.js.map +1 -0
- package/lib/ui/character-stepper.d.ts +16 -0
- package/lib/ui/character-stepper.d.ts.map +1 -0
- package/lib/ui/character-stepper.js +42 -0
- package/lib/ui/character-stepper.js.map +1 -0
- package/lib/ui/companion-draft.d.ts +5 -0
- package/lib/ui/companion-draft.d.ts.map +1 -1
- package/lib/ui/companion-draft.js +1 -1
- package/lib/ui/companion-draft.js.map +1 -1
- package/lib/ui/identity-editor.d.ts.map +1 -1
- package/lib/ui/identity-editor.js +19 -5
- package/lib/ui/identity-editor.js.map +1 -1
- package/lib/ui/idle-contact-editor.d.ts +8 -0
- package/lib/ui/idle-contact-editor.d.ts.map +1 -0
- package/lib/ui/idle-contact-editor.js +18 -0
- package/lib/ui/idle-contact-editor.js.map +1 -0
- package/lib/ui/memory/automation-settings.d.ts.map +1 -1
- package/lib/ui/memory/automation-settings.js +9 -2
- package/lib/ui/memory/automation-settings.js.map +1 -1
- package/lib/ui/memory/memory-panel.d.ts.map +1 -1
- package/lib/ui/memory/memory-panel.js +5 -3
- package/lib/ui/memory/memory-panel.js.map +1 -1
- package/lib/ui/push-draft.d.ts +7 -7
- package/lib/ui/qq-capability-settings.d.ts +9 -0
- package/lib/ui/qq-capability-settings.d.ts.map +1 -0
- package/lib/ui/qq-capability-settings.js +24 -0
- package/lib/ui/qq-capability-settings.js.map +1 -0
- package/lib/ui/qq-channel-settings.d.ts +13 -0
- package/lib/ui/qq-channel-settings.d.ts.map +1 -0
- package/lib/ui/qq-channel-settings.js +51 -0
- package/lib/ui/qq-channel-settings.js.map +1 -0
- package/lib/ui/qq-identity-binding.d.ts +9 -0
- package/lib/ui/qq-identity-binding.d.ts.map +1 -0
- package/lib/ui/qq-identity-binding.js +6 -0
- package/lib/ui/qq-identity-binding.js.map +1 -0
- package/lib/ui/qq-voice-reply-settings.d.ts +9 -0
- package/lib/ui/qq-voice-reply-settings.d.ts.map +1 -0
- package/lib/ui/qq-voice-reply-settings.js +23 -0
- package/lib/ui/qq-voice-reply-settings.js.map +1 -0
- package/lib/ui/role-reference-data.d.ts +3 -0
- package/lib/ui/role-reference-data.d.ts.map +1 -0
- package/lib/ui/role-reference-data.js +4 -0
- package/lib/ui/role-reference-data.js.map +1 -0
- package/lib/ui/role-reference.d.ts +3 -0
- package/lib/ui/role-reference.d.ts.map +1 -0
- package/lib/ui/role-reference.js +10 -0
- package/lib/ui/role-reference.js.map +1 -0
- package/lib/ui/settings-sections.d.ts +14 -0
- package/lib/ui/settings-sections.d.ts.map +1 -0
- package/lib/ui/settings-sections.js +18 -0
- package/lib/ui/settings-sections.js.map +1 -0
- package/lib/ui/sleep-editor.d.ts +10 -0
- package/lib/ui/sleep-editor.d.ts.map +1 -0
- package/lib/ui/sleep-editor.js +45 -0
- package/lib/ui/sleep-editor.js.map +1 -0
- package/lib/ui/sticker-import.d.ts +7 -0
- package/lib/ui/sticker-import.d.ts.map +1 -0
- package/lib/ui/sticker-import.js +65 -0
- package/lib/ui/sticker-import.js.map +1 -0
- package/lib/ui/sticker-library.d.ts +5 -0
- package/lib/ui/sticker-library.d.ts.map +1 -0
- package/lib/ui/sticker-library.js +55 -0
- package/lib/ui/sticker-library.js.map +1 -0
- package/lib/ui/workspace-components.js +2 -2
- package/lib/ui/workspace-components.js.map +1 -1
- package/package.json +53 -5
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { AffectionPanel } from './affection-panel.js';
|
|
3
|
+
import { renderIdentityRelationship } from '../character/relationship-adapter.js';
|
|
4
|
+
import { PERSONA_REQUEST_EXAMPLE } from '../character/identity-guide.js';
|
|
5
|
+
import { StickerLibraryDialog } from './sticker-library.js';
|
|
6
|
+
import { RoleReference } from './role-reference.js';
|
|
7
|
+
import { SettingsSections } from './settings-sections.js';
|
|
8
|
+
import { useState } from 'react';
|
|
9
|
+
import { api } from '../client-api.js';
|
|
10
|
+
import { emptyCharacterCard, normalizeCharacterCard, renderCharacterCore, roleTextForCard } from '../character/domain.js';
|
|
11
|
+
import { renderConversationBehavior } from '../character/conversation-behavior.js';
|
|
12
|
+
import { FormField as Field } from './partner-components.js';
|
|
13
|
+
import { WorkspaceDialog, DiscardChangesDialog, errorMessage } from './workspace-components.js';
|
|
14
|
+
import Stepper, { Step } from './character-stepper.js';
|
|
15
|
+
const SAMPLE = {
|
|
16
|
+
...emptyCharacterCard(), enabled: true,
|
|
17
|
+
roleText: `## 你是谁
|
|
18
|
+
一位喜欢观察日常、说话坦率的同行者。对新事物好奇,也愿意承认不知道。
|
|
19
|
+
|
|
20
|
+
## 性格与反应
|
|
21
|
+
有自己的偏好,不为了讨好而附和;轻松时开点玩笑,正事认真处理。
|
|
22
|
+
|
|
23
|
+
## 怎么说话
|
|
24
|
+
自然简洁,不机械称呼,不重复口头禅。闲聊先给直接反应,不急着提建议;需要解释时认真展开。
|
|
25
|
+
|
|
26
|
+
## 对话参考(不是固定台词)
|
|
27
|
+
对方:你是不是觉得我的想法都对?
|
|
28
|
+
回应:倒也没有,刚才那个我就不赞成。
|
|
29
|
+
避免:你的每个想法都很棒!需要我帮你完善吗?
|
|
30
|
+
|
|
31
|
+
对方:外面又下雨了。
|
|
32
|
+
回应:刚好,今天有理由不出门了。
|
|
33
|
+
避免:下雨天记得带伞哦!你可以在家看书、听音乐或者看电影。`,
|
|
34
|
+
};
|
|
35
|
+
export function CharacterEditor({ companion, card, disabled, onChange, relationshipText, active = true }) {
|
|
36
|
+
const [wizard, setWizard] = useState(false);
|
|
37
|
+
const [section, setSection] = useState('role');
|
|
38
|
+
// An explicitly empty document remains editable rather than reopening the wizard.
|
|
39
|
+
const hasContent = Boolean(card && (card.roleText !== undefined || roleTextForCard(card) || card.lore.length));
|
|
40
|
+
return _jsxs("section", { className: "dsh-partner-character", "aria-label": "\u89D2\u8272\u804A\u5929", children: [_jsxs("header", { children: [_jsxs("div", { children: [_jsx("span", { className: "dsh-partner-character-kicker", children: "ROLE & CONVERSATION" }), _jsxs("h3", { children: ["\u89D2\u8272\u804A\u5929 ", _jsx("small", { children: "\u53EF\u9009" })] }), _jsx("p", { children: "\u544A\u8BC9\u4F19\u4F34\u4F60\u60F3\u8981\u7684\u8EAB\u4EFD\u3001\u5173\u7CFB\u3001\u6027\u683C\u548C\u8BED\u6C14\uFF0C\u8BA9 AI \u6309\u89D2\u8272\u683C\u5F0F\u751F\u6210\u5E76\u5E94\u7528\u8BBE\u5B9A\u3002\u5DE5\u5177\u80FD\u529B\u9075\u5B88\u6E20\u9053\u4E0E\u8D26\u53F7\u6743\u9650\u3002" })] }), _jsxs("div", { className: "dsh-partner-character-toggle", children: [_jsx("button", { type: "button", role: "switch", "aria-label": "\u542F\u7528\u89D2\u8272\u804A\u5929", "aria-checked": card?.enabled === true, className: "dsh-partner-switch", "data-on": card?.enabled === true, disabled: disabled, onClick: () => { if (!hasContent)
|
|
41
|
+
setWizard(true);
|
|
42
|
+
else
|
|
43
|
+
onChange({ ...card, enabled: !card.enabled }); }, children: _jsx("i", { "aria-hidden": "true" }) }), _jsx("span", { "aria-hidden": "true", children: card?.enabled === true ? '已开启' : '已关闭' })] })] }), _jsxs("details", { className: "dsh-partner-settings-advanced", children: [_jsx("summary", { children: "\u600E\u4E48\u8BA9 AI \u5E2E\u6211\u751F\u6210\u4EBA\u683C\uFF1F" }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u5728\u4E0E\u8FD9\u4E2A\u4F19\u4F34\u7684\u6B63\u5F0F\u804A\u5929\u4E2D\u63D0\u51FA\u8981\u6C42\u5373\u53EF\u3002AI \u4F1A\u8BFB\u53D6\u5F53\u524D\u8BBE\u5B9A\uFF0C\u5C06\u89D2\u8272\u81EA\u8EAB\u7684\u8EAB\u4EFD\u3001\u6027\u683C\u3001\u8BED\u6C14\u4E0E\u901A\u7528\u793A\u4F8B\u5199\u5165\u89D2\u8272\u8BBE\u5B9A\uFF0C\u5C06\u4E0E\u7528\u6237\u7684\u5173\u7CFB\u3001\u4E13\u5C5E\u79F0\u547C\u4E0E\u76F8\u5904\u65B9\u5F0F\u5355\u72EC\u5199\u5165\u5173\u7CFB\u8BBE\u5B9A\u3002AI \u4FDD\u5B58\u540E\u4F1A\u66F4\u65B0\u4E0B\u65B9\u540C\u4E00\u4EFD\u8BBE\u5B9A\uFF1B\u9875\u9762\u6B63\u5728\u7F16\u8F91\u65F6\u4F1A\u4FDD\u7559\u672A\u4FDD\u5B58\u5185\u5BB9\uFF0C\u5E76\u63D0\u793A\u5148\u8F7D\u5165\u6700\u65B0\u7248\u672C\u3002" }), _jsx(Field, { label: "\u901A\u7528\u9700\u6C42\u793A\u4F8B", hint: "\u590D\u5236\u5230\u4E0E\u4F19\u4F34\u7684\u804A\u5929\u4E2D\uFF0C\u5C06\u62EC\u53F7\u91CC\u7684\u5185\u5BB9\u6362\u6210\u4F60\u7684\u8981\u6C42\u3002", children: _jsx("textarea", { readOnly: true, rows: 5, value: PERSONA_REQUEST_EXAMPLE, onFocus: event => event.currentTarget.select() }) })] }), !hasContent ? _jsxs("div", { className: "dsh-partner-character-empty", children: [_jsx("strong", { children: "\u628A\u4F60\u60F3\u8981\u7684\u89D2\u8272\u544A\u8BC9 AI" }), _jsx("p", { children: "\u63A8\u8350\u5148\u5728\u6B63\u5F0F\u804A\u5929\u4E2D\u63D0\u51FA\u8981\u6C42\uFF0C\u7531 AI \u751F\u6210\u5E76\u5E94\u7528\uFF1B\u4E5F\u53EF\u4EE5\u5728\u8FD9\u91CC\u624B\u52A8\u586B\u5199\u5185\u5BB9\u3002\u5173\u95ED\u89D2\u8272\u804A\u5929\u540E\u7EE7\u7EED\u4F7F\u7528\u57FA\u672C\u8EAB\u4EFD\u3002" }), _jsx("button", { type: "button", disabled: disabled, onClick: () => setWizard(true), children: "\u624B\u52A8\u7F16\u5199\u8BBE\u5B9A" })] }) : _jsxs(_Fragment, { children: [_jsx("p", { className: "dsh-partner-character-status", children: card.enabled ? '已启用 · 保存后下一轮应用新设定,旧对话不会决定新的语气。' : '已关闭 · 内容保留,伙伴继续使用基本身份。' }), _jsx(SettingsSections, { label: "\u89D2\u8272\u804A\u5929\u5206\u6BB5", value: section, onChange: setSection, sections: [
|
|
44
|
+
{ id: 'role', title: '角色设定', content: _jsxs("fieldset", { disabled: disabled, className: "dsh-partner-character-fields", children: [_jsx(RoleFields, { card: card, onChange: onChange }), _jsx(AffectionPanel, { companion: companion, card: card, active: active && section === 'role', disabled: disabled, onChange: onChange }), _jsxs("details", { className: "dsh-partner-settings-advanced", children: [_jsxs("summary", { children: ["\u80CC\u666F\u8D44\u6599 ", _jsxs("small", { children: ["\u53EF\u9009 \u00B7 ", card.lore.length, " \u6761"] })] }), _jsx(LoreFields, { card: card, onChange: onChange })] })] }) },
|
|
45
|
+
{ id: 'chat', title: '聊天方式', content: _jsx("fieldset", { disabled: disabled, className: "dsh-partner-character-fields", children: _jsx(ChatFields, { companionId: companion.id, card: card, onChange: onChange }) }) },
|
|
46
|
+
{ id: 'trial', title: '试聊', content: _jsx(CharacterTrial, { companion: companion, relationshipText: relationshipText, card: card }) },
|
|
47
|
+
] })] }), wizard && _jsx(CharacterWizard, { relationshipText: relationshipText, companion: companion, initial: card ?? emptyCharacterCard(), close: () => setWizard(false), complete: value => { onChange(value); setWizard(false); } })] });
|
|
48
|
+
}
|
|
49
|
+
function CharacterWizard({ companion, initial, close, complete, relationshipText }) {
|
|
50
|
+
const [draft, setDraft] = useState(() => ({ ...structuredClone(initial), enabled: true }));
|
|
51
|
+
const [step, setStep] = useState(1);
|
|
52
|
+
const [error, setError] = useState();
|
|
53
|
+
const [discard, setDiscard] = useState(false);
|
|
54
|
+
const next = () => {
|
|
55
|
+
setError(undefined);
|
|
56
|
+
try {
|
|
57
|
+
const value = normalizeCharacterCard(draft);
|
|
58
|
+
if (step === 3)
|
|
59
|
+
complete(value);
|
|
60
|
+
else
|
|
61
|
+
setStep(step + 1);
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
setError(errorMessage(e));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
const dismiss = () => JSON.stringify(draft) !== JSON.stringify({ ...initial, enabled: true }) ? setDiscard(true) : close();
|
|
68
|
+
return _jsxs(_Fragment, { children: [_jsxs(WorkspaceDialog, { title: "\u8BBE\u7F6E\u89D2\u8272", eyebrow: "ROLE SETUP", detail: "\u5148\u5199\u89D2\u8272\uFF0C\u518D\u9009\u804A\u5929\u65B9\u5F0F\u3002\u65E0\u9700\u586B\u5199\u5B8C\u6574\u4F20\u8BB0\uFF0C\u4E5F\u4E0D\u5F3A\u5236\u6DFB\u52A0\u793A\u4F8B\u3002", close: dismiss, width: "wide", className: "dsh-partner-character-dialog", children: [error && _jsx("p", { role: "alert", className: "dsh-partner-inline-error", children: error }), _jsxs(Stepper, { step: step, onStepChange: n => { setStep(n); setError(undefined); }, onNext: next, busy: false, backButtonText: "\u4E0A\u4E00\u6B65", nextButtonText: "\u7EE7\u7EED", completeButtonText: "\u5E94\u7528\u5230\u7F16\u8F91\u533A", children: [_jsxs(Step, { title: "\u89D2\u8272\u8BBE\u5B9A", children: [_jsx("p", { className: "dsh-partner-character-hint", children: "\u51E0\u6761\u5177\u4F53\u4E60\u60EF\u5C31\u591F\u3002\u53EF\u4EE5\u5148\u586B\u5165\u901A\u7528\u793A\u4F8B\uFF0C\u518D\u6539\u6210\u81EA\u5DF1\u7684\u89D2\u8272\u3002" }), _jsx("button", { type: "button", onClick: () => setDraft(structuredClone(SAMPLE)), children: "\u586B\u5165\u901A\u7528\u793A\u4F8B" }), _jsx(RoleFields, { card: draft, onChange: setDraft })] }), _jsx(Step, { title: "\u804A\u5929\u65B9\u5F0F", children: _jsx(ChatFields, { companionId: companion.id, card: draft, onChange: setDraft }) }), _jsxs(Step, { title: "\u8BD5\u804A", children: [_jsx("p", { children: "\u8BD5\u804A\u53EF\u8DF3\u8FC7\u3002\u5B8C\u6210\u540E\u70B9\u51FB\u8EAB\u4EFD\u9875\u9762\u7684\u201C\u4FDD\u5B58\u8EAB\u4EFD\u201D\u751F\u6548\u3002" }), _jsx(CharacterTrial, { companion: companion, relationshipText: relationshipText, card: draft })] })] })] }), discard && _jsx(DiscardChangesDialog, { keepEditing: () => setDiscard(false), discard: close })] });
|
|
69
|
+
}
|
|
70
|
+
function RoleFields({ card, onChange }) {
|
|
71
|
+
return _jsxs("div", { className: "dsh-partner-character-section", children: [_jsx(RoleReference, {}), card.roleText === undefined && roleTextForCard(card) && _jsx("p", { className: "dsh-partner-character-hint", children: "\u65E7\u89D2\u8272\u4E0E\u793A\u4F8B\u5B8C\u6574\u4FDD\u7559\uFF1B\u72EC\u7ACB\u7684\u65E7\u5173\u7CFB\u5B57\u6BB5\u4F1A\u663E\u793A\u5728\u201C\u5173\u7CFB\u8BBE\u5B9A\u201D\u3002\u6DF7\u5199\u5728\u6B63\u6587\u91CC\u7684\u4E13\u5C5E\u5173\u7CFB\u8BF7\u624B\u52A8\u79FB\u8FC7\u53BB\uFF0C\u6216\u8BA9 AI \u5E2E\u4F60\u62C6\u5206\u3002" }), _jsx(Field, { label: "\u89D2\u8272\u8BBE\u5B9A", hint: "\u53EA\u5199\u89D2\u8272\u81EA\u8EAB\u7684\u8EAB\u4EFD\u3001\u6027\u683C\u3001\u8BED\u6C14\u4E0E\u901A\u7528\u793A\u4F8B\u3002\u4E0E\u7528\u6237\u7684\u5173\u7CFB\u3001\u4E13\u5C5E\u79F0\u547C\u8BF7\u5199\u5728\u8EAB\u4EFD\u7684\u201C\u5173\u7CFB\u8BBE\u5B9A\u201D\uFF0C\u4E0D\u8981\u6DF7\u5165\u8FD9\u91CC\u3001\u804A\u5929\u504F\u597D\u6216\u80CC\u666F\u8D44\u6599\u3002", children: _jsx("textarea", { rows: 14, maxLength: 48000, value: roleTextForCard(card), onChange: e => onChange({ ...card, roleText: e.target.value }) }) })] });
|
|
72
|
+
}
|
|
73
|
+
function ChatFields({ card, onChange, companionId }) {
|
|
74
|
+
const [library, setLibrary] = useState(false);
|
|
75
|
+
return _jsxs("div", { className: "dsh-partner-character-section", children: [_jsxs("div", { className: "dsh-partner-conversation-summary", children: [_jsx("strong", { children: "\u50CF\u804A\u5929\u4E00\u6837\u63A5\u8BDD" }), _jsx("p", { children: "\u5148\u7ED9\u76F4\u63A5\u53CD\u5E94\uFF0C\u8BF4\u5230\u70B9\u4E0A\u5C31\u505C\u3002\u53EF\u4EE5\u4E0D\u540C\u610F\u3001\u4E0D\u77E5\u9053\u6216\u5F00\u73A9\u7B11\uFF1B\u4E0D\u56FA\u5B9A\u8FFD\u95EE\u3001\u4E0D\u628A\u95F2\u804A\u6539\u6210\u5EFA\u8BAE\u6E05\u5355\u3002\u8BA4\u771F\u6C42\u52A9\u65F6\u7167\u5E38\u67E5\u8BC1\u548C\u6267\u884C\u3002" })] }), _jsxs("div", { className: "dsh-partner-fields two", children: [_jsx(Field, { label: "\u95F2\u804A\u8282\u594F", hint: "\u53EA\u5F71\u54CD\u95F2\u804A\uFF0C\u89E3\u91CA\u548C\u4EFB\u52A1\u4EA4\u4ED8\u6309\u5B9E\u9645\u9700\u8981\u5C55\u5F00\u3002", children: _jsxs("select", { value: card.length, onChange: e => onChange({ ...card, length: e.target.value }), children: [_jsx("option", { value: "short", children: "\u77ED\u53E5\u63A5\u8BDD" }), _jsx("option", { value: "balanced", children: "\u968F\u8BDD\u9898\u81EA\u7136\u8C03\u6574" }), _jsx("option", { value: "rich", children: "\u613F\u610F\u5C55\u5F00\u804A" })] }) }), _jsxs("label", { className: "dsh-partner-character-check", children: [_jsx("input", { type: "checkbox", checked: card.narration, onChange: e => onChange({ ...card, narration: e.target.checked }) }), "\u5141\u8BB8\u5C11\u91CF\u52A8\u4F5C\u63CF\u5199"] })] }), _jsxs("div", { className: "dsh-partner-chat-options", children: [_jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: card.segmentedReplies === true, onChange: e => onChange({ ...card, segmentedReplies: e.target.checked }) }), _jsxs("span", { children: [_jsx("strong", { children: "\u5141\u8BB8\u5206\u6BB5\u56DE\u590D" }), _jsx("small", { children: "\u9ED8\u8BA4\u4E00\u53E5\u8BF4\u5B8C\u5C31\u505C\u3002\u786E\u6709\u65B0\u5185\u5BB9\u624D\u53E6\u53D1\u4E00\u6761\uFF0C\u4E0D\u51D1\u6761\u6570\u3001\u4E0D\u523B\u610F\u7B49\u5F85\uFF1B\u957F\u6587\u548C\u4EE3\u7801\u4FDD\u6301\u5B8C\u6574\u3002" })] })] }), _jsxs("label", { children: [_jsx("input", { type: "checkbox", checked: card.stickersEnabled === true, onChange: e => onChange({ ...card, stickersEnabled: e.target.checked }) }), _jsxs("span", { children: [_jsx("strong", { children: "\u8868\u60C5\u5305" }), _jsx("small", { children: "\u6839\u636E\u8BED\u5883\u4ECE\u8868\u60C5\u5E93\u9009\u56FE\uFF0C\u4F5C\u4E3A\u5355\u72EC\u6D88\u606F\u53D1\u9001\u3002\u4E0D\u652F\u6301\u8868\u60C5\u7684\u6E20\u9053\u4F1A\u663E\u793A\u56FE\u7247\u3002" })] })] }), _jsx("button", { type: "button", onClick: () => setLibrary(true), children: "\u7BA1\u7406\u8868\u60C5\u5E93" })] }), library && _jsx(StickerLibraryDialog, { companionId: companionId, close: () => setLibrary(false) }), _jsx(Field, { label: "\u989D\u5916\u804A\u5929\u504F\u597D\uFF08\u53EF\u9009\uFF09", hint: "\u4F8B\u5982\uFF1A\u73A9\u7B11\u65F6\u76F4\u63A5\u63A5\u6897\uFF1B\u8BA4\u771F\u8BF4\u70E6\u607C\u65F6\u5148\u542C\uFF0C\u4E0D\u6025\u7740\u7ED9\u5EFA\u8BAE\u3002\u7559\u7A7A\u4F7F\u7528\u9ED8\u8BA4\u804A\u5929\u89C4\u5219\u3002", children: _jsx("textarea", { rows: 4, maxLength: 2000, value: card.chatStyle ?? '', onChange: e => onChange({ ...card, chatStyle: e.target.value }) }) }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u89D2\u8272\u804A\u5929\u4FDD\u7559\u5DF2\u914D\u7F6E\u80FD\u529B\uFF1BQQ \u672A\u5F52\u5C5E\u8D26\u53F7\u4EC5\u804A\u5929\uFF0C\u4E5F\u4E0D\u4F1A\u4E3B\u52A8\u5EF6\u8FDF\u3001\u6F5C\u6C34\u6216\u7701\u7565\u5E94\u6709\u7684\u79C1\u804A\u56DE\u590D\u3002" })] });
|
|
76
|
+
}
|
|
77
|
+
function LoreFields({ card, onChange }) {
|
|
78
|
+
return _jsxs("div", { className: "dsh-partner-character-section", children: [_jsx("p", { className: "dsh-partner-character-hint", children: "\u5730\u70B9\u3001\u4EBA\u7269\u7B49\u80CC\u666F\u7EC6\u8282\u53EF\u653E\u5728\u8FD9\u91CC\uFF0C\u63D0\u5230\u5173\u952E\u8BCD\u65F6\u52A0\u8F7D\u3002\u65E5\u5E38\u804A\u5929\u65E0\u9700\u914D\u7F6E\u3002" }), card.lore.map((entry, index) => _jsxs(ContentDisclosure, { className: "dsh-partner-character-lore", initialOpen: !entry.title && !entry.content, children: [_jsxs("summary", { children: [entry.title || `新条目 ${index + 1}`, _jsx("small", { children: entry.enabled ? '已启用' : '已停用' })] }), _jsx(Field, { label: "\u6761\u76EE\u6807\u9898", children: _jsx("input", { maxLength: 100, value: entry.title, onChange: e => onChange({ ...card, lore: card.lore.map((x, i) => i === index ? { ...x, title: e.target.value } : x) }) }) }), _jsx(Field, { label: "\u89E6\u53D1\u8BCD", hint: "\u6700\u591A 8 \u4E2A\uFF0C\u7528\u9017\u53F7\u5206\u9694\u3002", children: _jsx("input", { value: entry.keywords.join(','), onChange: e => onChange({ ...card, lore: card.lore.map((x, i) => i === index ? { ...x, keywords: e.target.value.split(/[,,]/).map(t => t.trim()) } : x) }) }) }), _jsx(Field, { label: "\u8BBE\u5B9A\u5185\u5BB9", children: _jsx("textarea", { rows: 3, maxLength: 2000, value: entry.content, onChange: e => onChange({ ...card, lore: card.lore.map((x, i) => i === index ? { ...x, content: e.target.value } : x) }) }) }), _jsxs("div", { className: "dsh-partner-character-row", children: [_jsxs("label", { className: "dsh-partner-character-check", children: [_jsx("input", { type: "checkbox", checked: entry.enabled, onChange: e => onChange({ ...card, lore: card.lore.map((x, i) => i === index ? { ...x, enabled: e.target.checked } : x) }) }), _jsx("span", { children: "\u542F\u7528\u6761\u76EE" })] }), _jsx("button", { type: "button", onClick: () => onChange({ ...card, lore: card.lore.filter((_, i) => i !== index) }), children: "\u79FB\u9664\u6761\u76EE" })] })] }, entry.id)), _jsx("button", { type: "button", disabled: card.lore.length >= 40, onClick: () => onChange({ ...card, lore: [...card.lore, { id: crypto.randomUUID(), title: '', keywords: [], content: '', enabled: true }] }), children: "\u6DFB\u52A0\u4E16\u754C\u6761\u76EE" })] });
|
|
79
|
+
}
|
|
80
|
+
function CharacterTrial({ companion, card, relationshipText }) {
|
|
81
|
+
const [audience, setAudience] = useState('default');
|
|
82
|
+
const [message, setMessage] = useState('今天不太顺利,想和你聊聊。');
|
|
83
|
+
const [history, setHistory] = useState([]);
|
|
84
|
+
const [busy, setBusy] = useState(false);
|
|
85
|
+
const [error, setError] = useState();
|
|
86
|
+
const send = async () => {
|
|
87
|
+
if (busy)
|
|
88
|
+
return;
|
|
89
|
+
setBusy(true);
|
|
90
|
+
setError(undefined);
|
|
91
|
+
try {
|
|
92
|
+
normalizeCharacterCard(card);
|
|
93
|
+
const result = await api(`/companions/${encodeURIComponent(companion.id)}/character/preview`, { method: 'POST', body: JSON.stringify({ card, message, history, relationshipText, audience }) });
|
|
94
|
+
setHistory(old => [...old, { user: message, assistant: result.reply }].slice(-8));
|
|
95
|
+
setMessage('');
|
|
96
|
+
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
setError(errorMessage(e));
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
setBusy(false);
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
return _jsxs("div", { className: "dsh-partner-character-trial", children: [_jsx(Field, { label: "\u8BD5\u804A\u5BF9\u8C61", hint: "\u53EA\u6A21\u62DF\u5173\u7CFB\u52A0\u8F7D\uFF0C\u4E0D\u4F1A\u5411 QQ \u53D1\u6D88\u606F\u3002\u5207\u6362\u5BF9\u8C61\u4F1A\u6E05\u7A7A\u8BD5\u804A\u5386\u53F2\u3002", children: _jsxs("select", { disabled: busy, value: audience, onChange: e => { setAudience(e.target.value); setHistory([]); }, children: [_jsx("option", { value: "default", children: "\u666E\u901A\u4F1A\u8BDD \u00B7 \u89D2\u8272\u4E0E\u5173\u7CFB" }), _jsx("option", { value: "qq-owner", children: "QQ \u5F52\u5C5E\u8D26\u53F7 \u00B7 \u89D2\u8272\u4E0E\u5173\u7CFB" }), _jsx("option", { value: "qq-guest", children: "QQ \u5176\u4ED6\u8D26\u53F7 / \u672A\u7ED1\u5B9A \u00B7 \u4EC5\u89D2\u8272" })] }) }), _jsxs("details", { children: [_jsx("summary", { children: "\u67E5\u770B\u89D2\u8272\u4E0E\u804A\u5929\u89C4\u5219" }), _jsx("pre", { children: card.enabled ? [renderCharacterCore(card), renderIdentityRelationship({ relationshipText }, audience === 'default' ? { channel: 'default' } : { channel: 'qq', matched: audience === 'qq-owner' }), renderConversationBehavior(card)].join('\n\n') : '角色聊天未启用。' })] }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u4F7F\u7528\u6B64\u4F19\u4F34\u5F53\u524D\u6A21\u578B\uFF0C\u6700\u591A\u4FDD\u7559 8 \u7EC4\u8BD5\u804A\uFF0C\u4E0D\u5199\u6B63\u5F0F\u8BB0\u5FC6\u3002\u8FD9\u91CC\u4EC5\u9884\u89C8\u8BED\u6C14\uFF0C\u4E0D\u9884\u89C8\u5206\u6BB5\u6216\u8868\u60C5\u53D1\u9001\uFF0C\u4E0D\u6267\u884C\u64CD\u4F5C\uFF1B\u6B63\u5F0F\u4F1A\u8BDD\u6309\u6E20\u9053\u4E0E\u8D26\u53F7\u6743\u9650\u63D0\u4F9B\u5DE5\u5177\u3002" }), _jsx("div", { "aria-live": "polite", children: history.map((x, i) => _jsxs("div", { className: "dsh-partner-trial-exchange", children: [_jsxs("p", { children: [_jsx("b", { children: "\u4F60" }), x.user] }), _jsxs("p", { children: [_jsx("b", { children: companion.name }), x.assistant] })] }, i)) }), _jsx(Field, { label: "\u8BD5\u804A\u6D88\u606F", children: _jsx("textarea", { rows: 2, maxLength: 2000, disabled: busy, value: message, onChange: e => setMessage(e.target.value) }) }), error && _jsx("p", { role: "alert", className: "dsh-partner-inline-error", children: error }), _jsxs("div", { className: "dsh-partner-character-row", children: [_jsx("button", { type: "button", disabled: busy, onClick: () => setHistory([]), children: "\u91CD\u65B0\u8BD5\u804A" }), _jsx("button", { type: "button", disabled: busy || !message.trim() || !card.enabled, onClick: () => void send(), children: busy ? '角色正在回复…' : '发送试聊' })] })] });
|
|
105
|
+
}
|
|
106
|
+
function ContentDisclosure({ children, className, initialOpen }) {
|
|
107
|
+
const [open, setOpen] = useState(initialOpen);
|
|
108
|
+
return _jsx("details", { className: className, open: open, onToggle: event => setOpen(event.currentTarget.open), children: children });
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=character-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-editor.js","sourceRoot":"","sources":["../../src/ui/character-editor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAA;AACjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,GAAG,EAAsB,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,eAAe,EAAsB,MAAM,wBAAwB,CAAA;AAC7I,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AAClF,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC/F,OAAO,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAA;AAEtD,MAAM,MAAM,GAAkB;IAC5B,GAAG,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI;IACtC,QAAQ,EAAE;;;;;;;;;;;;;;;;8BAgBkB;CAC7B,CAAA;AAED,MAAM,UAAU,eAAe,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,EAA0J;IAC9P,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA4B,MAAM,CAAC,CAAA;IACzE,kFAAkF;IAClF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC9G,OAAO,mBAAS,SAAS,EAAC,uBAAuB,gBAAY,0BAAM,aACjE,6BAAQ,0BAAK,eAAM,SAAS,EAAC,8BAA8B,oCAA2B,EAAA,sDAAS,2CAAiB,IAAK,EAAA,+TAA2D,IAAM,EACpL,eAAK,SAAS,EAAC,8BAA8B,aAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,gBAAY,sCAAQ,kBAAe,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,SAAS,EAAC,oBAAoB,aAAU,IAAI,EAAE,OAAO,KAAK,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU;oCAAE,SAAS,CAAC,IAAI,CAAC,CAAC;;oCAAM,QAAQ,CAAC,EAAE,GAAG,IAAK,EAAE,OAAO,EAAE,CAAC,IAAK,CAAC,OAAO,EAAE,CAAC,CAAA,CAAC,CAAC,YAAE,2BAAe,MAAM,GAAG,GAAS,EAAA,8BAAkB,MAAM,YAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAQ,IAAM,IACnb,EACT,mBAAS,SAAS,EAAC,+BAA+B,aAAC,iGAAiC,EAAA,YAAG,SAAS,EAAC,4BAA4B,uuBAAmI,EAAA,KAAC,KAAK,IAAC,KAAK,EAAC,sCAAQ,EAAC,IAAI,EAAC,wJAA2B,YAAC,mBAAU,QAAQ,QAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,KAAK,CAAA,EAAE,CAAA,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAI,GAAQ,IAAU,EACpb,CAAC,UAAU,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,6BAA6B,aAAC,yFAA6B,EAAA,2UAA6D,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,qDAAiB,IAAM,CAAC,CAAC,CAAC,8BACtP,YAAG,SAAS,EAAC,8BAA8B,YAAE,IAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,wBAAwB,GAAK,EAC7H,KAAC,gBAAgB,IAAiB,KAAK,EAAC,sCAAQ,EAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE;4BAC/F,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAU,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,8BAA8B,aAAC,KAAC,UAAU,IAAC,IAAI,EAAE,IAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAAA,KAAC,cAAc,IAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAK,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,KAAK,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAAA,mBAAS,SAAS,EAAC,+BAA+B,aAAC,2DAAc,oDAAa,IAAK,CAAC,IAAI,CAAC,MAAM,eAAW,IAAU,EAAA,KAAC,UAAU,IAAC,IAAI,EAAE,IAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,IAAU,IAAW,EAAC;4BACvd,EAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAU,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,8BAA8B,YAAC,KAAC,UAAU,IAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,IAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,GAAW,EAAC;4BAClM,EAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAC,cAAc,IAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAK,GAAI,EAAC;yBAC/H,GAAI,IACJ,EACF,MAAM,IAAI,KAAC,eAAe,IAAC,gBAAgB,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,IAAI,kBAAkB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA,CAAC,CAAC,GAAI,IAChN,CAAA;AACZ,CAAC;AAED,SAAS,eAAe,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAsI;IACpN,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;IAC1F,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,QAAQ,CAAC,SAAS,CAAC,CAAA;QACnB,IAAI,CAAC;YAAC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YAAC,IAAI,IAAI,KAAK,CAAC;gBAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;;gBAAM,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;QAAC,CAAC;QAC5G,OAAO,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;IACzC,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;IAC1H,OAAO,8BAAE,MAAC,eAAe,IAAC,KAAK,EAAC,0BAAM,EAAC,OAAO,EAAC,YAAY,EAAC,MAAM,EAAC,sLAAgC,EAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAC,MAAM,EAAC,SAAS,EAAC,8BAA8B,aACtK,KAAK,IAAI,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,0BAA0B,YAAE,KAAK,GAAK,EAC1E,MAAC,OAAO,IAAC,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAC,oBAAK,EAAC,cAAc,EAAC,cAAI,EAAC,kBAAkB,EAAC,sCAAQ,aAC1K,MAAC,IAAI,IAAC,KAAK,EAAC,0BAAM,aAAC,YAAG,SAAS,EAAC,4BAA4B,yLAAiC,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,qDAAiB,EAAA,KAAC,UAAU,IAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,IAAO,EAC1O,KAAC,IAAI,IAAC,KAAK,EAAC,0BAAM,YAAC,KAAC,UAAU,IAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAI,GAAO,EACpG,MAAC,IAAI,IAAC,KAAK,EAAC,cAAI,aAAC,iLAAgC,EAAA,KAAC,cAAc,IAAC,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,GAAI,IAAO,IACzI,IACM,EAAC,OAAO,IAAI,KAAC,oBAAoB,IAAC,WAAW,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,KAAK,GAAI,IAAI,CAAA;AAClH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAgE;IAClG,OAAO,eAAK,SAAS,EAAC,+BAA+B,aACnD,KAAC,aAAa,KAAG,EAChB,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,YAAG,SAAS,EAAC,4BAA4B,+VAAgE,EAClK,KAAC,KAAK,IAAC,KAAK,EAAC,0BAAM,EAAC,IAAI,EAAC,sXAAgE,YAAC,mBAAU,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAI,GAAQ,IACpO,CAAA;AACR,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAqF;IACpI,MAAM,CAAC,OAAO,EAAC,UAAU,CAAC,GAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC1C,OAAO,eAAK,SAAS,EAAC,+BAA+B,aACnD,eAAK,SAAS,EAAC,kCAAkC,aAAC,0EAAwB,EAAA,uXAAiE,IAAM,EACjJ,eAAK,SAAS,EAAC,wBAAwB,aAAC,KAAC,KAAK,IAAC,KAAK,EAAC,0BAAM,EAAC,IAAI,EAAC,gIAAuB,YAAC,kBAAQ,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAgC,EAAE,CAAC,aAAE,iBAAQ,KAAK,EAAC,OAAO,yCAAc,EAAA,iBAAQ,KAAK,EAAC,UAAU,2DAAiB,EAAA,iBAAQ,KAAK,EAAC,MAAM,+CAAe,IAAS,GAAQ,EAAA,iBAAO,SAAS,EAAC,6BAA6B,aAAC,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAI,wDAAgB,IAAM,EACxgB,eAAK,SAAS,EAAC,0BAA0B,aACvC,4BAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,KAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA,EAAE,CAAA,QAAQ,CAAC,EAAC,GAAG,IAAI,EAAC,gBAAgB,EAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAC,CAAC,GAAG,EAAA,2BAAM,oEAAuB,EAAA,qRAAwD,IAAO,IAAQ,EAC9O,4BAAO,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,IAAI,CAAC,eAAe,KAAG,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA,EAAE,CAAA,QAAQ,CAAC,EAAC,GAAG,IAAI,EAAC,eAAe,EAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAC,CAAC,GAAG,EAAA,2BAAM,kDAAoB,EAAA,2OAAiD,IAAO,IAAQ,EAClO,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAE,EAAE,CAAA,UAAU,CAAC,IAAI,CAAC,+CAAgB,IAC/D,EACL,OAAO,IAAE,KAAC,oBAAoB,IAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,GAAE,EAAE,CAAA,UAAU,CAAC,KAAK,CAAC,GAAG,EACzF,KAAC,KAAK,IAAC,KAAK,EAAC,8DAAY,EAAC,IAAI,EAAC,sOAAwC,YAAC,mBAAU,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAI,GAAQ,EACpN,YAAG,SAAS,EAAC,4BAA4B,gRAAkD,IACvF,CAAA;AACR,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAgE;IAClG,OAAO,eAAK,SAAS,EAAC,+BAA+B,aAAC,YAAG,SAAS,EAAC,4BAA4B,6NAAuC,EACnI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAC,iBAAiB,IAAC,SAAS,EAAC,4BAA4B,EAAgB,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,aAAE,8BAAU,KAAK,CAAC,KAAK,IAAI,OAAO,KAAK,GAAG,CAAC,EAAE,EAAC,0BAAQ,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAS,IAAU,EACzP,KAAC,KAAK,IAAC,KAAK,EAAC,0BAAM,YAAC,gBAAO,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,GAAQ,EACjM,KAAC,KAAK,IAAC,KAAK,EAAC,oBAAK,EAAC,IAAI,EAAC,iEAAe,YAAC,gBAAO,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,GAAQ,EACtP,KAAC,KAAK,IAAC,KAAK,EAAC,0BAAM,YAAC,mBAAU,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,GAAQ,EAClN,eAAK,SAAS,EAAC,2BAA2B,aAAC,iBAAO,SAAS,EAAC,6BAA6B,aAAC,gBAAO,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAI,EAAA,sDAAiB,IAAQ,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,yCAAe,IAAM,KAJhU,KAAK,CAAC,EAAE,CAKpF,CAAC,EAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,qDAAiB,IACvO,CAAA;AACR,CAAC;AAED,SAAS,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,EAA+E;IACxI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAsC,SAAS,CAAC,CAAA;IACxF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAA2C,EAAE,CAAC,CAAA;IACpF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAU,CAAA;IAC5C,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,IAAI;YAAE,OAAM;QAChB,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAClC,IAAI,CAAC;YAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAiB,eAAe,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC,oBAAoB,EAAE,EAAC,MAAM,EAAC,MAAM,EAAE,IAAI,EAAC,IAAI,CAAC,SAAS,CAAC,EAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAC,gBAAgB,EAAC,QAAQ,EAAC,CAAC,EAAC,CAAC,CAAC;YAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,MAAM,CAAC,KAAK,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QAAC,CAAC;QACzU,OAAO,CAAC,EAAE,CAAC;YAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;QAAC,CAAC;gBAAS,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAAC,CAAC;IACpE,CAAC,CAAA;IACD,OAAO,eAAK,SAAS,EAAC,6BAA6B,aAAC,KAAC,KAAK,IAAC,KAAK,EAAC,0BAAM,EAAC,IAAI,EAAC,wKAAiC,YAAC,kBAAQ,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAwB,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,aAAE,iBAAQ,KAAK,EAAC,SAAS,+EAAsB,EAAA,iBAAQ,KAAK,EAAC,UAAU,kFAAyB,EAAA,iBAAQ,KAAK,EAAC,UAAU,2FAA6B,IAAS,GAAQ,EAAA,8BAAS,uFAA4B,EAAA,wBAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,0BAA0B,CAAC,EAAC,gBAAgB,EAAC,EAAE,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,OAAO,EAAC,SAAS,EAAC,CAAC,CAAC,CAAC,EAAC,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,QAAQ,KAAK,UAAU,EAAC,CAAC,EAAE,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,GAAO,IAAU,EAAA,YAAG,SAAS,EAAC,4BAA4B,saAA2E,EACnzB,2BAAe,QAAQ,YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,eAAK,SAAS,EAAC,4BAA4B,aAAS,wBAAG,iCAAQ,EAAC,CAAC,CAAC,IAAI,IAAK,EAAA,wBAAG,sBAAI,SAAS,CAAC,IAAI,GAAK,EAAC,CAAC,CAAC,SAAS,IAAK,KAArE,CAAC,CAA0E,CAAC,GAAO,EACnL,KAAC,KAAK,IAAC,KAAK,EAAC,0BAAM,YAAC,mBAAU,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAI,GAAQ,EAAC,KAAK,IAAI,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,0BAA0B,YAAE,KAAK,GAAK,EACvN,eAAK,SAAS,EAAC,2BAA2B,aAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,yCAAe,EAAA,iBAAQ,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,YAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,GAAU,IAAM,IACzQ,CAAA;AACR,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAiE;IAC3H,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC7C,OAAO,kBAAS,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,YAAG,QAAQ,GAAW,CAAA;AAC9H,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Shares the memory page's scope and learning switch; existing state stays in place. */
|
|
2
|
+
export declare function CharacterMemoryEditor({ companionId, scopeId, enabled, roleEnabled, onEditingChange }: {
|
|
3
|
+
companionId: string;
|
|
4
|
+
scopeId: string;
|
|
5
|
+
enabled: boolean;
|
|
6
|
+
roleEnabled: boolean;
|
|
7
|
+
onEditingChange(value: boolean): void;
|
|
8
|
+
}): JSX.Element;
|
|
9
|
+
//# sourceMappingURL=character-memory-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-memory-editor.d.ts","sourceRoot":"","sources":["../../src/ui/character-memory-editor.tsx"],"names":[],"mappings":"AAMA,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE;IACrG,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAA;CACpH,GAAG,GAAG,CAAC,OAAO,CAiDd"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { api } from '../client-api.js';
|
|
4
|
+
import { FormField as Field } from './partner-components.js';
|
|
5
|
+
import { errorMessage } from './workspace-components.js';
|
|
6
|
+
/** Shares the memory page's scope and learning switch; existing state stays in place. */
|
|
7
|
+
export function CharacterMemoryEditor({ companionId, scopeId, enabled, roleEnabled, onEditingChange }) {
|
|
8
|
+
const [open, setOpen] = useState(false);
|
|
9
|
+
const [state, setState] = useState();
|
|
10
|
+
const [saved, setSaved] = useState();
|
|
11
|
+
const [busy, setBusy] = useState(false);
|
|
12
|
+
const [error, setError] = useState();
|
|
13
|
+
const [notice, setNotice] = useState('');
|
|
14
|
+
const [revision, setRevision] = useState(0);
|
|
15
|
+
const dirty = JSON.stringify(state) !== JSON.stringify(saved);
|
|
16
|
+
const url = `/companions/${encodeURIComponent(companionId)}/character/state?${new URLSearchParams({ scopeId })}`;
|
|
17
|
+
useEffect(() => { onEditingChange(dirty || busy); return () => onEditingChange(false); }, [dirty, busy, onEditingChange]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (!open || !scopeId || saved) {
|
|
20
|
+
setBusy(false);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
let alive = true;
|
|
24
|
+
setBusy(true);
|
|
25
|
+
setError(undefined);
|
|
26
|
+
void api(url).then(data => { if (alive) {
|
|
27
|
+
setState(data.state);
|
|
28
|
+
setSaved(data.state);
|
|
29
|
+
} })
|
|
30
|
+
.catch(e => { if (alive)
|
|
31
|
+
setError(errorMessage(e)); }).finally(() => { if (alive)
|
|
32
|
+
setBusy(false); });
|
|
33
|
+
return () => { alive = false; };
|
|
34
|
+
}, [url, open, revision, scopeId]);
|
|
35
|
+
const save = async () => {
|
|
36
|
+
if (!state || busy)
|
|
37
|
+
return;
|
|
38
|
+
setBusy(true);
|
|
39
|
+
setError(undefined);
|
|
40
|
+
setNotice('');
|
|
41
|
+
try {
|
|
42
|
+
const data = await api(url, { method: 'PUT', body: JSON.stringify({ state, expectedAt: state.updatedAt }) });
|
|
43
|
+
setState(data.state);
|
|
44
|
+
setSaved(data.state);
|
|
45
|
+
setNotice('当前相处状态已保存');
|
|
46
|
+
}
|
|
47
|
+
catch (e) {
|
|
48
|
+
setError(errorMessage(e));
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
setBusy(false);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
return _jsxs("details", { className: "dsh-partner-memory-record dsh-partner-current-state", onToggle: e => setOpen(e.currentTarget.open), children: [_jsxs("summary", { children: ["\u5F53\u524D\u76F8\u5904\u72B6\u6001 ", _jsx("small", { children: dirty ? '有未保存的修改' : !roleEnabled ? '角色聊天未开启' : enabled ? '随记忆自动整理' : '自动整理已暂停' })] }), _jsxs("div", { className: "dsh-partner-character", children: [_jsx("p", { className: "dsh-partner-character-hint", children: "\u8BB0\u4F4F\u521A\u804A\u5230\u54EA\u3001\u5F53\u524D\u600E\u4E48\u76F8\u5904\u3002\u4E0E\u8BB0\u5FC6\u9875\u5171\u7528\u4E0A\u65B9\u8303\u56F4\u548C\u5B66\u4E60\u5F00\u5173\uFF0C\u65E0\u9700\u518D\u914D\u7F6E\u5B9A\u65F6\u4EFB\u52A1\uFF1B\u4E0A\u4E0B\u6587\u7115\u65B0\u540E\u4ECD\u4FDD\u7559\u3002\u771F\u5B9E\u559C\u597D\u4E0E\u7EA6\u5B9A\u5728\u957F\u671F\u8BB0\u5FC6\u4E2D\uFF0C\u68A6\u5883\u5728\u201C\u8EAB\u4EFD \u2192 \u7761\u7720\u4E0E\u505A\u68A6\u201D\u4E2D\u67E5\u770B\u3002" }), !roleEnabled && _jsx("p", { className: "dsh-partner-character-hint", children: "\u5F00\u542F\u89D2\u8272\u804A\u5929\u540E\u624D\u4F1A\u81EA\u52A8\u6574\u7406\u548C\u4F7F\u7528\u76F8\u5904\u72B6\u6001\uFF1B\u5DF2\u6709\u5185\u5BB9\u4FDD\u7559\uFF0C\u53EF\u4EE5\u7EE7\u7EED\u67E5\u770B\u548C\u4FEE\u6539\u3002" }), !enabled && _jsx("p", { className: "dsh-partner-character-hint", children: "\u8BB0\u5FC6\u5B66\u4E60\u5DF2\u6682\u505C\uFF0C\u76F8\u5904\u72B6\u6001\u4E0D\u4F1A\u81EA\u52A8\u66F4\u65B0\u3002\u5DF2\u6709\u72B6\u6001\u4ECD\u53EF\u7528\u4E8E\u63A5\u8BDD\uFF0C\u4E5F\u53EF\u4EE5\u5728\u6B64\u624B\u52A8\u4FEE\u6B63\u3002" }), !scopeId && _jsx("p", { children: "\u5F00\u59CB\u4E00\u6B21\u4F19\u4F34\u5BF9\u8BDD\u540E\uFF0C\u5373\u53EF\u67E5\u770B\u5F53\u524D\u76F8\u5904\u72B6\u6001\u3002" }), error && _jsx("p", { role: "alert", className: "dsh-partner-inline-error", children: error }), busy && _jsx("p", { role: "status", children: "\u6B63\u5728\u5904\u7406\u2026" }), state && _jsxs("fieldset", { disabled: busy, className: "dsh-partner-character-fields", children: [_jsx(Field, { label: "\u5F53\u524D\u8BDD\u9898\u4E0E\u573A\u666F", hint: "\u53EA\u4FDD\u7559\u5F53\u524D\u5728\u804A\u4EC0\u4E48\u3001\u8FD8\u6709\u4EC0\u4E48\u6CA1\u8BF4\u5B8C\u3002", children: _jsx("textarea", { rows: 3, maxLength: 1500, value: state.scene, onChange: e => setState({ ...state, scene: e.target.value }) }) }), _jsx(Field, { label: "\u5F53\u524D\u5173\u7CFB", hint: "\u660E\u786E\u5F62\u6210\u7684\u76F8\u5904\u65B9\u5F0F\uFF1B\u4E0D\u731C\u6D4B\u597D\u611F\u503C\uFF0C\u4E5F\u4E0D\u8986\u76D6\u4EBA\u683C\u8BBE\u5B9A\u3002", children: _jsx("textarea", { rows: 2, maxLength: 1000, value: state.relationship, onChange: e => setState({ ...state, relationship: e.target.value }) }) }), _jsxs("details", { className: "dsh-partner-settings-advanced", children: [_jsx("summary", { children: "\u80CC\u666F\u3001\u8FD1\u671F\u4E92\u52A8\u4E0E\u56FA\u5B9A\u5185\u5BB9" }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u65E7\u7684\u89D2\u8272\u4E8B\u5B9E\u3001\u5267\u60C5\u4E0E\u56FA\u5B9A\u8BB0\u5FC6\u5B8C\u6574\u4FDD\u7559\u5728\u8FD9\u91CC\u3002\u81EA\u52A8\u6574\u7406\u4F1A\u5408\u5E76\u8FC7\u65F6\u72B6\u6001\uFF1B\u56FA\u5B9A\u5185\u5BB9\u53EA\u7531\u4F60\u4FEE\u6539\u3002" }), ['facts', 'events', 'pins'].map(key => _jsx(Field, { label: key === 'facts' ? '相关角色背景' : key === 'events' ? '近期互动' : '固定内容', hint: key === 'pins' ? '每行一条,最多 12 条,每条 500 字;自动整理不会改写。' : '每行一条,最多 20 条,每条 300 字;不要重复长期记忆或写入梦里的经历。', children: _jsx("textarea", { rows: 3, value: state[key].join('\n'), onChange: e => setState({ ...state, [key]: e.target.value.split('\n') }) }) }, key))] }), _jsxs("div", { className: "dsh-partner-character-row", children: [_jsx("span", { role: "status", children: dirty ? '保存或撤销后可切换记忆范围。' : notice || (state.updatedAt ? `最近整理或修改:${new Date(state.updatedAt).toLocaleString()}` : '暂无相处状态,开启角色聊天与记忆学习后会自动整理。') }), dirty && _jsx("button", { type: "button", onClick: () => { setState(saved); setNotice('已撤销未保存修改'); setError(undefined); }, children: "\u64A4\u9500\u4FEE\u6539" }), _jsx("button", { type: "button", disabled: !dirty, onClick: () => void save(), children: "\u4FDD\u5B58\u76F8\u5904\u72B6\u6001" })] })] }), scopeId && _jsx("button", { type: "button", disabled: busy || dirty, onClick: () => { setState(undefined); setSaved(undefined); setNotice(''); setRevision(n => n + 1); }, children: "\u91CD\u65B0\u8BFB\u53D6" })] })] });
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=character-memory-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-memory-editor.js","sourceRoot":"","sources":["../../src/ui/character-memory-editor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export declare function Step({ children }: {
|
|
3
|
+
title: string;
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}): JSX.Element;
|
|
6
|
+
export default function Stepper({ children, step, onStepChange, onNext, busy, backButtonText, nextButtonText, completeButtonText }: {
|
|
7
|
+
children: ReactNode;
|
|
8
|
+
step: number;
|
|
9
|
+
onStepChange(step: number): void;
|
|
10
|
+
onNext(): void;
|
|
11
|
+
busy: boolean;
|
|
12
|
+
backButtonText: string;
|
|
13
|
+
nextButtonText: string;
|
|
14
|
+
completeButtonText: string;
|
|
15
|
+
}): JSX.Element;
|
|
16
|
+
//# sourceMappingURL=character-stepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-stepper.d.ts","sourceRoot":"","sources":["../../src/ui/character-stepper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAIzF,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAEtF;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE;IAClI,QAAQ,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,IAAI,IAAI,CAAA;IACnF,IAAI,EAAE,OAAO,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAC1F,GAAG,GAAG,CAAC,OAAO,CAwCd"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// Adapted from the React Bits Stepper supplied for this integration (see docs/THIRD_PARTY_LICENSES.md).
|
|
3
|
+
// Uses the partner theme, controlled steps and existing dialog focus management.
|
|
4
|
+
import { Children, isValidElement, useLayoutEffect, useRef } from 'react';
|
|
5
|
+
import { HugeiconsIcon } from '@hugeicons/react';
|
|
6
|
+
import { ArrowLeft01Icon, ArrowRight01Icon, Tick02Icon } from '@hugeicons/core-free-icons';
|
|
7
|
+
export function Step({ children }) {
|
|
8
|
+
return _jsx("div", { className: "dsh-partner-stepper-step", children: children });
|
|
9
|
+
}
|
|
10
|
+
export default function Stepper({ children, step, onStepChange, onNext, busy, backButtonText, nextButtonText, completeButtonText }) {
|
|
11
|
+
const steps = Children.toArray(children).filter((isValidElement));
|
|
12
|
+
const trackRef = useRef(null);
|
|
13
|
+
const gliderRef = useRef(null);
|
|
14
|
+
const paneRef = useRef(null);
|
|
15
|
+
const previous = useRef(step);
|
|
16
|
+
useLayoutEffect(() => {
|
|
17
|
+
const track = trackRef.current, glider = gliderRef.current, pane = paneRef.current;
|
|
18
|
+
if (!track || !glider || !pane)
|
|
19
|
+
return;
|
|
20
|
+
const place = () => {
|
|
21
|
+
const segment = track.querySelector('[aria-current="step"]');
|
|
22
|
+
if (!segment)
|
|
23
|
+
return;
|
|
24
|
+
glider.style.transform = `translateX(${segment.offsetLeft}px)`;
|
|
25
|
+
glider.style.width = `${segment.offsetWidth}px`;
|
|
26
|
+
};
|
|
27
|
+
place();
|
|
28
|
+
const observer = new ResizeObserver(place);
|
|
29
|
+
observer.observe(track);
|
|
30
|
+
let animation;
|
|
31
|
+
if (previous.current !== step) {
|
|
32
|
+
pane.focus({ preventScroll: true });
|
|
33
|
+
if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
|
|
34
|
+
animation = pane.animate([{ opacity: 0, transform: `translateX(${step > previous.current ? 18 : -18}px)` }, { opacity: 1, transform: 'none' }], { duration: 220, easing: 'cubic-bezier(0.22,1,0.36,1)' });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
previous.current = step;
|
|
38
|
+
return () => { observer.disconnect(); animation?.cancel(); };
|
|
39
|
+
}, [step]);
|
|
40
|
+
return _jsxs("div", { className: "dsh-partner-stepper", children: [_jsxs("div", { className: "dsh-partner-stepper-track", ref: trackRef, children: [_jsx("span", { className: "dsh-partner-stepper-glider", ref: gliderRef, "aria-hidden": "true" }), steps.map((entry, index) => _jsxs("button", { type: "button", className: "dsh-partner-stepper-segment", "aria-current": step === index + 1 ? 'step' : undefined, disabled: busy || index + 1 >= step, onClick: () => onStepChange(index + 1), children: [_jsx("span", { className: "dsh-partner-stepper-badge", "data-complete": index + 1 < step || undefined, "aria-hidden": "true", children: index + 1 < step ? _jsx(HugeiconsIcon, { icon: Tick02Icon, size: 16 }) : index + 1 }), _jsx("span", { children: entry.props.title })] }, index))] }), _jsx("div", { ref: paneRef, tabIndex: -1, className: "dsh-partner-stepper-pane", children: steps[step - 1] }), _jsxs("div", { className: "dsh-partner-stepper-footer", children: [_jsxs("button", { type: "button", className: "dsh-partner-secondary-button", style: { visibility: step <= 1 ? 'hidden' : undefined }, disabled: busy || step <= 1, onClick: () => onStepChange(step - 1), children: [_jsx(HugeiconsIcon, { icon: ArrowLeft01Icon, size: 16 }), backButtonText] }), _jsxs("button", { type: "button", className: "dsh-partner-primary-button", disabled: busy, onClick: onNext, children: [step === steps.length ? completeButtonText : nextButtonText, _jsx(HugeiconsIcon, { icon: step === steps.length ? Tick02Icon : ArrowRight01Icon, size: 16 })] })] })] });
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=character-stepper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"character-stepper.js","sourceRoot":"","sources":["../../src/ui/character-stepper.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { Capability, CompanionView } from '../client-api.js';
|
|
2
2
|
export declare function companionDraft(companion: CompanionView): {
|
|
3
|
+
toolDiscovery?: boolean;
|
|
4
|
+
sleepPolicy?: import('../character/sleep.js').SleepPolicy;
|
|
5
|
+
idleContact?: import('../character/idle-contact.js').IdleContactPolicy;
|
|
6
|
+
characterCard?: import('../character/domain.js').CharacterCard;
|
|
3
7
|
name: string;
|
|
4
8
|
role: string;
|
|
5
9
|
description: string;
|
|
6
10
|
instructions: string;
|
|
11
|
+
relationshipText?: string;
|
|
7
12
|
presetId: string;
|
|
8
13
|
provider: string;
|
|
9
14
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-draft.d.ts","sourceRoot":"","sources":["../../src/ui/companion-draft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEjE,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,EAAE,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"companion-draft.d.ts","sourceRoot":"","sources":["../../src/ui/companion-draft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEjE,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,uBAAuB,EAAE,WAAW,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,8BAA8B,EAAE,iBAAiB,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,wBAAwB,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,UAAU,EAAE,CAAA;CAAE,CAAmuB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export function companionDraft(companion) { return { name: companion.name, role: companion.role, description: companion.description, instructions: companion.instructions, presetId: companion.presetId ?? '', provider: companion.provider ?? '', model: companion.model ?? '', capabilities: [...companion.capabilities] }; }
|
|
1
|
+
export function companionDraft(companion) { return { ...(companion.toolDiscovery === undefined ? {} : { toolDiscovery: companion.toolDiscovery }), ...(companion.sleepPolicy ? { sleepPolicy: structuredClone(companion.sleepPolicy) } : {}), ...(companion.idleContact ? { idleContact: structuredClone(companion.idleContact) } : {}), ...(companion.characterCard ? { characterCard: structuredClone(companion.characterCard) } : {}), name: companion.name, role: companion.role, description: companion.description, instructions: companion.instructions, ...(companion.relationshipText !== undefined ? { relationshipText: companion.relationshipText } : {}), presetId: companion.presetId ?? '', provider: companion.provider ?? '', model: companion.model ?? '', capabilities: [...companion.capabilities] }; }
|
|
2
2
|
//# sourceMappingURL=companion-draft.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"companion-draft.js","sourceRoot":"","sources":["../../src/ui/companion-draft.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,SAAwB,
|
|
1
|
+
{"version":3,"file":"companion-draft.js","sourceRoot":"","sources":["../../src/ui/companion-draft.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,SAAwB,IAAqZ,OAAO,EAAE,GAAG,CAAC,SAAS,CAAC,aAAa,KAAG,SAAS,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,EAAC,aAAa,EAAC,SAAS,CAAC,aAAa,EAAC,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,EAAC,WAAW,EAAE,eAAe,CAAC,SAAS,CAAC,WAAW,CAAC,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,eAAe,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAC,gBAAgB,EAAC,SAAS,CAAC,gBAAgB,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,EAAE,EAAE,YAAY,EAAE,CAAC,GAAG,SAAS,CAAC,YAAY,CAAC,EAAE,CAAA,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-editor.d.ts","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"identity-editor.d.ts","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAO,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAK1D,UAAU,KAAK;IACb,SAAS,EAAE,aAAa,CAAA;IACxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3B;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,OAAO,CAAsE"}
|
|
@@ -1,22 +1,35 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { relationshipTextForIdentity } from '../character/relationship-adapter.js';
|
|
3
|
+
import { SleepEditor } from './sleep-editor.js';
|
|
4
|
+
import { sleepPolicy } from '../character/sleep.js';
|
|
5
|
+
import { IdleContactEditor } from './idle-contact-editor.js';
|
|
6
|
+
import { SettingsSections } from './settings-sections.js';
|
|
7
|
+
import { CharacterEditor } from './character-editor.js';
|
|
2
8
|
import { useEffect, useRef, useState } from 'react';
|
|
3
9
|
import { IconCheckOutlineRegular as IconCheckOutline14 } from '@deepseek-ai/dsh-client-ui-primitives';
|
|
4
10
|
import { api } from '../client-api.js';
|
|
5
|
-
import {
|
|
11
|
+
import { pageIdentity } from '../companions/identity.js';
|
|
6
12
|
import { FormField as Field, SectionHeading as Section } from './partner-components.js';
|
|
7
13
|
import { errorMessage } from './workspace-components.js';
|
|
8
14
|
/** Identity-scoped lifetime prevents confirmations and late results crossing targets. */
|
|
9
15
|
export function IdentityEditor(props) { return _jsx(IdentityEditorForm, { ...props }, props.companion.id); }
|
|
10
16
|
function IdentityEditorForm({ companion, onChanged }) {
|
|
11
|
-
const [form, setForm] = useState(() =>
|
|
17
|
+
const [form, setForm] = useState(() => pageIdentity(companion));
|
|
18
|
+
const revision = useRef(companion.updatedAt);
|
|
12
19
|
const [operation, setOperation] = useState();
|
|
20
|
+
const [section, setSection] = useState('identity');
|
|
21
|
+
const dirty = useRef(false);
|
|
13
22
|
const [saved, setSaved] = useState(false);
|
|
14
23
|
const [error, setError] = useState();
|
|
15
24
|
const locked = useRef(false);
|
|
16
25
|
const alive = useRef(true);
|
|
17
26
|
useEffect(() => { alive.current = true; return () => { alive.current = false; }; }, []);
|
|
18
|
-
useEffect(() => {
|
|
27
|
+
useEffect(() => { if (!dirty.current) {
|
|
28
|
+
setForm(pageIdentity(companion));
|
|
29
|
+
revision.current = companion.updatedAt;
|
|
30
|
+
} }, [companion.updatedAt]);
|
|
19
31
|
const busy = operation !== undefined;
|
|
32
|
+
const edit = (value) => { setForm(value); dirty.current = true; setSaved(false); };
|
|
20
33
|
const submit = async (event) => {
|
|
21
34
|
event.preventDefault();
|
|
22
35
|
if (locked.current)
|
|
@@ -26,8 +39,9 @@ function IdentityEditorForm({ companion, onChanged }) {
|
|
|
26
39
|
setError(undefined);
|
|
27
40
|
let committed = false;
|
|
28
41
|
try {
|
|
29
|
-
await api(`/companions/${encodeURIComponent(companion.id)}`, { method: 'PUT', body: JSON.stringify({
|
|
42
|
+
await api(`/companions/${encodeURIComponent(companion.id)}/identity`, { method: 'PUT', body: JSON.stringify({ expectedAt: revision.current, identity: { ...form, characterCard: form.characterCard ?? null, idleContact: form.idleContact ?? null, sleepPolicy: form.sleepPolicy ?? null } }) });
|
|
30
43
|
committed = true;
|
|
44
|
+
dirty.current = false;
|
|
31
45
|
await onChanged();
|
|
32
46
|
if (alive.current)
|
|
33
47
|
setSaved(true);
|
|
@@ -42,6 +56,6 @@ function IdentityEditorForm({ companion, onChanged }) {
|
|
|
42
56
|
setOperation(undefined);
|
|
43
57
|
}
|
|
44
58
|
};
|
|
45
|
-
return _jsxs("form", { id: "dsh-partner-identity-editor", className: "dsh-partner-form is-identity", "aria-busy": operation !== undefined, onSubmit: event => { void submit(event); }, children: [_jsx(Section, { eyebrow: "IDENTITY", title: "\
|
|
59
|
+
return _jsxs("form", { onInvalidCapture: event => { event.preventDefault(); const target = event.target; const idle = Boolean(target.closest('[aria-label="闲时自主活动"]')); setSection(idle ? 'idle' : 'identity'); setError(idle ? '请选择自主活动的目标会话。' : '请填写基本身份中的名字和角色。'); requestAnimationFrame(() => target.focus()); }, id: "dsh-partner-identity-editor", className: "dsh-partner-form is-identity", "aria-busy": operation !== undefined, onSubmit: event => { void submit(event); }, children: [_jsx(Section, { eyebrow: "IDENTITY", title: "\u8EAB\u4EFD\u4E0E\u89D2\u8272", detail: "\u9875\u9762\u4E0E AI \u4F7F\u7528\u540C\u4E00\u4EFD\u8BBE\u5B9A\u3002\u63A8\u8350\u5728\u804A\u5929\u4E2D\u63D0\u51FA\u8981\u6C42\uFF0C\u8BA9 AI \u751F\u6210\u89D2\u8272\u4E0E\u5173\u7CFB\uFF1B\u8FD9\u91CC\u67E5\u770B\u6700\u65B0\u5185\u5BB9\uFF0C\u4E5F\u53EF\u76F4\u63A5\u4FEE\u6539\u4FDD\u5B58\u3002" }), dirty.current && companion.updatedAt !== revision.current && _jsx("p", { role: "status", className: "dsh-partner-character-hint", children: "\u8BBE\u5B9A\u5DF2\u88AB AI \u6216\u5176\u4ED6\u9875\u9762\u66F4\u65B0\u3002\u4F60\u7684\u672A\u4FDD\u5B58\u7F16\u8F91\u4ECD\u5728\uFF0C\u4FDD\u5B58\u4F1A\u8FDB\u884C\u7248\u672C\u6821\u9A8C\uFF1B\u8BF7\u5148\u8F7D\u5165\u6700\u65B0\u8BBE\u5B9A\u518D\u4FEE\u6539\uFF0C\u907F\u514D\u8986\u76D6\u65B0\u5185\u5BB9\u3002" }), _jsxs("section", { className: "dsh-partner-identity-card", "aria-label": "\u8EAB\u4EFD\u914D\u7F6E", children: [_jsx(SettingsSections, { label: "\u8EAB\u4EFD\u8BBE\u7F6E\u5206\u6BB5", value: section, onChange: setSection, sections: [{ id: 'identity', title: '基本身份', detail: '名字、定位与行为准则', content: _jsxs(_Fragment, { children: [_jsxs("div", { className: "dsh-partner-fields two", children: [_jsx(Field, { label: "\u540D\u5B57", children: _jsx("input", { disabled: busy, required: true, maxLength: 60, value: form.name, onChange: event => edit({ ...form, name: event.target.value }) }) }), _jsx(Field, { label: "\u89D2\u8272", children: _jsx("input", { disabled: busy, required: true, maxLength: 120, value: form.role, onChange: event => edit({ ...form, role: event.target.value }) }) })] }), _jsx(Field, { label: "\u4E00\u53E5\u8BDD\u5B9A\u4F4D", hint: "\u7528\u4E8E\u540D\u518C\u8BC6\u522B\uFF0C\u4E0D\u4F1A\u66FF\u4EE3\u5B8C\u6574\u884C\u4E3A\u51C6\u5219\u3002", children: _jsx("textarea", { disabled: busy, rows: 2, maxLength: 500, value: form.description, onChange: event => edit({ ...form, description: event.target.value }) }) }), _jsx(Field, { label: "\u957F\u671F\u884C\u4E3A\u51C6\u5219", hint: "\u5199\u89D2\u8272\u901A\u7528\u7684\u804C\u8D23\u3001\u8868\u8FBE\u4E0E\u8FB9\u754C\u3002\u4E0E\u7528\u6237\u7684\u8EAB\u4EFD\u5173\u7CFB\u3001\u4E13\u5C5E\u79F0\u547C\u8BF7\u653E\u5230\u201C\u5173\u7CFB\u8BBE\u5B9A\u201D\u3002", children: _jsx("textarea", { disabled: busy, rows: 9, maxLength: 12000, value: form.instructions, onChange: event => edit({ ...form, instructions: event.target.value }) }) })] }) }, { id: 'character', title: '角色聊天', detail: form.characterCard?.enabled ? '已启用 · 设定与试聊' : '可选 · 设定与试聊', content: _jsx(CharacterEditor, { active: section === 'character', relationshipText: relationshipTextForIdentity(form), companion: companion, ...(form.characterCard ? { card: form.characterCard } : {}), disabled: busy, onChange: characterCard => edit({ ...form, characterCard }) }) }, { id: 'relationship', title: '关系设定', detail: '称呼与相处 · 按渠道应用', content: _jsxs(_Fragment, { children: [_jsx("p", { className: "dsh-partner-character-hint", children: "\u89D2\u8272\u8BBE\u5B9A\u5199\u201C\u6211\u662F\u8C01\u201D\uFF0C\u8FD9\u91CC\u5199\u201C\u6211\u4EEC\u662F\u4EC0\u4E48\u5173\u7CFB\u201D\u3002\u666E\u901A\u4F1A\u8BDD\u4F1A\u5408\u5E76\u4F7F\u7528\uFF1BQQ \u4EC5\u5728\u53D1\u9001\u8005\u5339\u914D\u4EFB\u4E00\u5F52\u5C5E\u8D26\u53F7\u65F6\u9644\u52A0\u8FD9\u4EFD\u5173\u7CFB\uFF0C\u7FA4\u804A\u4E0E\u79C1\u804A\u901A\u7528\u3002\u5176\u4ED6\u4EBA\u6839\u636E\u89D2\u8272\u6027\u683C\u4E0E\u5B9E\u9645\u4EA4\u5F80\u76F8\u5904\u3002" }), _jsx(Field, { label: "\u5173\u7CFB\u8BBE\u5B9A", hint: "\u5199\u5173\u7CFB\u8EAB\u4EFD\u3001\u4E13\u5C5E\u79F0\u547C\u548C\u76F8\u5904\u4E60\u60EF\uFF0C\u4E5F\u53EF\u9644\u5173\u7CFB\u793A\u4F8B\u3002\u7559\u7A7A\u8868\u793A\u4E0D\u9884\u8BBE\u5173\u7CFB\u3002", children: _jsx("textarea", { disabled: busy, rows: 12, maxLength: 12000, value: relationshipTextForIdentity(form), onChange: event => edit({ ...form, relationshipText: event.target.value }) }) }), _jsxs("details", { className: "dsh-partner-settings-advanced", children: [_jsx("summary", { children: "\u901A\u7528\u793A\u4F8B\u4E0E\u7F16\u8F91\u8BF4\u660E" }), _jsx("p", { children: "\u6211\u4EEC\u662F\u4E92\u76F8\u5C0A\u91CD\u7684\u8001\u670B\u53CB\uFF0C\u79F0\u547C\u5BF9\u65B9\u7684\u540D\u5B57\u3002\u719F\u6089\u65F6\u53EF\u4EE5\u5F00\u73A9\u7B11\uFF0C\u8BA4\u771F\u8BA8\u8BBA\u65F6\u76F4\u8BF4\u610F\u89C1\uFF0C\u4E0D\u7F16\u9020\u5171\u540C\u5F80\u4E8B\u3002" }), _jsx("p", { children: "\u53EF\u4EE5\u8BA9 AI \u5206\u522B\u751F\u6210\u89D2\u8272\u4E0E\u5173\u7CFB\u3002AI \u4E0E\u9875\u9762\u7F16\u8F91\u540C\u4E00\u4EFD\u751F\u6548\u5185\u5BB9\uFF1B\u4FDD\u5B58\u540E\u4E0B\u4E00\u8F6E\u4F7F\u7528\u65B0\u8BBE\u5B9A\u3002\u65E7\u7248\u89D2\u8272\u6216\u57FA\u672C\u8EAB\u4EFD\u4E2D\u6DF7\u5199\u7684\u4E13\u5C5E\u5173\u7CFB\uFF0C\u9700\u8981\u79FB\u5230\u8FD9\u91CC\uFF1B\u7CFB\u7EDF\u4E0D\u4F1A\u731C\u6D4B\u5220\u6539\u65E7\u6587\u672C\u3002QQ \u8D26\u53F7\u53EA\u9700\u5728\u6E20\u9053\u7684\u8BBF\u95EE\u6743\u9650\u4E2D\u586B\u5199\u3002" })] })] }) }, { id: 'idle', title: '闲时自主活动', detail: form.idleContact?.enabled ? '已开启 · 按概率自主行动' : '可选 · 聊天或使用能力', content: _jsx(IdleContactEditor, { companionId: companion.id, value: form.idleContact, disabled: busy, onChange: idleContact => edit({ ...form, idleContact }) }) }, { id: 'sleep', title: '睡眠与做梦', detail: '自主休息 · 梦境与感受', content: _jsx(SleepEditor, { companion: companion, value: sleepPolicy(form), disabled: busy, active: section === 'sleep', onChange: sleepPolicy => edit({ ...form, sleepPolicy }) }) }] }), error && _jsx("p", { className: "dsh-partner-inline-error", role: "alert", children: error }), _jsxs("div", { className: "dsh-partner-form-actions", children: [_jsx("button", { type: "button", disabled: busy, onClick: () => { setForm(pageIdentity(companion)); revision.current = companion.updatedAt; dirty.current = false; setError(undefined); setSaved(false); }, children: "\u8F7D\u5165\u6700\u65B0\u8BBE\u5B9A" }), _jsx("span", { role: "status", children: saved && _jsxs(_Fragment, { children: [_jsx(IconCheckOutline14, { size: 14 }), "\u8EAB\u4EFD\u5DF2\u4FDD\u5B58\uFF0C\u4E0B\u4E00\u8F6E\u5C06\u4F7F\u7528\u65B0\u8EAB\u4EFD"] }) }), _jsx("button", { disabled: busy, children: operation === 'save' ? '正在保存…' : '保存身份' })] })] })] });
|
|
46
60
|
}
|
|
47
61
|
//# sourceMappingURL=identity-editor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"identity-editor.js","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAA;AACnE,OAAO,EAAE,uBAAuB,IAAI,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AACrG,OAAO,EAAE,GAAG,EAAsB,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"identity-editor.js","sourceRoot":"","sources":["../../src/ui/identity-editor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type IdleContactPolicy } from '../character/idle-contact.js';
|
|
2
|
+
export declare function IdleContactEditor({ companionId, value, disabled, onChange }: {
|
|
3
|
+
companionId: string;
|
|
4
|
+
value: IdleContactPolicy | undefined;
|
|
5
|
+
disabled: boolean;
|
|
6
|
+
onChange(value: IdleContactPolicy): void;
|
|
7
|
+
}): JSX.Element;
|
|
8
|
+
//# sourceMappingURL=idle-contact-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle-contact-editor.d.ts","sourceRoot":"","sources":["../../src/ui/idle-contact-editor.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAI3F,wBAAgB,iBAAiB,CAAC,EAAC,WAAW,EAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAC,EAAC;IAAC,WAAW,EAAC,MAAM,CAAC;IAAA,KAAK,EAAC,iBAAiB,GAAC,SAAS,CAAC;IAAA,QAAQ,EAAC,OAAO,CAAC;IAAA,QAAQ,CAAC,KAAK,EAAC,iBAAiB,GAAE,IAAI,CAAA;CAAC,GAAE,GAAG,CAAC,OAAO,CAkBlM"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { channelReplyAllowed } from '../channels/reply-access.js';
|
|
3
|
+
import { useEffect, useState } from 'react';
|
|
4
|
+
import { loadPartner } from '../client-api.js';
|
|
5
|
+
import { DEFAULT_IDLE_CONTACT } from '../character/idle-contact.js';
|
|
6
|
+
import { FormField as Field } from './partner-components.js';
|
|
7
|
+
import { errorMessage } from './workspace-components.js';
|
|
8
|
+
export function IdleContactEditor({ companionId, value, disabled, onChange }) {
|
|
9
|
+
const policy = value ?? DEFAULT_IDLE_CONTACT;
|
|
10
|
+
const [snapshot, setSnapshot] = useState(), [error, setError] = useState();
|
|
11
|
+
useEffect(() => { let active = true; void loadPartner().then(s => { if (active)
|
|
12
|
+
setSnapshot(s); }).catch(e => { if (active)
|
|
13
|
+
setError(errorMessage(e)); }); return () => { active = false; }; }, [companionId]);
|
|
14
|
+
const routes = snapshot?.sessions.filter(r => r.companionId === companionId && !r.archived && (r.kind === 'local' || (snapshot.channels.some(c => c.id === r.channelId && c.enabled) && channelReplyAllowed(snapshot, r.channelId, r.userId)))) ?? [];
|
|
15
|
+
const patch = (p) => onChange({ ...policy, ...p });
|
|
16
|
+
return _jsxs("section", { className: "dsh-partner-character", "aria-label": "\u95F2\u65F6\u81EA\u4E3B\u6D3B\u52A8", children: [_jsxs("header", { children: [_jsxs("div", { children: [_jsxs("h3", { children: ["\u95F2\u65F6\u81EA\u4E3B\u6D3B\u52A8 ", _jsx("small", { children: "\u53EF\u9009" })] }), _jsx("p", { children: "\u7A7A\u95F2\u65F6\u9010\u6E10\u589E\u52A0\u6D3B\u52A8\u6982\u7387\uFF0C\u8BA9\u4F19\u4F34\u81EA\u5DF1\u51B3\u5B9A\u804A\u5929\u3001\u4F7F\u7528\u5DF2\u6388\u6743\u80FD\u529B\uFF0C\u6216\u5B89\u9759\u5F85\u7740\u3002" })] }), _jsxs("div", { className: "dsh-partner-character-toggle", children: [_jsx("button", { type: "button", role: "switch", className: "dsh-partner-switch", "aria-label": "\u5F00\u542F\u95F2\u65F6\u81EA\u4E3B\u6D3B\u52A8", "aria-checked": policy.enabled, "data-on": policy.enabled, disabled: disabled, onClick: () => patch({ enabled: !policy.enabled }), children: _jsx("i", { "aria-hidden": "true" }) }), _jsx("span", { children: policy.enabled ? '已开启' : '已关闭' })] })] }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u6BCF\u5206\u949F\u68C0\u67E5\u4E00\u6B21\uFF0C\u62BD\u4E2D\u624D\u5524\u8D77 AI \u51B3\u5B9A\u505A\u4EC0\u4E48\uFF1B\u4E0D\u662F\u6BCF\u5206\u949F\u8BF7\u6C42\u6A21\u578B\u3002\u6B63\u5728\u804A\u5929\u3001\u6267\u884C\u4EFB\u52A1\u6216\u7761\u89C9\u65F6\u7B49\u5F85\u3002\u5F00\u542F\u597D\u611F\u5EA6\u540E\uFF0C\u56DE\u590D\u9001\u8FBE\u8FD8\u53EF\u80FD\u89E6\u53D1\u4E3B\u52A8\u5EF6\u7EED\uFF1BQQ \u4EC5\u5BF9\u5F52\u5C5E\u8D26\u53F7\u751F\u6548\u3002\u4FEE\u6539\u540E\u4FDD\u5B58\u8EAB\u4EFD\u751F\u6548\u3002" }), error && _jsx("p", { role: "alert", className: "dsh-partner-inline-error", children: error }), policy.enabled && _jsxs("fieldset", { disabled: disabled, className: "dsh-partner-character-fields", children: [_jsx(Field, { label: "\u6D3B\u52A8\u6240\u5728\u4F1A\u8BDD", hint: "\u4ECE\u8FD9\u4E2A\u4F1A\u8BDD\u8BFB\u53D6\u4E0A\u4E0B\u6587\uFF0C\u666E\u901A\u804A\u5929\u56DE\u590D\u53D1\u5230\u8FD9\u91CC\u3002\u5176\u4ED6\u5DE5\u5177\u64CD\u4F5C\u6309\u5404\u81EA\u7684\u6E20\u9053\u6388\u6743\u6267\u884C\uFF1B\u4E0D\u4F1A\u81EA\u52A8\u7FA4\u53D1\u3002", children: _jsxs("select", { required: true, value: policy.routeId, onChange: e => patch({ routeId: e.target.value }), children: [_jsx("option", { value: "", children: "\u9009\u62E9\u4E00\u4E2A\u4F1A\u8BDD" }), routes.map(r => _jsx("option", { value: r.id, children: r.kind === 'local' ? '网页聊天' : `${snapshot?.channels.find(c => c.id === r.channelId)?.name ?? '渠道'} · ${snapshot?.pairings.find(p => p.channelId === r.channelId && p.userId === r.userId)?.displayName ?? r.userId}` }, r.id))] }) }), snapshot && !routes.length && _jsx("p", { children: "\u8FD8\u6CA1\u6709\u53EF\u7528\u4F1A\u8BDD\uFF0C\u5148\u5728\u7F51\u9875\u6216\u5DF2\u6388\u6743\u6E20\u9053\u548C\u4F19\u4F34\u804A\u4E00\u6B21\u3002" }), _jsx("div", { className: "dsh-partner-fields two", children: _jsx(Field, { label: "\u57FA\u7840\u6982\u7387\u5347\u81F3 100% \u7684\u95F4\u9694", hint: "\u57FA\u7840\u6982\u7387 = \u5DF2\u7A7A\u95F2\u5206\u949F \u00F7 \u6B64\u95F4\u9694\u3002\u9002\u7528\u597D\u611F\u5EA6\u52A0\u6210\u65F6\u518D\u4E58\u4EE5\u4E3B\u52A8\u7CFB\u6570\uFF0C\u4E0A\u9650 100%\uFF1B\u6700\u77ED 30 \u5206\u949F\uFF0C\u4E0D\u662F\u5E73\u5747\u6D3B\u52A8\u95F4\u9694\u3002", children: _jsx("select", { value: policy.idleMinutes, onChange: e => patch({ idleMinutes: Number(e.target.value) }), children: [...new Set([30, 60, 120, 240, 480, 1440, policy.idleMinutes])].sort((a, b) => a - b).map(n => _jsx("option", { value: n, children: n < 60 ? `${n} 分钟` : `${n / 60} 小时` }, n)) }) }) }), _jsxs("p", { className: "dsh-partner-character-hint", children: ["\u672A\u8BA1\u597D\u611F\u5EA6\u52A0\u6210\u65F6\uFF0C\u95F4\u9694 ", policy.idleMinutes, " \u5206\u949F\uFF1A\u7B2C 1 \u5206\u949F\u7EA6 ", (100 / policy.idleMinutes).toFixed(1), "%\uFF0C\u7B2C ", policy.idleMinutes / 2, " \u5206\u949F\u7EA6 50%\uFF0C\u5230 ", policy.idleMinutes, " \u5206\u949F\u4E3A 100%\u3002\u63D0\u524D\u62BD\u4E2D\u5C31\u5F00\u59CB\u65B0\u5468\u671F\uFF0C\u56E0\u6B64\u901A\u5E38\u4F1A\u66F4\u65E9\u89E6\u53D1\u3002100% \u4EE3\u8868\u505A\u4E00\u6B21\u51B3\u5B9A\uFF0C\u4E0D\u4FDD\u8BC1\u53D1\u9001\u6D88\u606F\u3002"] }), _jsx("p", { className: "dsh-partner-character-hint", children: "\u4E0D\u9650\u5236\u6BCF\u5929\u6D3B\u52A8\u6B21\u6570\uFF0C\u4E5F\u4E0D\u8981\u6C42\u6BCF\u6B21\u53D1\u6D88\u606F\u3002\u62BD\u4E2D\u540E\u91CD\u7F6E\u8BA1\u65F6\uFF1B\u65B0\u804A\u5929\u4F1A\u91CD\u65B0\u7D2F\u8BA1\u7A7A\u95F2\u65F6\u95F4\u3002\u4F60\u6CA1\u56DE\u590D\u65F6\uFF0C\u4F19\u4F34\u4ECD\u53EF\u505A\u5176\u4ED6\u4E8B\u60C5\uFF0C\u907F\u514D\u53CD\u590D\u8FFD\u95EE\u3002\u7761\u7720\u671F\u95F4\u6682\u505C\uFF0C\u9192\u6765\u540E\u6062\u590D\u68C0\u67E5\u3002" })] })] });
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=idle-contact-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle-contact-editor.js","sourceRoot":"","sources":["../../src/ui/idle-contact-editor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAA;AAC/D,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAwB,MAAM,kBAAkB,CAAA;AACpE,OAAO,EAAE,oBAAoB,EAA0B,MAAM,8BAA8B,CAAA;AAC3F,OAAO,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAExD,MAAM,UAAU,iBAAiB,CAAC,EAAC,WAAW,EAAC,KAAK,EAAC,QAAQ,EAAC,QAAQ,EAAgH;IACpL,MAAM,MAAM,GAAC,KAAK,IAAE,oBAAoB,CAAA;IACxC,MAAM,CAAC,QAAQ,EAAC,WAAW,CAAC,GAAC,QAAQ,EAAmB,EAAC,CAAC,KAAK,EAAC,QAAQ,CAAC,GAAC,QAAQ,EAAU,CAAA;IAC5F,SAAS,CAAC,GAAE,EAAE,GAAC,IAAI,MAAM,GAAC,IAAI,CAAC,CAAA,KAAK,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,GAAC,IAAG,MAAM;QAAC,WAAW,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA,EAAE,GAAC,IAAG,MAAM;QAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA,CAAA,CAAC,CAAC,CAAC,CAAA,OAAM,GAAE,EAAE,GAAC,MAAM,GAAC,KAAK,CAAA,CAAA,CAAC,CAAA,CAAA,CAAC,EAAC,CAAC,WAAW,CAAC,CAAC,CAAA;IAC9K,MAAM,MAAM,GAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,WAAW,KAAG,WAAW,IAAE,CAAC,CAAC,CAAC,QAAQ,IAAE,CAAC,CAAC,CAAC,IAAI,KAAG,OAAO,IAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,CAAC,CAAC,SAAS,IAAE,CAAC,CAAC,OAAO,CAAC,IAAE,mBAAmB,CAAC,QAAQ,EAAC,CAAC,CAAC,SAAS,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAE,EAAE,CAAA;IAC3N,MAAM,KAAK,GAAC,CAAC,CAA4B,EAAC,EAAE,CAAA,QAAQ,CAAC,EAAC,GAAG,MAAM,EAAC,GAAG,CAAC,EAAC,CAAC,CAAA;IACtE,OAAO,mBAAS,SAAS,EAAC,uBAAuB,gBAAY,sCAAQ,aACnE,6BAAQ,0BAAK,kEAAW,2CAAiB,IAAK,EAAA,mPAA2C,IAAM,EAAA,eAAK,SAAS,EAAC,8BAA8B,aAAC,iBAAQ,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAC,oBAAoB,gBAAY,kDAAU,kBAAe,MAAM,CAAC,OAAO,aAAW,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAE,EAAE,CAAA,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,MAAM,CAAC,OAAO,EAAC,CAAC,YAAE,2BAAe,MAAM,GAAE,GAAS,EAAA,yBAAO,MAAM,CAAC,OAAO,CAAA,CAAC,CAAA,KAAK,CAAA,CAAC,CAAA,KAAK,GAAQ,IAAM,IAAS,EACxb,YAAG,SAAS,EAAC,4BAA4B,shBAAiG,EACzI,KAAK,IAAE,YAAG,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,0BAA0B,YAAE,KAAK,GAAK,EACvE,MAAM,CAAC,OAAO,IAAE,oBAAU,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAC,8BAA8B,aACrF,KAAC,KAAK,IAAC,KAAK,EAAC,sCAAQ,EAAC,IAAI,EAAC,sRAAgD,YAAC,kBAAQ,QAAQ,QAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAC,CAAC,aAAE,iBAAQ,KAAK,EAAC,EAAE,qDAAgB,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,iBAAmB,KAAK,EAAE,CAAC,CAAC,EAAE,YAAG,CAAC,CAAC,IAAI,KAAG,OAAO,CAAA,CAAC,CAAA,MAAM,CAAA,CAAC,CAAA,GAAG,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,EAAE,KAAG,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,IAAE,IAAI,MAAM,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,SAAS,KAAG,CAAC,CAAC,SAAS,IAAE,CAAC,CAAC,MAAM,KAAG,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,IAAE,CAAC,CAAC,MAAM,EAAE,IAAlN,CAAC,CAAC,EAAE,CAAwN,CAAC,IAAU,GAAQ,EAC5c,QAAQ,IAAE,CAAC,MAAM,CAAC,MAAM,IAAE,iLAAgC,EAC3D,cAAK,SAAS,EAAC,wBAAwB,YAAC,KAAC,KAAK,IAAC,KAAK,EAAC,8DAAiB,EAAC,IAAI,EAAC,0SAA+D,YAAC,iBAAQ,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAA,EAAE,CAAA,KAAK,CAAC,EAAC,WAAW,EAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC,YAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAC,EAAE,EAAC,GAAG,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAC,CAAC,EAAC,EAAE,CAAA,CAAC,GAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,iBAAgB,KAAK,EAAE,CAAC,YAAG,CAAC,GAAC,EAAE,CAAA,CAAC,CAAA,GAAG,CAAC,KAAK,CAAA,CAAC,CAAA,GAAG,CAAC,GAAC,EAAE,KAAK,IAAzC,CAAC,CAAkD,CAAC,GAAU,GAAQ,GAAM,EACrZ,aAAG,SAAS,EAAC,4BAA4B,oFAAc,MAAM,CAAC,WAAW,qDAAc,CAAC,GAAG,GAAC,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAM,MAAM,CAAC,WAAW,GAAC,CAAC,0CAAa,MAAM,CAAC,WAAW,yQAAyD,EAC5O,YAAG,SAAS,EAAC,4BAA4B,2eAAoF,IACpH,IACH,CAAA;AACZ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"automation-settings.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/automation-settings.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"automation-settings.d.ts","sourceRoot":"","sources":["../../../src/ui/memory/automation-settings.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAM,KAAK,aAAa,EAA6C,MAAM,qBAAqB,CAAA;AAKvG,wBAAgB,kBAAkB,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAC,EAAE;IAAC,SAAS,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAAC,KAAK,IAAI,IAAI,CAAC;IAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAC,GAAG,GAAG,CAAC,OAAO,CA6CxL"}
|