cowork-os 0.3.21 → 0.3.25
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 +372 -10
- package/connectors/README.md +20 -0
- package/connectors/asana-mcp/README.md +24 -0
- package/connectors/asana-mcp/dist/index.js +427 -0
- package/connectors/asana-mcp/package.json +15 -0
- package/connectors/asana-mcp/src/index.ts +553 -0
- package/connectors/asana-mcp/tsconfig.json +13 -0
- package/connectors/hubspot-mcp/README.md +35 -0
- package/connectors/hubspot-mcp/dist/index.js +454 -0
- package/connectors/hubspot-mcp/package.json +15 -0
- package/connectors/hubspot-mcp/src/index.ts +562 -0
- package/connectors/hubspot-mcp/tsconfig.json +13 -0
- package/connectors/jira-mcp/README.md +49 -0
- package/connectors/jira-mcp/dist/index.js +588 -0
- package/connectors/jira-mcp/package.json +15 -0
- package/connectors/jira-mcp/src/index.ts +711 -0
- package/connectors/jira-mcp/tsconfig.json +13 -0
- package/connectors/linear-mcp/README.md +22 -0
- package/connectors/linear-mcp/dist/index.js +402 -0
- package/connectors/linear-mcp/package.json +15 -0
- package/connectors/linear-mcp/src/index.ts +522 -0
- package/connectors/linear-mcp/tsconfig.json +13 -0
- package/connectors/okta-mcp/README.md +24 -0
- package/connectors/okta-mcp/dist/index.js +411 -0
- package/connectors/okta-mcp/package.json +15 -0
- package/connectors/okta-mcp/src/index.ts +520 -0
- package/connectors/okta-mcp/tsconfig.json +13 -0
- package/connectors/salesforce-mcp/README.md +47 -0
- package/connectors/salesforce-mcp/dist/index.js +584 -0
- package/connectors/salesforce-mcp/package.json +15 -0
- package/connectors/salesforce-mcp/src/index.ts +722 -0
- package/connectors/salesforce-mcp/tsconfig.json +13 -0
- package/connectors/servicenow-mcp/README.md +26 -0
- package/connectors/servicenow-mcp/dist/index.js +400 -0
- package/connectors/servicenow-mcp/package.json +15 -0
- package/connectors/servicenow-mcp/src/index.ts +500 -0
- package/connectors/servicenow-mcp/tsconfig.json +13 -0
- package/connectors/templates/mcp-connector/README.md +31 -0
- package/connectors/templates/mcp-connector/package.json +15 -0
- package/connectors/templates/mcp-connector/src/index.ts +330 -0
- package/connectors/templates/mcp-connector/tsconfig.json +13 -0
- package/connectors/zendesk-mcp/README.md +40 -0
- package/connectors/zendesk-mcp/dist/index.js +431 -0
- package/connectors/zendesk-mcp/package.json +15 -0
- package/connectors/zendesk-mcp/src/index.ts +543 -0
- package/connectors/zendesk-mcp/tsconfig.json +13 -0
- package/dist/electron/electron/agent/custom-skill-loader.js +31 -1
- package/dist/electron/electron/agent/daemon.js +189 -13
- package/dist/electron/electron/agent/executor.js +895 -78
- package/dist/electron/electron/agent/llm/anthropic-compatible-provider.js +177 -0
- package/dist/electron/electron/agent/llm/azure-openai-provider.js +328 -0
- package/dist/electron/electron/agent/llm/bedrock-provider.js +49 -9
- package/dist/electron/electron/agent/llm/github-copilot-provider.js +97 -0
- package/dist/electron/electron/agent/llm/groq-provider.js +33 -0
- package/dist/electron/electron/agent/llm/index.js +13 -1
- package/dist/electron/electron/agent/llm/kimi-provider.js +33 -0
- package/dist/electron/electron/agent/llm/openai-compatible-provider.js +116 -0
- package/dist/electron/electron/agent/llm/openai-compatible.js +111 -0
- package/dist/electron/electron/agent/llm/openai-oauth.js +2 -1
- package/dist/electron/electron/agent/llm/openrouter-provider.js +1 -1
- package/dist/electron/electron/agent/llm/provider-factory.js +350 -4
- package/dist/electron/electron/agent/llm/types.js +66 -1
- package/dist/electron/electron/agent/llm/xai-provider.js +33 -0
- package/dist/electron/electron/agent/search/provider-factory.js +38 -2
- package/dist/electron/electron/agent/tools/box-tools.js +231 -0
- package/dist/electron/electron/agent/tools/builtin-settings.js +28 -0
- package/dist/electron/electron/agent/tools/dropbox-tools.js +237 -0
- package/dist/electron/electron/agent/tools/file-tools.js +66 -3
- package/dist/electron/electron/agent/tools/google-drive-tools.js +227 -0
- package/dist/electron/electron/agent/tools/grep-tools.js +90 -10
- package/dist/electron/electron/agent/tools/image-tools.js +11 -1
- package/dist/electron/electron/agent/tools/notion-tools.js +312 -0
- package/dist/electron/electron/agent/tools/onedrive-tools.js +217 -0
- package/dist/electron/electron/agent/tools/registry.js +548 -10
- package/dist/electron/electron/agent/tools/search-tools.js +28 -10
- package/dist/electron/electron/agent/tools/sharepoint-tools.js +243 -0
- package/dist/electron/electron/agent/tools/shell-tools.js +12 -3
- package/dist/electron/electron/agent/tools/x-tools.js +1 -1
- package/dist/electron/electron/agents/agent-dispatch.js +63 -0
- package/dist/electron/electron/database/repositories.js +19 -5
- package/dist/electron/electron/database/schema.js +8 -0
- package/dist/electron/electron/gateway/channels/whatsapp.js +55 -0
- package/dist/electron/electron/gateway/index.js +75 -1
- package/dist/electron/electron/gateway/router.js +209 -154
- package/dist/electron/electron/ipc/canvas-handlers.js +5 -0
- package/dist/electron/electron/ipc/handlers.js +763 -267
- package/dist/electron/electron/main.js +63 -0
- package/dist/electron/electron/mcp/oauth/connector-oauth.js +333 -0
- package/dist/electron/electron/mcp/registry/MCPRegistryManager.js +503 -154
- package/dist/electron/electron/memory/MemoryService.js +2 -1
- package/dist/electron/electron/preload.js +78 -1
- package/dist/electron/electron/settings/appearance-manager.js +18 -1
- package/dist/electron/electron/settings/box-manager.js +54 -0
- package/dist/electron/electron/settings/dropbox-manager.js +54 -0
- package/dist/electron/electron/settings/google-drive-manager.js +54 -0
- package/dist/electron/electron/settings/notion-manager.js +56 -0
- package/dist/electron/electron/settings/onedrive-manager.js +54 -0
- package/dist/electron/electron/settings/sharepoint-manager.js +54 -0
- package/dist/electron/electron/utils/box-api.js +153 -0
- package/dist/electron/electron/utils/dropbox-api.js +144 -0
- package/dist/electron/electron/utils/env-migration.js +19 -0
- package/dist/electron/electron/utils/google-drive-api.js +152 -0
- package/dist/electron/electron/utils/notion-api.js +103 -0
- package/dist/electron/electron/utils/onedrive-api.js +113 -0
- package/dist/electron/electron/utils/sharepoint-api.js +109 -0
- package/dist/electron/electron/utils/validation.js +98 -3
- package/dist/electron/electron/utils/x-cli.js +1 -1
- package/dist/electron/shared/channelMessages.js +284 -3
- package/dist/electron/shared/llm-provider-catalog.js +198 -0
- package/dist/electron/shared/types.js +90 -1
- package/package.json +14 -3
- package/resources/skills/nano-banana-pro.json +4 -4
- package/resources/skills/openai-image-gen.json +3 -3
- package/resources/skills/scripts/gen.py +163 -0
- package/resources/skills/scripts/generate_image.py +91 -0
- package/src/electron/agent/custom-skill-loader.ts +34 -1
- package/src/electron/agent/daemon.ts +210 -14
- package/src/electron/agent/executor.ts +1124 -85
- package/src/electron/agent/llm/anthropic-compatible-provider.ts +214 -0
- package/src/electron/agent/llm/azure-openai-provider.ts +388 -0
- package/src/electron/agent/llm/bedrock-provider.ts +62 -9
- package/src/electron/agent/llm/github-copilot-provider.ts +117 -0
- package/src/electron/agent/llm/groq-provider.ts +39 -0
- package/src/electron/agent/llm/index.ts +6 -0
- package/src/electron/agent/llm/kimi-provider.ts +39 -0
- package/src/electron/agent/llm/openai-compatible-provider.ts +153 -0
- package/src/electron/agent/llm/openai-compatible.ts +133 -0
- package/src/electron/agent/llm/openai-oauth.ts +2 -1
- package/src/electron/agent/llm/openrouter-provider.ts +2 -1
- package/src/electron/agent/llm/provider-factory.ts +459 -6
- package/src/electron/agent/llm/types.ts +95 -1
- package/src/electron/agent/llm/xai-provider.ts +39 -0
- package/src/electron/agent/search/provider-factory.ts +43 -2
- package/src/electron/agent/tools/box-tools.ts +239 -0
- package/src/electron/agent/tools/builtin-settings.ts +36 -0
- package/src/electron/agent/tools/dropbox-tools.ts +237 -0
- package/src/electron/agent/tools/file-tools.ts +66 -3
- package/src/electron/agent/tools/gmail-tools.ts +240 -0
- package/src/electron/agent/tools/google-calendar-tools.ts +258 -0
- package/src/electron/agent/tools/google-drive-tools.ts +228 -0
- package/src/electron/agent/tools/grep-tools.ts +97 -12
- package/src/electron/agent/tools/image-tools.ts +11 -1
- package/src/electron/agent/tools/notion-tools.ts +330 -0
- package/src/electron/agent/tools/onedrive-tools.ts +217 -0
- package/src/electron/agent/tools/registry.ts +794 -10
- package/src/electron/agent/tools/search-tools.ts +29 -11
- package/src/electron/agent/tools/sharepoint-tools.ts +247 -0
- package/src/electron/agent/tools/shell-tools.ts +11 -3
- package/src/electron/agent/tools/x-tools.ts +1 -1
- package/src/electron/agents/agent-dispatch.ts +79 -0
- package/src/electron/database/SecureSettingsRepository.ts +7 -1
- package/src/electron/database/repositories.ts +58 -6
- package/src/electron/database/schema.ts +8 -0
- package/src/electron/gateway/channels/discord.ts +4 -0
- package/src/electron/gateway/channels/google-chat.ts +3 -0
- package/src/electron/gateway/channels/line.ts +3 -0
- package/src/electron/gateway/channels/matrix-client.ts +15 -0
- package/src/electron/gateway/channels/matrix.ts +31 -0
- package/src/electron/gateway/channels/mattermost.ts +3 -0
- package/src/electron/gateway/channels/signal.ts +3 -0
- package/src/electron/gateway/channels/slack.ts +9 -4
- package/src/electron/gateway/channels/teams.ts +4 -0
- package/src/electron/gateway/channels/telegram.ts +2 -0
- package/src/electron/gateway/channels/twitch.ts +2 -0
- package/src/electron/gateway/channels/types.ts +8 -0
- package/src/electron/gateway/channels/whatsapp.ts +66 -0
- package/src/electron/gateway/index.ts +95 -2
- package/src/electron/gateway/router.ts +231 -161
- package/src/electron/gateway/security.ts +21 -9
- package/src/electron/ipc/canvas-handlers.ts +10 -0
- package/src/electron/ipc/handlers.ts +848 -292
- package/src/electron/main.ts +35 -0
- package/src/electron/mcp/oauth/connector-oauth.ts +448 -0
- package/src/electron/mcp/registry/MCPRegistryManager.ts +343 -12
- package/src/electron/memory/MemoryService.ts +7 -1
- package/src/electron/preload.ts +200 -5
- package/src/electron/settings/appearance-manager.ts +20 -2
- package/src/electron/settings/box-manager.ts +58 -0
- package/src/electron/settings/dropbox-manager.ts +58 -0
- package/src/electron/settings/google-workspace-manager.ts +59 -0
- package/src/electron/settings/notion-manager.ts +60 -0
- package/src/electron/settings/onedrive-manager.ts +58 -0
- package/src/electron/settings/sharepoint-manager.ts +58 -0
- package/src/electron/utils/box-api.ts +184 -0
- package/src/electron/utils/dropbox-api.ts +171 -0
- package/src/electron/utils/env-migration.ts +22 -0
- package/src/electron/utils/gmail-api.ts +121 -0
- package/src/electron/utils/google-calendar-api.ts +115 -0
- package/src/electron/utils/google-workspace-api.ts +228 -0
- package/src/electron/utils/google-workspace-auth.ts +109 -0
- package/src/electron/utils/google-workspace-oauth.ts +232 -0
- package/src/electron/utils/notion-api.ts +126 -0
- package/src/electron/utils/onedrive-api.ts +137 -0
- package/src/electron/utils/sharepoint-api.ts +132 -0
- package/src/electron/utils/validation.ts +128 -1
- package/src/electron/utils/x-cli.ts +1 -1
- package/src/renderer/App.tsx +119 -8
- package/src/renderer/components/ActivityFeedItem.tsx +34 -17
- package/src/renderer/components/AgentWorkingStatePanel.tsx +7 -5
- package/src/renderer/components/AppearanceSettings.tsx +37 -2
- package/src/renderer/components/BlueBubblesSettings.tsx +18 -7
- package/src/renderer/components/BoxSettings.tsx +203 -0
- package/src/renderer/components/BrowserView.tsx +101 -0
- package/src/renderer/components/BuiltinToolsSettings.tsx +105 -0
- package/src/renderer/components/CanvasPreview.tsx +68 -1
- package/src/renderer/components/ConnectorEnvModal.tsx +116 -0
- package/src/renderer/components/ConnectorSetupModal.tsx +566 -0
- package/src/renderer/components/ConnectorsSettings.tsx +397 -0
- package/src/renderer/components/ControlPlaneSettings.tsx +2 -0
- package/src/renderer/components/DiscordSettings.tsx +18 -7
- package/src/renderer/components/DropboxSettings.tsx +202 -0
- package/src/renderer/components/EmailSettings.tsx +18 -7
- package/src/renderer/components/FileViewer.tsx +21 -13
- package/src/renderer/components/GoogleChatSettings.tsx +17 -7
- package/src/renderer/components/GoogleWorkspaceSettings.tsx +332 -0
- package/src/renderer/components/ImessageSettings.tsx +22 -11
- package/src/renderer/components/LineIcons.tsx +376 -0
- package/src/renderer/components/LineSettings.tsx +18 -7
- package/src/renderer/components/MCPSettings.tsx +56 -0
- package/src/renderer/components/MainContent.tsx +740 -76
- package/src/renderer/components/MatrixSettings.tsx +18 -7
- package/src/renderer/components/MattermostSettings.tsx +18 -7
- package/src/renderer/components/NodesSettings.tsx +58 -99
- package/src/renderer/components/NotificationPanel.tsx +25 -11
- package/src/renderer/components/NotionSettings.tsx +231 -0
- package/src/renderer/components/Onboarding/Onboarding.tsx +13 -1
- package/src/renderer/components/OnboardingModal.tsx +70 -1
- package/src/renderer/components/OneDriveSettings.tsx +212 -0
- package/src/renderer/components/RightPanel.tsx +141 -28
- package/src/renderer/components/ScheduledTasksSettings.tsx +10 -62
- package/src/renderer/components/SearchSettings.tsx +118 -114
- package/src/renderer/components/Settings.tsx +1425 -651
- package/src/renderer/components/SharePointSettings.tsx +224 -0
- package/src/renderer/components/Sidebar.tsx +94 -19
- package/src/renderer/components/SignalSettings.tsx +18 -7
- package/src/renderer/components/SkillHubBrowser.tsx +144 -185
- package/src/renderer/components/SlackSettings.tsx +18 -7
- package/src/renderer/components/TaskQuickActions.tsx +11 -6
- package/src/renderer/components/TaskTimeline.tsx +58 -26
- package/src/renderer/components/TeamsSettings.tsx +18 -7
- package/src/renderer/components/TelegramSettings.tsx +18 -7
- package/src/renderer/components/ThemeIcon.tsx +16 -0
- package/src/renderer/components/TwitchSettings.tsx +18 -7
- package/src/renderer/components/VoiceSettings.tsx +30 -74
- package/src/renderer/components/WhatsAppSettings.tsx +48 -37
- package/src/renderer/components/WorkingStateHistory.tsx +7 -5
- package/src/renderer/components/WorkspaceSelector.tsx +42 -13
- package/src/renderer/hooks/useOnboardingFlow.ts +21 -0
- package/src/renderer/styles/index.css +2333 -209
- package/src/shared/channelMessages.ts +367 -4
- package/src/shared/llm-provider-catalog.ts +217 -0
- package/src/shared/types.ts +251 -2
|
@@ -276,7 +276,8 @@ class MemoryService {
|
|
|
276
276
|
// Get LLM provider for compression
|
|
277
277
|
const provider = llm_1.LLMProviderFactory.createProvider();
|
|
278
278
|
const settings = llm_1.LLMProviderFactory.getSettings();
|
|
279
|
-
const
|
|
279
|
+
const azureDeployment = settings.azure?.deployment || settings.azure?.deployments?.[0];
|
|
280
|
+
const modelId = llm_1.LLMProviderFactory.getModelId(settings.modelKey, settings.providerType, settings.ollama?.model, settings.gemini?.model, settings.openrouter?.model, settings.openai?.model, azureDeployment, settings.groq?.model, settings.xai?.model, settings.kimi?.model, settings.customProviders);
|
|
280
281
|
const response = await provider.createMessage({
|
|
281
282
|
model: modelId,
|
|
282
283
|
maxTokens: 100,
|
|
@@ -20,6 +20,7 @@ const IPC_CHANNELS = {
|
|
|
20
20
|
WORKSPACE_LIST: 'workspace:list',
|
|
21
21
|
WORKSPACE_CREATE: 'workspace:create',
|
|
22
22
|
WORKSPACE_UPDATE_PERMISSIONS: 'workspace:updatePermissions',
|
|
23
|
+
WORKSPACE_TOUCH: 'workspace:touch',
|
|
23
24
|
WORKSPACE_GET_TEMP: 'workspace:getTemp',
|
|
24
25
|
APPROVAL_RESPOND: 'approval:respond',
|
|
25
26
|
ARTIFACT_LIST: 'artifact:list',
|
|
@@ -36,6 +37,9 @@ const IPC_CHANNELS = {
|
|
|
36
37
|
LLM_GET_GEMINI_MODELS: 'llm:getGeminiModels',
|
|
37
38
|
LLM_GET_OPENROUTER_MODELS: 'llm:getOpenRouterModels',
|
|
38
39
|
LLM_GET_OPENAI_MODELS: 'llm:getOpenAIModels',
|
|
40
|
+
LLM_GET_GROQ_MODELS: 'llm:getGroqModels',
|
|
41
|
+
LLM_GET_XAI_MODELS: 'llm:getXAIModels',
|
|
42
|
+
LLM_GET_KIMI_MODELS: 'llm:getKimiModels',
|
|
39
43
|
LLM_OPENAI_OAUTH_START: 'llm:openaiOAuthStart',
|
|
40
44
|
LLM_OPENAI_OAUTH_LOGOUT: 'llm:openaiOAuthLogout',
|
|
41
45
|
LLM_GET_BEDROCK_MODELS: 'llm:getBedrockModels',
|
|
@@ -61,6 +65,36 @@ const IPC_CHANNELS = {
|
|
|
61
65
|
X_SAVE_SETTINGS: 'x:saveSettings',
|
|
62
66
|
X_TEST_CONNECTION: 'x:testConnection',
|
|
63
67
|
X_GET_STATUS: 'x:getStatus',
|
|
68
|
+
// Notion Settings
|
|
69
|
+
NOTION_GET_SETTINGS: 'notion:getSettings',
|
|
70
|
+
NOTION_SAVE_SETTINGS: 'notion:saveSettings',
|
|
71
|
+
NOTION_TEST_CONNECTION: 'notion:testConnection',
|
|
72
|
+
NOTION_GET_STATUS: 'notion:getStatus',
|
|
73
|
+
// Box Settings
|
|
74
|
+
BOX_GET_SETTINGS: 'box:getSettings',
|
|
75
|
+
BOX_SAVE_SETTINGS: 'box:saveSettings',
|
|
76
|
+
BOX_TEST_CONNECTION: 'box:testConnection',
|
|
77
|
+
BOX_GET_STATUS: 'box:getStatus',
|
|
78
|
+
// OneDrive Settings
|
|
79
|
+
ONEDRIVE_GET_SETTINGS: 'onedrive:getSettings',
|
|
80
|
+
ONEDRIVE_SAVE_SETTINGS: 'onedrive:saveSettings',
|
|
81
|
+
ONEDRIVE_TEST_CONNECTION: 'onedrive:testConnection',
|
|
82
|
+
ONEDRIVE_GET_STATUS: 'onedrive:getStatus',
|
|
83
|
+
// Google Drive Settings
|
|
84
|
+
GOOGLE_DRIVE_GET_SETTINGS: 'googleDrive:getSettings',
|
|
85
|
+
GOOGLE_DRIVE_SAVE_SETTINGS: 'googleDrive:saveSettings',
|
|
86
|
+
GOOGLE_DRIVE_TEST_CONNECTION: 'googleDrive:testConnection',
|
|
87
|
+
GOOGLE_DRIVE_GET_STATUS: 'googleDrive:getStatus',
|
|
88
|
+
// Dropbox Settings
|
|
89
|
+
DROPBOX_GET_SETTINGS: 'dropbox:getSettings',
|
|
90
|
+
DROPBOX_SAVE_SETTINGS: 'dropbox:saveSettings',
|
|
91
|
+
DROPBOX_TEST_CONNECTION: 'dropbox:testConnection',
|
|
92
|
+
DROPBOX_GET_STATUS: 'dropbox:getStatus',
|
|
93
|
+
// SharePoint Settings
|
|
94
|
+
SHAREPOINT_GET_SETTINGS: 'sharepoint:getSettings',
|
|
95
|
+
SHAREPOINT_SAVE_SETTINGS: 'sharepoint:saveSettings',
|
|
96
|
+
SHAREPOINT_TEST_CONNECTION: 'sharepoint:testConnection',
|
|
97
|
+
SHAREPOINT_GET_STATUS: 'sharepoint:getStatus',
|
|
64
98
|
// App Updates
|
|
65
99
|
APP_CHECK_UPDATES: 'app:checkUpdates',
|
|
66
100
|
APP_DOWNLOAD_UPDATE: 'app:downloadUpdate',
|
|
@@ -128,6 +162,7 @@ const IPC_CHANNELS = {
|
|
|
128
162
|
MCP_GET_SERVER_TOOLS: 'mcp:getServerTools',
|
|
129
163
|
MCP_TEST_SERVER: 'mcp:testServer',
|
|
130
164
|
MCP_SERVER_STATUS_CHANGE: 'mcp:serverStatusChange',
|
|
165
|
+
MCP_CONNECTOR_OAUTH_START: 'mcp:connectorOAuthStart',
|
|
131
166
|
// MCP Registry
|
|
132
167
|
MCP_REGISTRY_FETCH: 'mcp:registryFetch',
|
|
133
168
|
MCP_REGISTRY_SEARCH: 'mcp:registrySearch',
|
|
@@ -229,6 +264,7 @@ const IPC_CHANNELS = {
|
|
|
229
264
|
CANVAS_EXPORT_HTML: 'canvas:exportHTML',
|
|
230
265
|
CANVAS_EXPORT_TO_FOLDER: 'canvas:exportToFolder',
|
|
231
266
|
CANVAS_OPEN_IN_BROWSER: 'canvas:openInBrowser',
|
|
267
|
+
CANVAS_OPEN_URL: 'canvas:openUrl',
|
|
232
268
|
CANVAS_GET_SESSION_DIR: 'canvas:getSessionDir',
|
|
233
269
|
// Mobile Companion Nodes
|
|
234
270
|
NODE_LIST: 'node:list',
|
|
@@ -351,10 +387,13 @@ const IPC_CHANNELS = {
|
|
|
351
387
|
electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
352
388
|
// Dialog APIs
|
|
353
389
|
selectFolder: () => electron_1.ipcRenderer.invoke('dialog:selectFolder'),
|
|
390
|
+
selectFiles: () => electron_1.ipcRenderer.invoke('dialog:selectFiles'),
|
|
354
391
|
// File APIs
|
|
355
392
|
openFile: (filePath, workspacePath) => electron_1.ipcRenderer.invoke('file:open', filePath, workspacePath),
|
|
356
393
|
showInFinder: (filePath, workspacePath) => electron_1.ipcRenderer.invoke('file:showInFinder', filePath, workspacePath),
|
|
357
394
|
readFileForViewer: (filePath, workspacePath) => electron_1.ipcRenderer.invoke('file:readForViewer', { filePath, workspacePath }),
|
|
395
|
+
importFilesToWorkspace: (data) => electron_1.ipcRenderer.invoke('file:importToWorkspace', data),
|
|
396
|
+
importDataToWorkspace: (data) => electron_1.ipcRenderer.invoke('file:importDataToWorkspace', data),
|
|
358
397
|
// Shell APIs
|
|
359
398
|
openExternal: (url) => electron_1.ipcRenderer.invoke('shell:openExternal', url),
|
|
360
399
|
// Task APIs
|
|
@@ -383,6 +422,7 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
383
422
|
listWorkspaces: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.WORKSPACE_LIST),
|
|
384
423
|
selectWorkspace: (id) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.WORKSPACE_SELECT, id),
|
|
385
424
|
getTempWorkspace: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.WORKSPACE_GET_TEMP),
|
|
425
|
+
touchWorkspace: (id) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.WORKSPACE_TOUCH, id),
|
|
386
426
|
updateWorkspacePermissions: (id, permissions) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.WORKSPACE_UPDATE_PERMISSIONS, id, permissions),
|
|
387
427
|
// Approval APIs
|
|
388
428
|
respondToApproval: (data) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.APPROVAL_RESPOND, data),
|
|
@@ -401,8 +441,11 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
401
441
|
setLLMModel: (modelKey) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_SET_MODEL, modelKey),
|
|
402
442
|
getOllamaModels: (baseUrl) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_OLLAMA_MODELS, baseUrl),
|
|
403
443
|
getGeminiModels: (apiKey) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_GEMINI_MODELS, apiKey),
|
|
404
|
-
getOpenRouterModels: (apiKey) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_OPENROUTER_MODELS, apiKey),
|
|
444
|
+
getOpenRouterModels: (apiKey, baseUrl) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_OPENROUTER_MODELS, apiKey, baseUrl),
|
|
405
445
|
getOpenAIModels: (apiKey) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_OPENAI_MODELS, apiKey),
|
|
446
|
+
getGroqModels: (apiKey, baseUrl) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_GROQ_MODELS, apiKey, baseUrl),
|
|
447
|
+
getXAIModels: (apiKey, baseUrl) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_XAI_MODELS, apiKey, baseUrl),
|
|
448
|
+
getKimiModels: (apiKey, baseUrl) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_KIMI_MODELS, apiKey, baseUrl),
|
|
406
449
|
openaiOAuthStart: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_OPENAI_OAUTH_START),
|
|
407
450
|
openaiOAuthLogout: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_OPENAI_OAUTH_LOGOUT),
|
|
408
451
|
getBedrockModels: (config) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.LLM_GET_BEDROCK_MODELS, config),
|
|
@@ -447,6 +490,36 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
447
490
|
saveXSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.X_SAVE_SETTINGS, settings),
|
|
448
491
|
testXConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.X_TEST_CONNECTION),
|
|
449
492
|
getXStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.X_GET_STATUS),
|
|
493
|
+
// Notion Settings APIs
|
|
494
|
+
getNotionSettings: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTION_GET_SETTINGS),
|
|
495
|
+
saveNotionSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTION_SAVE_SETTINGS, settings),
|
|
496
|
+
testNotionConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTION_TEST_CONNECTION),
|
|
497
|
+
getNotionStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTION_GET_STATUS),
|
|
498
|
+
// Box Settings APIs
|
|
499
|
+
getBoxSettings: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.BOX_GET_SETTINGS),
|
|
500
|
+
saveBoxSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.BOX_SAVE_SETTINGS, settings),
|
|
501
|
+
testBoxConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.BOX_TEST_CONNECTION),
|
|
502
|
+
getBoxStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.BOX_GET_STATUS),
|
|
503
|
+
// OneDrive Settings APIs
|
|
504
|
+
getOneDriveSettings: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.ONEDRIVE_GET_SETTINGS),
|
|
505
|
+
saveOneDriveSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.ONEDRIVE_SAVE_SETTINGS, settings),
|
|
506
|
+
testOneDriveConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.ONEDRIVE_TEST_CONNECTION),
|
|
507
|
+
getOneDriveStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.ONEDRIVE_GET_STATUS),
|
|
508
|
+
// Google Drive Settings APIs
|
|
509
|
+
getGoogleDriveSettings: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.GOOGLE_DRIVE_GET_SETTINGS),
|
|
510
|
+
saveGoogleDriveSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.GOOGLE_DRIVE_SAVE_SETTINGS, settings),
|
|
511
|
+
testGoogleDriveConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.GOOGLE_DRIVE_TEST_CONNECTION),
|
|
512
|
+
getGoogleDriveStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.GOOGLE_DRIVE_GET_STATUS),
|
|
513
|
+
// Dropbox Settings APIs
|
|
514
|
+
getDropboxSettings: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.DROPBOX_GET_SETTINGS),
|
|
515
|
+
saveDropboxSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.DROPBOX_SAVE_SETTINGS, settings),
|
|
516
|
+
testDropboxConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.DROPBOX_TEST_CONNECTION),
|
|
517
|
+
getDropboxStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.DROPBOX_GET_STATUS),
|
|
518
|
+
// SharePoint Settings APIs
|
|
519
|
+
getSharePointSettings: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.SHAREPOINT_GET_SETTINGS),
|
|
520
|
+
saveSharePointSettings: (settings) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.SHAREPOINT_SAVE_SETTINGS, settings),
|
|
521
|
+
testSharePointConnection: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.SHAREPOINT_TEST_CONNECTION),
|
|
522
|
+
getSharePointStatus: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.SHAREPOINT_GET_STATUS),
|
|
450
523
|
// App Update APIs
|
|
451
524
|
getAppVersion: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.APP_GET_VERSION),
|
|
452
525
|
checkForUpdates: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.APP_CHECK_UPDATES),
|
|
@@ -533,6 +606,8 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
533
606
|
getMCPAllTools: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.MCP_GET_ALL_TOOLS),
|
|
534
607
|
getMCPServerTools: (serverId) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.MCP_GET_SERVER_TOOLS, serverId),
|
|
535
608
|
testMCPServer: (serverId) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.MCP_TEST_SERVER, serverId),
|
|
609
|
+
// MCP Connector OAuth
|
|
610
|
+
startConnectorOAuth: (payload) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.MCP_CONNECTOR_OAUTH_START, payload),
|
|
536
611
|
// MCP Status change event listener
|
|
537
612
|
onMCPStatusChange: (callback) => {
|
|
538
613
|
const subscription = (_, data) => callback(data);
|
|
@@ -603,6 +678,7 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
603
678
|
getCronWebhookStatus: () => electron_1.ipcRenderer.invoke('cron:getWebhookStatus'),
|
|
604
679
|
// Notification APIs
|
|
605
680
|
listNotifications: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTIFICATION_LIST),
|
|
681
|
+
addNotification: (data) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTIFICATION_ADD, data),
|
|
606
682
|
getUnreadNotificationCount: () => electron_1.ipcRenderer.invoke('notification:unreadCount'),
|
|
607
683
|
markNotificationRead: (id) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTIFICATION_MARK_READ, id),
|
|
608
684
|
markAllNotificationsRead: () => electron_1.ipcRenderer.invoke(IPC_CHANNELS.NOTIFICATION_MARK_ALL_READ),
|
|
@@ -684,6 +760,7 @@ electron_1.contextBridge.exposeInMainWorld('electronAPI', {
|
|
|
684
760
|
canvasExportHTML: (sessionId) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.CANVAS_EXPORT_HTML, sessionId),
|
|
685
761
|
canvasExportToFolder: (data) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.CANVAS_EXPORT_TO_FOLDER, data),
|
|
686
762
|
canvasOpenInBrowser: (sessionId) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.CANVAS_OPEN_IN_BROWSER, sessionId),
|
|
763
|
+
canvasOpenUrl: (data) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.CANVAS_OPEN_URL, data),
|
|
687
764
|
canvasGetSessionDir: (sessionId) => electron_1.ipcRenderer.invoke(IPC_CHANNELS.CANVAS_GET_SESSION_DIR, sessionId),
|
|
688
765
|
onCanvasEvent: (callback) => {
|
|
689
766
|
const subscription = (_, data) => callback(data);
|
|
@@ -47,6 +47,7 @@ const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository
|
|
|
47
47
|
const LEGACY_SETTINGS_FILE = 'appearance-settings.json';
|
|
48
48
|
const DEFAULT_SETTINGS = {
|
|
49
49
|
themeMode: 'dark',
|
|
50
|
+
visualTheme: 'terminal',
|
|
50
51
|
accentColor: 'cyan',
|
|
51
52
|
disclaimerAccepted: false,
|
|
52
53
|
onboardingCompleted: false,
|
|
@@ -135,6 +136,13 @@ class AppearanceManager {
|
|
|
135
136
|
if (!isValidThemeMode(settings.themeMode)) {
|
|
136
137
|
settings.themeMode = DEFAULT_SETTINGS.themeMode;
|
|
137
138
|
}
|
|
139
|
+
if (!isValidVisualTheme(settings.visualTheme)) {
|
|
140
|
+
settings.visualTheme = DEFAULT_SETTINGS.visualTheme;
|
|
141
|
+
}
|
|
142
|
+
// Normalize deprecated 'oblivion' theme to 'warm'
|
|
143
|
+
if (settings.visualTheme === 'oblivion') {
|
|
144
|
+
settings.visualTheme = 'warm';
|
|
145
|
+
}
|
|
138
146
|
if (!isValidAccentColor(settings.accentColor)) {
|
|
139
147
|
settings.accentColor = DEFAULT_SETTINGS.accentColor;
|
|
140
148
|
}
|
|
@@ -157,8 +165,14 @@ class AppearanceManager {
|
|
|
157
165
|
// Load existing settings to preserve fields not being updated
|
|
158
166
|
const existingSettings = this.loadSettings();
|
|
159
167
|
// Validate and merge with existing settings
|
|
168
|
+
// Normalize deprecated 'oblivion' to 'warm' before saving
|
|
169
|
+
let normalizedVisualTheme = isValidVisualTheme(settings.visualTheme) ? settings.visualTheme : existingSettings.visualTheme;
|
|
170
|
+
if (normalizedVisualTheme === 'oblivion') {
|
|
171
|
+
normalizedVisualTheme = 'warm';
|
|
172
|
+
}
|
|
160
173
|
const validatedSettings = {
|
|
161
174
|
themeMode: isValidThemeMode(settings.themeMode) ? settings.themeMode : existingSettings.themeMode,
|
|
175
|
+
visualTheme: normalizedVisualTheme,
|
|
162
176
|
accentColor: isValidAccentColor(settings.accentColor) ? settings.accentColor : existingSettings.accentColor,
|
|
163
177
|
disclaimerAccepted: settings.disclaimerAccepted ?? existingSettings.disclaimerAccepted,
|
|
164
178
|
onboardingCompleted: settings.onboardingCompleted ?? existingSettings.onboardingCompleted,
|
|
@@ -187,7 +201,10 @@ AppearanceManager.migrationCompleted = false;
|
|
|
187
201
|
function isValidThemeMode(value) {
|
|
188
202
|
return value === 'light' || value === 'dark' || value === 'system';
|
|
189
203
|
}
|
|
204
|
+
function isValidVisualTheme(value) {
|
|
205
|
+
return value === 'terminal' || value === 'warm' || value === 'oblivion';
|
|
206
|
+
}
|
|
190
207
|
function isValidAccentColor(value) {
|
|
191
|
-
const validColors = ['cyan', 'blue', 'purple', 'pink', 'rose', 'orange', 'green', 'teal'];
|
|
208
|
+
const validColors = ['cyan', 'blue', 'purple', 'pink', 'rose', 'orange', 'green', 'teal', 'coral'];
|
|
192
209
|
return validColors.includes(value);
|
|
193
210
|
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Box Settings Manager
|
|
4
|
+
*
|
|
5
|
+
* Stores Box integration settings in encrypted database.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.BoxSettingsManager = void 0;
|
|
9
|
+
const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository");
|
|
10
|
+
const DEFAULT_SETTINGS = {
|
|
11
|
+
enabled: false,
|
|
12
|
+
timeoutMs: 20000,
|
|
13
|
+
};
|
|
14
|
+
class BoxSettingsManager {
|
|
15
|
+
static loadSettings() {
|
|
16
|
+
if (this.cachedSettings) {
|
|
17
|
+
return this.cachedSettings;
|
|
18
|
+
}
|
|
19
|
+
let settings = { ...DEFAULT_SETTINGS };
|
|
20
|
+
try {
|
|
21
|
+
if (SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
22
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
23
|
+
const stored = repository.load('box');
|
|
24
|
+
if (stored) {
|
|
25
|
+
settings = { ...DEFAULT_SETTINGS, ...stored };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('[BoxSettingsManager] Failed to load settings:', error);
|
|
31
|
+
}
|
|
32
|
+
this.cachedSettings = settings;
|
|
33
|
+
return settings;
|
|
34
|
+
}
|
|
35
|
+
static saveSettings(settings) {
|
|
36
|
+
try {
|
|
37
|
+
if (!SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
38
|
+
throw new Error('SecureSettingsRepository not initialized');
|
|
39
|
+
}
|
|
40
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
41
|
+
repository.save('box', settings);
|
|
42
|
+
this.cachedSettings = settings;
|
|
43
|
+
console.log('[BoxSettingsManager] Settings saved');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[BoxSettingsManager] Failed to save settings:', error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static clearCache() {
|
|
50
|
+
this.cachedSettings = null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.BoxSettingsManager = BoxSettingsManager;
|
|
54
|
+
BoxSettingsManager.cachedSettings = null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dropbox Settings Manager
|
|
4
|
+
*
|
|
5
|
+
* Stores Dropbox integration settings in encrypted database.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.DropboxSettingsManager = void 0;
|
|
9
|
+
const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository");
|
|
10
|
+
const DEFAULT_SETTINGS = {
|
|
11
|
+
enabled: false,
|
|
12
|
+
timeoutMs: 20000,
|
|
13
|
+
};
|
|
14
|
+
class DropboxSettingsManager {
|
|
15
|
+
static loadSettings() {
|
|
16
|
+
if (this.cachedSettings) {
|
|
17
|
+
return this.cachedSettings;
|
|
18
|
+
}
|
|
19
|
+
let settings = { ...DEFAULT_SETTINGS };
|
|
20
|
+
try {
|
|
21
|
+
if (SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
22
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
23
|
+
const stored = repository.load('dropbox');
|
|
24
|
+
if (stored) {
|
|
25
|
+
settings = { ...DEFAULT_SETTINGS, ...stored };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('[DropboxSettingsManager] Failed to load settings:', error);
|
|
31
|
+
}
|
|
32
|
+
this.cachedSettings = settings;
|
|
33
|
+
return settings;
|
|
34
|
+
}
|
|
35
|
+
static saveSettings(settings) {
|
|
36
|
+
try {
|
|
37
|
+
if (!SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
38
|
+
throw new Error('SecureSettingsRepository not initialized');
|
|
39
|
+
}
|
|
40
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
41
|
+
repository.save('dropbox', settings);
|
|
42
|
+
this.cachedSettings = settings;
|
|
43
|
+
console.log('[DropboxSettingsManager] Settings saved');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[DropboxSettingsManager] Failed to save settings:', error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static clearCache() {
|
|
50
|
+
this.cachedSettings = null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.DropboxSettingsManager = DropboxSettingsManager;
|
|
54
|
+
DropboxSettingsManager.cachedSettings = null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Google Drive Settings Manager
|
|
4
|
+
*
|
|
5
|
+
* Stores Google Drive integration settings in encrypted database.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.GoogleDriveSettingsManager = void 0;
|
|
9
|
+
const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository");
|
|
10
|
+
const DEFAULT_SETTINGS = {
|
|
11
|
+
enabled: false,
|
|
12
|
+
timeoutMs: 20000,
|
|
13
|
+
};
|
|
14
|
+
class GoogleDriveSettingsManager {
|
|
15
|
+
static loadSettings() {
|
|
16
|
+
if (this.cachedSettings) {
|
|
17
|
+
return this.cachedSettings;
|
|
18
|
+
}
|
|
19
|
+
let settings = { ...DEFAULT_SETTINGS };
|
|
20
|
+
try {
|
|
21
|
+
if (SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
22
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
23
|
+
const stored = repository.load('google-drive');
|
|
24
|
+
if (stored) {
|
|
25
|
+
settings = { ...DEFAULT_SETTINGS, ...stored };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('[GoogleDriveSettingsManager] Failed to load settings:', error);
|
|
31
|
+
}
|
|
32
|
+
this.cachedSettings = settings;
|
|
33
|
+
return settings;
|
|
34
|
+
}
|
|
35
|
+
static saveSettings(settings) {
|
|
36
|
+
try {
|
|
37
|
+
if (!SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
38
|
+
throw new Error('SecureSettingsRepository not initialized');
|
|
39
|
+
}
|
|
40
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
41
|
+
repository.save('google-drive', settings);
|
|
42
|
+
this.cachedSettings = settings;
|
|
43
|
+
console.log('[GoogleDriveSettingsManager] Settings saved');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[GoogleDriveSettingsManager] Failed to save settings:', error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static clearCache() {
|
|
50
|
+
this.cachedSettings = null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.GoogleDriveSettingsManager = GoogleDriveSettingsManager;
|
|
54
|
+
GoogleDriveSettingsManager.cachedSettings = null;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Notion Settings Manager
|
|
4
|
+
*
|
|
5
|
+
* Stores Notion integration settings in encrypted database.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.NotionSettingsManager = void 0;
|
|
9
|
+
const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository");
|
|
10
|
+
const notion_api_1 = require("../utils/notion-api");
|
|
11
|
+
const DEFAULT_SETTINGS = {
|
|
12
|
+
enabled: false,
|
|
13
|
+
notionVersion: notion_api_1.DEFAULT_NOTION_VERSION,
|
|
14
|
+
timeoutMs: 20000,
|
|
15
|
+
};
|
|
16
|
+
class NotionSettingsManager {
|
|
17
|
+
static loadSettings() {
|
|
18
|
+
if (this.cachedSettings) {
|
|
19
|
+
return this.cachedSettings;
|
|
20
|
+
}
|
|
21
|
+
let settings = { ...DEFAULT_SETTINGS };
|
|
22
|
+
try {
|
|
23
|
+
if (SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
24
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
25
|
+
const stored = repository.load('notion');
|
|
26
|
+
if (stored) {
|
|
27
|
+
settings = { ...DEFAULT_SETTINGS, ...stored };
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.error('[NotionSettingsManager] Failed to load settings:', error);
|
|
33
|
+
}
|
|
34
|
+
this.cachedSettings = settings;
|
|
35
|
+
return settings;
|
|
36
|
+
}
|
|
37
|
+
static saveSettings(settings) {
|
|
38
|
+
try {
|
|
39
|
+
if (!SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
40
|
+
throw new Error('SecureSettingsRepository not initialized');
|
|
41
|
+
}
|
|
42
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
43
|
+
repository.save('notion', settings);
|
|
44
|
+
this.cachedSettings = settings;
|
|
45
|
+
console.log('[NotionSettingsManager] Settings saved');
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('[NotionSettingsManager] Failed to save settings:', error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
static clearCache() {
|
|
52
|
+
this.cachedSettings = null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.NotionSettingsManager = NotionSettingsManager;
|
|
56
|
+
NotionSettingsManager.cachedSettings = null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* OneDrive Settings Manager
|
|
4
|
+
*
|
|
5
|
+
* Stores OneDrive integration settings in encrypted database.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.OneDriveSettingsManager = void 0;
|
|
9
|
+
const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository");
|
|
10
|
+
const DEFAULT_SETTINGS = {
|
|
11
|
+
enabled: false,
|
|
12
|
+
timeoutMs: 20000,
|
|
13
|
+
};
|
|
14
|
+
class OneDriveSettingsManager {
|
|
15
|
+
static loadSettings() {
|
|
16
|
+
if (this.cachedSettings) {
|
|
17
|
+
return this.cachedSettings;
|
|
18
|
+
}
|
|
19
|
+
let settings = { ...DEFAULT_SETTINGS };
|
|
20
|
+
try {
|
|
21
|
+
if (SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
22
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
23
|
+
const stored = repository.load('onedrive');
|
|
24
|
+
if (stored) {
|
|
25
|
+
settings = { ...DEFAULT_SETTINGS, ...stored };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('[OneDriveSettingsManager] Failed to load settings:', error);
|
|
31
|
+
}
|
|
32
|
+
this.cachedSettings = settings;
|
|
33
|
+
return settings;
|
|
34
|
+
}
|
|
35
|
+
static saveSettings(settings) {
|
|
36
|
+
try {
|
|
37
|
+
if (!SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
38
|
+
throw new Error('SecureSettingsRepository not initialized');
|
|
39
|
+
}
|
|
40
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
41
|
+
repository.save('onedrive', settings);
|
|
42
|
+
this.cachedSettings = settings;
|
|
43
|
+
console.log('[OneDriveSettingsManager] Settings saved');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[OneDriveSettingsManager] Failed to save settings:', error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static clearCache() {
|
|
50
|
+
this.cachedSettings = null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.OneDriveSettingsManager = OneDriveSettingsManager;
|
|
54
|
+
OneDriveSettingsManager.cachedSettings = null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SharePoint Settings Manager
|
|
4
|
+
*
|
|
5
|
+
* Stores SharePoint integration settings in encrypted database.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.SharePointSettingsManager = void 0;
|
|
9
|
+
const SecureSettingsRepository_1 = require("../database/SecureSettingsRepository");
|
|
10
|
+
const DEFAULT_SETTINGS = {
|
|
11
|
+
enabled: false,
|
|
12
|
+
timeoutMs: 20000,
|
|
13
|
+
};
|
|
14
|
+
class SharePointSettingsManager {
|
|
15
|
+
static loadSettings() {
|
|
16
|
+
if (this.cachedSettings) {
|
|
17
|
+
return this.cachedSettings;
|
|
18
|
+
}
|
|
19
|
+
let settings = { ...DEFAULT_SETTINGS };
|
|
20
|
+
try {
|
|
21
|
+
if (SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
22
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
23
|
+
const stored = repository.load('sharepoint');
|
|
24
|
+
if (stored) {
|
|
25
|
+
settings = { ...DEFAULT_SETTINGS, ...stored };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.error('[SharePointSettingsManager] Failed to load settings:', error);
|
|
31
|
+
}
|
|
32
|
+
this.cachedSettings = settings;
|
|
33
|
+
return settings;
|
|
34
|
+
}
|
|
35
|
+
static saveSettings(settings) {
|
|
36
|
+
try {
|
|
37
|
+
if (!SecureSettingsRepository_1.SecureSettingsRepository.isInitialized()) {
|
|
38
|
+
throw new Error('SecureSettingsRepository not initialized');
|
|
39
|
+
}
|
|
40
|
+
const repository = SecureSettingsRepository_1.SecureSettingsRepository.getInstance();
|
|
41
|
+
repository.save('sharepoint', settings);
|
|
42
|
+
this.cachedSettings = settings;
|
|
43
|
+
console.log('[SharePointSettingsManager] Settings saved');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.error('[SharePointSettingsManager] Failed to save settings:', error);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
static clearCache() {
|
|
50
|
+
this.cachedSettings = null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.SharePointSettingsManager = SharePointSettingsManager;
|
|
54
|
+
SharePointSettingsManager.cachedSettings = null;
|