cc-viewer 1.7.22 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -0
- package/cli.js +92 -11
- package/concepts/ar/GlobalSettings.md +2 -2
- package/concepts/ar/Tool-Artifact.md +7 -0
- package/concepts/ar/Tool-EndConversation.md +35 -0
- package/concepts/ar/Tool-LSP.md +6 -1
- package/concepts/ar/Tool-ListAgents.md +35 -0
- package/concepts/ar/Tool-ListConnectors.md +34 -0
- package/concepts/ar/Tool-ListMcpResources.md +35 -0
- package/concepts/ar/Tool-ListPlugins.md +35 -0
- package/concepts/ar/Tool-ListSkills.md +37 -0
- package/concepts/ar/Tool-Monitor.md +7 -0
- package/concepts/ar/Tool-Projects.md +46 -0
- package/concepts/ar/Tool-ProposeGoal.md +43 -0
- package/concepts/ar/Tool-PushNotification.md +6 -0
- package/concepts/ar/Tool-REPL.md +47 -0
- package/concepts/ar/Tool-ReadMcpResource.md +32 -0
- package/concepts/ar/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/ar/Tool-ReadNotifications.md +27 -0
- package/concepts/ar/Tool-RemoteTrigger.md +7 -0
- package/concepts/ar/Tool-ScheduleWakeup.md +5 -0
- package/concepts/ar/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/ar/Tool-SendFeedback.md +38 -0
- package/concepts/ar/Tool-SendFile.md +36 -0
- package/concepts/ar/Tool-SendMessage.md +5 -0
- package/concepts/ar/Tool-SendUserFile.md +38 -0
- package/concepts/ar/Tool-SendUserMessage.md +38 -0
- package/concepts/ar/Tool-SuggestConnectors.md +28 -0
- package/concepts/ar/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/ar/Tool-SuggestSkills.md +33 -0
- package/concepts/ar/Tool-TaskCreate.md +6 -0
- package/concepts/ar/Tool-TaskGet.md +6 -0
- package/concepts/ar/Tool-TaskList.md +6 -0
- package/concepts/ar/Tool-TaskUpdate.md +6 -0
- package/concepts/ar/Tool-TodoWrite.md +43 -0
- package/concepts/ar/Tool-ToolSearch.md +5 -0
- package/concepts/ar/Tool-WebSearch.md +6 -0
- package/concepts/ar/Tools.md +26 -4
- package/concepts/da/GlobalSettings.md +2 -2
- package/concepts/da/Tool-Artifact.md +8 -1
- package/concepts/da/Tool-EndConversation.md +35 -0
- package/concepts/da/Tool-LSP.md +6 -1
- package/concepts/da/Tool-ListAgents.md +35 -0
- package/concepts/da/Tool-ListConnectors.md +34 -0
- package/concepts/da/Tool-ListMcpResources.md +35 -0
- package/concepts/da/Tool-ListPlugins.md +35 -0
- package/concepts/da/Tool-ListSkills.md +37 -0
- package/concepts/da/Tool-Monitor.md +7 -0
- package/concepts/da/Tool-Projects.md +46 -0
- package/concepts/da/Tool-ProposeGoal.md +43 -0
- package/concepts/da/Tool-PushNotification.md +6 -0
- package/concepts/da/Tool-REPL.md +47 -0
- package/concepts/da/Tool-ReadMcpResource.md +32 -0
- package/concepts/da/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/da/Tool-ReadNotifications.md +27 -0
- package/concepts/da/Tool-RemoteTrigger.md +7 -0
- package/concepts/da/Tool-ScheduleWakeup.md +5 -0
- package/concepts/da/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/da/Tool-SendFeedback.md +38 -0
- package/concepts/da/Tool-SendFile.md +36 -0
- package/concepts/da/Tool-SendMessage.md +5 -0
- package/concepts/da/Tool-SendUserFile.md +38 -0
- package/concepts/da/Tool-SendUserMessage.md +38 -0
- package/concepts/da/Tool-SuggestConnectors.md +28 -0
- package/concepts/da/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/da/Tool-SuggestSkills.md +33 -0
- package/concepts/da/Tool-TaskCreate.md +6 -0
- package/concepts/da/Tool-TaskGet.md +6 -0
- package/concepts/da/Tool-TaskList.md +6 -0
- package/concepts/da/Tool-TaskUpdate.md +6 -0
- package/concepts/da/Tool-TodoWrite.md +43 -0
- package/concepts/da/Tool-ToolSearch.md +5 -0
- package/concepts/da/Tool-WebSearch.md +6 -0
- package/concepts/da/Tools.md +26 -4
- package/concepts/de/GlobalSettings.md +2 -2
- package/concepts/de/Tool-Artifact.md +7 -0
- package/concepts/de/Tool-EndConversation.md +35 -0
- package/concepts/de/Tool-LSP.md +6 -1
- package/concepts/de/Tool-ListAgents.md +35 -0
- package/concepts/de/Tool-ListConnectors.md +34 -0
- package/concepts/de/Tool-ListMcpResources.md +35 -0
- package/concepts/de/Tool-ListPlugins.md +35 -0
- package/concepts/de/Tool-ListSkills.md +37 -0
- package/concepts/de/Tool-Monitor.md +7 -0
- package/concepts/de/Tool-Projects.md +46 -0
- package/concepts/de/Tool-ProposeGoal.md +43 -0
- package/concepts/de/Tool-PushNotification.md +6 -0
- package/concepts/de/Tool-REPL.md +47 -0
- package/concepts/de/Tool-ReadMcpResource.md +32 -0
- package/concepts/de/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/de/Tool-ReadNotifications.md +27 -0
- package/concepts/de/Tool-RemoteTrigger.md +7 -0
- package/concepts/de/Tool-ScheduleWakeup.md +5 -0
- package/concepts/de/Tool-SearchMcpRegistry.md +30 -0
- package/concepts/de/Tool-SendFeedback.md +38 -0
- package/concepts/de/Tool-SendFile.md +36 -0
- package/concepts/de/Tool-SendMessage.md +5 -0
- package/concepts/de/Tool-SendUserFile.md +38 -0
- package/concepts/de/Tool-SendUserMessage.md +38 -0
- package/concepts/de/Tool-SuggestConnectors.md +28 -0
- package/concepts/de/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/de/Tool-SuggestSkills.md +33 -0
- package/concepts/de/Tool-TaskCreate.md +6 -0
- package/concepts/de/Tool-TaskGet.md +6 -0
- package/concepts/de/Tool-TaskList.md +6 -0
- package/concepts/de/Tool-TaskUpdate.md +6 -0
- package/concepts/de/Tool-TodoWrite.md +43 -0
- package/concepts/de/Tool-ToolSearch.md +5 -0
- package/concepts/de/Tool-WebSearch.md +6 -0
- package/concepts/de/Tools.md +26 -4
- package/concepts/en/GlobalSettings.md +2 -2
- package/concepts/en/Tool-Artifact.md +7 -0
- package/concepts/en/Tool-EndConversation.md +35 -0
- package/concepts/en/Tool-LSP.md +5 -0
- package/concepts/en/Tool-ListAgents.md +35 -0
- package/concepts/en/Tool-ListConnectors.md +34 -0
- package/concepts/en/Tool-ListMcpResources.md +35 -0
- package/concepts/en/Tool-ListPlugins.md +35 -0
- package/concepts/en/Tool-ListSkills.md +37 -0
- package/concepts/en/Tool-Monitor.md +7 -0
- package/concepts/en/Tool-Projects.md +46 -0
- package/concepts/en/Tool-ProposeGoal.md +43 -0
- package/concepts/en/Tool-PushNotification.md +6 -0
- package/concepts/en/Tool-REPL.md +47 -0
- package/concepts/en/Tool-ReadMcpResource.md +32 -0
- package/concepts/en/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/en/Tool-ReadNotifications.md +27 -0
- package/concepts/en/Tool-RemoteTrigger.md +7 -0
- package/concepts/en/Tool-ScheduleWakeup.md +5 -0
- package/concepts/en/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/en/Tool-SendFeedback.md +38 -0
- package/concepts/en/Tool-SendFile.md +36 -0
- package/concepts/en/Tool-SendMessage.md +5 -0
- package/concepts/en/Tool-SendUserFile.md +38 -0
- package/concepts/en/Tool-SendUserMessage.md +38 -0
- package/concepts/en/Tool-SuggestConnectors.md +28 -0
- package/concepts/en/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/en/Tool-SuggestSkills.md +33 -0
- package/concepts/en/Tool-TaskCreate.md +6 -0
- package/concepts/en/Tool-TaskGet.md +6 -0
- package/concepts/en/Tool-TaskList.md +6 -0
- package/concepts/en/Tool-TaskUpdate.md +6 -0
- package/concepts/en/Tool-TodoWrite.md +43 -0
- package/concepts/en/Tool-ToolSearch.md +5 -0
- package/concepts/en/Tool-WebSearch.md +6 -0
- package/concepts/en/Tools.md +26 -4
- package/concepts/es/GlobalSettings.md +2 -2
- package/concepts/es/Tool-Artifact.md +7 -0
- package/concepts/es/Tool-EndConversation.md +35 -0
- package/concepts/es/Tool-LSP.md +5 -0
- package/concepts/es/Tool-ListAgents.md +35 -0
- package/concepts/es/Tool-ListConnectors.md +34 -0
- package/concepts/es/Tool-ListMcpResources.md +35 -0
- package/concepts/es/Tool-ListPlugins.md +35 -0
- package/concepts/es/Tool-ListSkills.md +37 -0
- package/concepts/es/Tool-Monitor.md +7 -0
- package/concepts/es/Tool-Projects.md +46 -0
- package/concepts/es/Tool-ProposeGoal.md +43 -0
- package/concepts/es/Tool-PushNotification.md +6 -0
- package/concepts/es/Tool-REPL.md +47 -0
- package/concepts/es/Tool-ReadMcpResource.md +32 -0
- package/concepts/es/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/es/Tool-ReadNotifications.md +27 -0
- package/concepts/es/Tool-RemoteTrigger.md +7 -0
- package/concepts/es/Tool-ScheduleWakeup.md +5 -0
- package/concepts/es/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/es/Tool-SendFeedback.md +38 -0
- package/concepts/es/Tool-SendFile.md +36 -0
- package/concepts/es/Tool-SendMessage.md +5 -0
- package/concepts/es/Tool-SendUserFile.md +38 -0
- package/concepts/es/Tool-SendUserMessage.md +38 -0
- package/concepts/es/Tool-SuggestConnectors.md +28 -0
- package/concepts/es/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/es/Tool-SuggestSkills.md +33 -0
- package/concepts/es/Tool-TaskCreate.md +6 -0
- package/concepts/es/Tool-TaskGet.md +6 -0
- package/concepts/es/Tool-TaskList.md +6 -0
- package/concepts/es/Tool-TaskUpdate.md +6 -0
- package/concepts/es/Tool-TodoWrite.md +43 -0
- package/concepts/es/Tool-ToolSearch.md +5 -0
- package/concepts/es/Tool-WebSearch.md +6 -0
- package/concepts/es/Tools.md +26 -4
- package/concepts/fr/GlobalSettings.md +2 -2
- package/concepts/fr/Tool-Artifact.md +7 -0
- package/concepts/fr/Tool-EndConversation.md +35 -0
- package/concepts/fr/Tool-LSP.md +5 -0
- package/concepts/fr/Tool-ListAgents.md +35 -0
- package/concepts/fr/Tool-ListConnectors.md +34 -0
- package/concepts/fr/Tool-ListMcpResources.md +35 -0
- package/concepts/fr/Tool-ListPlugins.md +35 -0
- package/concepts/fr/Tool-ListSkills.md +37 -0
- package/concepts/fr/Tool-Monitor.md +7 -0
- package/concepts/fr/Tool-Projects.md +46 -0
- package/concepts/fr/Tool-ProposeGoal.md +43 -0
- package/concepts/fr/Tool-PushNotification.md +6 -0
- package/concepts/fr/Tool-REPL.md +47 -0
- package/concepts/fr/Tool-ReadMcpResource.md +32 -0
- package/concepts/fr/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/fr/Tool-ReadNotifications.md +27 -0
- package/concepts/fr/Tool-RemoteTrigger.md +7 -0
- package/concepts/fr/Tool-ScheduleWakeup.md +5 -0
- package/concepts/fr/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/fr/Tool-SendFeedback.md +38 -0
- package/concepts/fr/Tool-SendFile.md +36 -0
- package/concepts/fr/Tool-SendMessage.md +5 -0
- package/concepts/fr/Tool-SendUserFile.md +38 -0
- package/concepts/fr/Tool-SendUserMessage.md +38 -0
- package/concepts/fr/Tool-SuggestConnectors.md +28 -0
- package/concepts/fr/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/fr/Tool-SuggestSkills.md +33 -0
- package/concepts/fr/Tool-TaskCreate.md +6 -0
- package/concepts/fr/Tool-TaskGet.md +6 -0
- package/concepts/fr/Tool-TaskList.md +6 -0
- package/concepts/fr/Tool-TaskUpdate.md +6 -0
- package/concepts/fr/Tool-TodoWrite.md +43 -0
- package/concepts/fr/Tool-ToolSearch.md +5 -0
- package/concepts/fr/Tool-WebSearch.md +6 -0
- package/concepts/fr/Tools.md +26 -4
- package/concepts/it/GlobalSettings.md +2 -2
- package/concepts/it/Tool-Artifact.md +7 -0
- package/concepts/it/Tool-EndConversation.md +35 -0
- package/concepts/it/Tool-LSP.md +5 -0
- package/concepts/it/Tool-ListAgents.md +35 -0
- package/concepts/it/Tool-ListConnectors.md +34 -0
- package/concepts/it/Tool-ListMcpResources.md +35 -0
- package/concepts/it/Tool-ListPlugins.md +35 -0
- package/concepts/it/Tool-ListSkills.md +37 -0
- package/concepts/it/Tool-Monitor.md +7 -0
- package/concepts/it/Tool-Projects.md +46 -0
- package/concepts/it/Tool-ProposeGoal.md +43 -0
- package/concepts/it/Tool-PushNotification.md +6 -0
- package/concepts/it/Tool-REPL.md +47 -0
- package/concepts/it/Tool-ReadMcpResource.md +32 -0
- package/concepts/it/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/it/Tool-ReadNotifications.md +27 -0
- package/concepts/it/Tool-RemoteTrigger.md +7 -0
- package/concepts/it/Tool-ScheduleWakeup.md +5 -0
- package/concepts/it/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/it/Tool-SendFeedback.md +38 -0
- package/concepts/it/Tool-SendFile.md +36 -0
- package/concepts/it/Tool-SendMessage.md +5 -0
- package/concepts/it/Tool-SendUserFile.md +38 -0
- package/concepts/it/Tool-SendUserMessage.md +38 -0
- package/concepts/it/Tool-SuggestConnectors.md +28 -0
- package/concepts/it/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/it/Tool-SuggestSkills.md +33 -0
- package/concepts/it/Tool-TaskCreate.md +6 -0
- package/concepts/it/Tool-TaskGet.md +6 -0
- package/concepts/it/Tool-TaskList.md +6 -0
- package/concepts/it/Tool-TaskUpdate.md +6 -0
- package/concepts/it/Tool-TodoWrite.md +43 -0
- package/concepts/it/Tool-ToolSearch.md +5 -0
- package/concepts/it/Tool-WebSearch.md +6 -0
- package/concepts/it/Tools.md +26 -4
- package/concepts/ja/GlobalSettings.md +2 -2
- package/concepts/ja/Tool-Artifact.md +7 -0
- package/concepts/ja/Tool-EndConversation.md +35 -0
- package/concepts/ja/Tool-LSP.md +5 -0
- package/concepts/ja/Tool-ListAgents.md +35 -0
- package/concepts/ja/Tool-ListConnectors.md +34 -0
- package/concepts/ja/Tool-ListMcpResources.md +35 -0
- package/concepts/ja/Tool-ListPlugins.md +35 -0
- package/concepts/ja/Tool-ListSkills.md +37 -0
- package/concepts/ja/Tool-Monitor.md +7 -0
- package/concepts/ja/Tool-Projects.md +46 -0
- package/concepts/ja/Tool-ProposeGoal.md +43 -0
- package/concepts/ja/Tool-PushNotification.md +6 -0
- package/concepts/ja/Tool-REPL.md +47 -0
- package/concepts/ja/Tool-ReadMcpResource.md +32 -0
- package/concepts/ja/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/ja/Tool-ReadNotifications.md +27 -0
- package/concepts/ja/Tool-RemoteTrigger.md +7 -0
- package/concepts/ja/Tool-ScheduleWakeup.md +5 -0
- package/concepts/ja/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/ja/Tool-SendFeedback.md +38 -0
- package/concepts/ja/Tool-SendFile.md +36 -0
- package/concepts/ja/Tool-SendMessage.md +5 -0
- package/concepts/ja/Tool-SendUserFile.md +38 -0
- package/concepts/ja/Tool-SendUserMessage.md +38 -0
- package/concepts/ja/Tool-SuggestConnectors.md +28 -0
- package/concepts/ja/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/ja/Tool-SuggestSkills.md +33 -0
- package/concepts/ja/Tool-TaskCreate.md +6 -0
- package/concepts/ja/Tool-TaskGet.md +6 -0
- package/concepts/ja/Tool-TaskList.md +6 -0
- package/concepts/ja/Tool-TaskUpdate.md +6 -0
- package/concepts/ja/Tool-TodoWrite.md +43 -0
- package/concepts/ja/Tool-ToolSearch.md +5 -0
- package/concepts/ja/Tool-WebSearch.md +6 -0
- package/concepts/ja/Tools.md +26 -4
- package/concepts/ko/GlobalSettings.md +2 -2
- package/concepts/ko/Tool-Artifact.md +7 -0
- package/concepts/ko/Tool-EndConversation.md +35 -0
- package/concepts/ko/Tool-LSP.md +5 -0
- package/concepts/ko/Tool-ListAgents.md +35 -0
- package/concepts/ko/Tool-ListConnectors.md +34 -0
- package/concepts/ko/Tool-ListMcpResources.md +35 -0
- package/concepts/ko/Tool-ListPlugins.md +35 -0
- package/concepts/ko/Tool-ListSkills.md +37 -0
- package/concepts/ko/Tool-Monitor.md +7 -0
- package/concepts/ko/Tool-Projects.md +46 -0
- package/concepts/ko/Tool-ProposeGoal.md +43 -0
- package/concepts/ko/Tool-PushNotification.md +6 -0
- package/concepts/ko/Tool-REPL.md +47 -0
- package/concepts/ko/Tool-ReadMcpResource.md +32 -0
- package/concepts/ko/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/ko/Tool-ReadNotifications.md +27 -0
- package/concepts/ko/Tool-RemoteTrigger.md +7 -0
- package/concepts/ko/Tool-ScheduleWakeup.md +5 -0
- package/concepts/ko/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/ko/Tool-SendFeedback.md +38 -0
- package/concepts/ko/Tool-SendFile.md +36 -0
- package/concepts/ko/Tool-SendMessage.md +5 -0
- package/concepts/ko/Tool-SendUserFile.md +38 -0
- package/concepts/ko/Tool-SendUserMessage.md +38 -0
- package/concepts/ko/Tool-SuggestConnectors.md +28 -0
- package/concepts/ko/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/ko/Tool-SuggestSkills.md +33 -0
- package/concepts/ko/Tool-TaskCreate.md +6 -0
- package/concepts/ko/Tool-TaskGet.md +6 -0
- package/concepts/ko/Tool-TaskList.md +6 -0
- package/concepts/ko/Tool-TaskUpdate.md +6 -0
- package/concepts/ko/Tool-TodoWrite.md +43 -0
- package/concepts/ko/Tool-ToolSearch.md +5 -0
- package/concepts/ko/Tool-WebSearch.md +6 -0
- package/concepts/ko/Tools.md +26 -4
- package/concepts/no/GlobalSettings.md +2 -2
- package/concepts/no/Tool-Artifact.md +7 -0
- package/concepts/no/Tool-EndConversation.md +35 -0
- package/concepts/no/Tool-LSP.md +7 -2
- package/concepts/no/Tool-ListAgents.md +35 -0
- package/concepts/no/Tool-ListConnectors.md +34 -0
- package/concepts/no/Tool-ListMcpResources.md +35 -0
- package/concepts/no/Tool-ListPlugins.md +35 -0
- package/concepts/no/Tool-ListSkills.md +37 -0
- package/concepts/no/Tool-Monitor.md +7 -0
- package/concepts/no/Tool-Projects.md +46 -0
- package/concepts/no/Tool-ProposeGoal.md +43 -0
- package/concepts/no/Tool-PushNotification.md +6 -0
- package/concepts/no/Tool-REPL.md +47 -0
- package/concepts/no/Tool-ReadMcpResource.md +32 -0
- package/concepts/no/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/no/Tool-ReadNotifications.md +27 -0
- package/concepts/no/Tool-RemoteTrigger.md +7 -0
- package/concepts/no/Tool-ScheduleWakeup.md +5 -0
- package/concepts/no/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/no/Tool-SendFeedback.md +38 -0
- package/concepts/no/Tool-SendFile.md +36 -0
- package/concepts/no/Tool-SendMessage.md +5 -0
- package/concepts/no/Tool-SendUserFile.md +38 -0
- package/concepts/no/Tool-SendUserMessage.md +38 -0
- package/concepts/no/Tool-SuggestConnectors.md +28 -0
- package/concepts/no/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/no/Tool-SuggestSkills.md +33 -0
- package/concepts/no/Tool-TaskCreate.md +6 -0
- package/concepts/no/Tool-TaskGet.md +6 -0
- package/concepts/no/Tool-TaskList.md +6 -0
- package/concepts/no/Tool-TaskUpdate.md +6 -0
- package/concepts/no/Tool-TodoWrite.md +43 -0
- package/concepts/no/Tool-ToolSearch.md +5 -0
- package/concepts/no/Tool-WebSearch.md +6 -0
- package/concepts/no/Tools.md +26 -4
- package/concepts/pl/GlobalSettings.md +2 -2
- package/concepts/pl/Tool-Artifact.md +7 -0
- package/concepts/pl/Tool-EndConversation.md +35 -0
- package/concepts/pl/Tool-LSP.md +5 -0
- package/concepts/pl/Tool-ListAgents.md +35 -0
- package/concepts/pl/Tool-ListConnectors.md +34 -0
- package/concepts/pl/Tool-ListMcpResources.md +35 -0
- package/concepts/pl/Tool-ListPlugins.md +35 -0
- package/concepts/pl/Tool-ListSkills.md +37 -0
- package/concepts/pl/Tool-Monitor.md +7 -0
- package/concepts/pl/Tool-Projects.md +46 -0
- package/concepts/pl/Tool-ProposeGoal.md +43 -0
- package/concepts/pl/Tool-PushNotification.md +6 -0
- package/concepts/pl/Tool-REPL.md +47 -0
- package/concepts/pl/Tool-ReadMcpResource.md +32 -0
- package/concepts/pl/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/pl/Tool-ReadNotifications.md +27 -0
- package/concepts/pl/Tool-RemoteTrigger.md +7 -0
- package/concepts/pl/Tool-ScheduleWakeup.md +5 -0
- package/concepts/pl/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/pl/Tool-SendFeedback.md +38 -0
- package/concepts/pl/Tool-SendFile.md +36 -0
- package/concepts/pl/Tool-SendMessage.md +5 -0
- package/concepts/pl/Tool-SendUserFile.md +38 -0
- package/concepts/pl/Tool-SendUserMessage.md +38 -0
- package/concepts/pl/Tool-SuggestConnectors.md +28 -0
- package/concepts/pl/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/pl/Tool-SuggestSkills.md +33 -0
- package/concepts/pl/Tool-TaskCreate.md +6 -0
- package/concepts/pl/Tool-TaskGet.md +6 -0
- package/concepts/pl/Tool-TaskList.md +6 -0
- package/concepts/pl/Tool-TaskUpdate.md +6 -0
- package/concepts/pl/Tool-TodoWrite.md +43 -0
- package/concepts/pl/Tool-ToolSearch.md +5 -0
- package/concepts/pl/Tool-WebSearch.md +6 -0
- package/concepts/pl/Tools.md +26 -4
- package/concepts/pt-BR/GlobalSettings.md +2 -2
- package/concepts/pt-BR/Tool-Artifact.md +7 -0
- package/concepts/pt-BR/Tool-EndConversation.md +35 -0
- package/concepts/pt-BR/Tool-LSP.md +5 -0
- package/concepts/pt-BR/Tool-ListAgents.md +35 -0
- package/concepts/pt-BR/Tool-ListConnectors.md +34 -0
- package/concepts/pt-BR/Tool-ListMcpResources.md +35 -0
- package/concepts/pt-BR/Tool-ListPlugins.md +35 -0
- package/concepts/pt-BR/Tool-ListSkills.md +37 -0
- package/concepts/pt-BR/Tool-Monitor.md +7 -0
- package/concepts/pt-BR/Tool-Projects.md +46 -0
- package/concepts/pt-BR/Tool-ProposeGoal.md +43 -0
- package/concepts/pt-BR/Tool-PushNotification.md +6 -0
- package/concepts/pt-BR/Tool-REPL.md +47 -0
- package/concepts/pt-BR/Tool-ReadMcpResource.md +32 -0
- package/concepts/pt-BR/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/pt-BR/Tool-ReadNotifications.md +27 -0
- package/concepts/pt-BR/Tool-RemoteTrigger.md +7 -0
- package/concepts/pt-BR/Tool-ScheduleWakeup.md +5 -0
- package/concepts/pt-BR/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/pt-BR/Tool-SendFeedback.md +38 -0
- package/concepts/pt-BR/Tool-SendFile.md +36 -0
- package/concepts/pt-BR/Tool-SendMessage.md +5 -0
- package/concepts/pt-BR/Tool-SendUserFile.md +38 -0
- package/concepts/pt-BR/Tool-SendUserMessage.md +38 -0
- package/concepts/pt-BR/Tool-SuggestConnectors.md +28 -0
- package/concepts/pt-BR/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/pt-BR/Tool-SuggestSkills.md +33 -0
- package/concepts/pt-BR/Tool-TaskCreate.md +6 -0
- package/concepts/pt-BR/Tool-TaskGet.md +6 -0
- package/concepts/pt-BR/Tool-TaskList.md +6 -0
- package/concepts/pt-BR/Tool-TaskUpdate.md +6 -0
- package/concepts/pt-BR/Tool-TodoWrite.md +43 -0
- package/concepts/pt-BR/Tool-ToolSearch.md +5 -0
- package/concepts/pt-BR/Tool-WebSearch.md +6 -0
- package/concepts/pt-BR/Tools.md +26 -4
- package/concepts/ru/GlobalSettings.md +2 -2
- package/concepts/ru/Tool-Artifact.md +7 -0
- package/concepts/ru/Tool-EndConversation.md +35 -0
- package/concepts/ru/Tool-LSP.md +5 -0
- package/concepts/ru/Tool-ListAgents.md +35 -0
- package/concepts/ru/Tool-ListConnectors.md +34 -0
- package/concepts/ru/Tool-ListMcpResources.md +35 -0
- package/concepts/ru/Tool-ListPlugins.md +35 -0
- package/concepts/ru/Tool-ListSkills.md +37 -0
- package/concepts/ru/Tool-Monitor.md +7 -0
- package/concepts/ru/Tool-Projects.md +46 -0
- package/concepts/ru/Tool-ProposeGoal.md +43 -0
- package/concepts/ru/Tool-PushNotification.md +6 -0
- package/concepts/ru/Tool-REPL.md +47 -0
- package/concepts/ru/Tool-ReadMcpResource.md +32 -0
- package/concepts/ru/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/ru/Tool-ReadNotifications.md +27 -0
- package/concepts/ru/Tool-RemoteTrigger.md +7 -0
- package/concepts/ru/Tool-ScheduleWakeup.md +5 -0
- package/concepts/ru/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/ru/Tool-SendFeedback.md +38 -0
- package/concepts/ru/Tool-SendFile.md +36 -0
- package/concepts/ru/Tool-SendMessage.md +5 -0
- package/concepts/ru/Tool-SendUserFile.md +38 -0
- package/concepts/ru/Tool-SendUserMessage.md +38 -0
- package/concepts/ru/Tool-SuggestConnectors.md +28 -0
- package/concepts/ru/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/ru/Tool-SuggestSkills.md +33 -0
- package/concepts/ru/Tool-TaskCreate.md +6 -0
- package/concepts/ru/Tool-TaskGet.md +6 -0
- package/concepts/ru/Tool-TaskList.md +6 -0
- package/concepts/ru/Tool-TaskUpdate.md +6 -0
- package/concepts/ru/Tool-TodoWrite.md +43 -0
- package/concepts/ru/Tool-ToolSearch.md +5 -0
- package/concepts/ru/Tool-WebSearch.md +6 -0
- package/concepts/ru/Tools.md +26 -4
- package/concepts/th/GlobalSettings.md +2 -2
- package/concepts/th/Tool-Artifact.md +7 -0
- package/concepts/th/Tool-EndConversation.md +35 -0
- package/concepts/th/Tool-LSP.md +5 -0
- package/concepts/th/Tool-ListAgents.md +35 -0
- package/concepts/th/Tool-ListConnectors.md +34 -0
- package/concepts/th/Tool-ListMcpResources.md +35 -0
- package/concepts/th/Tool-ListPlugins.md +35 -0
- package/concepts/th/Tool-ListSkills.md +37 -0
- package/concepts/th/Tool-Monitor.md +7 -0
- package/concepts/th/Tool-Projects.md +46 -0
- package/concepts/th/Tool-ProposeGoal.md +43 -0
- package/concepts/th/Tool-PushNotification.md +6 -0
- package/concepts/th/Tool-REPL.md +47 -0
- package/concepts/th/Tool-ReadMcpResource.md +32 -0
- package/concepts/th/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/th/Tool-ReadNotifications.md +27 -0
- package/concepts/th/Tool-RemoteTrigger.md +7 -0
- package/concepts/th/Tool-ScheduleWakeup.md +5 -0
- package/concepts/th/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/th/Tool-SendFeedback.md +38 -0
- package/concepts/th/Tool-SendFile.md +36 -0
- package/concepts/th/Tool-SendMessage.md +5 -0
- package/concepts/th/Tool-SendUserFile.md +38 -0
- package/concepts/th/Tool-SendUserMessage.md +38 -0
- package/concepts/th/Tool-SuggestConnectors.md +28 -0
- package/concepts/th/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/th/Tool-SuggestSkills.md +33 -0
- package/concepts/th/Tool-TaskCreate.md +6 -0
- package/concepts/th/Tool-TaskGet.md +6 -0
- package/concepts/th/Tool-TaskList.md +6 -0
- package/concepts/th/Tool-TaskUpdate.md +6 -0
- package/concepts/th/Tool-TodoWrite.md +43 -0
- package/concepts/th/Tool-ToolSearch.md +5 -0
- package/concepts/th/Tool-WebSearch.md +13 -7
- package/concepts/th/Tools.md +26 -4
- package/concepts/tr/GlobalSettings.md +2 -2
- package/concepts/tr/Tool-Artifact.md +7 -0
- package/concepts/tr/Tool-EndConversation.md +35 -0
- package/concepts/tr/Tool-LSP.md +5 -0
- package/concepts/tr/Tool-ListAgents.md +35 -0
- package/concepts/tr/Tool-ListConnectors.md +34 -0
- package/concepts/tr/Tool-ListMcpResources.md +35 -0
- package/concepts/tr/Tool-ListPlugins.md +35 -0
- package/concepts/tr/Tool-ListSkills.md +37 -0
- package/concepts/tr/Tool-Monitor.md +7 -0
- package/concepts/tr/Tool-Projects.md +46 -0
- package/concepts/tr/Tool-ProposeGoal.md +43 -0
- package/concepts/tr/Tool-PushNotification.md +6 -0
- package/concepts/tr/Tool-REPL.md +47 -0
- package/concepts/tr/Tool-ReadMcpResource.md +32 -0
- package/concepts/tr/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/tr/Tool-ReadNotifications.md +27 -0
- package/concepts/tr/Tool-RemoteTrigger.md +7 -0
- package/concepts/tr/Tool-ScheduleWakeup.md +5 -0
- package/concepts/tr/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/tr/Tool-SendFeedback.md +38 -0
- package/concepts/tr/Tool-SendFile.md +36 -0
- package/concepts/tr/Tool-SendMessage.md +5 -0
- package/concepts/tr/Tool-SendUserFile.md +38 -0
- package/concepts/tr/Tool-SendUserMessage.md +38 -0
- package/concepts/tr/Tool-SuggestConnectors.md +28 -0
- package/concepts/tr/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/tr/Tool-SuggestSkills.md +33 -0
- package/concepts/tr/Tool-TaskCreate.md +6 -0
- package/concepts/tr/Tool-TaskGet.md +6 -0
- package/concepts/tr/Tool-TaskList.md +6 -0
- package/concepts/tr/Tool-TaskUpdate.md +6 -0
- package/concepts/tr/Tool-TodoWrite.md +43 -0
- package/concepts/tr/Tool-ToolSearch.md +5 -0
- package/concepts/tr/Tool-WebSearch.md +6 -0
- package/concepts/tr/Tools.md +26 -4
- package/concepts/uk/GlobalSettings.md +2 -2
- package/concepts/uk/Tool-Artifact.md +7 -0
- package/concepts/uk/Tool-EndConversation.md +35 -0
- package/concepts/uk/Tool-LSP.md +5 -0
- package/concepts/uk/Tool-ListAgents.md +35 -0
- package/concepts/uk/Tool-ListConnectors.md +34 -0
- package/concepts/uk/Tool-ListMcpResources.md +35 -0
- package/concepts/uk/Tool-ListPlugins.md +35 -0
- package/concepts/uk/Tool-ListSkills.md +37 -0
- package/concepts/uk/Tool-Monitor.md +7 -0
- package/concepts/uk/Tool-Projects.md +46 -0
- package/concepts/uk/Tool-ProposeGoal.md +43 -0
- package/concepts/uk/Tool-PushNotification.md +6 -0
- package/concepts/uk/Tool-REPL.md +47 -0
- package/concepts/uk/Tool-ReadMcpResource.md +32 -0
- package/concepts/uk/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/uk/Tool-ReadNotifications.md +27 -0
- package/concepts/uk/Tool-RemoteTrigger.md +7 -0
- package/concepts/uk/Tool-ScheduleWakeup.md +5 -0
- package/concepts/uk/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/uk/Tool-SendFeedback.md +38 -0
- package/concepts/uk/Tool-SendFile.md +36 -0
- package/concepts/uk/Tool-SendMessage.md +5 -0
- package/concepts/uk/Tool-SendUserFile.md +38 -0
- package/concepts/uk/Tool-SendUserMessage.md +38 -0
- package/concepts/uk/Tool-SuggestConnectors.md +28 -0
- package/concepts/uk/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/uk/Tool-SuggestSkills.md +33 -0
- package/concepts/uk/Tool-TaskCreate.md +6 -0
- package/concepts/uk/Tool-TaskGet.md +6 -0
- package/concepts/uk/Tool-TaskList.md +6 -0
- package/concepts/uk/Tool-TaskUpdate.md +6 -0
- package/concepts/uk/Tool-TodoWrite.md +43 -0
- package/concepts/uk/Tool-ToolSearch.md +5 -0
- package/concepts/uk/Tool-WebSearch.md +6 -0
- package/concepts/uk/Tools.md +26 -4
- package/concepts/zh/GlobalSettings.md +2 -2
- package/concepts/zh/Tool-Artifact.md +7 -0
- package/concepts/zh/Tool-EndConversation.md +35 -0
- package/concepts/zh/Tool-LSP.md +5 -0
- package/concepts/zh/Tool-ListAgents.md +35 -0
- package/concepts/zh/Tool-ListConnectors.md +34 -0
- package/concepts/zh/Tool-ListMcpResources.md +35 -0
- package/concepts/zh/Tool-ListPlugins.md +35 -0
- package/concepts/zh/Tool-ListSkills.md +37 -0
- package/concepts/zh/Tool-Monitor.md +7 -0
- package/concepts/zh/Tool-Projects.md +46 -0
- package/concepts/zh/Tool-ProposeGoal.md +43 -0
- package/concepts/zh/Tool-PushNotification.md +6 -0
- package/concepts/zh/Tool-REPL.md +47 -0
- package/concepts/zh/Tool-ReadMcpResource.md +32 -0
- package/concepts/zh/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/zh/Tool-ReadNotifications.md +27 -0
- package/concepts/zh/Tool-RemoteTrigger.md +7 -0
- package/concepts/zh/Tool-ScheduleWakeup.md +5 -0
- package/concepts/zh/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/zh/Tool-SendFeedback.md +38 -0
- package/concepts/zh/Tool-SendFile.md +36 -0
- package/concepts/zh/Tool-SendMessage.md +5 -0
- package/concepts/zh/Tool-SendUserFile.md +38 -0
- package/concepts/zh/Tool-SendUserMessage.md +38 -0
- package/concepts/zh/Tool-SuggestConnectors.md +28 -0
- package/concepts/zh/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/zh/Tool-SuggestSkills.md +33 -0
- package/concepts/zh/Tool-TaskCreate.md +6 -0
- package/concepts/zh/Tool-TaskGet.md +6 -0
- package/concepts/zh/Tool-TaskList.md +6 -0
- package/concepts/zh/Tool-TaskUpdate.md +6 -0
- package/concepts/zh/Tool-TodoWrite.md +43 -0
- package/concepts/zh/Tool-ToolSearch.md +5 -0
- package/concepts/zh/Tool-WebSearch.md +6 -0
- package/concepts/zh/Tools.md +26 -4
- package/concepts/zh-TW/GlobalSettings.md +2 -2
- package/concepts/zh-TW/Tool-Artifact.md +7 -0
- package/concepts/zh-TW/Tool-EndConversation.md +35 -0
- package/concepts/zh-TW/Tool-LSP.md +5 -0
- package/concepts/zh-TW/Tool-ListAgents.md +35 -0
- package/concepts/zh-TW/Tool-ListConnectors.md +34 -0
- package/concepts/zh-TW/Tool-ListMcpResources.md +35 -0
- package/concepts/zh-TW/Tool-ListPlugins.md +35 -0
- package/concepts/zh-TW/Tool-ListSkills.md +37 -0
- package/concepts/zh-TW/Tool-Monitor.md +7 -0
- package/concepts/zh-TW/Tool-Projects.md +46 -0
- package/concepts/zh-TW/Tool-ProposeGoal.md +43 -0
- package/concepts/zh-TW/Tool-PushNotification.md +6 -0
- package/concepts/zh-TW/Tool-REPL.md +47 -0
- package/concepts/zh-TW/Tool-ReadMcpResource.md +32 -0
- package/concepts/zh-TW/Tool-ReadMcpResourceDir.md +32 -0
- package/concepts/zh-TW/Tool-ReadNotifications.md +27 -0
- package/concepts/zh-TW/Tool-RemoteTrigger.md +7 -0
- package/concepts/zh-TW/Tool-ScheduleWakeup.md +5 -0
- package/concepts/zh-TW/Tool-SearchMcpRegistry.md +31 -0
- package/concepts/zh-TW/Tool-SendFeedback.md +38 -0
- package/concepts/zh-TW/Tool-SendFile.md +36 -0
- package/concepts/zh-TW/Tool-SendMessage.md +5 -0
- package/concepts/zh-TW/Tool-SendUserFile.md +38 -0
- package/concepts/zh-TW/Tool-SendUserMessage.md +38 -0
- package/concepts/zh-TW/Tool-SuggestConnectors.md +28 -0
- package/concepts/zh-TW/Tool-SuggestPluginInstall.md +39 -0
- package/concepts/zh-TW/Tool-SuggestSkills.md +33 -0
- package/concepts/zh-TW/Tool-TaskCreate.md +6 -0
- package/concepts/zh-TW/Tool-TaskGet.md +6 -0
- package/concepts/zh-TW/Tool-TaskList.md +6 -0
- package/concepts/zh-TW/Tool-TaskUpdate.md +6 -0
- package/concepts/zh-TW/Tool-TodoWrite.md +43 -0
- package/concepts/zh-TW/Tool-ToolSearch.md +5 -0
- package/concepts/zh-TW/Tool-WebSearch.md +6 -0
- package/concepts/zh-TW/Tools.md +26 -4
- package/dist/assets/{App-BaKGIW0-.js → App-CCu0y2Cq.js} +2 -2
- package/dist/assets/{MdxEditorPanel-DG-UE0PC.js → MdxEditorPanel-BBhgTmDk.js} +1 -1
- package/dist/assets/{Mobile-CQaUYdaf.js → Mobile-vN4lyiaz.js} +1 -1
- package/dist/assets/{ProxyStatsModal-j-Aty9Lu.js → ProxyStatsModal-BOflqr0R.js} +1 -1
- package/dist/assets/index-C3BRHDVF.js +2 -0
- package/dist/assets/seqResourceLoaders-DI0G5nu1.css +41 -0
- package/dist/assets/seqResourceLoaders-DpYqp6SP.js +2 -0
- package/dist/index.html +1 -1
- package/findcc.js +17 -8
- package/node_modules/@ccv/core/package.json +13 -0
- package/{server/lib → node_modules/@ccv/core/src}/approval-modal-prefs.js +1 -1
- package/node_modules/@ccv/core/src/clearCheckpoint.js +7 -0
- package/{src/utils → node_modules/@ccv/core/src}/contentFilter.js +207 -141
- package/{server/lib → node_modules/@ccv/core/src}/context-rules.js +2 -2
- package/{server/lib → node_modules/@ccv/core/src}/delta-reconstructor.js +60 -4
- package/{server/lib → node_modules/@ccv/core/src}/error-report.js +5 -4
- package/{server/lib → node_modules/@ccv/core/src}/session-boundary.js +3 -3
- package/{src/utils → node_modules/@ccv/core/src}/teammateDetector.js +9 -0
- package/{server/lib → node_modules/@ccv/core/src}/tools-xml-formatter.js +3 -3
- package/{server/lib → node_modules/@ccv/core/src}/v2-transcript-normalizer.js +1 -1
- package/{server/lib → node_modules/@ccv/core/src}/voice-pack-events.js +2 -2
- package/package.json +11 -96
- package/server/_paths.js +28 -7
- package/server/i18n.js +60 -0
- package/server/interceptor.js +36 -11
- package/server/lib/adapters/dingtalk-adapter.js +2 -2
- package/server/lib/adapters/discord-adapter.js +2 -2
- package/server/lib/adapters/feishu-adapter.js +2 -2
- package/server/lib/adapters/wecom-adapter.js +2 -2
- package/server/lib/approval-policy.js +29 -0
- package/server/lib/{ask-store.js → ask/ask-store.js} +3 -3
- package/server/lib/{perm-bridge.js → ask/perm-bridge.js} +5 -5
- package/server/lib/chat-queue.js +341 -0
- package/server/lib/cli-inject.js +1 -1
- package/server/lib/context-watcher.js +3 -3
- package/server/lib/create_system_prompt.js +0 -9
- package/server/lib/enrich-plan-input.js +1 -1
- package/server/lib/ensure-hooks.js +2 -2
- package/server/lib/file-access-policy.js +6 -1
- package/server/lib/file-api.js +17 -1
- package/server/lib/{dingtalk-bridge.js → im/dingtalk-bridge.js} +1 -1
- package/server/lib/{im-append-system.js → im/im-append-system.js} +5 -13
- package/server/lib/{im-bridge-core.js → im/im-bridge-core.js} +12 -6
- package/server/lib/{im-config.js → im/im-config.js} +1 -1
- package/server/lib/im/im-deny.js +4 -0
- package/server/lib/{im-lang.js → im/im-lang.js} +1 -1
- package/server/lib/{im-lock.js → im/im-lock.js} +2 -2
- package/server/lib/{im-process-manager.js → im/im-process-manager.js} +1 -1
- package/server/lib/{im-senders.js → im/im-senders.js} +1 -1
- package/server/lib/{im-skills.js → im/im-skills.js} +2 -2
- package/server/lib/interceptor-core.js +8 -5
- package/server/lib/kv-cache-analyzer.js +6 -5
- package/server/lib/launch-config.js +321 -0
- package/server/lib/log-file-utils.js +21 -0
- package/server/lib/log-management.js +6 -17
- package/server/lib/log-stream.js +1 -1
- package/server/lib/log-watcher.js +1 -1
- package/server/lib/model-system-prompts.js +1 -1
- package/server/lib/prefs-store.js +2 -2
- package/server/lib/project-prefs.js +6 -6
- package/server/lib/project-state.js +15 -0
- package/server/lib/{proxy-retry.js → proxy/proxy-retry.js} +2 -2
- package/server/lib/{proxy-stats.js → proxy/proxy-stats.js} +3 -3
- package/server/lib/sdk-adapter.js +6 -74
- package/server/lib/sdk-manager.js +383 -278
- package/server/lib/skills-api.js +1 -1
- package/server/lib/spawn-model-resolver.js +21 -6
- package/server/lib/stats-worker.js +2 -2
- package/server/lib/system-prompt-files.js +11 -10
- package/server/lib/system-prompt-render.js +23 -7
- package/server/lib/system-prompt-snapshots.js +452 -0
- package/server/lib/updater.js +63 -3
- package/server/lib/user-prompt-extract.js +5 -5
- package/server/lib/v2/adapter.js +3 -3
- package/server/lib/v2/conversation-store.js +1 -1
- package/server/lib/v2/convert.js +3 -3
- package/server/lib/v2/jsonl-read.js +1 -1
- package/server/lib/v2/live-feed.js +3 -3
- package/server/lib/v2/meta-rows.js +3 -3
- package/server/lib/v2/replay.js +1 -1
- package/server/lib/v2/session-list.js +1 -1
- package/server/lib/v2/session-owner.js +1 -1
- package/server/lib/v2/v2-writer.js +26 -1
- package/server/lib/v2/verify.js +1 -1
- package/server/lib/voice-pack-manager.js +4 -5
- package/server/lib/wire-compress.js +1 -1
- package/server/proxy.js +5 -5
- package/server/pty-manager.js +282 -184
- package/server/routes/ask-perm.js +1 -1
- package/server/routes/dingtalk.js +3 -3
- package/server/routes/events.js +2 -2
- package/server/routes/im.js +5 -5
- package/server/routes/preferences.js +3 -3
- package/server/routes/workspaces.js +1 -1
- package/server/server.js +207 -58
- package/server/system-prompt-templates/systemPromptModel.md +0 -8
- package/server/system-prompt-templates/systemPromptVariables.ar.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.da.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.de.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.es.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.fr.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.it.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.ja.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.ko.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.no.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.pl.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.pt-BR.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.ru.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.th.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.tr.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.uk.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.zh-TW.md +0 -7
- package/server/system-prompt-templates/systemPromptVariables.zh.md +0 -7
- package/concepts/ar/Tool-TeamCreate.md +0 -53
- package/concepts/ar/Tool-TeamDelete.md +0 -44
- package/concepts/ar/Tool-executeCode.md +0 -47
- package/concepts/ar/Tool-getDiagnostics.md +0 -44
- package/concepts/da/Tool-TeamCreate.md +0 -53
- package/concepts/da/Tool-TeamDelete.md +0 -44
- package/concepts/da/Tool-executeCode.md +0 -47
- package/concepts/da/Tool-getDiagnostics.md +0 -44
- package/concepts/de/Tool-TeamCreate.md +0 -53
- package/concepts/de/Tool-TeamDelete.md +0 -44
- package/concepts/de/Tool-executeCode.md +0 -47
- package/concepts/de/Tool-getDiagnostics.md +0 -44
- package/concepts/en/Tool-TeamCreate.md +0 -53
- package/concepts/en/Tool-TeamDelete.md +0 -44
- package/concepts/en/Tool-executeCode.md +0 -47
- package/concepts/en/Tool-getDiagnostics.md +0 -44
- package/concepts/es/Tool-TeamCreate.md +0 -53
- package/concepts/es/Tool-TeamDelete.md +0 -44
- package/concepts/es/Tool-executeCode.md +0 -47
- package/concepts/es/Tool-getDiagnostics.md +0 -44
- package/concepts/fr/Tool-TeamCreate.md +0 -53
- package/concepts/fr/Tool-TeamDelete.md +0 -44
- package/concepts/fr/Tool-executeCode.md +0 -47
- package/concepts/fr/Tool-getDiagnostics.md +0 -44
- package/concepts/it/Tool-TeamCreate.md +0 -53
- package/concepts/it/Tool-TeamDelete.md +0 -44
- package/concepts/it/Tool-executeCode.md +0 -47
- package/concepts/it/Tool-getDiagnostics.md +0 -44
- package/concepts/ja/Tool-TeamCreate.md +0 -53
- package/concepts/ja/Tool-TeamDelete.md +0 -44
- package/concepts/ja/Tool-executeCode.md +0 -47
- package/concepts/ja/Tool-getDiagnostics.md +0 -44
- package/concepts/ko/Tool-TeamCreate.md +0 -53
- package/concepts/ko/Tool-TeamDelete.md +0 -44
- package/concepts/ko/Tool-executeCode.md +0 -47
- package/concepts/ko/Tool-getDiagnostics.md +0 -44
- package/concepts/no/Tool-TeamCreate.md +0 -53
- package/concepts/no/Tool-TeamDelete.md +0 -44
- package/concepts/no/Tool-executeCode.md +0 -47
- package/concepts/no/Tool-getDiagnostics.md +0 -44
- package/concepts/pl/Tool-TeamCreate.md +0 -53
- package/concepts/pl/Tool-TeamDelete.md +0 -44
- package/concepts/pl/Tool-executeCode.md +0 -47
- package/concepts/pl/Tool-getDiagnostics.md +0 -44
- package/concepts/pt-BR/Tool-TeamCreate.md +0 -53
- package/concepts/pt-BR/Tool-TeamDelete.md +0 -44
- package/concepts/pt-BR/Tool-executeCode.md +0 -47
- package/concepts/pt-BR/Tool-getDiagnostics.md +0 -44
- package/concepts/ru/Tool-TeamCreate.md +0 -53
- package/concepts/ru/Tool-TeamDelete.md +0 -44
- package/concepts/ru/Tool-executeCode.md +0 -47
- package/concepts/ru/Tool-getDiagnostics.md +0 -44
- package/concepts/th/Tool-TeamCreate.md +0 -53
- package/concepts/th/Tool-TeamDelete.md +0 -44
- package/concepts/th/Tool-executeCode.md +0 -41
- package/concepts/th/Tool-getDiagnostics.md +0 -32
- package/concepts/tr/Tool-TeamCreate.md +0 -53
- package/concepts/tr/Tool-TeamDelete.md +0 -44
- package/concepts/tr/Tool-executeCode.md +0 -47
- package/concepts/tr/Tool-getDiagnostics.md +0 -44
- package/concepts/uk/Tool-TeamCreate.md +0 -53
- package/concepts/uk/Tool-TeamDelete.md +0 -44
- package/concepts/uk/Tool-executeCode.md +0 -47
- package/concepts/uk/Tool-getDiagnostics.md +0 -44
- package/concepts/zh/Tool-TeamCreate.md +0 -53
- package/concepts/zh/Tool-TeamDelete.md +0 -44
- package/concepts/zh/Tool-executeCode.md +0 -47
- package/concepts/zh/Tool-getDiagnostics.md +0 -44
- package/concepts/zh-TW/Tool-TeamCreate.md +0 -53
- package/concepts/zh-TW/Tool-TeamDelete.md +0 -44
- package/concepts/zh-TW/Tool-executeCode.md +0 -47
- package/concepts/zh-TW/Tool-getDiagnostics.md +0 -44
- package/dist/assets/index-CyiyzBfV.js +0 -2
- package/dist/assets/seqResourceLoaders-BgD_Rwvc.css +0 -41
- package/dist/assets/seqResourceLoaders-XMiEIVyV.js +0 -2
- package/src/utils/apiUrl.js +0 -26
- package/src/utils/askFallback.js +0 -21
- package/src/utils/askOptionDesc.js +0 -55
- package/src/utils/askPortalMatcher.js +0 -54
- package/src/utils/autoApproveOptions.js +0 -27
- package/src/utils/avatarAnimationPostPass.js +0 -49
- package/src/utils/builtinPresets.js +0 -18
- package/src/utils/clearCheckpoint.js +0 -7
- package/src/utils/commandValidator.js +0 -45
- package/src/utils/contextRaw.js +0 -18
- package/src/utils/contextSidebarNavigation.js +0 -16
- package/src/utils/contextTurns.js +0 -117
- package/src/utils/displayScaleHelper.js +0 -47
- package/src/utils/effectiveModel.js +0 -17
- package/src/utils/entry-slim.js +0 -563
- package/src/utils/entryCache.js +0 -144
- package/src/utils/errorReport.js +0 -6
- package/src/utils/fileExpandedPathsStorage.js +0 -70
- package/src/utils/fileIcons.jsx +0 -36
- package/src/utils/fileOpen.js +0 -37
- package/src/utils/formatters.js +0 -48
- package/src/utils/gitApi.js +0 -50
- package/src/utils/gitTreeBuilder.js +0 -19
- package/src/utils/helpers.js +0 -854
- package/src/utils/identityHeal.js +0 -108
- package/src/utils/imConnState.js +0 -59
- package/src/utils/imOrigin.js +0 -24
- package/src/utils/imTr.js +0 -7
- package/src/utils/imageCompress.js +0 -83
- package/src/utils/imageDownscale.js +0 -28
- package/src/utils/imageResize.js +0 -112
- package/src/utils/ingestPipeline.js +0 -47
- package/src/utils/isProxyMode.js +0 -11
- package/src/utils/lazyWithReload.js +0 -53
- package/src/utils/markdown.js +0 -30
- package/src/utils/markdownIncremental.js +0 -39
- package/src/utils/markdownProfiler.js +0 -113
- package/src/utils/mdExtensionDetect.js +0 -64
- package/src/utils/memoryLinkParser.js +0 -44
- package/src/utils/modalMask.js +0 -15
- package/src/utils/modelSuggestions.js +0 -48
- package/src/utils/monotime.js +0 -6
- package/src/utils/pinnedMenu.js +0 -55
- package/src/utils/presetShortcuts.js +0 -14
- package/src/utils/projectAlias.js +0 -135
- package/src/utils/promptClassifier.js +0 -112
- package/src/utils/promptDetect.js +0 -196
- package/src/utils/promptNav.js +0 -60
- package/src/utils/ptyChunkBuilder.js +0 -251
- package/src/utils/quickMenuHoverIntent.js +0 -35
- package/src/utils/rateLimitParser.js +0 -119
- package/src/utils/readResultPool.js +0 -106
- package/src/utils/refreshCachedItemProp.js +0 -30
- package/src/utils/resizeCalc.js +0 -21
- package/src/utils/resolveLocalized.js +0 -17
- package/src/utils/searchApi.js +0 -47
- package/src/utils/searchReplace.js +0 -51
- package/src/utils/seqResourceLoaders.js +0 -79
- package/src/utils/sessionManager.js +0 -482
- package/src/utils/sessionMerge.js +0 -239
- package/src/utils/skillModalController.js +0 -111
- package/src/utils/skillsParser.js +0 -116
- package/src/utils/slashCommandLabels.js +0 -80
- package/src/utils/splitDragCalc.js +0 -73
- package/src/utils/stickyBottomController.js +0 -643
- package/src/utils/svgSanitize.js +0 -48
- package/src/utils/systemTags.js +0 -47
- package/src/utils/tClaude.js +0 -20
- package/src/utils/teamModalBuilder.js +0 -351
- package/src/utils/teamSessionParser.js +0 -190
- package/src/utils/teammateAvatars.js +0 -194
- package/src/utils/termDiag.js +0 -114
- package/src/utils/terminalClipboard.js +0 -117
- package/src/utils/terminalWriteQueue.js +0 -398
- package/src/utils/thinkingMerge.js +0 -49
- package/src/utils/toolCatalog.js +0 -29
- package/src/utils/toolResultBuilder.js +0 -411
- package/src/utils/toolResultClassifier.js +0 -16
- package/src/utils/toolResultCore.js +0 -194
- package/src/utils/toolsDiff.js +0 -44
- package/src/utils/toolsXmlFormatter.js +0 -3
- package/src/utils/ultraplanController.js +0 -109
- package/src/utils/ultraplanExperts.js +0 -86
- package/src/utils/ultraplanTemplates.js +0 -154
- package/src/utils/userImageRefs.js +0 -49
- package/src/utils/v3Assembler.js +0 -125
- package/src/utils/v3Rows.js +0 -49
- package/src/utils/voicePackPlayer.js +0 -233
- package/src/utils/webSearchGrouping.js +0 -111
- package/src/utils/workflowFormat.js +0 -52
- package/src/utils/workflowRuns.js +0 -118
- package/src/utils/workflowStore.js +0 -94
- /package/{src/utils → node_modules/@ccv/core/src}/requestType.js +0 -0
- /package/server/lib/{ask-bridge.js → ask/ask-bridge.js} +0 -0
- /package/server/lib/{ask-constants.js → ask/ask-constants.js} +0 -0
- /package/server/lib/{ask-reaper.js → ask/ask-reaper.js} +0 -0
- /package/server/lib/{dingtalk-config.js → im/dingtalk-config.js} +0 -0
- /package/server/lib/{im-log-watcher.js → im/im-log-watcher.js} +0 -0
- /package/server/lib/{proxy-env.js → proxy/proxy-env.js} +0 -0
- /package/server/lib/{proxy-errors.js → proxy/proxy-errors.js} +0 -0
package/src/utils/apiUrl.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// 从 URL 中提取 LAN 访问 token,附加到所有 API 请求 / WebSocket 握手
|
|
2
|
-
const _urlToken = new URLSearchParams(window.location.search).get('token');
|
|
3
|
-
|
|
4
|
-
// 反向代理子路径部署: 从 <base> 标签或 SSR 注入的全局变量读取 base path,
|
|
5
|
-
// 使 API/WebSocket 等动态请求也能正确路由到代理后端。
|
|
6
|
-
export function getBasePath() {
|
|
7
|
-
if (typeof window !== 'undefined' && window.__CCV_BASE_PATH__) return window.__CCV_BASE_PATH__;
|
|
8
|
-
if (typeof document === 'undefined' || !document.querySelector) return '';
|
|
9
|
-
const base = document.querySelector('base');
|
|
10
|
-
if (base && base.href) return base.getAttribute('href');
|
|
11
|
-
return '';
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
// 把 token 追加到任意 URL(HTTP path 或 ws:// 完整 URL 皆可)。无 token 时原样返回。
|
|
15
|
-
// WS 握手必须也带 token —— 否则启用鉴权后远程「?token=」终端会被 socket.destroy()。
|
|
16
|
-
export function appendToken(url) {
|
|
17
|
-
if (!_urlToken) return url;
|
|
18
|
-
const sep = url.includes('?') ? '&' : '?';
|
|
19
|
-
return `${url}${sep}token=${_urlToken}`;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export function apiUrl(path) {
|
|
23
|
-
const base = getBasePath();
|
|
24
|
-
const fullPath = base ? base.replace(/\/$/, '') + path : path;
|
|
25
|
-
return appendToken(fullPath);
|
|
26
|
-
}
|
package/src/utils/askFallback.js
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
// Decision helper for ApprovalModal's fallback AskQuestionForm.
|
|
2
|
-
//
|
|
3
|
-
// The Question modal body is normally filled by the transcript tool_use block
|
|
4
|
-
// portaling an AskQuestionForm into the modal's ask slot (see askPortalMatcher.js).
|
|
5
|
-
// When no block portals in — a stale replayed ask whose block is old history, or a
|
|
6
|
-
// fresh ask arriving before transcript ingest — the modal would show an empty body.
|
|
7
|
-
// The fallback renders a form directly from the authoritative pending-ask broadcast.
|
|
8
|
-
//
|
|
9
|
-
// Contract: `slotOccupied` is DOM occupancy of the ask slot (MutationObserver on
|
|
10
|
-
// childList + sync initial read); `graceElapsed` flips true ASK_FALLBACK_GRACE_MS
|
|
11
|
-
// after the ask becomes visible, giving the real portal one commit cycle so fresh
|
|
12
|
-
// asks never flash the fallback before the portaled form mounts.
|
|
13
|
-
|
|
14
|
-
export const ASK_FALLBACK_GRACE_MS = 120;
|
|
15
|
-
|
|
16
|
-
export function shouldRenderAskFallback({ isAskActive, slotOccupied, graceElapsed, questions, submitHandler }) {
|
|
17
|
-
if (!isAskActive || slotOccupied || !graceElapsed) return false;
|
|
18
|
-
if (!Array.isArray(questions) || questions.length === 0) return false;
|
|
19
|
-
if (typeof submitHandler !== 'function') return false;
|
|
20
|
-
return true;
|
|
21
|
-
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { isPlaceholderAskId } from './askPortalMatcher.js';
|
|
2
|
-
|
|
3
|
-
// AskUserQuestion options[].description is schema-optional; centralize fallback
|
|
4
|
-
// so AskQuestionForm and ChatMessage recap stay aligned.
|
|
5
|
-
|
|
6
|
-
export function optionAriaLabel(opt) {
|
|
7
|
-
if (!opt || opt.label == null) return '';
|
|
8
|
-
return opt.description
|
|
9
|
-
? `${opt.label}: ${opt.description}`
|
|
10
|
-
: String(opt.label);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export function hasOptionDescription(opt) {
|
|
14
|
-
return Boolean(opt && opt.description);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Pick the questions the interactive AskUserQuestion card actually renders.
|
|
18
|
-
//
|
|
19
|
-
// The modal body is filled by the inline tool_use block (reconstructed from the log
|
|
20
|
-
// stream) portaling into the modal's askSlot — it does not read pendingAsk.questions
|
|
21
|
-
// (the authoritative copy broadcast over WS ask-hook-pending / sdk-ask-pending, fully
|
|
22
|
-
// parsed server-side before the hook fires) directly. During streaming of a large
|
|
23
|
-
// payload there is a window where the modal is already open but the reconstructed
|
|
24
|
-
// block's input is still partial JSON. Crucially, partial-JSON parsing materializes
|
|
25
|
-
// the outer questions[] array shape before the element content arrives, so the
|
|
26
|
-
// streamed copy can be HOLLOW AT EQUAL LENGTH (e.g. two question objects with empty
|
|
27
|
-
// text/options while big options[].preview strings are still streaming — the
|
|
28
|
-
// 2026-07-04 blank-popup regression; a strictly-longer length heuristic missed it).
|
|
29
|
-
//
|
|
30
|
-
// So: for the currently pending ask (toolId === lastPendingAskId, id-matched), always
|
|
31
|
-
// prefer the authoritative copy. It is complete by construction, and the submit path
|
|
32
|
-
// (handleAskQuestionSubmit in askFlowController) maps answer indices through the same
|
|
33
|
-
// authoritative _askHookQuestions copy — rendering it keeps rendered indices aligned
|
|
34
|
-
// with the mapping array. Historical blocks never match lastPendingAskId and always
|
|
35
|
-
// keep their own streamed questions (history view unchanged).
|
|
36
|
-
//
|
|
37
|
-
// Legacy/no-id servers use placeholder pendingAsk ids ('__ask__', 'ask_<ts>_<rnd>')
|
|
38
|
-
// that can never equal the real tool_use id. There the authoritative copy is only
|
|
39
|
-
// borrowed when the streamed render would otherwise be completely empty — it can fill
|
|
40
|
-
// a blank popup but never override visible content (a stale legacy pendingAsk must
|
|
41
|
-
// not inject a previous ask's questions over a rendered one).
|
|
42
|
-
export function resolveAskQuestions(streamedQuestions, toolId, lastPendingAskId, pendingAsk) {
|
|
43
|
-
const streamed = Array.isArray(streamedQuestions) ? streamedQuestions : [];
|
|
44
|
-
if (!pendingAsk || toolId == null || toolId !== lastPendingAskId) {
|
|
45
|
-
return streamed;
|
|
46
|
-
}
|
|
47
|
-
const idMatches = pendingAsk.id === toolId;
|
|
48
|
-
if (!idMatches && !(isPlaceholderAskId(pendingAsk.id) && streamed.length === 0)) {
|
|
49
|
-
return streamed;
|
|
50
|
-
}
|
|
51
|
-
const authoritative = Array.isArray(pendingAsk.questions) ? pendingAsk.questions : [];
|
|
52
|
-
if (authoritative.length === 0) return streamed; // defensive: WS handlers guarantee non-empty
|
|
53
|
-
if (streamed.length > authoritative.length) return streamed; // never shrink (belt-and-braces)
|
|
54
|
-
return authoritative;
|
|
55
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Portal 决策:判断 inline AskQuestionForm(在 ChatMessage 里渲染的某条 tool_use)
|
|
3
|
-
* 是否应该 createPortal 到 ApprovalModal 的 askSlot。
|
|
4
|
-
*
|
|
5
|
-
* activeAskId 三种合法形态(与 server 端协议绑定,改一边必须改另一边):
|
|
6
|
-
*
|
|
7
|
-
* 1. `toolu_xxx` — SDK 模式 / 新版 Claude Code 透传的真实 tool_use_id
|
|
8
|
-
* → 走 strict 匹配:activeAskId === toolId
|
|
9
|
-
*
|
|
10
|
-
* 2. `__ask__` — LEGACY 老 server(pre-Map 协议)的单槽占位
|
|
11
|
-
* → 走 owner 通配:仅 owner-idx 锁定的那条 ChatMessage(lastPendingAskId === toolId)命中
|
|
12
|
-
*
|
|
13
|
-
* 3. `ask_${ts}_${rnd}` — 老 Claude Code PreToolUse hook payload 不带 tool_use_id 时
|
|
14
|
-
* server.js 自生成的 fallback id(修复 modal 标题在但内容空白的根因)
|
|
15
|
-
* → 走 owner 通配:与 __ask__ 同语义
|
|
16
|
-
*
|
|
17
|
-
* 协议锚点:
|
|
18
|
-
* - server 端 fallback id 生成:server.js(搜索 `ask_${Date.now()}` 定位)
|
|
19
|
-
* - server 端 LEGACY 占位推送:server.js 推送 ask-hook-pending 事件时 id 为 '__ask__'
|
|
20
|
-
* - 前端 setState pendingAsk:src/components/chat/ChatView.jsx
|
|
21
|
-
*
|
|
22
|
-
* 改 server 端 fallback id 格式时,必须同步更新此文件的 isFallbackId 检测。
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
const FALLBACK_ID_PREFIX = 'ask_';
|
|
26
|
-
const LEGACY_PLACEHOLDER_ID = '__ask__';
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* True when the given pending-ask id is a placeholder that can never equal a real
|
|
30
|
-
* tool_use id: the LEGACY single-slot '__ask__' or a server-generated 'ask_<ts>_<rnd>'
|
|
31
|
-
* fallback id. Consumers (e.g. resolveAskQuestions) use this to apply the same
|
|
32
|
-
* owner-wildcard semantics as shouldPortalAskForm on the legacy paths.
|
|
33
|
-
*/
|
|
34
|
-
export function isPlaceholderAskId(id) {
|
|
35
|
-
return id === LEGACY_PLACEHOLDER_ID
|
|
36
|
-
|| (typeof id === 'string' && id.startsWith(FALLBACK_ID_PREFIX));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @param {*} activeAskId ApprovalPortalContext.Consumer 提供的 activeAskId(modal 当前 active ask 的 id)
|
|
41
|
-
* @param {*} toolId 当前 ChatMessage 里 tool_use 块的 id(toolu_xxx)
|
|
42
|
-
* @param {*} lastPendingAskId ChatMessage 收到的 owner-idx 派生信号;非 owner 永远为 null
|
|
43
|
-
* @returns {boolean} true 表示当前 ChatMessage 应该 portal 到 askSlot
|
|
44
|
-
*/
|
|
45
|
-
export function shouldPortalAskForm(activeAskId, toolId, lastPendingAskId) {
|
|
46
|
-
if (activeAskId == null) return false;
|
|
47
|
-
// strict:SDK / 新 Claude Code 真实 tool_use_id
|
|
48
|
-
if (String(activeAskId) === String(toolId)) return true;
|
|
49
|
-
// owner 通配:__ask__(LEGACY 老 server)∪ ask_*(server fallback)
|
|
50
|
-
// 必须同时满足 owner-idx 锁定(lastPendingAskId === toolId),否则会让历史所有真实 toolId
|
|
51
|
-
// 都被通配命中,重现旧的双份 portal bug
|
|
52
|
-
if (isPlaceholderAskId(activeAskId) && lastPendingAskId === toolId) return true;
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
// 自动审批档位唯一事实源 —— 全部消费点共用同一组档位,防止各处字面量发散:
|
|
2
|
-
// 1. TerminalPanel 终端工具栏四芒星快捷菜单(权限/Plan 两行级联档位)
|
|
3
|
-
// 2. ChatInputBar 对话输入框四芒星快捷菜单(隐藏终端时,同款两行)
|
|
4
|
-
// 3. AppHeader 设置抽屉的权限/Plan 两个 Select
|
|
5
|
-
// 4. Mobile 设置面板的权限/Plan 两个 Select
|
|
6
|
-
// 三态语义(持久化于 preferences.autoApproveSeconds / approvalModal.planAutoApproveSeconds):
|
|
7
|
-
// 0 = 关闭(手动审批)
|
|
8
|
-
// > 0 = 倒计时该秒数后自动批准
|
|
9
|
-
// -1 = 免审批(AUTO_APPROVE_INSTANT):请求到达即放行,从源头绕过审批面板
|
|
10
|
-
// 本模块不依赖 helpers.js(它带 .svg?raw 等 Vite 专属 import),保持 node --test 可直接引用。
|
|
11
|
-
export const AUTO_APPROVE_INSTANT = -1;
|
|
12
|
-
|
|
13
|
-
export const PERM_AUTO_APPROVE_OPTIONS = [0, 3, 5, 10, AUTO_APPROVE_INSTANT];
|
|
14
|
-
export const PLAN_AUTO_APPROVE_OPTIONS = [0, 10, 30, 60, AUTO_APPROVE_INSTANT];
|
|
15
|
-
|
|
16
|
-
// 单个档位值 -> 显示文案;t 由调用方注入,避免本模块依赖前端 i18n。
|
|
17
|
-
// 档位之外的历史值(如 Plan 旧 3/5)同样落在 `${v}s` 分支正常显示。
|
|
18
|
-
export function autoApproveValueLabel(v, t) {
|
|
19
|
-
if (v === AUTO_APPROVE_INSTANT) return t('ui.permission.autoApprove.instant');
|
|
20
|
-
if (!v) return t('ui.permission.autoApprove.off');
|
|
21
|
-
return `${v}s`;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// 档位数组 -> antd Select options
|
|
25
|
-
export function autoApproveSelectOptions(values, t) {
|
|
26
|
-
return values.map(v => ({ value: v, label: autoApproveValueLabel(v, t) }));
|
|
27
|
-
}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { shouldAnimateTeammateAvatar, pickAvatarAnimationTargets } from './teammateAvatars';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Avatar animation loading strategy — post-pass applied at the end of
|
|
6
|
-
* ChatView.buildAllItems, once every item (and the out-of-band Last Response
|
|
7
|
-
* timestamp) is known. Teammate rows animate their one-shot draw-in only when
|
|
8
|
-
* within the 60s window of the newest item's timestamp; the single newest
|
|
9
|
-
* teammate row always animates ("welcome flourish" on historic logs). Losers
|
|
10
|
-
* get cloneElement({ animateAvatar: false }) — winners keep their original
|
|
11
|
-
* element reference so cached elements skip reconciliation entirely.
|
|
12
|
-
*
|
|
13
|
-
* The flags are frozen per build: the window is measured against the newest
|
|
14
|
-
* item's timestamp, NOT wall clock (do not "fix" with Date.now()); they
|
|
15
|
-
* refresh whenever new data rebuilds the list.
|
|
16
|
-
*
|
|
17
|
-
* @param {Array} items - freshly built ChatMessage element array; mutated in place
|
|
18
|
-
* @param {string|null} lastResponseTs - session.entryTimestamp of the Last
|
|
19
|
-
* Response block, which lives OUTSIDE items but must count toward "newest"
|
|
20
|
-
* @returns {Array} the same array, with stale teammate rows cloned to static
|
|
21
|
-
*/
|
|
22
|
-
export function applyAvatarAnimationTargets(items, lastResponseTs = null) {
|
|
23
|
-
const scanEntries = items.map((item) => ({
|
|
24
|
-
ts: item?.props?.timestamp,
|
|
25
|
-
isTeammateAvatar: isTeammateAvatarItem(item?.props),
|
|
26
|
-
}));
|
|
27
|
-
if (lastResponseTs) scanEntries.push({ ts: lastResponseTs, isTeammateAvatar: false });
|
|
28
|
-
const { latestMs, newestTeammateIdx } = pickAvatarAnimationTargets(scanEntries);
|
|
29
|
-
if (newestTeammateIdx === -1) return items;
|
|
30
|
-
for (let i = 0; i < items.length; i++) {
|
|
31
|
-
if (!scanEntries[i].isTeammateAvatar) continue;
|
|
32
|
-
const animate = i === newestTeammateIdx ||
|
|
33
|
-
shouldAnimateTeammateAvatar(items[i].props.timestamp, latestMs);
|
|
34
|
-
if (!animate) items[i] = React.cloneElement(items[i], { animateAvatar: false });
|
|
35
|
-
}
|
|
36
|
-
return items;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
// Mirrors ChatMessage.render()'s THREE teammate-avatar branches:
|
|
40
|
-
// renderSubAgentChatMessage (role 'sub-agent-chat'), renderSubAgentMessage
|
|
41
|
-
// (role 'sub-agent' — currently never constructed, covered defensively), and
|
|
42
|
-
// renderTeammateMessage (role 'teammate-message'). If ChatMessage gains a new
|
|
43
|
-
// teammate-avatar branch, add it here — rows missed by this predicate default
|
|
44
|
-
// to animated forever.
|
|
45
|
-
export function isTeammateAvatarItem(props) {
|
|
46
|
-
if (!props) return false;
|
|
47
|
-
return ((props.role === 'sub-agent-chat' || props.role === 'sub-agent') && props.isTeammate)
|
|
48
|
-
|| props.role === 'teammate-message';
|
|
49
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 内置预置快捷方式。
|
|
3
|
-
*
|
|
4
|
-
* builtinId 跨版本不变,用于追踪用户的删除/编辑。
|
|
5
|
-
* teamName / description 是 i18n key,渲染时通过 t() 解析。
|
|
6
|
-
*/
|
|
7
|
-
export const BUILTIN_PRESETS = [
|
|
8
|
-
{
|
|
9
|
-
builtinId: 'codereview-5',
|
|
10
|
-
teamName: 'ui.preset.codeReview5.name',
|
|
11
|
-
description: 'ui.preset.codeReview5.desc',
|
|
12
|
-
},
|
|
13
|
-
// 历史遗留 builtinId 已连同 i18n key 一并删除(用户反馈不常用):
|
|
14
|
-
// - 'scout-regiment' / ui.preset.scoutRegiment.*
|
|
15
|
-
// - 'codereview-2' / ui.preset.codeReview2.*
|
|
16
|
-
// 若老用户的 preset 列表里已保存这些条目,i18n key 缺失时 t() 会回显原始 key,
|
|
17
|
-
// 视觉上难看但不崩;用户可在管理弹窗里手动删除。
|
|
18
|
-
];
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
// Re-export shell — the implementations moved VERBATIM to the shared client-safe
|
|
2
|
-
// module server/lib/session-boundary.js in wire-v2 step S1 so the server-side
|
|
3
|
-
// conversation router (S2+) and the client use ONE source of truth for session
|
|
4
|
-
// boundaries (docs/refactor/WIRE_FORMAT_V2_PLAN.md). Existing client imports of
|
|
5
|
-
// './clearCheckpoint.js' keep working through this shell; new code should import
|
|
6
|
-
// from server/lib/session-boundary.js directly.
|
|
7
|
-
export { isPostClearCheckpoint, isCompactContinuation, isSessionBoundary } from '../../server/lib/session-boundary.js';
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* File and command validation utilities.
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const IMAGE_EXTS = new Set(['png', 'jpg', 'jpeg', 'gif', 'svg', 'bmp', 'ico', 'icns', 'webp', 'avif']);
|
|
6
|
-
|
|
7
|
-
export function isImageFile(path) {
|
|
8
|
-
const ext = (path || '').split('.').pop().toLowerCase();
|
|
9
|
-
return IMAGE_EXTS.has(ext);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Regex matching Bash commands that may mutate filesystem or git state.
|
|
14
|
-
* 命中任一即触发文件浏览器与 git 面板自动刷新(ToolFileChangeController 的 Bash 路径依赖)。
|
|
15
|
-
*
|
|
16
|
-
* 覆盖类别:
|
|
17
|
-
* - delete:rm(含 rm -rf)、rmdir(删空目录)、unlink(POSIX 单文件删除)、find ... -delete
|
|
18
|
-
* - create/move:mkdir、mv、cp、touch、ln
|
|
19
|
-
* - metadata:chmod、chown
|
|
20
|
-
* - package/archive:npm/yarn/pnpm install/uninstall、pip install、tar、unzip、curl -o、wget
|
|
21
|
-
* - redirect write:> 与 >>(排除 2>、>= 等由 [^>]>(?!>)/>> 处理)
|
|
22
|
-
* - git mutating:checkout/reset/stash/merge/rebase/cherry-pick/restore/clean/rm
|
|
23
|
-
*
|
|
24
|
-
* 设计取舍(trade-off):
|
|
25
|
-
* \b 单词边界不能区分"作为命令"还是"作为参数/字面量",因此 `echo unlink` 之类
|
|
26
|
-
* 会被命中。文件浏览器额外刷新成本极低(一次 GET),宁可多刷不漏刷。
|
|
27
|
-
*
|
|
28
|
-
* find -delete 子表达式 `\bfind\b[^|;&\n]*-delete\b` 限定单条命令内,
|
|
29
|
-
* 避免 `grep find . | echo "-delete"` 之类的跨管道/分号误匹配。
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* isMutatingCommand('rm -rf node_modules') // true
|
|
33
|
-
* isMutatingCommand('find . -name "*.log" -delete') // true
|
|
34
|
-
* isMutatingCommand('git status') // false
|
|
35
|
-
* isMutatingCommand('echo hello') // false
|
|
36
|
-
*/
|
|
37
|
-
const MUTATING_CMD_RE = /\b(rm|rmdir|unlink|mkdir|mv|cp|touch|chmod|chown|ln|git\s+(checkout|reset|stash|merge|rebase|cherry-pick|restore|clean|rm)|npm\s+(install|uninstall|ci)|yarn\s+(add|remove)|pnpm\s+(add|remove|install)|pip\s+install|tar|unzip|curl\s+-[^\s]*o|wget)\b|\bfind\b[^|;&\n]*-delete\b|[^>]>(?!>)|>>/;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* @param {string} cmd Bash 命令字符串
|
|
41
|
-
* @returns {boolean} true 表示命令可能修改文件树或 git 状态
|
|
42
|
-
*/
|
|
43
|
-
export function isMutatingCommand(cmd) {
|
|
44
|
-
return MUTATING_CMD_RE.test(cmd);
|
|
45
|
-
}
|
package/src/utils/contextRaw.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { stripPrivateKeys } from './helpers';
|
|
2
|
-
|
|
3
|
-
// Context 标签页「原文」视图的文本组装(唯一实现,ContextTab 不内联第二份)。
|
|
4
|
-
// 口径与 DetailPanel Request/Response 标签 text 模式一致:stripPrivateKeys 剥掉
|
|
5
|
-
// 前端注入的 _ 前缀键(如 _timestamp)→ 字符串原样输出(不加引号包裹)、其余
|
|
6
|
-
// JSON.stringify 两空格缩进。
|
|
7
|
-
// turn 节点输出 [userMsg, ...systemMsgs, assistantMsg] 原始消息切片(rawSystem 为
|
|
8
|
-
// 折叠进本 turn 的 mid-conversation system 消息,按会话顺序位于 user 与 assistant 之间);
|
|
9
|
-
// 当前轮次 assistant 若由 response 覆盖(见 ContextTab turns useMemo),rawAssistant 即完整 response body。
|
|
10
|
-
export function buildContextItemRawText(item) {
|
|
11
|
-
if (!item) return '';
|
|
12
|
-
const raw = item.isTurn
|
|
13
|
-
? [item.rawUser, ...(Array.isArray(item.rawSystem) ? item.rawSystem : []), item.rawAssistant].filter(Boolean)
|
|
14
|
-
: item.raw;
|
|
15
|
-
if (raw == null) return '';
|
|
16
|
-
const clean = typeof raw === 'object' ? stripPrivateKeys(raw) : raw;
|
|
17
|
-
return typeof clean === 'string' ? clean : JSON.stringify(clean, null, 2);
|
|
18
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
export function getContextSidebarArrowNavigation({
|
|
2
|
-
currentId,
|
|
3
|
-
visibleIds = [],
|
|
4
|
-
key,
|
|
5
|
-
}) {
|
|
6
|
-
if (key !== 'ArrowUp' && key !== 'ArrowDown') return null;
|
|
7
|
-
|
|
8
|
-
const currentIndex = visibleIds.findIndex((id) => id === currentId);
|
|
9
|
-
const delta = key === 'ArrowUp' ? -1 : 1;
|
|
10
|
-
|
|
11
|
-
if (currentIndex >= 0) {
|
|
12
|
-
return visibleIds[currentIndex + delta] ?? null;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
return null;
|
|
16
|
-
}
|
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
// Context tab message parsing + turn grouping (extracted from ContextTab.jsx so the
|
|
2
|
-
// pairing logic is unit-testable — JSX modules cannot be imported by the test harness).
|
|
3
|
-
|
|
4
|
-
export function parseContentBlocks(content) {
|
|
5
|
-
if (content == null) return [];
|
|
6
|
-
|
|
7
|
-
if (typeof content === 'string') {
|
|
8
|
-
const trimmed = content.trim();
|
|
9
|
-
return trimmed ? [{ type: 'markdown', text: trimmed }] : [];
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (Array.isArray(content)) {
|
|
13
|
-
const blocks = [];
|
|
14
|
-
for (const block of content) {
|
|
15
|
-
if (!block) continue;
|
|
16
|
-
if (block.type === 'text') {
|
|
17
|
-
const trimmed = (block.text || '').trim();
|
|
18
|
-
if (trimmed) blocks.push({ type: 'markdown', text: trimmed });
|
|
19
|
-
} else if (block.type === 'tool_use') {
|
|
20
|
-
blocks.push({
|
|
21
|
-
type: 'tool_use',
|
|
22
|
-
name: block.name || 'unknown',
|
|
23
|
-
id: block.id || '',
|
|
24
|
-
input: block.input ?? {},
|
|
25
|
-
});
|
|
26
|
-
} else if (block.type === 'tool_result') {
|
|
27
|
-
const inner = parseResultContent(block.content);
|
|
28
|
-
blocks.push({
|
|
29
|
-
type: 'tool_result',
|
|
30
|
-
tool_use_id: block.tool_use_id || '',
|
|
31
|
-
is_error: block.is_error,
|
|
32
|
-
content: inner,
|
|
33
|
-
});
|
|
34
|
-
} else if (block.type === 'thinking') {
|
|
35
|
-
const text = block.thinking || '';
|
|
36
|
-
if (text.trim()) blocks.push({ type: 'thinking', text });
|
|
37
|
-
} else if (block.type === 'image') {
|
|
38
|
-
blocks.push({ type: 'json', label: 'image', data: block });
|
|
39
|
-
} else {
|
|
40
|
-
blocks.push({ type: 'json', label: block.type || 'block', data: block });
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return blocks;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return [{ type: 'json', label: 'content', data: content }];
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function parseResultContent(content) {
|
|
50
|
-
if (content == null) return [];
|
|
51
|
-
if (typeof content === 'string') {
|
|
52
|
-
const trimmed = content.trim();
|
|
53
|
-
return trimmed ? [{ type: 'markdown', text: trimmed }] : [];
|
|
54
|
-
}
|
|
55
|
-
if (Array.isArray(content)) {
|
|
56
|
-
return content.flatMap((c) => {
|
|
57
|
-
if (!c) return [];
|
|
58
|
-
if (c.type === 'text') {
|
|
59
|
-
const trimmed = (c.text || '').trim();
|
|
60
|
-
return trimmed ? [{ type: 'markdown', text: trimmed }] : [];
|
|
61
|
-
}
|
|
62
|
-
return [{ type: 'json', label: c.type || 'block', data: c }];
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
return [{ type: 'json', label: 'content', data: content }];
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
export function extractPreviewText(content) {
|
|
69
|
-
if (typeof content === 'string') return content.slice(0, 60).replace(/\n/g, ' ');
|
|
70
|
-
if (Array.isArray(content)) {
|
|
71
|
-
for (const block of content) {
|
|
72
|
-
if (block?.type === 'text' && block.text?.trim()) {
|
|
73
|
-
return block.text.trim().slice(0, 60).replace(/\n/g, ' ');
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return '';
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
// 注意:非 user 开头的消息(首条 assistant、连续 assistant 等)不进任何 turn,
|
|
81
|
-
// 「原文」视图与解析视图同口径,同样不展示这些消息。
|
|
82
|
-
// Mid-conversation `role:"system"` messages (mid-conversation-system beta) may sit
|
|
83
|
-
// between the user message and its assistant reply; they are folded into the turn
|
|
84
|
-
// (systemBlocks/rawSystem) so the assistant pairing is not broken. Only messages
|
|
85
|
-
// with role === 'system' are skipped when locating the paired assistant — any
|
|
86
|
-
// other unknown role still ends the turn, matching the old strict-adjacency rule.
|
|
87
|
-
export function groupMessagesIntoTurns(messages) {
|
|
88
|
-
const turns = [];
|
|
89
|
-
let i = 0;
|
|
90
|
-
while (i < messages.length) {
|
|
91
|
-
const userMsg = messages[i];
|
|
92
|
-
if (userMsg?.role !== 'user') { i++; continue; }
|
|
93
|
-
let j = i + 1;
|
|
94
|
-
const systemMsgs = [];
|
|
95
|
-
while (messages[j]?.role === 'system') { systemMsgs.push(messages[j]); j++; }
|
|
96
|
-
const assistantMsg = messages[j]?.role === 'assistant' ? messages[j] : null;
|
|
97
|
-
turns.push({
|
|
98
|
-
id: `turn__${i}`,
|
|
99
|
-
isTurn: true,
|
|
100
|
-
turnIndex: turns.length,
|
|
101
|
-
timestamp: userMsg._timestamp || null,
|
|
102
|
-
assistantTimestamp: assistantMsg?._timestamp || null,
|
|
103
|
-
userBlocks: parseContentBlocks(userMsg?.content),
|
|
104
|
-
systemBlocks: systemMsgs.length
|
|
105
|
-
? systemMsgs.map((m) => ({ blocks: parseContentBlocks(m.content), timestamp: m._timestamp || null }))
|
|
106
|
-
: null,
|
|
107
|
-
assistantBlocks: assistantMsg ? parseContentBlocks(assistantMsg.content) : null,
|
|
108
|
-
// 原始消息引用:供「原文」视图无损输出(解析 blocks 是单向的,不可逆)
|
|
109
|
-
rawUser: userMsg,
|
|
110
|
-
rawSystem: systemMsgs.length ? systemMsgs : null,
|
|
111
|
-
rawAssistant: assistantMsg,
|
|
112
|
-
preview: extractPreviewText(userMsg?.content),
|
|
113
|
-
});
|
|
114
|
-
i = assistantMsg ? j + 1 : i + 1;
|
|
115
|
-
}
|
|
116
|
-
return turns;
|
|
117
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Display-scale (整体显示大小 / Chrome 式缩放) 的纯计算工具。
|
|
3
|
-
* 无 DOM / React 依赖,便于单测。比例以「整数百分比」表示(100 = 原始大小)。
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
// 预设档位,贴近 Chrome 的缩放档位。
|
|
7
|
-
export const DISPLAY_SCALE_PRESETS = [50, 67, 75, 80, 90, 100, 110, 125, 150, 175, 200];
|
|
8
|
-
|
|
9
|
-
const MIN_SCALE = DISPLAY_SCALE_PRESETS[0];
|
|
10
|
-
const MAX_SCALE = DISPLAY_SCALE_PRESETS[DISPLAY_SCALE_PRESETS.length - 1];
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* 把任意输入(可能来自手改 preferences.json / 旧数据)夹到 [50,200] 并吸附到最近的预设档位。
|
|
14
|
-
* 平局时取较大档位。非法输入回退到 100。
|
|
15
|
-
* @param {number|string} pct
|
|
16
|
-
* @returns {number} 一个合法的预设值
|
|
17
|
-
*/
|
|
18
|
-
export function snapToPreset(pct) {
|
|
19
|
-
const n = Number(pct);
|
|
20
|
-
if (!Number.isFinite(n)) return 100;
|
|
21
|
-
const clamped = Math.max(MIN_SCALE, Math.min(MAX_SCALE, n));
|
|
22
|
-
let best = DISPLAY_SCALE_PRESETS[0];
|
|
23
|
-
let bestDist = Infinity;
|
|
24
|
-
for (const p of DISPLAY_SCALE_PRESETS) {
|
|
25
|
-
const d = Math.abs(p - clamped);
|
|
26
|
-
// `<=` 让平局时取后出现(更大)的档位
|
|
27
|
-
if (d <= bestDist) {
|
|
28
|
-
bestDist = d;
|
|
29
|
-
best = p;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
return best;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* 在预设档位上前进/后退一格(用于 Cmd/Ctrl +/- 快捷键)。
|
|
37
|
-
* 先把当前值吸附到档位,再按方向移动一格,两端夹紧。
|
|
38
|
-
* @param {number|string} current 当前比例
|
|
39
|
-
* @param {number} dir +1 放大 / -1 缩小
|
|
40
|
-
* @returns {number} 新的预设值
|
|
41
|
-
*/
|
|
42
|
-
export function stepPreset(current, dir) {
|
|
43
|
-
const snapped = snapToPreset(current);
|
|
44
|
-
const idx = DISPLAY_SCALE_PRESETS.indexOf(snapped);
|
|
45
|
-
const nextIdx = Math.max(0, Math.min(DISPLAY_SCALE_PRESETS.length - 1, idx + Math.sign(dir)));
|
|
46
|
-
return DISPLAY_SCALE_PRESETS[nextIdx];
|
|
47
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// Extracted from helpers.js so pure session modules (sessionMerge/sessionManager) and node:test
|
|
2
|
-
// can import it without pulling helpers' Vite-only svg imports; helpers.js re-exports it to keep
|
|
3
|
-
// existing import paths unchanged (same pattern as autoApproveOptions.js).
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Resolve the effective model name for a log request entry, preferring the
|
|
7
|
-
* server-reported model in `response.body.model` (authoritative under proxy
|
|
8
|
-
* hot-switch) over the client-supplied `body.model`. Returns null when both
|
|
9
|
-
* are missing — callers should fall back to a sensible default.
|
|
10
|
-
*
|
|
11
|
-
* KEEP IN SYNC: server/lib/context-watcher.js getContextSizeForModel reuses
|
|
12
|
-
* this precedence for its entry path — changing the priority here must be
|
|
13
|
-
* mirrored there (and vice versa).
|
|
14
|
-
*/
|
|
15
|
-
export function getEffectiveModel(request) {
|
|
16
|
-
return request?.response?.body?.model || request?.body?.model || null;
|
|
17
|
-
}
|