@yancyyu/openhermit 1.6.38 → 1.6.40

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.
Files changed (243) hide show
  1. package/dist-renderer/assets/ProjectEditorOverlay-CemDOX-3.js +58 -0
  2. package/dist-renderer/assets/{TeamGraphOverlay-ZEDfZyHb.js → TeamGraphOverlay-hPY770Db.js} +1 -1
  3. package/dist-renderer/assets/{_basePickBy-CIhniz70.js → _basePickBy-BHHrJT1i.js} +1 -1
  4. package/dist-renderer/assets/{_baseUniq-cKAW4Q8I.js → _baseUniq-CWErBtke.js} +1 -1
  5. package/dist-renderer/assets/{arc-YmNsoDXW.js → arc-C_o2_Uv8.js} +1 -1
  6. package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-DHEls2sX.js → architectureDiagram-VXUJARFQ-DUW0LI3t.js} +1 -1
  7. package/dist-renderer/assets/{blockDiagram-VD42YOAC-Bpwf1Sbg.js → blockDiagram-VD42YOAC-CWbCE9hQ.js} +1 -1
  8. package/dist-renderer/assets/{c4Diagram-YG6GDRKO-B0IaQ4w5.js → c4Diagram-YG6GDRKO-BjLadrfV.js} +1 -1
  9. package/dist-renderer/assets/channel-DyP9YlCF.js +1 -0
  10. package/dist-renderer/assets/{chunk-4BX2VUAB-DLk-hcFc.js → chunk-4BX2VUAB-CPnvjZl9.js} +1 -1
  11. package/dist-renderer/assets/{chunk-55IACEB6-1XRmX_Zm.js → chunk-55IACEB6-OlL47yXQ.js} +1 -1
  12. package/dist-renderer/assets/{chunk-B4BG7PRW-1waH1DAD.js → chunk-B4BG7PRW-DTasjbm8.js} +1 -1
  13. package/dist-renderer/assets/{chunk-DI55MBZ5-BqpZBtrN.js → chunk-DI55MBZ5-C5_Xaqkk.js} +1 -1
  14. package/dist-renderer/assets/{chunk-FMBD7UC4-Bly7vVym.js → chunk-FMBD7UC4-NdoM4DMR.js} +1 -1
  15. package/dist-renderer/assets/{chunk-QN33PNHL-Ci2QWBAs.js → chunk-QN33PNHL-C8Fybejy.js} +1 -1
  16. package/dist-renderer/assets/{chunk-QZHKN3VN-YCqFW7d-.js → chunk-QZHKN3VN-E98TYFXJ.js} +1 -1
  17. package/dist-renderer/assets/{chunk-TZMSLE5B-B0xGXInl.js → chunk-TZMSLE5B-h4lFgkIq.js} +1 -1
  18. package/dist-renderer/assets/classDiagram-2ON5EDUG-BqffFTae.js +1 -0
  19. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-BqffFTae.js +1 -0
  20. package/dist-renderer/assets/clone-MPcKWs2O.js +1 -0
  21. package/dist-renderer/assets/{cose-bilkent-S5V4N54A-DxcFNQKT.js → cose-bilkent-S5V4N54A-DtQ7fkrs.js} +1 -1
  22. package/dist-renderer/assets/{dagre-6UL2VRFP-DPo_RfZY.js → dagre-6UL2VRFP-CN-nL_z4.js} +1 -1
  23. package/dist-renderer/assets/{diagram-PSM6KHXK-U3hQsFe4.js → diagram-PSM6KHXK-DVJtqmm-.js} +1 -1
  24. package/dist-renderer/assets/{diagram-QEK2KX5R-OrwrAy0V.js → diagram-QEK2KX5R-DlxHxyXh.js} +1 -1
  25. package/dist-renderer/assets/{diagram-S2PKOQOG-CXATPWVw.js → diagram-S2PKOQOG-7dpzO6x6.js} +1 -1
  26. package/dist-renderer/assets/{erDiagram-Q2GNP2WA-B0e8AfMF.js → erDiagram-Q2GNP2WA-GP1TqsHi.js} +1 -1
  27. package/dist-renderer/assets/{flowDiagram-NV44I4VS-CXfzA4jJ.js → flowDiagram-NV44I4VS-C7ZLETuH.js} +1 -1
  28. package/dist-renderer/assets/{ganttDiagram-JELNMOA3-CMr08qVl.js → ganttDiagram-JELNMOA3-CvPB68dH.js} +1 -1
  29. package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-vYFHpPmy.js → gitGraphDiagram-V2S2FVAM-B5yOm3w7.js} +1 -1
  30. package/dist-renderer/assets/{graph-DOe5j8dH.js → graph-smeyY1YZ.js} +1 -1
  31. package/dist-renderer/assets/{index-BySQS7AB.js → index-BJx8XvG1.js} +1 -1
  32. package/dist-renderer/assets/{index-C_okzZXP.js → index-CQaXUAua.js} +1 -1
  33. package/dist-renderer/assets/{index-VJ-MM9xa.js → index-CajRpxO2.js} +1 -1
  34. package/dist-renderer/assets/{index-V7dAKPqd.js → index-ChG4rE-E.js} +587 -705
  35. package/dist-renderer/assets/index-DUd0uw9C.css +32 -0
  36. package/dist-renderer/assets/{index-CzWxVCRL.js → index-IhmXZWqf.js} +1 -1
  37. package/dist-renderer/assets/{index-B2Dy7M2G.js → index-x_JkoDRH.js} +1 -1
  38. package/dist-renderer/assets/{infoDiagram-HS3SLOUP-D_WubR0B.js → infoDiagram-HS3SLOUP-D-hWRQGY.js} +1 -1
  39. package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-w9ca-1TI.js → journeyDiagram-XKPGCS4Q-Bb6W8rUG.js} +1 -1
  40. package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-Jg9p6_pN.js → kanban-definition-3W4ZIXB7-CnHdUX0q.js} +1 -1
  41. package/dist-renderer/assets/{layout-B-z3y17c.js → layout-pqss_zkI.js} +1 -1
  42. package/dist-renderer/assets/{linear-D-RTX5UW.js → linear-B1mFITNh.js} +1 -1
  43. package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-CDQmHOYP.js → mindmap-definition-VGOIOE7T-DTD9q7-D.js} +1 -1
  44. package/dist-renderer/assets/{pieDiagram-ADFJNKIX-D_odsQL7.js → pieDiagram-ADFJNKIX-Df3mhrn7.js} +1 -1
  45. package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-BRsmYWSA.js → quadrantDiagram-AYHSOK5B-B1FZ09vH.js} +1 -1
  46. package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-ChNE_BOV.js → requirementDiagram-UZGBJVZJ-aEO78thZ.js} +1 -1
  47. package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-C8FtpwKc.js → sankeyDiagram-TZEHDZUN-6Ui--jp-.js} +1 -1
  48. package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-DmLCzNcc.js → sequenceDiagram-WL72ISMW-DF4Q1cAM.js} +1 -1
  49. package/dist-renderer/assets/splashScene-D0YB9uxm.js +17 -0
  50. package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-WJBm4bhu.js → stateDiagram-FKZM4ZOC-BqA2BI8C.js} +1 -1
  51. package/dist-renderer/assets/stateDiagram-v2-4FDKWEC3-Cs2ZtUD2.js +1 -0
  52. package/dist-renderer/assets/{timeline-definition-IT6M3QCI-BXs_hOJs.js → timeline-definition-IT6M3QCI-DoOkw_A8.js} +1 -1
  53. package/dist-renderer/assets/{treemap-GDKQZRPO-o04MA0G9.js → treemap-GDKQZRPO-DUe26QdD.js} +1 -1
  54. package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-Czj69XRd.js → xychartDiagram-PRI3JC2R-BKCnj5Xn.js} +1 -1
  55. package/dist-renderer/index.html +20 -53
  56. package/package.json +25 -18
  57. package/src/main/ipc/extensions.ts +2 -1
  58. package/src/main/server.ts +873 -221
  59. package/src/main/services/extensions/ExtensionFacadeService.ts +2 -5
  60. package/src/main/services/extensions/catalog/PluginCatalogService.ts +4 -2
  61. package/src/main/services/session-intelligence/ConversationTelemetryService.ts +1101 -0
  62. package/src/main/services/session-intelligence/LocalSessionScanner.ts +512 -0
  63. package/src/main/services/session-intelligence/SessionUsageParser.ts +4 -4
  64. package/src/main/services/system-manager/SystemManagerConfigService.ts +122 -0
  65. package/src/main/services/system-manager/SystemManagerPtyService.ts +233 -0
  66. package/src/main/services/system-manager/WorkflowPromptService.ts +75 -0
  67. package/src/main/services/teams-mvp/TaskDispatchService.ts +5 -6
  68. package/src/main/services/teams-mvp/TeamProvisioningService.ts +39 -2
  69. package/src/main/services/teams-mvp/TeamWorkspaceService.ts +22 -4
  70. package/src/main/utils/teamProjectResolution.ts +15 -0
  71. package/src/renderer/App.tsx +8 -4
  72. package/src/renderer/api/httpClient.ts +68 -18
  73. package/src/renderer/api/providers.ts +23 -2
  74. package/src/renderer/assets/participant-avatars/01.svg +3 -0
  75. package/src/renderer/assets/participant-avatars/02.svg +3 -0
  76. package/src/renderer/assets/participant-avatars/03.svg +3 -0
  77. package/src/renderer/assets/participant-avatars/04.svg +3 -0
  78. package/src/renderer/assets/participant-avatars/05.svg +3 -0
  79. package/src/renderer/assets/participant-avatars/06.svg +3 -0
  80. package/src/renderer/assets/participant-avatars/07.svg +3 -0
  81. package/src/renderer/assets/participant-avatars/08.svg +3 -0
  82. package/src/renderer/assets/participant-avatars/09.svg +3 -0
  83. package/src/renderer/assets/participant-avatars/10.svg +3 -0
  84. package/src/renderer/assets/participant-avatars/11.svg +3 -0
  85. package/src/renderer/assets/participant-avatars/12.svg +3 -0
  86. package/src/renderer/assets/participant-avatars/13.svg +3 -0
  87. package/src/renderer/components/chat/ChatHistoryItem.tsx +1 -1
  88. package/src/renderer/components/chat/items/SubagentItem.tsx +2 -2
  89. package/src/renderer/components/chat/viewers/MermaidDiagram.tsx +2 -2
  90. package/src/renderer/components/common/ErrorBoundary.tsx +1 -1
  91. package/src/renderer/components/common/TerminalPane.tsx +213 -0
  92. package/src/renderer/components/dashboard/CliStatusBanner.tsx +7 -7
  93. package/src/renderer/components/dashboard/DashboardView.tsx +9 -36
  94. package/src/renderer/components/extensions/ExtensionStoreView.tsx +7 -126
  95. package/src/renderer/components/extensions/ExtensionsSubTabTrigger.tsx +1 -1
  96. package/src/renderer/components/extensions/common/ExtensionToast.tsx +3 -3
  97. package/src/renderer/components/extensions/common/SourceBadge.tsx +1 -1
  98. package/src/renderer/components/extensions/mcp/McpLibraryEnableDialog.tsx +305 -0
  99. package/src/renderer/components/extensions/mcp/McpLibraryEntryDialog.tsx +418 -0
  100. package/src/renderer/components/extensions/mcp/McpLibraryPanel.tsx +404 -0
  101. package/src/renderer/components/extensions/plugins/CategoryChips.tsx +1 -1
  102. package/src/renderer/components/extensions/plugins/PluginCard.tsx +6 -6
  103. package/src/renderer/components/extensions/plugins/PluginDetailDialog.tsx +2 -2
  104. package/src/renderer/components/extensions/plugins/PluginsPanel.tsx +34 -21
  105. package/src/renderer/components/extensions/skills/SkillEditorDialog.tsx +1 -1
  106. package/src/renderer/components/extensions/skills/SkillsLibraryPanel.tsx +335 -0
  107. package/src/renderer/components/layout/PaneContent.tsx +8 -1
  108. package/src/renderer/components/layout/PaneResizeHandle.tsx +2 -2
  109. package/src/renderer/components/layout/Sidebar.tsx +13 -56
  110. package/src/renderer/components/layout/SortableTab.tsx +22 -33
  111. package/src/renderer/components/layout/TabBar.tsx +1 -1
  112. package/src/renderer/components/layout/TabContextMenu.tsx +1 -1
  113. package/src/renderer/components/report/sections/CostSection.tsx +2 -2
  114. package/src/renderer/components/report/sections/InsightsSection.tsx +1 -1
  115. package/src/renderer/components/runtime/ProviderRuntimeBackendSelector.tsx +2 -2
  116. package/src/renderer/components/runtime/ProviderRuntimeSettingsDialog.tsx +768 -157
  117. package/src/renderer/components/schedules/SchedulesView.tsx +51 -462
  118. package/src/renderer/components/schedules/calendar/CalendarDayView.tsx +173 -0
  119. package/src/renderer/components/schedules/calendar/CalendarEventBlock.tsx +113 -0
  120. package/src/renderer/components/schedules/calendar/CalendarHeader.tsx +148 -0
  121. package/src/renderer/components/schedules/calendar/CalendarMonthView.tsx +142 -0
  122. package/src/renderer/components/schedules/calendar/CalendarWeekView.tsx +219 -0
  123. package/src/renderer/components/schedules/calendar/ScheduleCalendarBoard.tsx +41 -0
  124. package/src/renderer/components/schedules/calendar/TeamGanttView.tsx +405 -0
  125. package/src/renderer/components/schedules/calendar/computeOccurrences.ts +234 -0
  126. package/src/renderer/components/schedules/calendar/index.ts +2 -0
  127. package/src/renderer/components/schedules/calendar/types.ts +44 -0
  128. package/src/renderer/components/search/CommandPalette.tsx +4 -4
  129. package/src/renderer/components/settings/SettingsTabs.tsx +50 -55
  130. package/src/renderer/components/settings/SettingsView.tsx +30 -35
  131. package/src/renderer/components/settings/components/SettingsSectionHeader.tsx +5 -1
  132. package/src/renderer/components/settings/components/SettingsSelect.tsx +5 -3
  133. package/src/renderer/components/settings/components/SettingsToggle.tsx +2 -2
  134. package/src/renderer/components/settings/sections/AdvancedSection.tsx +11 -42
  135. package/src/renderer/components/settings/sections/CliStatusSection.tsx +72 -113
  136. package/src/renderer/components/settings/sections/ConfigEditorDialog.tsx +1 -1
  137. package/src/renderer/components/settings/sections/GeneralSection.tsx +11 -3
  138. package/src/renderer/components/settings/sections/HarnessSection.tsx +18 -14
  139. package/src/renderer/components/settings/sections/PlatformsSection.tsx +3 -3
  140. package/src/renderer/components/settings/sections/TaskBusSection.tsx +33 -40
  141. package/src/renderer/components/settings/sections/index.ts +0 -1
  142. package/src/renderer/components/sidebar/SessionFiltersPopover.tsx +1 -1
  143. package/src/renderer/components/sidebar/SessionItem.tsx +3 -3
  144. package/src/renderer/components/sidebar/SidebarSessions.tsx +184 -6
  145. package/src/renderer/components/sidebar/SidebarTaskItem.tsx +4 -4
  146. package/src/renderer/components/sidebar/WorkspaceBrowser.tsx +40 -5
  147. package/src/renderer/components/splash/splashScene.ts +121 -929
  148. package/src/renderer/components/system-manager/FolderBrowser.tsx +163 -0
  149. package/src/renderer/components/system-manager/SystemManagerView.tsx +351 -0
  150. package/src/renderer/components/tasks/TasksView.tsx +112 -134
  151. package/src/renderer/components/team/CcSessionsSection.tsx +431 -89
  152. package/src/renderer/components/team/ClaudeLogsFilterPopover.tsx +1 -1
  153. package/src/renderer/components/team/ClaudeLogsPanel.tsx +1 -1
  154. package/src/renderer/components/team/CollapsibleTeamSection.tsx +17 -32
  155. package/src/renderer/components/team/ProcessesSection.tsx +2 -2
  156. package/src/renderer/components/team/TaskTooltip.tsx +2 -2
  157. package/src/renderer/components/team/TeamDetailView.tsx +319 -123
  158. package/src/renderer/components/team/TeamListFilterPopover.tsx +1 -1
  159. package/src/renderer/components/team/TeamListView.tsx +109 -124
  160. package/src/renderer/components/team/TeamSessionsSection.tsx +6 -6
  161. package/src/renderer/components/team/UnreadCommentsBadge.tsx +1 -1
  162. package/src/renderer/components/team/activity/ActivityItem.tsx +9 -9
  163. package/src/renderer/components/team/activity/ActivityTimeline.tsx +5 -5
  164. package/src/renderer/components/team/activity/LeadThoughtsGroup.tsx +3 -3
  165. package/src/renderer/components/team/activity/ReplyQuoteBlock.tsx +4 -4
  166. package/src/renderer/components/team/dialogs/CreateTaskDialog.tsx +4 -4
  167. package/src/renderer/components/team/dialogs/CreateTeamDialog.tsx +84 -306
  168. package/src/renderer/components/team/dialogs/EditTeamDialog.tsx +259 -342
  169. package/src/renderer/components/team/dialogs/GlobalTaskDetailDialog.tsx +1 -1
  170. package/src/renderer/components/team/dialogs/LaunchTeamDialog.tsx +18 -16
  171. package/src/renderer/components/team/dialogs/PlatformBindingDialog.tsx +221 -0
  172. package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +8 -1
  173. package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +5 -5
  174. package/src/renderer/components/team/dialogs/RuntimeConfigDialog.tsx +361 -0
  175. package/src/renderer/components/team/dialogs/SendMessageDialog.tsx +6 -6
  176. package/src/renderer/components/team/dialogs/SkipPermissionsCheckbox.tsx +6 -6
  177. package/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx +1 -1
  178. package/src/renderer/components/team/dialogs/TaskAttachments.tsx +1 -1
  179. package/src/renderer/components/team/dialogs/TaskCommentInput.tsx +6 -6
  180. package/src/renderer/components/team/dialogs/TaskCommentsSection.tsx +4 -4
  181. package/src/renderer/components/team/dialogs/TaskDetailDialog.tsx +3 -3
  182. package/src/renderer/components/team/dialogs/platformMeta.ts +122 -11
  183. package/src/renderer/components/team/dialogs/useTeamEditForm.ts +17 -5
  184. package/src/renderer/components/team/editor/EditorFileTree.tsx +4 -4
  185. package/src/renderer/components/team/editor/EditorSearchPanel.tsx +1 -1
  186. package/src/renderer/components/team/editor/MarkdownSplitView.tsx +1 -1
  187. package/src/renderer/components/team/editor/NewFileDialog.tsx +1 -1
  188. package/src/renderer/components/team/editor/ProjectEditorOverlay.tsx +1 -1
  189. package/src/renderer/components/team/editor/SearchInFilesPanel.tsx +1 -1
  190. package/src/renderer/components/team/kanban/KanbanBoard.tsx +9 -9
  191. package/src/renderer/components/team/kanban/KanbanFilterPopover.tsx +4 -4
  192. package/src/renderer/components/team/kanban/KanbanSearchInput.tsx +1 -1
  193. package/src/renderer/components/team/kanban/KanbanSortPopover.tsx +5 -5
  194. package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +4 -4
  195. package/src/renderer/components/team/members/MemberCard.tsx +14 -47
  196. package/src/renderer/components/team/members/MemberDetailDialog.tsx +3 -95
  197. package/src/renderer/components/team/members/MemberDetailStats.tsx +50 -65
  198. package/src/renderer/components/team/members/MemberDraftRow.tsx +1 -1
  199. package/src/renderer/components/team/members/MemberStatsTab.tsx +2 -2
  200. package/src/renderer/components/team/members/MemberWorkspaceTab.tsx +1 -1
  201. package/src/renderer/components/team/messages/MessageComposer.tsx +10 -112
  202. package/src/renderer/components/team/messages/MessagesFilterPopover.tsx +1 -1
  203. package/src/renderer/components/team/messages/MessagesPanel.tsx +136 -119
  204. package/src/renderer/components/team/review/ChangeReviewDialog.tsx +1 -1
  205. package/src/renderer/components/team/schedule/ScheduleStatusBadge.tsx +3 -3
  206. package/src/renderer/components/team/sidebar/TeamSidebarRail.tsx +4 -4
  207. package/src/renderer/components/team/tasks/TaskRow.tsx +1 -1
  208. package/src/renderer/components/team/tools/AddMcpInline.tsx +27 -17
  209. package/src/renderer/components/team/tools/McpChip.tsx +6 -3
  210. package/src/renderer/components/team/tools/SkillChip.tsx +3 -3
  211. package/src/renderer/components/team/tools/ToolsSection.tsx +418 -70
  212. package/src/renderer/components/ui/MemberSelect.tsx +2 -2
  213. package/src/renderer/components/ui/MentionSuggestionList.tsx +2 -2
  214. package/src/renderer/components/ui/MentionableTextarea.tsx +3 -3
  215. package/src/renderer/hooks/useExtensionsTabState.ts +3 -114
  216. package/src/renderer/index.css +56 -39
  217. package/src/renderer/index.html +17 -50
  218. package/src/renderer/store/index.ts +2 -1
  219. package/src/renderer/store/slices/scheduleSlice.ts +1 -1
  220. package/src/renderer/store/slices/teamSlice.ts +45 -168
  221. package/src/renderer/utils/claudeCodeOnlyProviders.ts +3 -10
  222. package/src/renderer/utils/memberHelpers.ts +5 -17
  223. package/src/renderer/utils/openCodeRuntimeDeliveryDiagnostics.ts +4 -2
  224. package/src/renderer/utils/providerSlashCommands.ts +0 -5
  225. package/src/renderer/utils/scheduleFormatters.ts +3 -1
  226. package/src/renderer/utils/teamMessageFiltering.ts +14 -1
  227. package/src/renderer/utils/teamModelAvailability.ts +18 -2
  228. package/src/shared/types/api.ts +121 -2
  229. package/src/shared/types/ccConnect.ts +2 -0
  230. package/src/shared/types/index.ts +3 -0
  231. package/src/shared/types/systemManager.ts +49 -0
  232. package/src/shared/types/team.ts +29 -0
  233. package/src/shared/types/terminal.ts +4 -2
  234. package/src/shared/utils/extensionNormalizers.ts +15 -8
  235. package/src/shared/utils/providerExtensionCapabilities.ts +2 -2
  236. package/dist-renderer/assets/ProjectEditorOverlay-lJZi-9Hp.js +0 -52
  237. package/dist-renderer/assets/channel-yIlSKy0e.js +0 -1
  238. package/dist-renderer/assets/classDiagram-2ON5EDUG-24fHez0s.js +0 -1
  239. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-24fHez0s.js +0 -1
  240. package/dist-renderer/assets/clone-BTNuUva-.js +0 -1
  241. package/dist-renderer/assets/index-Bi6nrZ4z.css +0 -1
  242. package/dist-renderer/assets/splashScene-C8lWNnm4.js +0 -1
  243. package/dist-renderer/assets/stateDiagram-v2-4FDKWEC3-_m6iPPUR.js +0 -1
@@ -14,9 +14,11 @@ function resolveAnthropicFastMode(_opts: {
14
14
  providerFastModeDefault: boolean;
15
15
  }) {
16
16
  return {
17
- showFastModeControl: false,
18
- resolvedFastMode: false,
19
- selectable: false,
17
+ showFastModeControl: true,
18
+ resolvedFastMode:
19
+ _opts.selectedFastMode === 'on' ||
20
+ (_opts.selectedFastMode === 'inherit' && _opts.providerFastModeDefault),
21
+ selectable: true,
20
22
  disabledReason: null,
21
23
  };
22
24
  }
@@ -179,7 +181,7 @@ function alignProvisioningChecks(
179
181
  );
180
182
  }
181
183
 
182
- const WORKSPACE_SCOPED_TEAM_MODE = true;
184
+ const WORKSPACE_SCOPED_TEAM_MODE = false;
183
185
 
184
186
  // =============================================================================
185
187
  // Props — discriminated union
@@ -1841,7 +1843,7 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
1841
1843
  openTeamTab(effectiveTeamName, relaunchProjectPath || defaultProjectPath);
1842
1844
  closeDialog();
1843
1845
  } catch (err) {
1844
- const message = err instanceof Error ? err.message : '重新启动团队失败';
1846
+ const message = err instanceof Error ? err.message : '重新启动数字员工失败';
1845
1847
  setLocalError(message);
1846
1848
  console.error('Failed to relaunch team from dialog:', err);
1847
1849
  } finally {
@@ -1997,8 +1999,8 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
1997
1999
  : isSchedule
1998
2000
  ? '保存计划失败'
1999
2001
  : isRelaunch
2000
- ? '重新启动团队失败'
2001
- : '启动团队失败';
2002
+ ? '重新启动数字员工失败'
2003
+ : '启动数字员工失败';
2002
2004
  setLocalError(message);
2003
2005
  if (isLaunchMode) {
2004
2006
  console.error(
@@ -2036,8 +2038,8 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2036
2038
 
2037
2039
  const dialogTitle = isLaunchMode
2038
2040
  ? isRelaunch
2039
- ? '重新启动团队'
2040
- : '启动团队'
2041
+ ? '重新启动数字员工'
2042
+ : '启动数字员工'
2041
2043
  : isEditing
2042
2044
  ? '编辑计划'
2043
2045
  : '创建计划';
@@ -2050,7 +2052,7 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2050
2052
  </>
2051
2053
  ) : (
2052
2054
  <>
2053
- 通过 Agent CLI 启动团队 <span className="font-mono font-medium">{effectiveTeamName}</span>。
2055
+ 通过 Agent CLI 启动数字员工 <span className="font-mono font-medium">{effectiveTeamName}</span>。
2054
2056
  </>
2055
2057
  )
2056
2058
  ) : isEditing ? (
@@ -2063,8 +2065,8 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2063
2065
 
2064
2066
  const submitLabel = isLaunchMode
2065
2067
  ? isRelaunch
2066
- ? '重新启动团队'
2067
- : '启动团队'
2068
+ ? '重新启动数字员工'
2069
+ : '启动数字员工'
2068
2070
  : isEditing
2069
2071
  ? '保存更改'
2070
2072
  : '创建计划';
@@ -2115,9 +2117,9 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2115
2117
  <div className="flex items-start gap-2">
2116
2118
  <AlertTriangle className="mt-0.5 size-4 shrink-0" />
2117
2119
  <div className="min-w-0 flex-1 space-y-1">
2118
- <p className="font-medium">重新启动会重置当前团队运行实例</p>
2120
+ <p className="font-medium">重新启动会重置当前数字员工运行实例</p>
2119
2121
  <p className="opacity-80">
2120
- 系统会停止当前团队进程,并使用以下运行时配置重新启动。
2122
+ 系统会停止当前数字员工进程,并使用以下运行时配置重新启动。
2121
2123
  如需修改成员或工作流,请先在团队编辑面板中修改。
2122
2124
  默认使用全新会话,避免恢复大上下文时触发 API 频率限制。
2123
2125
  </p>
@@ -2417,7 +2419,7 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2417
2419
  title={isRelaunch ? '重新启动设置' : '可选启动设置'}
2418
2420
  description={
2419
2421
  isRelaunch
2420
- ? '重新启动团队前,请确认成员名单和团队负责人运行时。'
2422
+ ? '重新启动数字员工前,请确认成员名单和负责人运行时。'
2421
2423
  : '默认只需关注项目路径;需要更多控制时再展开这里。'
2422
2424
  }
2423
2425
  summary={launchOptionalSummary}
@@ -2817,7 +2819,7 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
2817
2819
  ) ? (
2818
2820
  <button
2819
2821
  type="button"
2820
- className="shrink-0 rounded bg-blue-600 px-2 py-0.5 text-[11px] font-medium text-white transition-colors hover:bg-blue-500"
2822
+ className="shrink-0 rounded bg-indigo-600 px-2 py-0.5 text-[11px] font-medium text-white transition-colors hover:bg-indigo-500"
2821
2823
  onClick={() => {
2822
2824
  closeDialog();
2823
2825
  openDashboard();
@@ -0,0 +1,221 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ import { Button } from '@renderer/components/ui/button';
4
+ import {
5
+ Dialog,
6
+ DialogContent,
7
+ DialogDescription,
8
+ DialogHeader,
9
+ DialogTitle,
10
+ } from '@renderer/components/ui/dialog';
11
+ import { Settings2, Smartphone } from 'lucide-react';
12
+
13
+ import { isQRPlatform, platformMeta } from './platformMeta';
14
+ import PlatformManualForm from './PlatformManualForm';
15
+ import PlatformSetupQR from './PlatformSetupQR';
16
+
17
+ interface PlatformOption {
18
+ key: string;
19
+ label: string;
20
+ color: string;
21
+ icon: 'qr' | 'settings';
22
+ }
23
+
24
+ const PLATFORM_OPTIONS: PlatformOption[] = [
25
+ {
26
+ key: 'feishu',
27
+ label: '飞书 / Lark',
28
+ color: 'bg-blue-50 dark:bg-blue-900/30 text-indigo-600 dark:text-indigo-400',
29
+ icon: 'qr',
30
+ },
31
+ {
32
+ key: 'weixin',
33
+ label: '微信',
34
+ color: 'bg-green-50 dark:bg-green-900/30 text-green-600 dark:text-green-400',
35
+ icon: 'qr',
36
+ },
37
+ {
38
+ key: 'telegram',
39
+ label: 'Telegram',
40
+ color: 'bg-sky-50 dark:bg-sky-900/30 text-sky-600 dark:text-sky-400',
41
+ icon: 'settings',
42
+ },
43
+ {
44
+ key: 'discord',
45
+ label: 'Discord',
46
+ color: 'bg-indigo-50 dark:bg-indigo-900/30 text-indigo-600 dark:text-indigo-400',
47
+ icon: 'settings',
48
+ },
49
+ {
50
+ key: 'slack',
51
+ label: 'Slack',
52
+ color: 'bg-purple-50 dark:bg-purple-900/30 text-purple-600 dark:text-purple-400',
53
+ icon: 'settings',
54
+ },
55
+ {
56
+ key: 'dingtalk',
57
+ label: '钉钉',
58
+ color: 'bg-orange-50 dark:bg-orange-900/30 text-orange-600 dark:text-orange-400',
59
+ icon: 'settings',
60
+ },
61
+ {
62
+ key: 'wecom',
63
+ label: '企业微信',
64
+ color: 'bg-emerald-50 dark:bg-emerald-900/30 text-emerald-600 dark:text-emerald-400',
65
+ icon: 'settings',
66
+ },
67
+ {
68
+ key: 'qq',
69
+ label: 'QQ (OneBot)',
70
+ color: 'bg-cyan-50 dark:bg-cyan-900/30 text-cyan-600 dark:text-cyan-400',
71
+ icon: 'settings',
72
+ },
73
+ {
74
+ key: 'qqbot',
75
+ label: 'QQ Bot (官方)',
76
+ color: 'bg-cyan-50 dark:bg-cyan-900/30 text-cyan-600 dark:text-cyan-400',
77
+ icon: 'settings',
78
+ },
79
+ {
80
+ key: 'line',
81
+ label: 'LINE',
82
+ color: 'bg-lime-50 dark:bg-lime-900/30 text-lime-600 dark:text-lime-400',
83
+ icon: 'settings',
84
+ },
85
+ {
86
+ key: 'weibo',
87
+ label: '微博',
88
+ color: 'bg-red-50 dark:bg-red-900/30 text-red-600 dark:text-red-400',
89
+ icon: 'settings',
90
+ },
91
+ ];
92
+
93
+ type BindingStep = 'platform' | 'qr' | 'form';
94
+
95
+ interface PlatformBindingContentProps {
96
+ projectName: string;
97
+ workDir: string;
98
+ agentType: string;
99
+ onComplete: () => void;
100
+ onCancel: () => void;
101
+ }
102
+
103
+ export function PlatformBindingContent({
104
+ projectName,
105
+ workDir,
106
+ agentType,
107
+ onComplete,
108
+ onCancel,
109
+ }: PlatformBindingContentProps): React.JSX.Element {
110
+ const [step, setStep] = useState<BindingStep>('platform');
111
+ const [selectedPlatform, setSelectedPlatform] = useState('');
112
+
113
+ useEffect(() => {
114
+ setStep('platform');
115
+ setSelectedPlatform('');
116
+ }, [projectName, workDir, agentType]);
117
+
118
+ const handlePlatformSelect = (key: string): void => {
119
+ setSelectedPlatform(key);
120
+ setStep(isQRPlatform(key) ? 'qr' : 'form');
121
+ };
122
+
123
+ if (
124
+ step === 'qr' &&
125
+ (selectedPlatform === 'feishu' || selectedPlatform === 'lark' || selectedPlatform === 'weixin')
126
+ ) {
127
+ return (
128
+ <PlatformSetupQR
129
+ platformType={selectedPlatform as 'feishu' | 'lark' | 'weixin'}
130
+ projectName={projectName}
131
+ workDir={workDir}
132
+ agentType={agentType}
133
+ onComplete={onComplete}
134
+ onCancel={() => setStep('platform')}
135
+ />
136
+ );
137
+ }
138
+
139
+ if (step === 'form' && platformMeta[selectedPlatform]) {
140
+ return (
141
+ <PlatformManualForm
142
+ platformType={selectedPlatform}
143
+ platformMeta={platformMeta[selectedPlatform]}
144
+ projectName={projectName}
145
+ workDir={workDir}
146
+ agentType={agentType}
147
+ onComplete={onComplete}
148
+ onCancel={() => setStep('platform')}
149
+ />
150
+ );
151
+ }
152
+
153
+ return (
154
+ <div className="space-y-3 py-2">
155
+ <div className="rounded-md border border-[var(--color-border)] bg-[var(--color-surface)] px-3 py-2 text-xs text-[var(--color-text-muted)]">
156
+ 绑定渠道是可选项,用于将数字员工暴露到飞书、微信等外部平台;不绑定也可以在本机直接运行。
157
+ <br />
158
+ <span className="text-amber-500">⚠️ 绑定新渠道后需要重启服务,将短暂中断所有正在运行的会话。</span>
159
+ </div>
160
+ <div className="grid max-h-80 grid-cols-2 gap-2 overflow-y-auto">
161
+ {PLATFORM_OPTIONS.map(({ key, label, color, icon }) => (
162
+ <button
163
+ key={key}
164
+ type="button"
165
+ onClick={() => handlePlatformSelect(key)}
166
+ className="flex items-center gap-2.5 rounded-xl border border-[var(--color-border)] bg-[var(--color-surface-raised)] p-3 text-left transition-all hover:border-[var(--color-border-emphasis)] hover:bg-[var(--color-accent)]/5"
167
+ >
168
+ <div className={`h-9 w-9 rounded-lg ${color} flex shrink-0 items-center justify-center`}>
169
+ {icon === 'qr' ? <Smartphone size={16} /> : <Settings2 size={16} />}
170
+ </div>
171
+ <div className="min-w-0">
172
+ <div className="truncate text-sm font-medium text-[var(--color-text)]">{label}</div>
173
+ <div className="text-[11px] text-[var(--color-text-muted)]">{icon === 'qr' ? '扫码绑定' : '手动配置'}</div>
174
+ </div>
175
+ </button>
176
+ ))}
177
+ </div>
178
+ <div className="flex justify-start pt-2">
179
+ <Button variant="outline" size="sm" onClick={onCancel}>
180
+ 取消
181
+ </Button>
182
+ </div>
183
+ </div>
184
+ );
185
+ }
186
+
187
+ interface PlatformBindingDialogProps extends PlatformBindingContentProps {
188
+ open: boolean;
189
+ onOpenChange: (open: boolean) => void;
190
+ }
191
+
192
+ export function PlatformBindingDialog({
193
+ open,
194
+ onOpenChange,
195
+ projectName,
196
+ workDir,
197
+ agentType,
198
+ onComplete,
199
+ onCancel,
200
+ }: PlatformBindingDialogProps): React.JSX.Element {
201
+ return (
202
+ <Dialog open={open} onOpenChange={onOpenChange}>
203
+ <DialogContent className="w-[calc(100vw-2rem)] max-w-2xl sm:w-[40rem]">
204
+ <DialogHeader>
205
+ <DialogTitle className="text-sm">绑定渠道</DialogTitle>
206
+ <DialogDescription className="text-xs">
207
+ 可选:为当前数字员工选择外部平台渠道,绑定后通过 Hermit 对外接收消息。
208
+ </DialogDescription>
209
+ </DialogHeader>
210
+ <PlatformBindingContent
211
+ key={`${projectName}:${workDir}:${agentType}:${open ? 'open' : 'closed'}`}
212
+ projectName={projectName}
213
+ workDir={workDir}
214
+ agentType={agentType}
215
+ onComplete={onComplete}
216
+ onCancel={onCancel}
217
+ />
218
+ </DialogContent>
219
+ </Dialog>
220
+ );
221
+ }
@@ -29,6 +29,7 @@ export default function PlatformManualForm({
29
29
  const [values, setValues] = useState<Record<string, unknown>>({});
30
30
  const [showAdvanced, setShowAdvanced] = useState(false);
31
31
  const [saving, setSaving] = useState(false);
32
+ const [restarting, setRestarting] = useState(false);
32
33
  const [error, setError] = useState('');
33
34
 
34
35
  const basicFields = meta.fields.filter((f) => f.group !== 'advanced');
@@ -57,11 +58,17 @@ export default function PlatformManualForm({
57
58
  work_dir: workDir,
58
59
  agent_type: agentType,
59
60
  });
61
+ // Restart CC Connect to activate the new platform binding
62
+ setRestarting(true);
63
+ try {
64
+ await api.ccSettings.restart();
65
+ } catch { /* best effort */ }
60
66
  onComplete();
61
67
  } catch (e: unknown) {
62
68
  setError(e instanceof Error ? e.message : String(e));
63
69
  } finally {
64
70
  setSaving(false);
71
+ setRestarting(false);
65
72
  }
66
73
  };
67
74
 
@@ -141,7 +148,7 @@ function FieldInput({
141
148
  type="checkbox"
142
149
  checked={!!value}
143
150
  onChange={(e) => onChange(e.target.checked)}
144
- className="h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500 dark:border-gray-600"
151
+ className="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500 dark:border-gray-600"
145
152
  />
146
153
  <span className="text-sm text-gray-700 dark:text-gray-300">{field.label}</span>
147
154
  {field.hint && <span className="text-[11px] text-gray-400">({field.hint})</span>}
@@ -146,7 +146,7 @@ export default function PlatformSetupQR({
146
146
  try {
147
147
  const res = await api.ccSetup.weixinBegin();
148
148
  if (!res.qr_url) {
149
- setError('微信未返回二维码 URL,请检查 cc-connect 配置');
149
+ setError('微信未返回二维码 URL,请检查服务配置');
150
150
  setPhase('error');
151
151
  return;
152
152
  }
@@ -224,7 +224,7 @@ export default function PlatformSetupQR({
224
224
 
225
225
  {phase === 'loading' && (
226
226
  <div className="flex flex-col items-center gap-3 py-8">
227
- <Loader2 size={32} className="animate-spin text-blue-500" />
227
+ <Loader2 size={32} className="animate-spin text-indigo-500" />
228
228
  <p className="text-sm text-gray-500">正在生成二维码...</p>
229
229
  </div>
230
230
  )}
@@ -247,12 +247,12 @@ export default function PlatformSetupQR({
247
247
  </div>
248
248
  )}
249
249
  {phase === 'scanned' && (
250
- <div className="flex items-center gap-2 text-xs text-blue-500">
250
+ <div className="flex items-center gap-2 text-xs text-indigo-500">
251
251
  <Loader2 size={12} className="animate-spin" /> 等待确认...
252
252
  </div>
253
253
  )}
254
254
  {phase === 'saving' && (
255
- <div className="flex items-center gap-2 text-xs text-blue-500">
255
+ <div className="flex items-center gap-2 text-xs text-indigo-500">
256
256
  <Loader2 size={12} className="animate-spin" /> 正在保存配置...
257
257
  </div>
258
258
  )}
@@ -286,7 +286,7 @@ export default function PlatformSetupQR({
286
286
 
287
287
  {phase === 'restarting' && (
288
288
  <div className="flex flex-col items-center gap-3 py-4">
289
- <Loader2 size={32} className="animate-spin text-blue-500" />
289
+ <Loader2 size={32} className="animate-spin text-indigo-500" />
290
290
  <p className="text-sm text-gray-600 dark:text-gray-400">正在重启服务...</p>
291
291
  </div>
292
292
  )}