@puredesktop/puredesktop-ui-bridge 2.1.7 → 2.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/package.json +89 -5
  2. package/src/agents/mcpServerPresets.test.ts +105 -0
  3. package/src/agents/mcpServerPresets.ts +380 -0
  4. package/src/agents/runtime/index.ts +7 -0
  5. package/src/agents/runtime/mapAgentSnapshot.ts +11 -8
  6. package/src/agents/runtime/pendingAsks.test.ts +117 -0
  7. package/src/agents/runtime/pendingAsks.ts +110 -0
  8. package/src/bridge/agentScopeDefaults.ts +65 -0
  9. package/src/bridge/agentTypes.ts +57 -3
  10. package/src/bridge/agents.d.mts +6 -0
  11. package/src/bridge/agents.mjs +10 -0
  12. package/src/bridge/agents.ts +4 -0
  13. package/src/bridge/collectionImagePaste.ts +19 -1
  14. package/src/bridge/context.mjs +32 -0
  15. package/src/bridge/credentials.d.mts +62 -0
  16. package/src/bridge/credentials.mjs +53 -0
  17. package/src/bridge/documents.d.mts +76 -0
  18. package/src/bridge/documents.mjs +40 -0
  19. package/src/bridge/events.d.mts +1 -0
  20. package/src/bridge/events.mjs +1 -0
  21. package/src/bridge/googleAuth.ts +7 -152
  22. package/src/bridge/mcpClient.d.mts +74 -0
  23. package/src/bridge/mcpClient.mjs +79 -0
  24. package/src/bridge/methods.d.mts +45 -0
  25. package/src/bridge/methods.mjs +46 -0
  26. package/src/bridge/notifications.d.mts +12 -0
  27. package/src/bridge/notifications.mjs +36 -0
  28. package/src/bridge/operations.d.mts +44 -0
  29. package/src/bridge/operations.mjs +40 -0
  30. package/src/bridge/pureRender/base.css +44 -0
  31. package/src/bridge/pureRender/document.ts +29 -2
  32. package/src/bridge/pureRender/index.ts +3 -0
  33. package/src/bridge/pureRender/normalize.ts +167 -0
  34. package/src/bridge/pureRender/sanitizeExportBody.test.ts +51 -0
  35. package/src/bridge/pureRender/sanitizeExportBody.ts +61 -0
  36. package/src/bridge/pureRender/styles.ts +125 -5
  37. package/src/bridge/pureRender/theme.test.ts +259 -0
  38. package/src/bridge/pureRender/theme.ts +19 -1
  39. package/src/bridge/pureRender/types.ts +33 -0
  40. package/src/bridge/pureRender/visualLayoutInspection.test.ts +26 -0
  41. package/src/bridge/pureRender/visualLayoutInspection.ts +75 -0
  42. package/src/bridge/react/useDocumentHotkeys.ts +41 -0
  43. package/src/bridge/react/useDocumentLifecycle.tsx +359 -0
  44. package/src/bridge/react/usePlatformAgentSessionDrive.test.tsx +29 -10
  45. package/src/bridge/react/usePlatformAgentSessionDrive.tsx +10 -81
  46. package/src/bridge/react/usePlatformAppSettings.test.tsx +105 -0
  47. package/src/bridge/react/usePlatformAppSettings.tsx +104 -0
  48. package/src/bridge/react/usePlatformJsonStore.test.tsx +152 -0
  49. package/src/bridge/react/usePlatformJsonStore.tsx +149 -0
  50. package/src/bridge/react/usePlatformOperations.tsx +75 -0
  51. package/src/bridge/storage.d.mts +23 -10
  52. package/src/bridge/storage.mjs +6 -3
  53. package/src/bridge/storage.test.ts +6 -6
  54. package/src/bridge/types.ts +7 -0
  55. package/src/components/agents/AgentComposer.tsx +10 -6
  56. package/src/components/agents/AgentDrawerPanel.test.tsx +2 -205
  57. package/src/components/agents/AgentDrawerPanel.tsx +23 -62
  58. package/src/components/agents/AgentMessageBubble.tsx +59 -33
  59. package/src/components/agents/AgentMessageList.tsx +4 -4
  60. package/src/components/agents/AgentQuestionPromptList.tsx +34 -212
  61. package/src/components/agents/AgentToolApprovalActions.tsx +13 -11
  62. package/src/components/agents/AgentToolCallCard.tsx +20 -20
  63. package/src/components/agents/AgentToolPendingList.tsx +6 -6
  64. package/src/components/agents/AgentToolPendingReview.tsx +6 -6
  65. package/src/components/agents/ContextPicker.tsx +239 -0
  66. package/src/components/agents/QuestionRequestList.tsx +278 -0
  67. package/src/components/agents/agentPanelStyles.ts +8 -31
  68. package/src/components/agents/agentTypes.ts +25 -41
  69. package/src/components/agents/index.ts +4 -0
  70. package/src/components/assets/asset-library/sidebar/AssetLibraryList.tsx +10 -4
  71. package/src/components/chrome/WorkspaceTabStrip.tsx +22 -4
  72. package/src/components/chrome/workspaceTabTypes.ts +2 -0
  73. package/src/components/common/chat/ChatBox.tsx +9 -9
  74. package/src/components/common/chat/ChatModelMenu.tsx +34 -4
  75. package/src/components/common/chat/ChatThread.tsx +23 -7
  76. package/src/components/common/connections/ProviderConnection.test.tsx +208 -0
  77. package/src/components/common/connections/ProviderConnection.tsx +277 -0
  78. package/src/components/common/connections/index.ts +5 -0
  79. package/src/components/common/containers/AppFrame.test.tsx +4 -4
  80. package/src/components/common/containers/AppFrame.tsx +26 -10
  81. package/src/components/common/containers/AppHeader.tsx +37 -15
  82. package/src/components/common/documents/DocumentHeaderActions.tsx +206 -0
  83. package/src/components/common/documents/DocumentSwitcher.tsx +1181 -0
  84. package/src/components/common/documents/index.ts +8 -0
  85. package/src/components/common/dropdown/MenuDropdownItem.tsx +14 -2
  86. package/src/components/common/dropdown/MenuPortal.tsx +3 -1
  87. package/src/components/common/dropdown/menuViewportPosition.test.ts +20 -10
  88. package/src/components/common/dropdown/menuViewportPosition.ts +35 -27
  89. package/src/components/common/overlays/Modal.tsx +13 -2
  90. package/src/components/common/research/EvidenceDossier.tsx +1232 -150
  91. package/src/components/common/research/index.ts +2 -0
  92. package/src/components/editor/EditorLinkPromptDialog.tsx +1 -1
  93. package/src/components/print-design/PrintDesignPanel.test.tsx +430 -40
  94. package/src/components/print-design/PrintDesignPanel.tsx +1770 -207
  95. package/src/components/print-design/index.ts +2 -0
  96. package/src/components/print-design/previewContent.test.ts +32 -0
  97. package/src/components/print-design/previewContent.ts +31 -0
  98. package/src/context/buildContextDocument.test.ts +240 -0
  99. package/src/context/buildContextDocument.ts +309 -0
  100. package/src/context/contextAccess.ts +66 -0
  101. package/src/context/contextConfig.ts +72 -0
  102. package/src/context/contextDocument.test.ts +155 -0
  103. package/src/context/contextDocument.ts +300 -0
  104. package/src/context/contextSections.test.ts +88 -0
  105. package/src/context/contextSections.ts +84 -0
  106. package/src/context/htmlToContextMarkdown.test.ts +134 -0
  107. package/src/context/htmlToContextMarkdown.ts +369 -0
  108. package/src/ics/generateIcs.test.ts +153 -0
  109. package/src/ics/generateIcs.ts +197 -0
  110. package/src/index.ts +3 -0
  111. package/src/net/httpRetry.test.ts +117 -0
  112. package/src/net/httpRetry.ts +111 -0
  113. package/src/theme/appAccents.test.ts +36 -35
  114. package/src/theme/appAccents.ts +93 -104
  115. package/src/theme/appIdentityCss.mjs +178 -229
  116. package/src/theme/appIdentityCss.ts +222 -231
  117. package/src/theme/themes/dark.ts +3 -1
  118. package/src/theme/themes/light.ts +3 -1
  119. package/src/bridge/googleProviderConfig.ts +0 -73
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@puredesktop/puredesktop-ui-bridge",
3
- "version": "2.1.7",
3
+ "version": "2.1.9",
4
4
  "description": "PureScience plugin SDK — bridge client, theme, and shared UI",
5
5
  "type": "module",
6
6
  "repository": {
@@ -9,7 +9,7 @@
9
9
  "directory": "packages/ui"
10
10
  },
11
11
  "publishConfig": {
12
- "access": "restricted",
12
+ "access": "public",
13
13
  "registry": "https://registry.npmjs.org"
14
14
  },
15
15
  "files": [
@@ -20,6 +20,9 @@
20
20
  "./agents/appAgentConnectors.ts": "./src/agents/appAgentConnectors.ts",
21
21
  "./agents/appAgentConnectors": "./src/agents/appAgentConnectors.ts",
22
22
  "./agents/appAgentConnectors.js": "./src/agents/appAgentConnectors.ts",
23
+ "./agents/mcpServerPresets.ts": "./src/agents/mcpServerPresets.ts",
24
+ "./agents/mcpServerPresets": "./src/agents/mcpServerPresets.ts",
25
+ "./agents/mcpServerPresets.js": "./src/agents/mcpServerPresets.ts",
23
26
  "./agents/runtime/agentLiveReducer.ts": "./src/agents/runtime/agentLiveReducer.ts",
24
27
  "./agents/runtime/agentLiveReducer": "./src/agents/runtime/agentLiveReducer.ts",
25
28
  "./agents/runtime/agentLiveReducer.js": "./src/agents/runtime/agentLiveReducer.ts",
@@ -43,6 +46,9 @@
43
46
  "./agents/runtime/mergeUsageTurn.ts": "./src/agents/runtime/mergeUsageTurn.ts",
44
47
  "./agents/runtime/mergeUsageTurn": "./src/agents/runtime/mergeUsageTurn.ts",
45
48
  "./agents/runtime/mergeUsageTurn.js": "./src/agents/runtime/mergeUsageTurn.ts",
49
+ "./agents/runtime/pendingAsks.ts": "./src/agents/runtime/pendingAsks.ts",
50
+ "./agents/runtime/pendingAsks": "./src/agents/runtime/pendingAsks.ts",
51
+ "./agents/runtime/pendingAsks.js": "./src/agents/runtime/pendingAsks.ts",
46
52
  "./agents/runtime/pendingToolCalls.ts": "./src/agents/runtime/pendingToolCalls.ts",
47
53
  "./agents/runtime/pendingToolCalls": "./src/agents/runtime/pendingToolCalls.ts",
48
54
  "./agents/runtime/pendingToolCalls.js": "./src/agents/runtime/pendingToolCalls.ts",
@@ -59,6 +65,9 @@
59
65
  "./bridge/agents": "./src/bridge/agents.ts",
60
66
  "./bridge/agents.js": "./src/bridge/agents.ts",
61
67
  "./bridge/agents.ts": "./src/bridge/agents.ts",
68
+ "./bridge/agentScopeDefaults.ts": "./src/bridge/agentScopeDefaults.ts",
69
+ "./bridge/agentScopeDefaults": "./src/bridge/agentScopeDefaults.ts",
70
+ "./bridge/agentScopeDefaults.js": "./src/bridge/agentScopeDefaults.ts",
62
71
  "./bridge/agentToolHandlers.ts": "./src/bridge/agentToolHandlers.ts",
63
72
  "./bridge/agentToolHandlers": "./src/bridge/agentToolHandlers.ts",
64
73
  "./bridge/agentToolHandlers.js": "./src/bridge/agentToolHandlers.ts",
@@ -113,6 +122,9 @@
113
122
  "./bridge/dialog.mjs": "./src/bridge/dialog.mjs",
114
123
  "./bridge/dialog": "./src/bridge/dialog.mjs",
115
124
  "./bridge/dialog.js": "./src/bridge/dialog.mjs",
125
+ "./bridge/documents.mjs": "./src/bridge/documents.mjs",
126
+ "./bridge/documents": "./src/bridge/documents.mjs",
127
+ "./bridge/documents.js": "./src/bridge/documents.mjs",
116
128
  "./bridge/events.mjs": "./src/bridge/events.mjs",
117
129
  "./bridge/events": "./src/bridge/events.mjs",
118
130
  "./bridge/events.js": "./src/bridge/events.mjs",
@@ -126,9 +138,6 @@
126
138
  "./bridge/googleAuth.ts": "./src/bridge/googleAuth.ts",
127
139
  "./bridge/googleAuth": "./src/bridge/googleAuth.ts",
128
140
  "./bridge/googleAuth.js": "./src/bridge/googleAuth.ts",
129
- "./bridge/googleProviderConfig.ts": "./src/bridge/googleProviderConfig.ts",
130
- "./bridge/googleProviderConfig": "./src/bridge/googleProviderConfig.ts",
131
- "./bridge/googleProviderConfig.js": "./src/bridge/googleProviderConfig.ts",
132
141
  "./bridge/index.ts": "./src/bridge/index.ts",
133
142
  "./bridge/index": "./src/bridge/index.ts",
134
143
  "./bridge/index.js": "./src/bridge/index.ts",
@@ -138,12 +147,21 @@
138
147
  "./bridge/inlinePreview": "./src/bridge/inlinePreview.ts",
139
148
  "./bridge/inlinePreview.js": "./src/bridge/inlinePreview.ts",
140
149
  "./bridge/inlinePreview.ts": "./src/bridge/inlinePreview.ts",
150
+ "./bridge/mcpClient.mjs": "./src/bridge/mcpClient.mjs",
151
+ "./bridge/mcpClient": "./src/bridge/mcpClient.mjs",
152
+ "./bridge/mcpClient.js": "./src/bridge/mcpClient.mjs",
141
153
  "./bridge/methods.mjs": "./src/bridge/methods.mjs",
142
154
  "./bridge/methods": "./src/bridge/methods.mjs",
143
155
  "./bridge/methods.js": "./src/bridge/methods.mjs",
144
156
  "./bridge/network.mjs": "./src/bridge/network.mjs",
145
157
  "./bridge/network": "./src/bridge/network.mjs",
146
158
  "./bridge/network.js": "./src/bridge/network.mjs",
159
+ "./bridge/notifications.mjs": "./src/bridge/notifications.mjs",
160
+ "./bridge/notifications": "./src/bridge/notifications.mjs",
161
+ "./bridge/notifications.js": "./src/bridge/notifications.mjs",
162
+ "./bridge/operations.mjs": "./src/bridge/operations.mjs",
163
+ "./bridge/operations": "./src/bridge/operations.mjs",
164
+ "./bridge/operations.js": "./src/bridge/operations.mjs",
147
165
  "./bridge/os.mjs": "./src/bridge/os.mjs",
148
166
  "./bridge/os": "./src/bridge/os.mjs",
149
167
  "./bridge/os.js": "./src/bridge/os.mjs",
@@ -190,6 +208,9 @@
190
208
  "./bridge/pureRender/samples.ts": "./src/bridge/pureRender/samples.ts",
191
209
  "./bridge/pureRender/samples": "./src/bridge/pureRender/samples.ts",
192
210
  "./bridge/pureRender/samples.js": "./src/bridge/pureRender/samples.ts",
211
+ "./bridge/pureRender/sanitizeExportBody.ts": "./src/bridge/pureRender/sanitizeExportBody.ts",
212
+ "./bridge/pureRender/sanitizeExportBody": "./src/bridge/pureRender/sanitizeExportBody.ts",
213
+ "./bridge/pureRender/sanitizeExportBody.js": "./src/bridge/pureRender/sanitizeExportBody.ts",
193
214
  "./bridge/pureRender/styles.ts": "./src/bridge/pureRender/styles.ts",
194
215
  "./bridge/pureRender/styles": "./src/bridge/pureRender/styles.ts",
195
216
  "./bridge/pureRender/styles.js": "./src/bridge/pureRender/styles.ts",
@@ -207,6 +228,12 @@
207
228
  "./bridge/react/useDebouncedEffect.ts": "./src/bridge/react/useDebouncedEffect.ts",
208
229
  "./bridge/react/useDebouncedEffect": "./src/bridge/react/useDebouncedEffect.ts",
209
230
  "./bridge/react/useDebouncedEffect.js": "./src/bridge/react/useDebouncedEffect.ts",
231
+ "./bridge/react/useDocumentHotkeys.ts": "./src/bridge/react/useDocumentHotkeys.ts",
232
+ "./bridge/react/useDocumentHotkeys": "./src/bridge/react/useDocumentHotkeys.ts",
233
+ "./bridge/react/useDocumentHotkeys.js": "./src/bridge/react/useDocumentHotkeys.ts",
234
+ "./bridge/react/useDocumentLifecycle.tsx": "./src/bridge/react/useDocumentLifecycle.tsx",
235
+ "./bridge/react/useDocumentLifecycle": "./src/bridge/react/useDocumentLifecycle.tsx",
236
+ "./bridge/react/useDocumentLifecycle.js": "./src/bridge/react/useDocumentLifecycle.tsx",
210
237
  "./bridge/react/useIpc.tsx": "./src/bridge/react/useIpc.tsx",
211
238
  "./bridge/react/useIpc": "./src/bridge/react/useIpc.tsx",
212
239
  "./bridge/react/useIpc.js": "./src/bridge/react/useIpc.tsx",
@@ -225,6 +252,9 @@
225
252
  "./bridge/react/usePlatformAppManifest.tsx": "./src/bridge/react/usePlatformAppManifest.tsx",
226
253
  "./bridge/react/usePlatformAppManifest": "./src/bridge/react/usePlatformAppManifest.tsx",
227
254
  "./bridge/react/usePlatformAppManifest.js": "./src/bridge/react/usePlatformAppManifest.tsx",
255
+ "./bridge/react/usePlatformAppSettings.tsx": "./src/bridge/react/usePlatformAppSettings.tsx",
256
+ "./bridge/react/usePlatformAppSettings": "./src/bridge/react/usePlatformAppSettings.tsx",
257
+ "./bridge/react/usePlatformAppSettings.js": "./src/bridge/react/usePlatformAppSettings.tsx",
228
258
  "./bridge/react/usePlatformBridge.tsx": "./src/bridge/react/usePlatformBridge.tsx",
229
259
  "./bridge/react/usePlatformBridge": "./src/bridge/react/usePlatformBridge.tsx",
230
260
  "./bridge/react/usePlatformBridge.js": "./src/bridge/react/usePlatformBridge.tsx",
@@ -237,6 +267,12 @@
237
267
  "./bridge/react/usePlatformFilePreview.tsx": "./src/bridge/react/usePlatformFilePreview.tsx",
238
268
  "./bridge/react/usePlatformFilePreview": "./src/bridge/react/usePlatformFilePreview.tsx",
239
269
  "./bridge/react/usePlatformFilePreview.js": "./src/bridge/react/usePlatformFilePreview.tsx",
270
+ "./bridge/react/usePlatformJsonStore.tsx": "./src/bridge/react/usePlatformJsonStore.tsx",
271
+ "./bridge/react/usePlatformJsonStore": "./src/bridge/react/usePlatformJsonStore.tsx",
272
+ "./bridge/react/usePlatformJsonStore.js": "./src/bridge/react/usePlatformJsonStore.tsx",
273
+ "./bridge/react/usePlatformOperations.tsx": "./src/bridge/react/usePlatformOperations.tsx",
274
+ "./bridge/react/usePlatformOperations": "./src/bridge/react/usePlatformOperations.tsx",
275
+ "./bridge/react/usePlatformOperations.js": "./src/bridge/react/usePlatformOperations.tsx",
240
276
  "./bridge/react/usePlatformPreferences.tsx": "./src/bridge/react/usePlatformPreferences.tsx",
241
277
  "./bridge/react/usePlatformPreferences": "./src/bridge/react/usePlatformPreferences.tsx",
242
278
  "./bridge/react/usePlatformPreferences.js": "./src/bridge/react/usePlatformPreferences.tsx",
@@ -360,6 +396,9 @@
360
396
  "./components/agents/agentTypes.ts": "./src/components/agents/agentTypes.ts",
361
397
  "./components/agents/agentTypes": "./src/components/agents/agentTypes.ts",
362
398
  "./components/agents/agentTypes.js": "./src/components/agents/agentTypes.ts",
399
+ "./components/agents/ContextPicker.tsx": "./src/components/agents/ContextPicker.tsx",
400
+ "./components/agents/ContextPicker": "./src/components/agents/ContextPicker.tsx",
401
+ "./components/agents/ContextPicker.js": "./src/components/agents/ContextPicker.tsx",
363
402
  "./components/agents/formatToolCallArguments.ts": "./src/components/agents/formatToolCallArguments.ts",
364
403
  "./components/agents/formatToolCallArguments": "./src/components/agents/formatToolCallArguments.ts",
365
404
  "./components/agents/formatToolCallArguments.js": "./src/components/agents/formatToolCallArguments.ts",
@@ -368,6 +407,9 @@
368
407
  "./components/agents/index.js": "./src/components/agents/index.ts",
369
408
  "./components/agents": "./src/components/agents/index.ts",
370
409
  "./components/agents.js": "./src/components/agents/index.ts",
410
+ "./components/agents/QuestionRequestList.tsx": "./src/components/agents/QuestionRequestList.tsx",
411
+ "./components/agents/QuestionRequestList": "./src/components/agents/QuestionRequestList.tsx",
412
+ "./components/agents/QuestionRequestList.js": "./src/components/agents/QuestionRequestList.tsx",
371
413
  "./components/assets/asset-library/AssetLibraryDialog.tsx": "./src/components/assets/asset-library/AssetLibraryDialog.tsx",
372
414
  "./components/assets/asset-library/AssetLibraryDialog": "./src/components/assets/asset-library/AssetLibraryDialog.tsx",
373
415
  "./components/assets/asset-library/AssetLibraryDialog.js": "./src/components/assets/asset-library/AssetLibraryDialog.tsx",
@@ -602,6 +644,9 @@
602
644
  "./components/common/connections/index.js": "./src/components/common/connections/index.ts",
603
645
  "./components/common/connections": "./src/components/common/connections/index.ts",
604
646
  "./components/common/connections.js": "./src/components/common/connections/index.ts",
647
+ "./components/common/connections/ProviderConnection.tsx": "./src/components/common/connections/ProviderConnection.tsx",
648
+ "./components/common/connections/ProviderConnection": "./src/components/common/connections/ProviderConnection.tsx",
649
+ "./components/common/connections/ProviderConnection.js": "./src/components/common/connections/ProviderConnection.tsx",
605
650
  "./components/common/containers/AppFrame.tsx": "./src/components/common/containers/AppFrame.tsx",
606
651
  "./components/common/containers/AppFrame": "./src/components/common/containers/AppFrame.tsx",
607
652
  "./components/common/containers/AppFrame.js": "./src/components/common/containers/AppFrame.tsx",
@@ -681,6 +726,17 @@
681
726
  "./components/common/desk/index.js": "./src/components/common/desk/index.ts",
682
727
  "./components/common/desk": "./src/components/common/desk/index.ts",
683
728
  "./components/common/desk.js": "./src/components/common/desk/index.ts",
729
+ "./components/common/documents/DocumentHeaderActions.tsx": "./src/components/common/documents/DocumentHeaderActions.tsx",
730
+ "./components/common/documents/DocumentHeaderActions": "./src/components/common/documents/DocumentHeaderActions.tsx",
731
+ "./components/common/documents/DocumentHeaderActions.js": "./src/components/common/documents/DocumentHeaderActions.tsx",
732
+ "./components/common/documents/DocumentSwitcher.tsx": "./src/components/common/documents/DocumentSwitcher.tsx",
733
+ "./components/common/documents/DocumentSwitcher": "./src/components/common/documents/DocumentSwitcher.tsx",
734
+ "./components/common/documents/DocumentSwitcher.js": "./src/components/common/documents/DocumentSwitcher.tsx",
735
+ "./components/common/documents/index.ts": "./src/components/common/documents/index.ts",
736
+ "./components/common/documents/index": "./src/components/common/documents/index.ts",
737
+ "./components/common/documents/index.js": "./src/components/common/documents/index.ts",
738
+ "./components/common/documents": "./src/components/common/documents/index.ts",
739
+ "./components/common/documents.js": "./src/components/common/documents/index.ts",
684
740
  "./components/common/dropdown/ContextMenu.tsx": "./src/components/common/dropdown/ContextMenu.tsx",
685
741
  "./components/common/dropdown/ContextMenu": "./src/components/common/dropdown/ContextMenu.tsx",
686
742
  "./components/common/dropdown/ContextMenu.js": "./src/components/common/dropdown/ContextMenu.tsx",
@@ -1044,6 +1100,9 @@
1044
1100
  "./components/print-design/index.js": "./src/components/print-design/index.ts",
1045
1101
  "./components/print-design": "./src/components/print-design/index.ts",
1046
1102
  "./components/print-design.js": "./src/components/print-design/index.ts",
1103
+ "./components/print-design/previewContent.ts": "./src/components/print-design/previewContent.ts",
1104
+ "./components/print-design/previewContent": "./src/components/print-design/previewContent.ts",
1105
+ "./components/print-design/previewContent.js": "./src/components/print-design/previewContent.ts",
1047
1106
  "./components/print-design/PrintDesignPanel.tsx": "./src/components/print-design/PrintDesignPanel.tsx",
1048
1107
  "./components/print-design/PrintDesignPanel": "./src/components/print-design/PrintDesignPanel.tsx",
1049
1108
  "./components/print-design/PrintDesignPanel.js": "./src/components/print-design/PrintDesignPanel.tsx",
@@ -1055,6 +1114,24 @@
1055
1114
  "./components/proofing/PagedProofDialog.tsx": "./src/components/proofing/PagedProofDialog.tsx",
1056
1115
  "./components/proofing/PagedProofDialog": "./src/components/proofing/PagedProofDialog.tsx",
1057
1116
  "./components/proofing/PagedProofDialog.js": "./src/components/proofing/PagedProofDialog.tsx",
1117
+ "./context/buildContextDocument.ts": "./src/context/buildContextDocument.ts",
1118
+ "./context/buildContextDocument": "./src/context/buildContextDocument.ts",
1119
+ "./context/buildContextDocument.js": "./src/context/buildContextDocument.ts",
1120
+ "./context/contextAccess.ts": "./src/context/contextAccess.ts",
1121
+ "./context/contextAccess": "./src/context/contextAccess.ts",
1122
+ "./context/contextAccess.js": "./src/context/contextAccess.ts",
1123
+ "./context/contextConfig.ts": "./src/context/contextConfig.ts",
1124
+ "./context/contextConfig": "./src/context/contextConfig.ts",
1125
+ "./context/contextConfig.js": "./src/context/contextConfig.ts",
1126
+ "./context/contextDocument.ts": "./src/context/contextDocument.ts",
1127
+ "./context/contextDocument": "./src/context/contextDocument.ts",
1128
+ "./context/contextDocument.js": "./src/context/contextDocument.ts",
1129
+ "./context/contextSections.ts": "./src/context/contextSections.ts",
1130
+ "./context/contextSections": "./src/context/contextSections.ts",
1131
+ "./context/contextSections.js": "./src/context/contextSections.ts",
1132
+ "./context/htmlToContextMarkdown.ts": "./src/context/htmlToContextMarkdown.ts",
1133
+ "./context/htmlToContextMarkdown": "./src/context/htmlToContextMarkdown.ts",
1134
+ "./context/htmlToContextMarkdown.js": "./src/context/htmlToContextMarkdown.ts",
1058
1135
  "./editor/DocumentEditor.tsx": "./src/editor/DocumentEditor.tsx",
1059
1136
  "./editor/DocumentEditor": "./src/editor/DocumentEditor.tsx",
1060
1137
  "./editor/DocumentEditor.js": "./src/editor/DocumentEditor.tsx",
@@ -1069,6 +1146,12 @@
1069
1146
  "./editor/toolbarOverlays.ts": "./src/editor/toolbarOverlays.ts",
1070
1147
  "./editor/toolbarOverlays": "./src/editor/toolbarOverlays.ts",
1071
1148
  "./editor/toolbarOverlays.js": "./src/editor/toolbarOverlays.ts",
1149
+ "./ics/generateIcs.ts": "./src/ics/generateIcs.ts",
1150
+ "./ics/generateIcs": "./src/ics/generateIcs.ts",
1151
+ "./ics/generateIcs.js": "./src/ics/generateIcs.ts",
1152
+ "./net/httpRetry.ts": "./src/net/httpRetry.ts",
1153
+ "./net/httpRetry": "./src/net/httpRetry.ts",
1154
+ "./net/httpRetry.js": "./src/net/httpRetry.ts",
1072
1155
  "./theme/appAccents.ts": "./src/theme/appAccents.ts",
1073
1156
  "./theme/appAccents": "./src/theme/appAccents.ts",
1074
1157
  "./theme/appAccents.js": "./src/theme/appAccents.ts",
@@ -1181,6 +1264,7 @@
1181
1264
  "lucide-react": "^0.511.0",
1182
1265
  "mermaid": "^11.15.0",
1183
1266
  "styled-components": "^6.1.18",
1267
+ "yaml": "^2.9.0",
1184
1268
  "@puredesktop/platform-editor": "2.1.0"
1185
1269
  },
1186
1270
  "peerDependencies": {
@@ -0,0 +1,105 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import {
3
+ MCP_SERVER_PRESETS,
4
+ MCP_SERVER_PRESET_CATEGORY_LABELS,
5
+ MCP_PRESET_RUNTIME_RANK,
6
+ findMcpServerPreset,
7
+ mcpPresetRuntime,
8
+ } from './mcpServerPresets.js'
9
+
10
+ describe('MCP_SERVER_PRESETS', () => {
11
+ it('uses unique registry-safe ids', () => {
12
+ const ids = MCP_SERVER_PRESETS.map(preset => preset.id)
13
+ expect(new Set(ids).size).toBe(ids.length)
14
+ for (const id of ids) {
15
+ // Registry constraint from the mcp-client store: [a-z0-9-]+ (no `__`).
16
+ expect(id).toMatch(/^[a-z0-9-]+$/)
17
+ }
18
+ })
19
+
20
+ it('gives every preset a coherent transport target', () => {
21
+ for (const preset of MCP_SERVER_PRESETS) {
22
+ if (preset.transport === 'stdio') {
23
+ expect(preset.command, preset.id).toBeTruthy()
24
+ expect(preset.url, preset.id).toBeUndefined()
25
+ } else {
26
+ expect(preset.url, preset.id).toMatch(/^https:\/\//)
27
+ expect(preset.command, preset.id).toBeUndefined()
28
+ }
29
+ }
30
+ })
31
+
32
+ it('labels every category used by a preset', () => {
33
+ for (const preset of MCP_SERVER_PRESETS) {
34
+ expect(MCP_SERVER_PRESET_CATEGORY_LABELS[preset.category]).toBeTruthy()
35
+ }
36
+ })
37
+
38
+ it('includes the academic core (arxiv, pubmed, wikipedia)', () => {
39
+ for (const id of ['arxiv', 'pubmed', 'wikipedia']) {
40
+ expect(findMcpServerPreset(id), id).toBeDefined()
41
+ }
42
+ })
43
+
44
+ it('marks token-gated presets so the UI can ask up front', () => {
45
+ expect(findMcpServerPreset('github')?.requiresToken).toBe(true)
46
+ })
47
+
48
+ it('gives local (stdio) academic presets an iconDomain so they get a real logo', () => {
49
+ for (const id of ['arxiv', 'pubmed', 'wikipedia']) {
50
+ const preset = findMcpServerPreset(id)
51
+ expect(preset?.transport, id).toBe('stdio')
52
+ expect(preset?.iconDomain, id).toBeTruthy()
53
+ }
54
+ })
55
+
56
+ it('keeps every iconDomain a bare host (no scheme or path)', () => {
57
+ for (const preset of MCP_SERVER_PRESETS) {
58
+ if (!preset.iconDomain) continue
59
+ expect(preset.iconDomain, preset.id).toMatch(/^[a-z0-9.-]+$/i)
60
+ }
61
+ })
62
+
63
+ it('classifies runtime by transport and runner', () => {
64
+ expect(mcpPresetRuntime(findMcpServerPreset('deepwiki')!)).toBe('remote')
65
+ expect(mcpPresetRuntime(findMcpServerPreset('memory')!)).toBe('node')
66
+ expect(mcpPresetRuntime(findMcpServerPreset('arxiv')!)).toBe('python')
67
+ })
68
+
69
+ it('ranks no-install runtimes ahead of Python', () => {
70
+ expect(MCP_PRESET_RUNTIME_RANK.remote).toBeLessThan(
71
+ MCP_PRESET_RUNTIME_RANK.node,
72
+ )
73
+ expect(MCP_PRESET_RUNTIME_RANK.node).toBeLessThan(
74
+ MCP_PRESET_RUNTIME_RANK.python,
75
+ )
76
+ })
77
+
78
+ it('offers a broad set of no-install (remote+node) servers', () => {
79
+ const noInstall = MCP_SERVER_PRESETS.filter(
80
+ p => mcpPresetRuntime(p) !== 'python',
81
+ )
82
+ expect(noInstall.length).toBeGreaterThanOrEqual(12)
83
+ })
84
+
85
+ it('carries auth + env var for apiKey presets', () => {
86
+ const exa = findMcpServerPreset('exa')
87
+ expect(exa?.auth).toBe('apiKey')
88
+ expect(exa?.apiKeyEnvVar).toBe('EXA_API_KEY')
89
+ expect(exa?.requiresToken).toBe(true)
90
+ expect(mcpPresetRuntime(exa!)).toBe('node')
91
+ })
92
+
93
+ it('marks remote token servers as bearer', () => {
94
+ expect(findMcpServerPreset('github')?.auth).toBe('bearer')
95
+ expect(findMcpServerPreset('stripe')?.auth).toBe('bearer')
96
+ })
97
+
98
+ it('keeps keyless remote servers auth-free', () => {
99
+ for (const id of ['deepwiki', 'context7', 'cloudflare-docs']) {
100
+ const preset = findMcpServerPreset(id)
101
+ expect(preset, id).toBeDefined()
102
+ expect(preset?.auth ?? 'none', id).toBe('none')
103
+ }
104
+ })
105
+ })