@downcity/plugins 1.0.254 → 1.0.280
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/bin/builtin/BuiltinPluginReadmes.d.ts +14 -0
- package/bin/builtin/BuiltinPluginReadmes.d.ts.map +1 -0
- package/bin/builtin/BuiltinPluginReadmes.js +58 -0
- package/bin/builtin/BuiltinPluginReadmes.js.map +1 -0
- package/bin/builtin/BuiltinPluginTypes.d.ts +48 -0
- package/bin/builtin/BuiltinPluginTypes.d.ts.map +1 -0
- package/bin/builtin/BuiltinPluginTypes.js +161 -0
- package/bin/builtin/BuiltinPluginTypes.js.map +1 -0
- package/bin/builtin/PluginSettingsDefinitions.d.ts +9 -0
- package/bin/builtin/PluginSettingsDefinitions.d.ts.map +1 -0
- package/bin/builtin/PluginSettingsDefinitions.js +41 -0
- package/bin/builtin/PluginSettingsDefinitions.js.map +1 -0
- package/bin/builtin/main/PluginSettingsMain.d.ts +6 -0
- package/bin/builtin/main/PluginSettingsMain.d.ts.map +1 -0
- package/bin/builtin/main/PluginSettingsMain.js +65 -0
- package/bin/builtin/main/PluginSettingsMain.js.map +1 -0
- package/bin/builtin/renderer/PluginSettingsRenderer.d.ts +6 -0
- package/bin/builtin/renderer/PluginSettingsRenderer.d.ts.map +1 -0
- package/bin/builtin/renderer/PluginSettingsRenderer.js +76 -0
- package/bin/builtin/renderer/PluginSettingsRenderer.js.map +1 -0
- package/bin/builtin/types/PluginSettings.d.ts +35 -0
- package/bin/builtin/types/PluginSettings.d.ts.map +1 -0
- package/bin/builtin/types/PluginSettings.js +3 -0
- package/bin/builtin/types/PluginSettings.js.map +1 -0
- package/bin/chat/ChatPlugin.d.ts +12 -28
- package/bin/chat/ChatPlugin.d.ts.map +1 -1
- package/bin/chat/ChatPlugin.js +97 -49
- package/bin/chat/ChatPlugin.js.map +1 -1
- package/bin/chat/access/ChatAccessRuntime.js +1 -1
- package/bin/chat/access/ChatAccessRuntime.js.map +1 -1
- package/bin/chat/access/ChatAccessSchema.d.ts +2 -2
- package/bin/chat/access/ChatAccessSchema.d.ts.map +1 -1
- package/bin/chat/access/ChatAccessSchema.js +3 -3
- package/bin/chat/access/ChatAccessSchema.js.map +1 -1
- package/bin/chat/access/ChatAccessService.d.ts +2 -2
- package/bin/chat/access/ChatAccessService.d.ts.map +1 -1
- package/bin/chat/access/ChatAccessService.js +4 -4
- package/bin/chat/access/ChatAccessService.js.map +1 -1
- package/bin/chat/access/ChatAccessStore.d.ts +3 -3
- package/bin/chat/access/ChatAccessStore.d.ts.map +1 -1
- package/bin/chat/access/ChatAccessStore.js +17 -8
- package/bin/chat/access/ChatAccessStore.js.map +1 -1
- package/bin/chat/channels/BaseChatChannel.d.ts +1 -0
- package/bin/chat/channels/BaseChatChannel.d.ts.map +1 -1
- package/bin/chat/channels/BaseChatChannel.js +2 -0
- package/bin/chat/channels/BaseChatChannel.js.map +1 -1
- package/bin/chat/channels/RuntimeChannel.d.ts +4 -4
- package/bin/chat/channels/RuntimeChannel.d.ts.map +1 -1
- package/bin/chat/channels/RuntimeChannel.js +8 -8
- package/bin/chat/channels/RuntimeChannel.js.map +1 -1
- package/bin/chat/channels/feishu/Feishu.js +1 -1
- package/bin/chat/channels/feishu/Feishu.js.map +1 -1
- package/bin/chat/channels/feishu/FeishuPlatformClient.d.ts +1 -0
- package/bin/chat/channels/feishu/FeishuPlatformClient.d.ts.map +1 -1
- package/bin/chat/channels/feishu/FeishuPlatformClient.js +3 -0
- package/bin/chat/channels/feishu/FeishuPlatformClient.js.map +1 -1
- package/bin/chat/channels/feishu/FeishuPlatformLookup.d.ts +2 -0
- package/bin/chat/channels/feishu/FeishuPlatformLookup.d.ts.map +1 -1
- package/bin/chat/channels/feishu/FeishuPlatformLookup.js +1 -1
- package/bin/chat/channels/feishu/FeishuPlatformLookup.js.map +1 -1
- package/bin/chat/channels/qq/QQ.d.ts.map +1 -1
- package/bin/chat/channels/qq/QQ.js +3 -2
- package/bin/chat/channels/qq/QQ.js.map +1 -1
- package/bin/chat/channels/qq/QQEventCapture.d.ts +1 -1
- package/bin/chat/channels/qq/QQEventCapture.d.ts.map +1 -1
- package/bin/chat/channels/qq/QQEventCapture.js +3 -3
- package/bin/chat/channels/qq/QQEventCapture.js.map +1 -1
- package/bin/chat/channels/qq/QQInboundDedupe.d.ts +1 -1
- package/bin/chat/channels/qq/QQInboundDedupe.d.ts.map +1 -1
- package/bin/chat/channels/qq/QQInboundDedupe.js +1 -1
- package/bin/chat/channels/qq/QQInboundDedupe.js.map +1 -1
- package/bin/chat/channels/qq/QQMessageHandler.d.ts +4 -0
- package/bin/chat/channels/qq/QQMessageHandler.d.ts.map +1 -1
- package/bin/chat/channels/qq/QQMessageHandler.js +2 -0
- package/bin/chat/channels/qq/QQMessageHandler.js.map +1 -1
- package/bin/chat/channels/qq/QQSupport.d.ts +4 -0
- package/bin/chat/channels/qq/QQSupport.d.ts.map +1 -1
- package/bin/chat/channels/qq/QQSupport.js +1 -0
- package/bin/chat/channels/qq/QQSupport.js.map +1 -1
- package/bin/chat/channels/qq/VoiceInput.d.ts +3 -0
- package/bin/chat/channels/qq/VoiceInput.d.ts.map +1 -1
- package/bin/chat/channels/qq/VoiceInput.js +1 -1
- package/bin/chat/channels/qq/VoiceInput.js.map +1 -1
- package/bin/chat/channels/telegram/ApiClient.d.ts +3 -1
- package/bin/chat/channels/telegram/ApiClient.d.ts.map +1 -1
- package/bin/chat/channels/telegram/ApiClient.js +4 -2
- package/bin/chat/channels/telegram/ApiClient.js.map +1 -1
- package/bin/chat/channels/telegram/StateStore.d.ts +1 -1
- package/bin/chat/channels/telegram/StateStore.d.ts.map +1 -1
- package/bin/chat/channels/telegram/StateStore.js +2 -2
- package/bin/chat/channels/telegram/StateStore.js.map +1 -1
- package/bin/chat/channels/telegram/TelegramPlatformClient.d.ts.map +1 -1
- package/bin/chat/channels/telegram/TelegramPlatformClient.js +2 -1
- package/bin/chat/channels/telegram/TelegramPlatformClient.js.map +1 -1
- package/bin/chat/main/ChatPluginMain.d.ts +4 -0
- package/bin/chat/main/ChatPluginMain.d.ts.map +1 -0
- package/bin/chat/main/ChatPluginMain.js +137 -0
- package/bin/chat/main/ChatPluginMain.js.map +1 -0
- package/bin/chat/renderer/ChatPluginRenderer.d.ts +4 -0
- package/bin/chat/renderer/ChatPluginRenderer.d.ts.map +1 -0
- package/bin/chat/renderer/ChatPluginRenderer.js +105 -0
- package/bin/chat/renderer/ChatPluginRenderer.js.map +1 -0
- package/bin/chat/runtime/ChannelContextStore.d.ts +2 -2
- package/bin/chat/runtime/ChannelContextStore.js +20 -20
- package/bin/chat/runtime/ChannelContextStore.js.map +1 -1
- package/bin/chat/runtime/ChatActionExecution.js +6 -6
- package/bin/chat/runtime/ChatActionExecution.js.map +1 -1
- package/bin/chat/runtime/ChatChannelConfig.d.ts.map +1 -1
- package/bin/chat/runtime/ChatChannelConfig.js +7 -12
- package/bin/chat/runtime/ChatChannelConfig.js.map +1 -1
- package/bin/chat/runtime/ChatChannelCore.d.ts +3 -3
- package/bin/chat/runtime/ChatChannelCore.d.ts.map +1 -1
- package/bin/chat/runtime/ChatChannelCore.js +5 -5
- package/bin/chat/runtime/ChatChannelCore.js.map +1 -1
- package/bin/chat/runtime/ChatHistoryStore.d.ts +1 -1
- package/bin/chat/runtime/ChatHistoryStore.js +7 -7
- package/bin/chat/runtime/ChatHistoryStore.js.map +1 -1
- package/bin/chat/runtime/ChatMetaStore.d.ts +1 -1
- package/bin/chat/runtime/ChatMetaStore.js +1 -1
- package/bin/chat/runtime/ChatPluginActionRegistry.d.ts +1 -1
- package/bin/chat/runtime/ChatPluginActionRegistry.d.ts.map +1 -1
- package/bin/chat/runtime/ChatPluginActionRegistry.js +9 -9
- package/bin/chat/runtime/ChatPluginActionRegistry.js.map +1 -1
- package/bin/chat/runtime/ChatQueue.d.ts +3 -38
- package/bin/chat/runtime/ChatQueue.d.ts.map +1 -1
- package/bin/chat/runtime/ChatQueue.js +3 -51
- package/bin/chat/runtime/ChatQueue.js.map +1 -1
- package/bin/chat/runtime/ChatQueueStore.d.ts +5 -16
- package/bin/chat/runtime/ChatQueueStore.d.ts.map +1 -1
- package/bin/chat/runtime/ChatQueueStore.js +8 -22
- package/bin/chat/runtime/ChatQueueStore.js.map +1 -1
- package/bin/chat/runtime/ChatQueueWorker.d.ts +1 -1
- package/bin/chat/runtime/ChatQueueWorker.d.ts.map +1 -1
- package/bin/chat/runtime/ChatQueueWorker.js +1 -2
- package/bin/chat/runtime/ChatQueueWorker.js.map +1 -1
- package/bin/chat/runtime/ChatSessionDelete.d.ts +3 -3
- package/bin/chat/runtime/ChatSessionDelete.js +4 -4
- package/bin/chat/runtime/ChatSessionDelete.js.map +1 -1
- package/bin/chat/runtime/ChatStorage.d.ts +7 -7
- package/bin/chat/runtime/ChatStorage.js +24 -24
- package/bin/chat/runtime/ChatStorage.js.map +1 -1
- package/bin/chat/types/ChatAccess.d.ts +2 -2
- package/bin/chat/types/ChatAccess.d.ts.map +1 -1
- package/bin/chat/types/ChatCommand.d.ts +1 -1
- package/bin/chat/types/ChatPluginChannelConfig.d.ts +57 -0
- package/bin/chat/types/ChatPluginChannelConfig.d.ts.map +1 -0
- package/bin/chat/types/ChatPluginChannelConfig.js +3 -0
- package/bin/chat/types/ChatPluginChannelConfig.js.map +1 -0
- package/bin/chat/types/ChatPluginConfig.d.ts +19 -0
- package/bin/chat/types/ChatPluginConfig.d.ts.map +1 -0
- package/bin/chat/types/ChatPluginConfig.js +3 -0
- package/bin/chat/types/ChatPluginConfig.js.map +1 -0
- package/bin/chat/types/ChatPluginOptions.d.ts +4 -4
- package/bin/chat/types/ChatPluginOptions.d.ts.map +1 -1
- package/bin/chat/types/ChatPluginOptions.js +1 -1
- package/bin/chat/types/ChatPluginProfile.d.ts +39 -0
- package/bin/chat/types/ChatPluginProfile.d.ts.map +1 -0
- package/bin/chat/types/ChatPluginProfile.js +3 -0
- package/bin/chat/types/ChatPluginProfile.js.map +1 -0
- package/bin/chat/types/ChatPluginRenderer.d.ts +17 -0
- package/bin/chat/types/ChatPluginRenderer.d.ts.map +1 -0
- package/bin/chat/types/ChatPluginRenderer.js +3 -0
- package/bin/chat/types/ChatPluginRenderer.js.map +1 -0
- package/bin/chat/types/ChatRuntime.d.ts +11 -0
- package/bin/chat/types/ChatRuntime.d.ts.map +1 -1
- package/bin/chat/types/ChatRuntimeAccount.d.ts +3 -3
- package/bin/chat/types/ChatRuntimeAccount.d.ts.map +1 -1
- package/bin/chat/types/ChatRuntimeAccount.js +2 -2
- package/bin/chat/types/ChatStorage.d.ts +2 -2
- package/bin/chat/types/ChatStorage.d.ts.map +1 -1
- package/bin/chat.d.ts +3 -4
- package/bin/chat.d.ts.map +1 -1
- package/bin/chat.js +1 -2
- package/bin/chat.js.map +1 -1
- package/bin/contact/Action.js +5 -5
- package/bin/contact/Action.js.map +1 -1
- package/bin/contact/ContactPlugin.js +15 -15
- package/bin/contact/ContactPlugin.js.map +1 -1
- package/bin/contact/runtime/ChatRuntime.js +3 -3
- package/bin/contact/runtime/ChatRuntime.js.map +1 -1
- package/bin/contact/runtime/ContactStore.d.ts +8 -8
- package/bin/contact/runtime/ContactStore.d.ts.map +1 -1
- package/bin/contact/runtime/ContactStore.js +20 -20
- package/bin/contact/runtime/ContactStore.js.map +1 -1
- package/bin/contact/runtime/EndpointNotice.js +2 -2
- package/bin/contact/runtime/EndpointNotice.js.map +1 -1
- package/bin/contact/runtime/InboxStore.d.ts +6 -6
- package/bin/contact/runtime/InboxStore.d.ts.map +1 -1
- package/bin/contact/runtime/InboxStore.js +16 -16
- package/bin/contact/runtime/InboxStore.js.map +1 -1
- package/bin/contact/runtime/LinkApproval.js +14 -14
- package/bin/contact/runtime/LinkApproval.js.map +1 -1
- package/bin/contact/runtime/LinkStore.d.ts +2 -2
- package/bin/contact/runtime/LinkStore.d.ts.map +1 -1
- package/bin/contact/runtime/LinkStore.js +5 -5
- package/bin/contact/runtime/LinkStore.js.map +1 -1
- package/bin/contact/runtime/Paths.d.ts +15 -15
- package/bin/contact/runtime/Paths.d.ts.map +1 -1
- package/bin/contact/runtime/Paths.js +29 -29
- package/bin/contact/runtime/Paths.js.map +1 -1
- package/bin/contact/runtime/ShareBundle.d.ts +1 -1
- package/bin/contact/runtime/ShareBundle.d.ts.map +1 -1
- package/bin/contact/runtime/ShareBundle.js +4 -4
- package/bin/contact/runtime/ShareBundle.js.map +1 -1
- package/bin/contact/types/ContactApproval.d.ts +2 -2
- package/bin/contact/types/ContactApproval.d.ts.map +1 -1
- package/bin/image/ImagePlugin.d.ts +1 -4
- package/bin/image/ImagePlugin.d.ts.map +1 -1
- package/bin/image/ImagePlugin.js +26 -34
- package/bin/image/ImagePlugin.js.map +1 -1
- package/bin/image/runtime/ImageResultStorage.d.ts +2 -2
- package/bin/image/runtime/ImageResultStorage.d.ts.map +1 -1
- package/bin/image/runtime/ImageResultStorage.js +15 -38
- package/bin/image/runtime/ImageResultStorage.js.map +1 -1
- package/bin/image/types/ImagePlugin.d.ts +23 -16
- package/bin/image/types/ImagePlugin.d.ts.map +1 -1
- package/bin/image/types/ImagePlugin.js +1 -1
- package/bin/image.d.ts +1 -1
- package/bin/image.d.ts.map +1 -1
- package/bin/index.d.ts +2 -0
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +1 -0
- package/bin/index.js.map +1 -1
- package/bin/memory/MemoryPlugin.d.ts +1 -1
- package/bin/memory/MemoryPlugin.d.ts.map +1 -1
- package/bin/memory/MemoryPlugin.js +17 -7
- package/bin/memory/MemoryPlugin.js.map +1 -1
- package/bin/memory/types/Memory.d.ts +10 -4
- package/bin/memory/types/Memory.d.ts.map +1 -1
- package/bin/memory.d.ts +1 -1
- package/bin/memory.d.ts.map +1 -1
- package/bin/renderers.d.ts +5 -0
- package/bin/renderers.d.ts.map +1 -0
- package/bin/renderers.js +12 -0
- package/bin/renderers.js.map +1 -0
- package/bin/sound/Plugin.d.ts +2 -5
- package/bin/sound/Plugin.d.ts.map +1 -1
- package/bin/sound/Plugin.js +27 -31
- package/bin/sound/Plugin.js.map +1 -1
- package/bin/sound/types/SoundPlugin.d.ts +22 -15
- package/bin/sound/types/SoundPlugin.d.ts.map +1 -1
- package/bin/sound/types/SoundPlugin.js +2 -2
- package/bin/sound.d.ts +1 -1
- package/bin/sound.d.ts.map +1 -1
- package/bin/task/Action.d.ts +6 -6
- package/bin/task/Action.d.ts.map +1 -1
- package/bin/task/Action.js +21 -21
- package/bin/task/Action.js.map +1 -1
- package/bin/task/PROMPT.d.ts +1 -1
- package/bin/task/PROMPT.d.ts.map +1 -1
- package/bin/task/PROMPT.js +1 -1
- package/bin/task/PROMPT.js.map +1 -1
- package/bin/task/Scheduler.js +8 -8
- package/bin/task/Scheduler.js.map +1 -1
- package/bin/task/TaskPlugin.d.ts +7 -14
- package/bin/task/TaskPlugin.d.ts.map +1 -1
- package/bin/task/TaskPlugin.js +54 -43
- package/bin/task/TaskPlugin.js.map +1 -1
- package/bin/task/runtime/Model.d.ts +1 -5
- package/bin/task/runtime/Model.d.ts.map +1 -1
- package/bin/task/runtime/Model.js +2 -13
- package/bin/task/runtime/Model.js.map +1 -1
- package/bin/task/runtime/Paths.d.ts +7 -7
- package/bin/task/runtime/Paths.d.ts.map +1 -1
- package/bin/task/runtime/Paths.js +11 -11
- package/bin/task/runtime/Paths.js.map +1 -1
- package/bin/task/runtime/Runner.d.ts +1 -1
- package/bin/task/runtime/Runner.d.ts.map +1 -1
- package/bin/task/runtime/Runner.js +4 -5
- package/bin/task/runtime/Runner.js.map +1 -1
- package/bin/task/runtime/Store.d.ts +9 -9
- package/bin/task/runtime/Store.d.ts.map +1 -1
- package/bin/task/runtime/Store.js +17 -17
- package/bin/task/runtime/Store.js.map +1 -1
- package/bin/task/runtime/TaskActionExecution.js +6 -6
- package/bin/task/runtime/TaskActionExecution.js.map +1 -1
- package/bin/task/runtime/TaskPluginActionRegistry.js +1 -1
- package/bin/task/runtime/TaskPluginActionRegistry.js.map +1 -1
- package/bin/task/runtime/TaskRunnerRound.d.ts +0 -1
- package/bin/task/runtime/TaskRunnerRound.d.ts.map +1 -1
- package/bin/task/runtime/TaskRunnerRound.js +8 -3
- package/bin/task/runtime/TaskRunnerRound.js.map +1 -1
- package/bin/task/runtime/TaskRunnerScript.d.ts +0 -4
- package/bin/task/runtime/TaskRunnerScript.d.ts.map +1 -1
- package/bin/task/runtime/TaskRunnerScript.js +0 -1
- package/bin/task/runtime/TaskRunnerScript.js.map +1 -1
- package/bin/task/runtime/TaskRunnerSession.d.ts +2 -3
- package/bin/task/runtime/TaskRunnerSession.d.ts.map +1 -1
- package/bin/task/runtime/TaskRunnerSession.js +2 -4
- package/bin/task/runtime/TaskRunnerSession.js.map +1 -1
- package/bin/task/types/TaskWorkspaceRuntime.d.ts +10 -0
- package/bin/task/types/TaskWorkspaceRuntime.d.ts.map +1 -0
- package/bin/task/types/TaskWorkspaceRuntime.js +3 -0
- package/bin/task/types/TaskWorkspaceRuntime.js.map +1 -0
- package/bin/web/Plugin.d.ts +2 -6
- package/bin/web/Plugin.d.ts.map +1 -1
- package/bin/web/Plugin.js +21 -17
- package/bin/web/Plugin.js.map +1 -1
- package/bin/web/providers/PlaywrightBrowserProvider.d.ts.map +1 -1
- package/bin/web/providers/PlaywrightBrowserProvider.js +59 -14
- package/bin/web/providers/PlaywrightBrowserProvider.js.map +1 -1
- package/bin/web/types/WebPlugin.d.ts +15 -9
- package/bin/web/types/WebPlugin.d.ts.map +1 -1
- package/bin/web.d.ts +1 -1
- package/bin/web.d.ts.map +1 -1
- package/bin/workboard/runtime/Collector.js +1 -1
- package/bin/workboard/runtime/Collector.js.map +1 -1
- package/package.json +29 -20
- package/scripts/chat-access.test.mjs +3 -2
- package/scripts/chat-channel-config.test.mjs +3 -3
- package/scripts/chat-storage.test.mjs +10 -14
- package/scripts/memory-plugin.test.mjs +9 -32
- package/scripts/playwright-browser-provider.test.mjs +260 -0
- package/scripts/plugin-main.test.mjs +101 -0
- package/scripts/plugin-subpaths.test.mjs +28 -0
- package/scripts/sound-plugin.test.mjs +21 -9
- package/scripts/unrestricted-sandbox-approval.test.mjs +1 -1
- package/scripts/web-plugin.test.mjs +43 -186
- package/src/builtin/BuiltinPluginReadmes.ts +58 -0
- package/src/builtin/BuiltinPluginTypes.ts +260 -0
- package/src/builtin/PluginSettingsDefinitions.ts +45 -0
- package/src/builtin/main/PluginSettingsMain.ts +75 -0
- package/src/builtin/renderer/PluginSettingsRenderer.tsx +110 -0
- package/src/builtin/types/PluginSettings.ts +46 -0
- package/src/chat/ChatPlugin.ts +99 -51
- package/src/chat/access/ChatAccessRuntime.ts +1 -1
- package/src/chat/access/ChatAccessSchema.ts +5 -5
- package/src/chat/access/ChatAccessService.ts +4 -4
- package/src/chat/access/ChatAccessStore.ts +17 -9
- package/src/chat/channels/BaseChatChannel.ts +2 -0
- package/src/chat/channels/RuntimeChannel.ts +9 -9
- package/src/chat/channels/feishu/Feishu.ts +1 -1
- package/src/chat/channels/feishu/FeishuPlatformClient.ts +3 -0
- package/src/chat/channels/feishu/FeishuPlatformLookup.ts +3 -1
- package/src/chat/channels/qq/QQ.ts +3 -2
- package/src/chat/channels/qq/QQEventCapture.ts +3 -3
- package/src/chat/channels/qq/QQInboundDedupe.ts +2 -3
- package/src/chat/channels/qq/QQMessageHandler.ts +6 -0
- package/src/chat/channels/qq/QQSupport.ts +5 -0
- package/src/chat/channels/qq/VoiceInput.ts +5 -1
- package/src/chat/channels/telegram/ApiClient.ts +10 -3
- package/src/chat/channels/telegram/StateStore.ts +2 -2
- package/src/chat/channels/telegram/TelegramPlatformClient.ts +2 -1
- package/src/chat/main/ChatPluginMain.ts +163 -0
- package/src/chat/renderer/ChatPluginRenderer.tsx +149 -0
- package/src/chat/runtime/ChannelContextStore.ts +20 -20
- package/src/chat/runtime/ChatActionExecution.ts +6 -6
- package/src/chat/runtime/ChatChannelConfig.ts +7 -14
- package/src/chat/runtime/ChatChannelCore.ts +9 -9
- package/src/chat/runtime/ChatHistoryStore.ts +7 -7
- package/src/chat/runtime/ChatMetaStore.ts +1 -1
- package/src/chat/runtime/ChatPluginActionRegistry.ts +10 -10
- package/src/chat/runtime/ChatQueue.ts +2 -69
- package/src/chat/runtime/ChatQueueStore.ts +10 -26
- package/src/chat/runtime/ChatQueueWorker.ts +2 -5
- package/src/chat/runtime/ChatSessionDelete.ts +4 -4
- package/src/chat/runtime/ChatStorage.ts +24 -24
- package/src/chat/types/ChatAccess.ts +2 -2
- package/src/chat/types/ChatCommand.ts +1 -1
- package/src/chat/types/ChatPluginChannelConfig.ts +63 -0
- package/src/chat/types/ChatPluginConfig.ts +21 -0
- package/src/chat/types/ChatPluginOptions.ts +4 -4
- package/src/chat/types/ChatPluginProfile.ts +52 -0
- package/src/chat/types/ChatPluginRenderer.ts +25 -0
- package/src/chat/types/ChatRuntime.ts +14 -0
- package/src/chat/types/ChatRuntimeAccount.ts +3 -3
- package/src/chat/types/ChatStorage.ts +2 -2
- package/src/chat.ts +6 -14
- package/src/contact/Action.ts +5 -5
- package/src/contact/ContactPlugin.ts +15 -15
- package/src/contact/runtime/ChatRuntime.ts +3 -3
- package/src/contact/runtime/ContactStore.ts +20 -20
- package/src/contact/runtime/EndpointNotice.ts +2 -2
- package/src/contact/runtime/InboxStore.ts +16 -16
- package/src/contact/runtime/LinkApproval.ts +16 -16
- package/src/contact/runtime/LinkStore.ts +5 -5
- package/src/contact/runtime/Paths.ts +29 -29
- package/src/contact/runtime/ShareBundle.ts +5 -5
- package/src/contact/types/ContactApproval.ts +2 -2
- package/src/image/ImagePlugin.ts +30 -33
- package/src/image/runtime/ImageResultStorage.ts +36 -62
- package/src/image/types/ImagePlugin.ts +25 -19
- package/src/image.ts +2 -0
- package/src/index.ts +8 -0
- package/src/memory/MemoryPlugin.ts +17 -5
- package/src/memory/types/Memory.ts +11 -4
- package/src/memory.ts +1 -0
- package/src/renderers.ts +18 -0
- package/src/sound/Plugin.ts +34 -33
- package/src/sound/types/SoundPlugin.ts +24 -19
- package/src/sound.ts +2 -0
- package/src/task/Action.ts +27 -27
- package/src/task/PROMPT.ts +1 -1
- package/src/task/PROMPT.ts.txt +5 -6
- package/src/task/Scheduler.ts +8 -8
- package/src/task/TaskPlugin.ts +55 -46
- package/src/task/runtime/Model.ts +3 -13
- package/src/task/runtime/Paths.ts +11 -11
- package/src/task/runtime/Runner.ts +5 -6
- package/src/task/runtime/Store.ts +22 -22
- package/src/task/runtime/TaskActionExecution.ts +6 -6
- package/src/task/runtime/TaskPluginActionRegistry.ts +1 -1
- package/src/task/runtime/TaskRunnerRound.ts +13 -4
- package/src/task/runtime/TaskRunnerScript.ts +0 -5
- package/src/task/runtime/TaskRunnerSession.ts +10 -8
- package/src/task/types/TaskWorkspaceRuntime.ts +12 -0
- package/src/web/Plugin.ts +23 -22
- package/src/web/providers/PlaywrightBrowserProvider.ts +93 -17
- package/src/web/types/WebPlugin.ts +16 -13
- package/src/web.ts +1 -0
- package/src/workboard/runtime/Collector.ts +1 -1
- package/tsconfig.json +4 -1
- package/LICENSE +0 -183
- package/bin/chat/Index.d.ts +0 -15
- package/bin/chat/Index.d.ts.map +0 -1
- package/bin/chat/Index.js +0 -11
- package/bin/chat/Index.js.map +0 -1
- package/bin/chat/config/ChatPluginConfig.d.ts +0 -67
- package/bin/chat/config/ChatPluginConfig.d.ts.map +0 -1
- package/bin/chat/config/ChatPluginConfig.js +0 -237
- package/bin/chat/config/ChatPluginConfig.js.map +0 -1
- package/bin/chat/types/ChatPluginResource.d.ts +0 -68
- package/bin/chat/types/ChatPluginResource.d.ts.map +0 -1
- package/bin/chat/types/ChatPluginResource.js +0 -10
- package/bin/chat/types/ChatPluginResource.js.map +0 -1
- package/bin/contact/Index.d.ts +0 -8
- package/bin/contact/Index.d.ts.map +0 -1
- package/bin/contact/Index.js +0 -8
- package/bin/contact/Index.js.map +0 -1
- package/bin/memory/Index.d.ts +0 -11
- package/bin/memory/Index.d.ts.map +0 -1
- package/bin/memory/Index.js +0 -11
- package/bin/memory/Index.js.map +0 -1
- package/bin/skill/Command.d.ts +0 -29
- package/bin/skill/Command.d.ts.map +0 -1
- package/bin/skill/Command.js +0 -35
- package/bin/skill/Command.js.map +0 -1
- package/bin/task/Index.d.ts +0 -9
- package/bin/task/Index.d.ts.map +0 -1
- package/bin/task/Index.js +0 -9
- package/bin/task/Index.js.map +0 -1
- package/src/chat/Index.ts +0 -36
- package/src/chat/config/ChatPluginConfig.ts +0 -266
- package/src/chat/types/ChatPluginResource.ts +0 -95
- package/src/contact/Index.ts +0 -8
- package/src/memory/Index.ts +0 -14
- package/src/skill/Command.ts +0 -58
- package/src/task/Index.ts +0 -8
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Downcity 官方 Plugin 的用户说明内容。 */
|
|
2
|
+
/** 官方 Plugin 在宿主 Overview 中展示的 Markdown 说明。 */
|
|
3
|
+
export declare const BUILTIN_PLUGIN_READMES: {
|
|
4
|
+
readonly skill: "# Skill Catalog And Loader\n\nDiscovers skills available to the Agent, reads their instructions, and adds guidance for selecting the right skill during a task.\n\n## What it provides\n\n- Lists and inspects installed skills.\n- Loads skill instructions only when they are relevant.\n- Keeps skill discovery separate from the Agent definition.";
|
|
5
|
+
readonly workboard: "# Workboard Snapshot\n\nCollects structured snapshots of Agent runtime activity so work can be inspected and presented consistently.\n\nThe Plugin owns snapshot collection and normalization; it does not change how an Agent executes a task.";
|
|
6
|
+
readonly contact: "# Contact\n\nManages trusted relationships with remote Agents and provides the actions required to exchange messages and shared information.\n\nContact state is stored in the current Agent's private Plugin data directory.";
|
|
7
|
+
readonly task: "# Task\n\nCreates and manages reusable Agent tasks, trigger definitions, and execution records.\n\nTasks remain Agent-owned runtime resources and can be scheduled or invoked through the Plugin's actions.";
|
|
8
|
+
readonly chat: "# Chat\n\nConnects an Agent to external conversations through Telegram, Feishu / Lark, and QQ.\n\n## Profiles and Channels\n\n- Each Profile contains one complete Chat configuration.\n- A Channel type can appear once in the same Profile.\n- Credentials stay in Plugin configuration and are not copied into `agent.json`.";
|
|
9
|
+
readonly memory: "# Memory\n\nProvides provider-neutral long-term memory with recall, revision, and deletion capabilities.\n\nMemory data belongs to the current Agent and is stored in that Agent's private Plugin runtime directory.";
|
|
10
|
+
readonly web: "# Web\n\nProvides web search, document reading, and optional browser sessions to an Agent.\n\nUse Profiles to isolate provider endpoints, credentials, and browser settings for different environments.";
|
|
11
|
+
readonly image: "# Image\n\nDiscovers available image models, generates images, and returns structured result metadata.\n\nUse Profiles to keep image service endpoints and credentials separate between environments.";
|
|
12
|
+
readonly sound: "# Sound\n\nDiscovers speech models and provides automatic speech recognition and text-to-speech actions.\n\nUse Profiles to isolate speech service endpoints, models, and credentials.";
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=BuiltinPluginReadmes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinPluginReadmes.d.ts","sourceRoot":"","sources":["../../src/builtin/BuiltinPluginReadmes.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,+CAA+C;AAC/C,eAAO,MAAM,sBAAsB;;;;;;;;;;CAsDzB,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/** Downcity 官方 Plugin 的用户说明内容。 */
|
|
2
|
+
/** 官方 Plugin 在宿主 Overview 中展示的 Markdown 说明。 */
|
|
3
|
+
export const BUILTIN_PLUGIN_READMES = {
|
|
4
|
+
skill: `# Skill Catalog And Loader
|
|
5
|
+
|
|
6
|
+
Discovers skills available to the Agent, reads their instructions, and adds guidance for selecting the right skill during a task.
|
|
7
|
+
|
|
8
|
+
## What it provides
|
|
9
|
+
|
|
10
|
+
- Lists and inspects installed skills.
|
|
11
|
+
- Loads skill instructions only when they are relevant.
|
|
12
|
+
- Keeps skill discovery separate from the Agent definition.`,
|
|
13
|
+
workboard: `# Workboard Snapshot
|
|
14
|
+
|
|
15
|
+
Collects structured snapshots of Agent runtime activity so work can be inspected and presented consistently.
|
|
16
|
+
|
|
17
|
+
The Plugin owns snapshot collection and normalization; it does not change how an Agent executes a task.`,
|
|
18
|
+
contact: `# Contact
|
|
19
|
+
|
|
20
|
+
Manages trusted relationships with remote Agents and provides the actions required to exchange messages and shared information.
|
|
21
|
+
|
|
22
|
+
Contact state is stored in the current Agent's private Plugin data directory.`,
|
|
23
|
+
task: `# Task
|
|
24
|
+
|
|
25
|
+
Creates and manages reusable Agent tasks, trigger definitions, and execution records.
|
|
26
|
+
|
|
27
|
+
Tasks remain Agent-owned runtime resources and can be scheduled or invoked through the Plugin's actions.`,
|
|
28
|
+
chat: `# Chat
|
|
29
|
+
|
|
30
|
+
Connects an Agent to external conversations through Telegram, Feishu / Lark, and QQ.
|
|
31
|
+
|
|
32
|
+
## Profiles and Channels
|
|
33
|
+
|
|
34
|
+
- Each Profile contains one complete Chat configuration.
|
|
35
|
+
- A Channel type can appear once in the same Profile.
|
|
36
|
+
- Credentials stay in Plugin configuration and are not copied into \`agent.json\`.`,
|
|
37
|
+
memory: `# Memory
|
|
38
|
+
|
|
39
|
+
Provides provider-neutral long-term memory with recall, revision, and deletion capabilities.
|
|
40
|
+
|
|
41
|
+
Memory data belongs to the current Agent and is stored in that Agent's private Plugin runtime directory.`,
|
|
42
|
+
web: `# Web
|
|
43
|
+
|
|
44
|
+
Provides web search, document reading, and optional browser sessions to an Agent.
|
|
45
|
+
|
|
46
|
+
Use Profiles to isolate provider endpoints, credentials, and browser settings for different environments.`,
|
|
47
|
+
image: `# Image
|
|
48
|
+
|
|
49
|
+
Discovers available image models, generates images, and returns structured result metadata.
|
|
50
|
+
|
|
51
|
+
Use Profiles to keep image service endpoints and credentials separate between environments.`,
|
|
52
|
+
sound: `# Sound
|
|
53
|
+
|
|
54
|
+
Discovers speech models and provides automatic speech recognition and text-to-speech actions.
|
|
55
|
+
|
|
56
|
+
Use Profiles to isolate speech service endpoints, models, and credentials.`,
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=BuiltinPluginReadmes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinPluginReadmes.js","sourceRoot":"","sources":["../../src/builtin/BuiltinPluginReadmes.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAElC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,KAAK,EAAE;;;;;;;;4DAQmD;IAC1D,SAAS,EAAE;;;;wGAI2F;IACtG,OAAO,EAAE;;;;8EAImE;IAC5E,IAAI,EAAE;;;;yGAIiG;IACvG,IAAI,EAAE;;;;;;;;mFAQ2E;IACjF,MAAM,EAAE;;;;yGAI+F;IACvG,GAAG,EAAE;;;;0GAImG;IACxG,KAAK,EAAE;;;;4FAImF;IAC1F,KAAK,EAAE;;;;2EAIkE;CACjE,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downcity 官方 Plugin 注册集合。
|
|
3
|
+
*
|
|
4
|
+
* 本模块负责把官方 Plugin 按应用配置装配成 Agent 独享实例。应用提供
|
|
5
|
+
* Embassy 服务,Plugin 自身只持有明确的服务接口。
|
|
6
|
+
*/
|
|
7
|
+
import type { Plugin } from "@downcity/agent";
|
|
8
|
+
import type { PluginHostContext } from "@downcity/agent";
|
|
9
|
+
import type { PluginMainModule } from "@downcity/plugin";
|
|
10
|
+
/** 官方 Plugin definition 的最小结构协议。 */
|
|
11
|
+
export interface BuiltinPluginDefinition {
|
|
12
|
+
/** Plugin 的稳定 ID。 */
|
|
13
|
+
id: string;
|
|
14
|
+
/** Plugin 的用户可见标题。 */
|
|
15
|
+
title: string;
|
|
16
|
+
/** Plugin 的用途说明。 */
|
|
17
|
+
description: string;
|
|
18
|
+
/** 宿主 Overview 展示的完整 Markdown 用户说明。 */
|
|
19
|
+
readme: string;
|
|
20
|
+
/** 官方 Plugin 是否提供 Agent 能力。 */
|
|
21
|
+
has_agent: boolean;
|
|
22
|
+
/** 官方 Plugin 是否提供宿主 main。 */
|
|
23
|
+
has_main: boolean;
|
|
24
|
+
/** 官方 Plugin 是否提供唯一 Mainview。 */
|
|
25
|
+
has_renderer: boolean;
|
|
26
|
+
}
|
|
27
|
+
/** 官方 Plugin 注册协议。 */
|
|
28
|
+
export interface BuiltinPluginRegistration {
|
|
29
|
+
/** Plugin 的唯一静态定义。 */
|
|
30
|
+
readonly definition: BuiltinPluginDefinition;
|
|
31
|
+
/** 使用 City 读取的 Profile 创建一个 Agent 独享的 Plugin 实例。 */
|
|
32
|
+
create_agent(context: PluginHostContext): Plugin | Promise<Plugin>;
|
|
33
|
+
/** 可选的宿主 main 生命周期对象。 */
|
|
34
|
+
main?: PluginMainModule;
|
|
35
|
+
}
|
|
36
|
+
/** 创建官方 Plugin 注册集合所需的宿主能力。 */
|
|
37
|
+
export interface BuiltinPluginRegistrationsOptions {
|
|
38
|
+
/** Contact Plugin 对外报告的 HTTP 地址。 */
|
|
39
|
+
contact_http?: {
|
|
40
|
+
/** HTTP 监听地址。 */
|
|
41
|
+
host?: string;
|
|
42
|
+
/** HTTP 监听端口。 */
|
|
43
|
+
port?: number;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** 创建 Downcity 官方 Plugin 注册集合。 */
|
|
47
|
+
export declare function create_builtin_plugin_registrations(options: BuiltinPluginRegistrationsOptions): BuiltinPluginRegistration[];
|
|
48
|
+
//# sourceMappingURL=BuiltinPluginTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinPluginTypes.d.ts","sourceRoot":"","sources":["../../src/builtin/BuiltinPluginTypes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AA6BzD,oCAAoC;AACpC,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IAEX,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IAEd,oBAAoB;IACpB,WAAW,EAAE,MAAM,CAAC;IAEpB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,SAAS,EAAE,OAAO,CAAC;IAEnB,6BAA6B;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAElB,iCAAiC;IACjC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,sBAAsB;AACtB,MAAM,WAAW,yBAAyB;IACxC,sBAAsB;IACtB,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,oDAAoD;IACpD,YAAY,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnE,yBAAyB;IACzB,IAAI,CAAC,EAAE,gBAAgB,CAAC;CAEzB;AAED,+BAA+B;AAC/B,MAAM,WAAW,iCAAiC;IAChD,oCAAoC;IACpC,YAAY,CAAC,EAAE;QACb,iBAAiB;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,iBAAiB;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CAEH;AAED,kCAAkC;AAClC,wBAAgB,mCAAmC,CACjD,OAAO,EAAE,iCAAiC,GACzC,yBAAyB,EAAE,CAiH7B"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Downcity 官方 Plugin 注册集合。
|
|
3
|
+
*
|
|
4
|
+
* 本模块负责把官方 Plugin 按应用配置装配成 Agent 独享实例。应用提供
|
|
5
|
+
* Embassy 服务,Plugin 自身只持有明确的服务接口。
|
|
6
|
+
*/
|
|
7
|
+
import { CHAT_PLUGIN_MAIN } from "../chat/main/ChatPluginMain.js";
|
|
8
|
+
import { IMAGE_PLUGIN_SETTINGS, SOUND_PLUGIN_SETTINGS, WEB_PLUGIN_SETTINGS, } from "../builtin/PluginSettingsDefinitions.js";
|
|
9
|
+
import { create_plugin_settings_main } from "../builtin/main/PluginSettingsMain.js";
|
|
10
|
+
import { BUILTIN_PLUGIN_READMES } from "../builtin/BuiltinPluginReadmes.js";
|
|
11
|
+
import { ChatPlugin, } from "../chat.js";
|
|
12
|
+
import { FeishuChannel, QqChannel, TelegramChannel } from "../chat.js";
|
|
13
|
+
import { ContactPlugin } from "../contact.js";
|
|
14
|
+
import { ImagePlugin } from "../image.js";
|
|
15
|
+
import { MemoryPlugin, } from "../memory.js";
|
|
16
|
+
import { SkillPlugin } from "../skill.js";
|
|
17
|
+
import { SoundPlugin } from "../sound.js";
|
|
18
|
+
import { TaskPlugin } from "../task.js";
|
|
19
|
+
import { WebPlugin, } from "../web.js";
|
|
20
|
+
import { WorkboardPlugin } from "../workboard.js";
|
|
21
|
+
/** 创建 Downcity 官方 Plugin 注册集合。 */
|
|
22
|
+
export function create_builtin_plugin_registrations(options) {
|
|
23
|
+
return [
|
|
24
|
+
simple_registration("skill", "Skill Catalog And Loader", "Lists and reads local skills, and injects discovery guidance.", BUILTIN_PLUGIN_READMES.skill, () => new SkillPlugin()),
|
|
25
|
+
simple_registration("workboard", "Workboard Snapshot", "Collects structured Agent runtime activity snapshots.", BUILTIN_PLUGIN_READMES.workboard, () => new WorkboardPlugin()),
|
|
26
|
+
simple_registration("contact", "Contact", "Manages trusted relationships and exchanges with remote Agents.", BUILTIN_PLUGIN_READMES.contact, () => new ContactPlugin({
|
|
27
|
+
host: options.contact_http?.host,
|
|
28
|
+
port: options.contact_http?.port,
|
|
29
|
+
})),
|
|
30
|
+
simple_registration("task", "Task", "Manages reusable tasks and their trigger runtime.", BUILTIN_PLUGIN_READMES.task, () => new TaskPlugin()),
|
|
31
|
+
{
|
|
32
|
+
definition: {
|
|
33
|
+
id: "chat",
|
|
34
|
+
title: "Chat",
|
|
35
|
+
description: "Connects Agents to Telegram, Feishu, and QQ channels.",
|
|
36
|
+
readme: BUILTIN_PLUGIN_READMES.chat,
|
|
37
|
+
has_agent: true,
|
|
38
|
+
has_main: true,
|
|
39
|
+
has_renderer: true,
|
|
40
|
+
},
|
|
41
|
+
main: CHAT_PLUGIN_MAIN,
|
|
42
|
+
create_agent(context) {
|
|
43
|
+
const config = context.profile;
|
|
44
|
+
return new ChatPlugin({
|
|
45
|
+
queue: config.queue,
|
|
46
|
+
channels: create_chat_channels(config.channels ?? []),
|
|
47
|
+
});
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
definition: {
|
|
52
|
+
id: "memory",
|
|
53
|
+
title: "Memory",
|
|
54
|
+
description: "Provides provider-neutral long-term memory, recall, revision, and deletion.",
|
|
55
|
+
readme: BUILTIN_PLUGIN_READMES.memory,
|
|
56
|
+
has_agent: true,
|
|
57
|
+
has_main: false,
|
|
58
|
+
has_renderer: false,
|
|
59
|
+
},
|
|
60
|
+
create_agent(context) {
|
|
61
|
+
return new MemoryPlugin({ root_path: context.data_path });
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
definition: {
|
|
66
|
+
id: "web",
|
|
67
|
+
title: "Web",
|
|
68
|
+
description: "Provides web search, document reading, and optional browser sessions.",
|
|
69
|
+
readme: BUILTIN_PLUGIN_READMES.web,
|
|
70
|
+
has_agent: true,
|
|
71
|
+
has_main: true,
|
|
72
|
+
has_renderer: true,
|
|
73
|
+
},
|
|
74
|
+
main: create_plugin_settings_main(WEB_PLUGIN_SETTINGS),
|
|
75
|
+
create_agent(context) {
|
|
76
|
+
const config = context.profile;
|
|
77
|
+
return new WebPlugin(config);
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
definition: {
|
|
82
|
+
id: "image",
|
|
83
|
+
title: "Image",
|
|
84
|
+
description: "Discovers image models, generates images, and reads results.",
|
|
85
|
+
readme: BUILTIN_PLUGIN_READMES.image,
|
|
86
|
+
has_agent: true,
|
|
87
|
+
has_main: true,
|
|
88
|
+
has_renderer: true,
|
|
89
|
+
},
|
|
90
|
+
main: create_plugin_settings_main(IMAGE_PLUGIN_SETTINGS),
|
|
91
|
+
create_agent: (context) => new ImagePlugin({
|
|
92
|
+
...context.profile,
|
|
93
|
+
}),
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
definition: {
|
|
97
|
+
id: "sound",
|
|
98
|
+
title: "Sound",
|
|
99
|
+
description: "Discovers speech models and provides ASR and TTS.",
|
|
100
|
+
readme: BUILTIN_PLUGIN_READMES.sound,
|
|
101
|
+
has_agent: true,
|
|
102
|
+
has_main: true,
|
|
103
|
+
has_renderer: true,
|
|
104
|
+
},
|
|
105
|
+
main: create_plugin_settings_main(SOUND_PLUGIN_SETTINGS),
|
|
106
|
+
create_agent: (context) => new SoundPlugin({
|
|
107
|
+
...context.profile,
|
|
108
|
+
}),
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
/** 获取并适配官方 ImagePlugin 所需的 Embassy 图片服务。 */
|
|
113
|
+
/** 创建没有配置协议的简单注册。 */
|
|
114
|
+
function simple_registration(id, title, description, readme, create_agent) {
|
|
115
|
+
return {
|
|
116
|
+
definition: {
|
|
117
|
+
id,
|
|
118
|
+
title,
|
|
119
|
+
description,
|
|
120
|
+
readme,
|
|
121
|
+
has_agent: true,
|
|
122
|
+
has_main: false,
|
|
123
|
+
has_renderer: false,
|
|
124
|
+
},
|
|
125
|
+
create_agent,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** 创建 Chat Resource 对应的运行渠道。 */
|
|
129
|
+
function create_chat_channels(configs) {
|
|
130
|
+
const channel_types = new Set();
|
|
131
|
+
return configs.map((config) => {
|
|
132
|
+
if (channel_types.has(config.type)) {
|
|
133
|
+
throw new Error(`Chat Plugin channel type is duplicated: ${config.type}`);
|
|
134
|
+
}
|
|
135
|
+
channel_types.add(config.type);
|
|
136
|
+
if (config.type === "telegram") {
|
|
137
|
+
return new TelegramChannel({
|
|
138
|
+
id: config.id,
|
|
139
|
+
name: config.name,
|
|
140
|
+
bot_token: config.bot_token,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
if (config.type === "feishu") {
|
|
144
|
+
return new FeishuChannel({
|
|
145
|
+
id: config.id,
|
|
146
|
+
name: config.name,
|
|
147
|
+
app_id: config.app_id,
|
|
148
|
+
app_secret: config.app_secret,
|
|
149
|
+
domain: config.domain,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
return new QqChannel({
|
|
153
|
+
id: config.id,
|
|
154
|
+
name: config.name,
|
|
155
|
+
app_id: config.app_id,
|
|
156
|
+
app_secret: config.app_secret,
|
|
157
|
+
sandbox: config.sandbox,
|
|
158
|
+
});
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=BuiltinPluginTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BuiltinPluginTypes.js","sourceRoot":"","sources":["../../src/builtin/BuiltinPluginTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Web、Image 与 Sound Plugin 自己拥有的设置 Mainview 字段定义。 */
|
|
2
|
+
import type { PluginSettingsDefinition } from "../builtin/types/PluginSettings.js";
|
|
3
|
+
/** Web Plugin Profile 设置。 */
|
|
4
|
+
export declare const WEB_PLUGIN_SETTINGS: PluginSettingsDefinition;
|
|
5
|
+
/** Image Plugin Profile 设置。 */
|
|
6
|
+
export declare const IMAGE_PLUGIN_SETTINGS: PluginSettingsDefinition;
|
|
7
|
+
/** Sound Plugin Profile 设置。 */
|
|
8
|
+
export declare const SOUND_PLUGIN_SETTINGS: PluginSettingsDefinition;
|
|
9
|
+
//# sourceMappingURL=PluginSettingsDefinitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettingsDefinitions.d.ts","sourceRoot":"","sources":["../../src/builtin/PluginSettingsDefinitions.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAEtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAElF,6BAA6B;AAC7B,eAAO,MAAM,mBAAmB,EAAE,wBAgBjC,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,qBAAqB,EAAE,wBAMnC,CAAC;AAEF,+BAA+B;AAC/B,eAAO,MAAM,qBAAqB,EAAE,wBAWnC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Web、Image 与 Sound Plugin 自己拥有的设置 Mainview 字段定义。 */
|
|
2
|
+
/** Web Plugin Profile 设置。 */
|
|
3
|
+
export const WEB_PLUGIN_SETTINGS = {
|
|
4
|
+
title: "Web",
|
|
5
|
+
description: "配置浏览器连接与页面观察默认值。未填写 CDP 地址时仍可使用搜索和文档读取。",
|
|
6
|
+
fields: [
|
|
7
|
+
{
|
|
8
|
+
key: "browser",
|
|
9
|
+
label: "Browser provider",
|
|
10
|
+
description: "当前支持 Playwright CDP 连接。",
|
|
11
|
+
type: "select",
|
|
12
|
+
options: [{ value: "playwright", label: "Playwright" }],
|
|
13
|
+
},
|
|
14
|
+
{ key: "cdp_url", label: "CDP endpoint", description: "现有浏览器的 HTTP 或 WebSocket 调试地址。", type: "string" },
|
|
15
|
+
{ key: "default_url", label: "Default URL", description: "浏览器 Session 没有指定地址时打开的页面。", type: "string" },
|
|
16
|
+
{ key: "timeout_ms", label: "Operation timeout (ms)", type: "number", minimum: 1000, maximum: 60000 },
|
|
17
|
+
{ key: "max_observation_chars", label: "Observation character limit", type: "number", minimum: 1, maximum: 100000 },
|
|
18
|
+
],
|
|
19
|
+
};
|
|
20
|
+
/** Image Plugin Profile 设置。 */
|
|
21
|
+
export const IMAGE_PLUGIN_SETTINGS = {
|
|
22
|
+
title: "Image",
|
|
23
|
+
description: "选择图像生成请求没有显式指定模型时使用的默认模型。",
|
|
24
|
+
fields: [
|
|
25
|
+
{ key: "default_model", label: "Default image model", type: "string" },
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
/** Sound Plugin Profile 设置。 */
|
|
29
|
+
export const SOUND_PLUGIN_SETTINGS = {
|
|
30
|
+
title: "Sound",
|
|
31
|
+
description: "配置语音识别和语音合成的默认行为。",
|
|
32
|
+
fields: [
|
|
33
|
+
{ key: "default_asr_model", label: "Default ASR model", type: "string" },
|
|
34
|
+
{ key: "default_tts_model", label: "Default TTS model", type: "string" },
|
|
35
|
+
{ key: "auto_asr", label: "Automatic transcription", description: "收到音频输入后自动执行语音识别。", type: "boolean" },
|
|
36
|
+
{ key: "language", label: "Default language", type: "string" },
|
|
37
|
+
{ key: "voice", label: "Default voice", type: "string" },
|
|
38
|
+
{ key: "format", label: "Default audio format", type: "string" },
|
|
39
|
+
],
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=PluginSettingsDefinitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettingsDefinitions.js","sourceRoot":"","sources":["../../src/builtin/PluginSettingsDefinitions.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAItD,6BAA6B;AAC7B,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,KAAK,EAAE,KAAK;IACZ,WAAW,EAAE,yCAAyC;IACtD,MAAM,EAAE;QACN;YACE,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,kBAAkB;YACzB,WAAW,EAAE,yBAAyB;YACtC,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;SACxD;QACD,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,+BAA+B,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvG,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,2BAA2B,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtG,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QACrG,EAAE,GAAG,EAAE,uBAAuB,EAAE,KAAK,EAAE,6BAA6B,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE;KACpH;CACF,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,qBAAqB,GAA6B;IAC7D,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,2BAA2B;IACxC,MAAM,EAAE;QACN,EAAE,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;KACvE;CACF,CAAC;AAEF,+BAA+B;AAC/B,MAAM,CAAC,MAAM,qBAAqB,GAA6B;IAC7D,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,mBAAmB;IAChC,MAAM,EAAE;QACN,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxE,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxE,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,kBAAkB,EAAE,IAAI,EAAE,SAAS,EAAE;QACvG,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC9D,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE;QACxD,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;KACjE;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** 官方简单设置 Plugin 的 main action 实现。 */
|
|
2
|
+
import { type PluginMainModule } from "@downcity/plugin";
|
|
3
|
+
import type { PluginSettingsDefinition } from "../../builtin/types/PluginSettings.js";
|
|
4
|
+
/** 为一个字段集合创建 Profile 读取和保存 action。 */
|
|
5
|
+
export declare function create_plugin_settings_main(definition: PluginSettingsDefinition): PluginMainModule;
|
|
6
|
+
//# sourceMappingURL=PluginSettingsMain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettingsMain.d.ts","sourceRoot":"","sources":["../../../src/builtin/main/PluginSettingsMain.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAEtC,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAEV,wBAAwB,EACzB,MAAM,mCAAmC,CAAC;AAE3C,sCAAsC;AACtC,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,wBAAwB,GACnC,gBAAgB,CAiBlB"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/** 官方简单设置 Plugin 的 main action 实现。 */
|
|
2
|
+
import { define_plugin_main, } from "@downcity/plugin";
|
|
3
|
+
/** 为一个字段集合创建 Profile 读取和保存 action。 */
|
|
4
|
+
export function create_plugin_settings_main(definition) {
|
|
5
|
+
return define_plugin_main({
|
|
6
|
+
activate({ plugin }) {
|
|
7
|
+
plugin.action({
|
|
8
|
+
id: "profile.read",
|
|
9
|
+
run: async (_input, context) => await context.config.get(),
|
|
10
|
+
});
|
|
11
|
+
plugin.action({
|
|
12
|
+
id: "profile.save",
|
|
13
|
+
run: async (input, context) => {
|
|
14
|
+
const config = normalize_settings(input, definition.fields);
|
|
15
|
+
await context.config.set(config);
|
|
16
|
+
return config;
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/** 按 Plugin 自己声明的字段校验并规范化配置。 */
|
|
23
|
+
function normalize_settings(input, fields) {
|
|
24
|
+
if (!input || typeof input !== "object" || Array.isArray(input)) {
|
|
25
|
+
throw new Error("Plugin Profile config must be an object");
|
|
26
|
+
}
|
|
27
|
+
const source = input;
|
|
28
|
+
const result = {};
|
|
29
|
+
for (const field of fields) {
|
|
30
|
+
const value = source[field.key];
|
|
31
|
+
if (value === undefined || value === "")
|
|
32
|
+
continue;
|
|
33
|
+
if (field.type === "boolean") {
|
|
34
|
+
if (typeof value !== "boolean")
|
|
35
|
+
throw invalid_field(field.key);
|
|
36
|
+
result[field.key] = value;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (field.type === "number") {
|
|
40
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
41
|
+
throw invalid_field(field.key);
|
|
42
|
+
if (field.minimum !== undefined && value < field.minimum)
|
|
43
|
+
throw invalid_field(field.key);
|
|
44
|
+
if (field.maximum !== undefined && value > field.maximum)
|
|
45
|
+
throw invalid_field(field.key);
|
|
46
|
+
result[field.key] = value;
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (typeof value !== "string")
|
|
50
|
+
throw invalid_field(field.key);
|
|
51
|
+
const normalized = value.trim();
|
|
52
|
+
if (!normalized)
|
|
53
|
+
continue;
|
|
54
|
+
if (field.type === "select" && !field.options?.some((item) => item.value === normalized)) {
|
|
55
|
+
throw invalid_field(field.key);
|
|
56
|
+
}
|
|
57
|
+
result[field.key] = normalized;
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
/** 创建稳定的字段校验错误。 */
|
|
62
|
+
function invalid_field(key) {
|
|
63
|
+
return new Error(`Invalid Plugin Profile field: ${key}`);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=PluginSettingsMain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettingsMain.js","sourceRoot":"","sources":["../../../src/builtin/main/PluginSettingsMain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** 官方简单设置 Plugin 的统一 React Mainview 生成器。 */
|
|
2
|
+
import { type PluginRendererComponent } from "@downcity/plugin/react";
|
|
3
|
+
import type { PluginSettingsDefinition } from "../../builtin/types/PluginSettings.js";
|
|
4
|
+
/** 根据具体 Plugin 的字段声明创建使用宿主 UI Components 的 Mainview。 */
|
|
5
|
+
export declare function create_plugin_settings_renderer(definition: PluginSettingsDefinition): PluginRendererComponent;
|
|
6
|
+
//# sourceMappingURL=PluginSettingsRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettingsRenderer.d.ts","sourceRoot":"","sources":["../../../src/builtin/renderer/PluginSettingsRenderer.tsx"],"names":[],"mappings":"AAAA,4CAA4C;AAI5C,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAsB,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAEtG,wDAAwD;AACxD,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,wBAAwB,GACnC,uBAAuB,CA+DzB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/** 官方简单设置 Plugin 的统一 React Mainview 生成器。 */
|
|
3
|
+
import { useCallback, useEffect, useState } from "react";
|
|
4
|
+
import { define_plugin_renderer, } from "@downcity/plugin/react";
|
|
5
|
+
/** 根据具体 Plugin 的字段声明创建使用宿主 UI Components 的 Mainview。 */
|
|
6
|
+
export function create_plugin_settings_renderer(definition) {
|
|
7
|
+
return define_plugin_renderer(function PluginSettingsRenderer({ plugin, ui }) {
|
|
8
|
+
const { Button, Callout, Group, Input, LoadingState, Page, Row, Select, Switch, Toolbar } = ui.components;
|
|
9
|
+
const [draft, set_draft] = useState();
|
|
10
|
+
const [loading, set_loading] = useState(true);
|
|
11
|
+
const [saving, set_saving] = useState(false);
|
|
12
|
+
const [error, set_error] = useState("");
|
|
13
|
+
const load = useCallback(async () => {
|
|
14
|
+
set_loading(true);
|
|
15
|
+
set_error("");
|
|
16
|
+
try {
|
|
17
|
+
set_draft(await plugin.invoke("profile.read"));
|
|
18
|
+
}
|
|
19
|
+
catch (reason) {
|
|
20
|
+
set_error(to_error_message(reason));
|
|
21
|
+
}
|
|
22
|
+
finally {
|
|
23
|
+
set_loading(false);
|
|
24
|
+
}
|
|
25
|
+
}, [plugin]);
|
|
26
|
+
useEffect(() => { void load(); }, [load]);
|
|
27
|
+
const set_field = (field, value) => {
|
|
28
|
+
set_draft((current) => {
|
|
29
|
+
const next = { ...(current ?? {}) };
|
|
30
|
+
if (value === undefined || value === "")
|
|
31
|
+
delete next[field.key];
|
|
32
|
+
else
|
|
33
|
+
next[field.key] = value;
|
|
34
|
+
return next;
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const save = async () => {
|
|
38
|
+
if (!draft)
|
|
39
|
+
return;
|
|
40
|
+
set_saving(true);
|
|
41
|
+
set_error("");
|
|
42
|
+
try {
|
|
43
|
+
const saved = await plugin.invoke("profile.save", draft);
|
|
44
|
+
set_draft(saved);
|
|
45
|
+
ui.toast({ type: "success", message: "Profile 已保存" });
|
|
46
|
+
}
|
|
47
|
+
catch (reason) {
|
|
48
|
+
const message = to_error_message(reason);
|
|
49
|
+
set_error(message);
|
|
50
|
+
ui.toast({ type: "error", message });
|
|
51
|
+
}
|
|
52
|
+
finally {
|
|
53
|
+
set_saving(false);
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
if (loading && !draft)
|
|
57
|
+
return _jsx(LoadingState, { label: "\u6B63\u5728\u8BFB\u53D6 Profile\u2026" });
|
|
58
|
+
return _jsxs(Page, { children: [_jsx(Toolbar, { actions: _jsx(Button, { variant: "primary", disabled: !draft || saving, on_click: () => void save(), children: saving ? "保存中…" : "保存" }) }), error ? _jsx(Callout, { tone: "danger", children: error }) : null, _jsx(Group, { children: definition.fields.map((field) => _jsx(Row, { label: field.label, description: field.description, trailing: _jsx(SettingControl, { field: field, value: draft?.[field.key], set_value: (value) => set_field(field, value), components: { Input, Select, Switch } }) }, field.key)) })] });
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
/** 根据字段类型选择宿主表单控件。 */
|
|
62
|
+
function SettingControl({ field, value, set_value, components }) {
|
|
63
|
+
const { Input, Select, Switch } = components;
|
|
64
|
+
if (field.type === "boolean") {
|
|
65
|
+
return _jsx(Switch, { checked: value === true, on_checked_change: set_value, aria_label: field.label });
|
|
66
|
+
}
|
|
67
|
+
if (field.type === "select") {
|
|
68
|
+
return _jsx(Select, { value: typeof value === "string" ? value : "", options: field.options ?? [], on_value_change: set_value });
|
|
69
|
+
}
|
|
70
|
+
return _jsx(Input, { type: field.type === "number" ? "number" : "text", value: typeof value === "string" || typeof value === "number" ? String(value) : "", minimum: field.minimum, maximum: field.maximum, on_value_change: (next_value) => set_value(field.type === "number" ? next_value === "" ? undefined : Number(next_value) : next_value) });
|
|
71
|
+
}
|
|
72
|
+
/** 把未知失败转换为用户可见消息。 */
|
|
73
|
+
function to_error_message(reason) {
|
|
74
|
+
return reason instanceof Error ? reason.message : String(reason);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=PluginSettingsRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettingsRenderer.js","sourceRoot":"","sources":["../../../src/builtin/renderer/PluginSettingsRenderer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** 官方 Plugin 设置 Mainview 的内部声明类型。 */
|
|
2
|
+
/** 简单设置字段支持的值类型。 */
|
|
3
|
+
export type PluginSettingFieldType = "string" | "number" | "boolean" | "select";
|
|
4
|
+
/** 一个由具体 Plugin 声明的设置字段。 */
|
|
5
|
+
export interface PluginSettingField {
|
|
6
|
+
/** Profile 配置中的稳定字段名。 */
|
|
7
|
+
readonly key: string;
|
|
8
|
+
/** Mainview 展示名称。 */
|
|
9
|
+
readonly label: string;
|
|
10
|
+
/** 可选的用户说明。 */
|
|
11
|
+
readonly description?: string;
|
|
12
|
+
/** 字段值类型。 */
|
|
13
|
+
readonly type: PluginSettingFieldType;
|
|
14
|
+
/** 数字字段允许的最小值。 */
|
|
15
|
+
readonly minimum?: number;
|
|
16
|
+
/** 数字字段允许的最大值。 */
|
|
17
|
+
readonly maximum?: number;
|
|
18
|
+
/** select 字段允许的稳定选项。 */
|
|
19
|
+
readonly options?: readonly {
|
|
20
|
+
/** 保存到配置的值。 */
|
|
21
|
+
readonly value: string;
|
|
22
|
+
/** Mainview 展示文本。 */
|
|
23
|
+
readonly label: string;
|
|
24
|
+
}[];
|
|
25
|
+
}
|
|
26
|
+
/** 一个简单设置 Mainview 的完整定义。 */
|
|
27
|
+
export interface PluginSettingsDefinition {
|
|
28
|
+
/** Mainview 标题。 */
|
|
29
|
+
readonly title: string;
|
|
30
|
+
/** Mainview 说明。 */
|
|
31
|
+
readonly description: string;
|
|
32
|
+
/** Plugin 自己拥有的全部配置字段。 */
|
|
33
|
+
readonly fields: readonly PluginSettingField[];
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PluginSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettings.d.ts","sourceRoot":"","sources":["../../../src/builtin/types/PluginSettings.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC,oBAAoB;AACpB,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEhF,4BAA4B;AAC5B,MAAM,WAAW,kBAAkB;IACjC,yBAAyB;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB,qBAAqB;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,eAAe;IACf,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,aAAa;IACb,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IAEtC,kBAAkB;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,kBAAkB;IAClB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAE1B,wBAAwB;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS;QAC1B,eAAe;QACf,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAEvB,qBAAqB;QACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAED,6BAA6B;AAC7B,MAAM,WAAW,wBAAwB;IACvC,mBAAmB;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,mBAAmB;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAChD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginSettings.js","sourceRoot":"","sources":["../../../src/builtin/types/PluginSettings.ts"],"names":[],"mappings":"AAAA,qCAAqC"}
|