@puredesktop/puredesktop-ui-bridge 1.0.0-beta.1
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/package.json +96 -0
- package/src/agents/runtime/agentLiveReducer.test.ts +72 -0
- package/src/agents/runtime/agentLiveReducer.ts +139 -0
- package/src/agents/runtime/agentRunEventTypes.ts +115 -0
- package/src/agents/runtime/contextWindowUsage.test.ts +38 -0
- package/src/agents/runtime/contextWindowUsage.ts +25 -0
- package/src/agents/runtime/index.ts +24 -0
- package/src/agents/runtime/mapAgentMessages.ts +54 -0
- package/src/agents/runtime/mapAgentSnapshot.ts +71 -0
- package/src/agents/runtime/mergeUsageTurn.ts +23 -0
- package/src/agents/runtime/pendingToolCalls.test.ts +85 -0
- package/src/agents/runtime/pendingToolCalls.ts +14 -0
- package/src/agents/runtime/toolRequiresApproval.ts +20 -0
- package/src/agents/runtime/unresolvedToolCalls.ts +42 -0
- package/src/bridge/agentModelTiers.ts +50 -0
- package/src/bridge/agentToolHandlers.ts +23 -0
- package/src/bridge/agentToolHelpers.test.ts +27 -0
- package/src/bridge/agentToolHelpers.ts +20 -0
- package/src/bridge/agentTypes.ts +294 -0
- package/src/bridge/agents.d.mts +113 -0
- package/src/bridge/agents.mjs +233 -0
- package/src/bridge/agents.ts +62 -0
- package/src/bridge/appSettings.d.mts +9 -0
- package/src/bridge/appSettings.mjs +18 -0
- package/src/bridge/appSettings.ts +4 -0
- package/src/bridge/applyThemeFromHost.d.mts +7 -0
- package/src/bridge/applyThemeFromHost.mjs +33 -0
- package/src/bridge/assets.d.mts +66 -0
- package/src/bridge/assets.mjs +121 -0
- package/src/bridge/catalog.d.mts +5 -0
- package/src/bridge/catalog.mjs +24 -0
- package/src/bridge/catalog.ts +1 -0
- package/src/bridge/client.d.mts +19 -0
- package/src/bridge/client.mjs +147 -0
- package/src/bridge/collectionAssetAdapter.ts +63 -0
- package/src/bridge/collectionAssets.d.mts +1 -0
- package/src/bridge/collectionAssets.mjs +2 -0
- package/src/bridge/collectionAssets.ts +1 -0
- package/src/bridge/collectionDocumentHtml.test.ts +71 -0
- package/src/bridge/collectionDocumentHtml.ts +118 -0
- package/src/bridge/collectionImagePaste.test.ts +32 -0
- package/src/bridge/collectionImagePaste.ts +130 -0
- package/src/bridge/context.mjs +12 -0
- package/src/bridge/credentials.mjs +22 -0
- package/src/bridge/dialog.d.mts +5 -0
- package/src/bridge/dialog.mjs +13 -0
- package/src/bridge/events.d.mts +14 -0
- package/src/bridge/events.mjs +12 -0
- package/src/bridge/filePreviewKind.test.ts +43 -0
- package/src/bridge/filePreviewKind.ts +76 -0
- package/src/bridge/fs.d.mts +41 -0
- package/src/bridge/fs.mjs +82 -0
- package/src/bridge/fs.test.ts +16 -0
- package/src/bridge/fs.ts +10 -0
- package/src/bridge/index.ts +12 -0
- package/src/bridge/inlinePreview.d.mts +35 -0
- package/src/bridge/inlinePreview.mjs +99 -0
- package/src/bridge/inlinePreview.test.ts +56 -0
- package/src/bridge/inlinePreview.ts +13 -0
- package/src/bridge/methods.d.mts +115 -0
- package/src/bridge/methods.mjs +132 -0
- package/src/bridge/os.d.mts +11 -0
- package/src/bridge/os.mjs +26 -0
- package/src/bridge/plugins.d.mts +9 -0
- package/src/bridge/plugins.mjs +31 -0
- package/src/bridge/plugins.ts +5 -0
- package/src/bridge/preferences.d.mts +7 -0
- package/src/bridge/preferences.mjs +17 -0
- package/src/bridge/preferences.ts +13 -0
- package/src/bridge/printDocument.test.ts +47 -0
- package/src/bridge/printDocument.ts +75 -0
- package/src/bridge/pureRender/adapters.test.ts +144 -0
- package/src/bridge/pureRender/adapters.ts +175 -0
- package/src/bridge/pureRender/assets.test.ts +44 -0
- package/src/bridge/pureRender/base.css +76 -0
- package/src/bridge/pureRender/compiler.test.ts +279 -0
- package/src/bridge/pureRender/compiler.ts +660 -0
- package/src/bridge/pureRender/document.test.ts +283 -0
- package/src/bridge/pureRender/document.ts +35 -0
- package/src/bridge/pureRender/extraction.test.ts +432 -0
- package/src/bridge/pureRender/extraction.ts +1023 -0
- package/src/bridge/pureRender/flow.css +3 -0
- package/src/bridge/pureRender/index.ts +66 -0
- package/src/bridge/pureRender/normalize.test.ts +442 -0
- package/src/bridge/pureRender/normalize.ts +682 -0
- package/src/bridge/pureRender/presets.ts +365 -0
- package/src/bridge/pureRender/profiles/book.css +19 -0
- package/src/bridge/pureRender/profiles/manuscript.css +11 -0
- package/src/bridge/pureRender/profiles/writer.css +10 -0
- package/src/bridge/pureRender/reset.css +5 -0
- package/src/bridge/pureRender/samples.ts +94 -0
- package/src/bridge/pureRender/styles.ts +164 -0
- package/src/bridge/pureRender/theme.test.ts +53 -0
- package/src/bridge/pureRender/theme.ts +258 -0
- package/src/bridge/pureRender/tokens/default.css +36 -0
- package/src/bridge/pureRender/tokens/default.json +32 -0
- package/src/bridge/pureRender/types.ts +264 -0
- package/src/bridge/pureRender/visualLayoutInspection.test.ts +57 -0
- package/src/bridge/pureRender/visualLayoutInspection.ts +161 -0
- package/src/bridge/react/useDebouncedEffect.ts +21 -0
- package/src/bridge/react/useIpc.tsx +75 -0
- package/src/bridge/react/usePlatformAgentRunLiveState.tsx +78 -0
- package/src/bridge/react/usePlatformAgentSessionDrive.tsx +729 -0
- package/src/bridge/react/usePlatformAgentSessions.tsx +60 -0
- package/src/bridge/react/usePlatformAgentTools.tsx +82 -0
- package/src/bridge/react/usePlatformAppManifest.tsx +32 -0
- package/src/bridge/react/usePlatformBridge.tsx +56 -0
- package/src/bridge/react/usePlatformDeepLink.tsx +57 -0
- package/src/bridge/react/usePlatformFileBinaryDataUrl.tsx +54 -0
- package/src/bridge/react/usePlatformFilePreview.tsx +92 -0
- package/src/bridge/react/usePlatformPreferences.tsx +77 -0
- package/src/bridge/react/usePlatformThemeDocumentAttrs.ts +35 -0
- package/src/bridge/react/usePlatformThemeFromBridge.tsx +16 -0
- package/src/bridge/react/usePlatformViewportResource.test.tsx +106 -0
- package/src/bridge/react/usePlatformViewportResource.tsx +72 -0
- package/src/bridge/react/useScheduledTask.tsx +59 -0
- package/src/bridge/render.d.mts +31 -0
- package/src/bridge/render.mjs +62 -0
- package/src/bridge/render.ts +8 -0
- package/src/bridge/screenAnnotation.test.ts +103 -0
- package/src/bridge/screenAnnotation.ts +269 -0
- package/src/bridge/theme.d.mts +3 -0
- package/src/bridge/theme.mjs +9 -0
- package/src/bridge/types.ts +439 -0
- package/src/bridge/watch.d.mts +9 -0
- package/src/bridge/watch.mjs +34 -0
- package/src/bridge/watch.ts +1 -0
- package/src/bridge/window.d.mts +44 -0
- package/src/bridge/window.mjs +33 -0
- package/src/chrome/index.ts +1 -0
- package/src/components/accessibility/AccessibilityReviewDialog.test.tsx +104 -0
- package/src/components/accessibility/AccessibilityReviewDialog.tsx +350 -0
- package/src/components/accessibility/accessibilityReview.test.ts +101 -0
- package/src/components/accessibility/accessibilityReview.ts +639 -0
- package/src/components/accessibility/index.ts +16 -0
- package/src/components/agent-feedback/ScreenAnnotationAgentDialog.tsx +509 -0
- package/src/components/agent-feedback/index.ts +5 -0
- package/src/components/agents/AgentComposer.tsx +34 -0
- package/src/components/agents/AgentContextUsageBar.tsx +127 -0
- package/src/components/agents/AgentDrawerPanel.tsx +82 -0
- package/src/components/agents/AgentMarkdown.tsx +12 -0
- package/src/components/agents/AgentMessageBubble.tsx +82 -0
- package/src/components/agents/AgentMessageList.tsx +47 -0
- package/src/components/agents/AgentModelMenu.tsx +55 -0
- package/src/components/agents/AgentThinkingBlock.tsx +66 -0
- package/src/components/agents/AgentToolApprovalActions.tsx +65 -0
- package/src/components/agents/AgentToolCallCard.tsx +26 -0
- package/src/components/agents/AgentToolPendingList.tsx +39 -0
- package/src/components/agents/AgentToolPendingReview.tsx +118 -0
- package/src/components/agents/agentPanelStyles.ts +79 -0
- package/src/components/agents/agentTypes.ts +96 -0
- package/src/components/agents/formatToolCallArguments.test.ts +16 -0
- package/src/components/agents/formatToolCallArguments.ts +9 -0
- package/src/components/agents/index.ts +40 -0
- package/src/components/assets/AssetLibraryDialog.tsx +5 -0
- package/src/components/assets/asset-library/AssetLibraryDialog.tsx +43 -0
- package/src/components/assets/asset-library/AssetLibraryWorkspace.tsx +54 -0
- package/src/components/assets/asset-library/detail/AssetLibraryDetailActions.tsx +68 -0
- package/src/components/assets/asset-library/detail/AssetLibraryDetailHeader.tsx +56 -0
- package/src/components/assets/asset-library/detail/AssetLibraryDetailPane.tsx +90 -0
- package/src/components/assets/asset-library/detail/AssetLibraryDetailPreview.tsx +67 -0
- package/src/components/assets/asset-library/detail/AssetLibraryInlinePreview.tsx +87 -0
- package/src/components/assets/asset-library/detail/AssetLibraryInlineSourceField.tsx +29 -0
- package/src/components/assets/asset-library/detail/AssetLibraryMetadataFields.tsx +34 -0
- package/src/components/assets/asset-library/detail/AssetLibraryUsagePanel.tsx +46 -0
- package/src/components/assets/asset-library/detail/AssetLibraryVersionsPanel.tsx +145 -0
- package/src/components/assets/asset-library/helpers/assetKind.ts +74 -0
- package/src/components/assets/asset-library/helpers.ts +41 -0
- package/src/components/assets/asset-library/hooks/useAssetDetailDraft.ts +81 -0
- package/src/components/assets/asset-library/hooks/useAssetLibraryDialog.ts +233 -0
- package/src/components/assets/asset-library/hooks/useAssetLibraryMutations.ts +266 -0
- package/src/components/assets/asset-library/hooks/useAssetLibrarySelectionSync.ts +24 -0
- package/src/components/assets/asset-library/hooks/useAssetLibraryVersions.ts +145 -0
- package/src/components/assets/asset-library/hooks/useInlineAssetPreview.ts +44 -0
- package/src/components/assets/asset-library/index.ts +19 -0
- package/src/components/assets/asset-library/layout/assetLibraryLayout.ts +201 -0
- package/src/components/assets/asset-library/shared/fieldStyles.ts +62 -0
- package/src/components/assets/asset-library/sidebar/AssetLibraryFilterPills.tsx +89 -0
- package/src/components/assets/asset-library/sidebar/AssetLibraryList.tsx +91 -0
- package/src/components/assets/asset-library/sidebar/AssetLibraryListRow.tsx +99 -0
- package/src/components/assets/asset-library/sidebar/AssetLibraryListStatus.tsx +24 -0
- package/src/components/assets/asset-library/sidebar/AssetLibrarySidebar.tsx +48 -0
- package/src/components/assets/asset-library/sidebar/AssetLibrarySidebarActions.tsx +38 -0
- package/src/components/assets/asset-library/sidebar/AssetLibrarySidebarToolbar.tsx +78 -0
- package/src/components/assets/asset-library/sidebar/AssetListThumbnail.tsx +86 -0
- package/src/components/assets/asset-library/types.ts +128 -0
- package/src/components/assets/asset-library/utils/assetLibraryUtils.ts +181 -0
- package/src/components/assets/asset-library/utils/pathBasename.ts +5 -0
- package/src/components/assets/asset-library/utils/sanitizeUploadFileName.ts +7 -0
- package/src/components/assets/asset-library/utils/uploadCollectionAsset.ts +52 -0
- package/src/components/chrome/OverlayActionCapsule.test.tsx +82 -0
- package/src/components/chrome/OverlayActionCapsule.tsx +90 -0
- package/src/components/chrome/PanelTabStrip.tsx +113 -0
- package/src/components/chrome/PlatformIcon.tsx +27 -0
- package/src/components/chrome/PureAppWordmark.tsx +89 -0
- package/src/components/chrome/ShellWindowControls.tsx +51 -0
- package/src/components/chrome/ThemeModeButton.tsx +16 -0
- package/src/components/chrome/Titlebar.tsx +79 -0
- package/src/components/chrome/WorkspaceTabStrip.tsx +300 -0
- package/src/components/chrome/index.ts +31 -0
- package/src/components/chrome/workspaceTabTypes.ts +29 -0
- package/src/components/common/buttons/Button.tsx +241 -0
- package/src/components/common/buttons/ChoiceChip.tsx +73 -0
- package/src/components/common/buttons/CleanButton.tsx +34 -0
- package/src/components/common/buttons/IconButton.tsx +89 -0
- package/src/components/common/buttons/QuietAction.tsx +29 -0
- package/src/components/common/buttons/SegmentedControl.tsx +67 -0
- package/src/components/common/buttons/TextActionButton.tsx +55 -0
- package/src/components/common/buttons/TextLink.tsx +38 -0
- package/src/components/common/canvas/CanvasElementFrame.test.tsx +79 -0
- package/src/components/common/canvas/CanvasElementFrame.tsx +182 -0
- package/src/components/common/canvas/canvasGeometry.test.ts +66 -0
- package/src/components/common/canvas/canvasGeometry.ts +133 -0
- package/src/components/common/canvas/index.ts +27 -0
- package/src/components/common/canvas/useCanvasDragResize.test.tsx +152 -0
- package/src/components/common/canvas/useCanvasDragResize.ts +161 -0
- package/src/components/common/chat/ChatAssistantMessage.tsx +81 -0
- package/src/components/common/chat/ChatBox.tsx +189 -0
- package/src/components/common/chat/ChatMarkdown.tsx +109 -0
- package/src/components/common/chat/ChatModelMenu.tsx +258 -0
- package/src/components/common/chat/ChatStatusRow.tsx +24 -0
- package/src/components/common/chat/ChatThinkingIndicator.tsx +54 -0
- package/src/components/common/chat/ChatThread.tsx +59 -0
- package/src/components/common/chat/ChatToolRow.tsx +141 -0
- package/src/components/common/chat/ChatUserBubble.tsx +45 -0
- package/src/components/common/chat/chatUtils.ts +7 -0
- package/src/components/common/chat/index.ts +24 -0
- package/src/components/common/connections/ConnectionSetup.tsx +529 -0
- package/src/components/common/connections/index.ts +26 -0
- package/src/components/common/containers/AppFrame.test.tsx +47 -0
- package/src/components/common/containers/AppFrame.tsx +65 -0
- package/src/components/common/containers/AppHeader.tsx +60 -0
- package/src/components/common/containers/AutoFillGrid.tsx +37 -0
- package/src/components/common/containers/Collapsible.tsx +43 -0
- package/src/components/common/containers/CollapsibleGrid.tsx +174 -0
- package/src/components/common/containers/MotionScope.tsx +32 -0
- package/src/components/common/containers/PageHeader.tsx +35 -0
- package/src/components/common/containers/PanelToolbarHeader.tsx +113 -0
- package/src/components/common/containers/QuietDisclosure.tsx +91 -0
- package/src/components/common/containers/QuietSurface.tsx +41 -0
- package/src/components/common/containers/ScrollPanel.tsx +33 -0
- package/src/components/common/containers/StatusBar.tsx +42 -0
- package/src/components/common/containers/SurfacePanel.tsx +66 -0
- package/src/components/common/containers/ToolbarStrip.tsx +80 -0
- package/src/components/common/containers/flex.ts +117 -0
- package/src/components/common/containers/useOpenTransition.ts +33 -0
- package/src/components/common/context/ContextSelector.tsx +269 -0
- package/src/components/common/context/index.ts +7 -0
- package/src/components/common/desk/ActionReader.tsx +270 -0
- package/src/components/common/desk/ActivityLedger.tsx +143 -0
- package/src/components/common/desk/CreationDesk.tsx +139 -0
- package/src/components/common/desk/DailyBrief.tsx +160 -0
- package/src/components/common/desk/DeskCard.tsx +157 -0
- package/src/components/common/desk/index.ts +30 -0
- package/src/components/common/dropdown/ContextMenu.tsx +87 -0
- package/src/components/common/dropdown/MenuButtonDropdown.tsx +121 -0
- package/src/components/common/dropdown/MenuDropdown.tsx +63 -0
- package/src/components/common/dropdown/MenuDropdownEntry.tsx +51 -0
- package/src/components/common/dropdown/MenuDropdownItem.tsx +82 -0
- package/src/components/common/dropdown/MenuDropdownSubmenu.tsx +145 -0
- package/src/components/common/dropdown/MenuPanel.tsx +69 -0
- package/src/components/common/dropdown/MenuPortal.tsx +162 -0
- package/src/components/common/dropdown/MenuPortalLayer.tsx +6 -0
- package/src/components/common/dropdown/SelectMenu.tsx +243 -0
- package/src/components/common/dropdown/SelectMenuControl.tsx +23 -0
- package/src/components/common/dropdown/SelectMenuOptions.tsx +38 -0
- package/src/components/common/dropdown/menuPortalConstants.ts +11 -0
- package/src/components/common/dropdown/menuTypes.ts +71 -0
- package/src/components/common/dropdown/menuViewportPosition.test.ts +139 -0
- package/src/components/common/dropdown/menuViewportPosition.ts +122 -0
- package/src/components/common/dropdown/selectMenuLayout.test.ts +42 -0
- package/src/components/common/dropdown/selectMenuLayout.ts +123 -0
- package/src/components/common/dropdown/useMenuAnchorPosition.ts +109 -0
- package/src/components/common/dropdown/useSelectMenuAnchor.ts +30 -0
- package/src/components/common/evidence/StructuredEvidenceView.test.tsx +77 -0
- package/src/components/common/evidence/StructuredEvidenceView.tsx +312 -0
- package/src/components/common/evidence/index.ts +13 -0
- package/src/components/common/feedback/Badge.tsx +33 -0
- package/src/components/common/feedback/CapabilityPills.tsx +36 -0
- package/src/components/common/feedback/EmptyState.tsx +132 -0
- package/src/components/common/feedback/InfoHint.tsx +67 -0
- package/src/components/common/feedback/InlineBanner.tsx +82 -0
- package/src/components/common/feedback/PlatformChip.tsx +104 -0
- package/src/components/common/feedback/QuietPill.tsx +75 -0
- package/src/components/common/feedback/WorkProgressPanel.tsx +156 -0
- package/src/components/common/feedback/index.ts +33 -0
- package/src/components/common/inputs/BareInput.tsx +31 -0
- package/src/components/common/inputs/BareTextarea.tsx +10 -0
- package/src/components/common/inputs/Checkbox.tsx +13 -0
- package/src/components/common/inputs/FieldControlShell.tsx +49 -0
- package/src/components/common/inputs/FormField.tsx +40 -0
- package/src/components/common/inputs/HybridSearchField.tsx +280 -0
- package/src/components/common/inputs/InlineComposer.tsx +197 -0
- package/src/components/common/inputs/PaletteCirclePicker.tsx +26 -0
- package/src/components/common/inputs/PaletteDropdown.tsx +413 -0
- package/src/components/common/inputs/Radio.tsx +19 -0
- package/src/components/common/inputs/SearchField.tsx +128 -0
- package/src/components/common/inputs/SelectField.tsx +169 -0
- package/src/components/common/inputs/SurfacePalettePicker.tsx +54 -0
- package/src/components/common/inputs/TextAreaField.tsx +22 -0
- package/src/components/common/inputs/TextField.tsx +51 -0
- package/src/components/common/inputs/ToggleSwitch.tsx +110 -0
- package/src/components/common/inputs/WorkspacePicker.tsx +349 -0
- package/src/components/common/inputs/fieldStyles.ts +137 -0
- package/src/components/common/layout/PanelGroup.tsx +479 -0
- package/src/components/common/layout/index.ts +31 -0
- package/src/components/common/layout/panelLayoutConstants.ts +7 -0
- package/src/components/common/layout/panelLayoutPersistence.ts +35 -0
- package/src/components/common/layout/panelLayoutState.test.ts +38 -0
- package/src/components/common/layout/panelLayoutState.ts +174 -0
- package/src/components/common/layout/panelLayoutTypes.ts +19 -0
- package/src/components/common/layout/tabs/Tabs.tsx +136 -0
- package/src/components/common/lists/listRowStyles.ts +32 -0
- package/src/components/common/lists/quiet-ledger/QuietActivityList.tsx +64 -0
- package/src/components/common/lists/quiet-ledger/QuietLedgerRow.tsx +119 -0
- package/src/components/common/lists/quiet-ledger/index.ts +9 -0
- package/src/components/common/lists/reorderable/DragHandle.tsx +65 -0
- package/src/components/common/lists/reorderable/ReorderableList.tsx +280 -0
- package/src/components/common/lists/reorderable/ReorderableListRow.tsx +102 -0
- package/src/components/common/lists/reorderable/ReorderableSections.tsx +344 -0
- package/src/components/common/lists/reorderable/ReorderableSectionsDemo.tsx +94 -0
- package/src/components/common/lists/reorderable/index.ts +15 -0
- package/src/components/common/lists/reorderable/reorderableUtils.test.ts +28 -0
- package/src/components/common/lists/reorderable/reorderableUtils.ts +23 -0
- package/src/components/common/lists/reorderable/types.ts +40 -0
- package/src/components/common/lists/reorderable/useReorderableDragState.ts +49 -0
- package/src/components/common/media/ImageReferencePicker.tsx +242 -0
- package/src/components/common/menubar/MenuBar.tsx +78 -0
- package/src/components/common/menubar/MenuBarTrigger.tsx +70 -0
- package/src/components/common/narrative/NarrativeMention.tsx +74 -0
- package/src/components/common/navigation/PathBreadcrumbs.tsx +78 -0
- package/src/components/common/navigation/UnderlineTabs.tsx +83 -0
- package/src/components/common/overlays/InstallAppPromptDialog.tsx +59 -0
- package/src/components/common/overlays/Modal.tsx +285 -0
- package/src/components/common/overlays/ModalChromeHeader.tsx +105 -0
- package/src/components/common/overlays/ObjectActionStrip.tsx +80 -0
- package/src/components/common/people/AutoUpdateReviewList.tsx +182 -0
- package/src/components/common/people/EntityList.tsx +122 -0
- package/src/components/common/people/EntityPortrait.tsx +64 -0
- package/src/components/common/people/LinkedDossierList.tsx +99 -0
- package/src/components/common/people/OpportunityList.tsx +94 -0
- package/src/components/common/people/PeopleSourceList.tsx +145 -0
- package/src/components/common/people/RelationshipDossier.tsx +168 -0
- package/src/components/common/people/RelationshipMap.tsx +362 -0
- package/src/components/common/people/index.ts +40 -0
- package/src/components/common/preview/FileAudioPreview.tsx +89 -0
- package/src/components/common/preview/FileImagePreview.tsx +88 -0
- package/src/components/common/preview/FilePdfPreview.tsx +87 -0
- package/src/components/common/preview/FileTextPreview.tsx +96 -0
- package/src/components/common/preview/FileVideoPreview.tsx +87 -0
- package/src/components/common/preview/PlatformFilePreview.tsx +166 -0
- package/src/components/common/preview/previewLayout.ts +27 -0
- package/src/components/common/render/Each.tsx +42 -0
- package/src/components/common/research/EvidenceDossier.tsx +894 -0
- package/src/components/common/research/index.ts +7 -0
- package/src/components/common/tiles/CatalogCard.tsx +116 -0
- package/src/components/common/tiles/Tile.tsx +45 -0
- package/src/components/common/tiles/TileGrid.tsx +13 -0
- package/src/components/common/typography/Heading.tsx +27 -0
- package/src/components/common/typography/Kicker.tsx +30 -0
- package/src/components/common/typography/Text.tsx +80 -0
- package/src/components/credentials/CredentialsPanel.tsx +169 -0
- package/src/components/credentials/credentialsTypes.ts +14 -0
- package/src/components/data/DataChart.tsx +913 -0
- package/src/components/data/dataTable.ts +99 -0
- package/src/components/editor/EditorCommentPromptDialog.tsx +124 -0
- package/src/components/editor/EditorLinkPromptDialog.tsx +65 -0
- package/src/components/print-design/PrintDesignPanel.test.tsx +1446 -0
- package/src/components/print-design/PrintDesignPanel.tsx +3043 -0
- package/src/components/print-design/index.ts +9 -0
- package/src/components/proofing/PagedProofDialog.tsx +453 -0
- package/src/components/proofing/index.ts +4 -0
- package/src/editor/DocumentEditor.tsx +28 -0
- package/src/editor/EditorViewModeToggle.tsx +35 -0
- package/src/editor/index.ts +97 -0
- package/src/editor/toolbarOverlays.ts +8 -0
- package/src/index.ts +209 -0
- package/src/theme/ThemeProvider.tsx +113 -0
- package/src/theme/appAccents.ts +87 -0
- package/src/theme/buildThemeBridgePayload.ts +23 -0
- package/src/theme/composePlatformTheme.test.ts +30 -0
- package/src/theme/composePlatformTheme.ts +23 -0
- package/src/theme/platformFont.d.mts +7 -0
- package/src/theme/platformFont.mjs +20 -0
- package/src/theme/platformFont.ts +6 -0
- package/src/theme/reportsShellChromeSelectors.ts +136 -0
- package/src/theme/styled.d.ts +5 -0
- package/src/theme/surfacePalettes.ts +178 -0
- package/src/theme/surfaceRoleSelectors.ts +113 -0
- package/src/theme/themeVars.ts +13 -0
- package/src/theme/themes/dark.ts +59 -0
- package/src/theme/themes/light.ts +60 -0
- package/src/theme/themes/palette.ts +44 -0
- package/src/theme/themes/shared.ts +68 -0
- package/src/theme/tokens.ts +114 -0
- package/src/theme/utils/GlobalStyles.ts +88 -0
- package/src/theme/utils/appFrameDocumentStyles.d.mts +5 -0
- package/src/theme/utils/appFrameDocumentStyles.mjs +89 -0
- package/src/theme/utils/appFrameDocumentStyles.ts +5 -0
- package/src/theme/utils/applyTheme.ts +50 -0
- package/src/theme/utils/cssVariables.ts +49 -0
- package/src/theme/utils/useInjectThemeIntoIframe.ts +40 -0
- package/src/utils/extensionIconMap.ts +123 -0
- package/src/utils/generalUtils.ts +157 -0
- package/src/writing/DraftAssistantDialog.tsx +279 -0
- package/src/writing/WritingStyleManager.tsx +416 -0
- package/src/writing/condenseWritingStyle.ts +103 -0
- package/src/writing/draftTextWithAgent.ts +134 -0
- package/src/writing/index.ts +39 -0
- package/src/writing/styleStore.ts +32 -0
- package/src/writing/writingStyle.test.ts +122 -0
- package/src/writing/writingStyle.ts +217 -0
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import { bridge } from './client.mjs'
|
|
2
|
+
import { PLATFORM_BRIDGE_EVENTS } from './events.mjs'
|
|
3
|
+
import { PLATFORM_BRIDGE_METHODS } from './methods.mjs'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Agent session + run bridge SDK for plugin iframes.
|
|
7
|
+
* Requires `agents` permission in plugin.json.
|
|
8
|
+
*
|
|
9
|
+
* Host handlers wire in shell phase S8; constants and client are stable for app authors.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** @param {import('./agentTypes.js').PlatformCreateAgentSessionRequest} request */
|
|
13
|
+
export async function createAgentSession(request) {
|
|
14
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSIONS_CREATE, [request])
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** @param {import('./agentTypes.js').PlatformListAgentSessionsRequest} request */
|
|
18
|
+
export async function listAgentSessions(request) {
|
|
19
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSIONS_LIST, [request])
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** @param {import('./agentTypes.js').PlatformReadAgentSessionRequest} request */
|
|
23
|
+
export async function readAgentSession(request) {
|
|
24
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSIONS_READ, [request])
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** @param {import('./agentTypes.js').PlatformUpdateAgentSessionRequest} request */
|
|
28
|
+
export async function updateAgentSession(request) {
|
|
29
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSIONS_UPDATE, [request])
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** @param {import('./agentTypes.js').PlatformReadAgentSessionRequest} request */
|
|
33
|
+
export async function deleteAgentSession(request) {
|
|
34
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSIONS_DELETE, [request])
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Send a user message on a session; shell drives the run until awaiting user,
|
|
39
|
+
* manual pending tools, or terminal state.
|
|
40
|
+
* @param {import('./agentTypes.js').PlatformSendAgentSessionMessageRequest} request
|
|
41
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentSessionDriveResult>}
|
|
42
|
+
*/
|
|
43
|
+
export async function sendAgentSessionMessage(request) {
|
|
44
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSION_SEND_MESSAGE, [
|
|
45
|
+
request,
|
|
46
|
+
])
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Approve manual pending tools and continue the run.
|
|
51
|
+
* @param {import('./agentTypes.js').PlatformAgentSessionDriveRequest} request
|
|
52
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentSessionDriveResult | null>}
|
|
53
|
+
*/
|
|
54
|
+
export async function approveAgentSessionTools(request) {
|
|
55
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSION_APPROVE_TOOLS, [
|
|
56
|
+
request,
|
|
57
|
+
])
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Reject manual pending tools and continue the run.
|
|
62
|
+
* @param {import('./agentTypes.js').PlatformRejectAgentSessionToolsRequest} request
|
|
63
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentSessionDriveResult | null>}
|
|
64
|
+
*/
|
|
65
|
+
export async function rejectAgentSessionTools(request) {
|
|
66
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSION_REJECT_TOOLS, [
|
|
67
|
+
request,
|
|
68
|
+
])
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Auto-approve policy-approved pending tools (e.g. after loading a session).
|
|
73
|
+
* @param {import('./agentTypes.js').PlatformAgentSessionDriveRequest} request
|
|
74
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentSessionDriveResult | null>}
|
|
75
|
+
*/
|
|
76
|
+
export async function advanceAgentSessionPending(request) {
|
|
77
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSION_ADVANCE_PENDING, [
|
|
78
|
+
request,
|
|
79
|
+
])
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Stop the in-flight turn for a session and persist interrupted state.
|
|
84
|
+
* @param {import('./agentTypes.js').PlatformInterruptAgentSessionRequest} request
|
|
85
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentSessionDriveResult>}
|
|
86
|
+
*/
|
|
87
|
+
export async function interruptAgentSession(request) {
|
|
88
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_SESSION_INTERRUPT, [request])
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Subscribe to streaming agent run events for this plugin tab.
|
|
93
|
+
* Payload shape matches shell `AgentRunEventIpcPayload` (runId, seq, type, …).
|
|
94
|
+
*
|
|
95
|
+
* @param {(payload: import('./agentTypes.js').PlatformAgentRunEvent) => void} listener
|
|
96
|
+
* @returns {() => void}
|
|
97
|
+
*/
|
|
98
|
+
export function onAgentRunEvent(listener) {
|
|
99
|
+
return bridge.onEvent(PLATFORM_BRIDGE_EVENTS.AGENT_RUN_EVENT, listener)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Materialize a run for an existing session and send the first user message.
|
|
104
|
+
* Returns the run snapshot (state 'ready'); drive it with callAgentRunModel
|
|
105
|
+
* and resolveAgentRunToolCalls until 'awaiting_user'.
|
|
106
|
+
*
|
|
107
|
+
* @param {import('./agentTypes.js').PlatformStartAgentRunRequest} request
|
|
108
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentRunSnapshot>}
|
|
109
|
+
*/
|
|
110
|
+
export async function startAgentRun(request) {
|
|
111
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_RUN_START, [request])
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* @param {import('./agentTypes.js').PlatformCallAgentModelRequest} request
|
|
116
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentRunSnapshot>}
|
|
117
|
+
*/
|
|
118
|
+
export async function callAgentRunModel(request) {
|
|
119
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_RUN_CALL_MODEL, [request])
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Route policy-approved pending tool calls to their registered app tabs and
|
|
124
|
+
* resolve them. Tools still pending afterwards need user approval in the
|
|
125
|
+
* agent drawer.
|
|
126
|
+
*
|
|
127
|
+
* @param {import('./agentTypes.js').PlatformResolveAgentToolCallsRequest} request
|
|
128
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentRunSnapshot>}
|
|
129
|
+
*/
|
|
130
|
+
export async function resolveAgentRunToolCalls(request) {
|
|
131
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_RUN_RESOLVE_TOOL_CALLS, [
|
|
132
|
+
request,
|
|
133
|
+
])
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @param {import('./agentTypes.js').PlatformSendAgentRunMessageRequest} request
|
|
138
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentRunSnapshot>}
|
|
139
|
+
*/
|
|
140
|
+
export async function sendAgentRunMessage(request) {
|
|
141
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_RUN_SEND, [request])
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @param {import('./agentTypes.js').PlatformReadAgentRunContextRequest} request
|
|
146
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentRunContext>}
|
|
147
|
+
*/
|
|
148
|
+
export async function readAgentRunContext(request) {
|
|
149
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_RUN_READ_CONTEXT, [request])
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Credential-filtered catalog entries for model menus (configured booleans only).
|
|
154
|
+
* @param {import('./agentTypes.js').PlatformReadAgentLlmMenuOptionsRequest} [request]
|
|
155
|
+
* @returns {Promise<import('./agentTypes.js').PlatformAgentLlmMenuOption[]>}
|
|
156
|
+
*/
|
|
157
|
+
export async function readAgentLlmMenuOptions(request = {}) {
|
|
158
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_LLM_MENU_OPTIONS, [request])
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @returns {Promise<import('./agentTypes.js').PlatformLocalModelRuntimeStatus>}
|
|
163
|
+
*/
|
|
164
|
+
export async function readLocalModelsStatus() {
|
|
165
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_LOCAL_MODELS_STATUS, [])
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Register tool short names implemented by this tab (after bridge ready).
|
|
170
|
+
* @param {{ tools: string[] }} request
|
|
171
|
+
*/
|
|
172
|
+
export async function registerAgentTools(request) {
|
|
173
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_TOOLS_REGISTER, [request])
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Handle host-initiated tool invocations for this tab.
|
|
178
|
+
* @param {(payload: {
|
|
179
|
+
* invokeId: string
|
|
180
|
+
* toolCallId: string
|
|
181
|
+
* name: string
|
|
182
|
+
* shortName: string
|
|
183
|
+
* arguments: Record<string, unknown>
|
|
184
|
+
* }) => Promise<{ toolCallId: string, content: string, isError?: boolean }>} handler
|
|
185
|
+
*/
|
|
186
|
+
export function onAgentToolInvoke(handler) {
|
|
187
|
+
return bridge.onEvent(PLATFORM_BRIDGE_EVENTS.AGENT_TOOL_INVOKE, payload => {
|
|
188
|
+
void (async () => {
|
|
189
|
+
if (!payload || typeof payload !== 'object') return
|
|
190
|
+
const invokeId = payload.invokeId
|
|
191
|
+
const toolCallId = payload.toolCallId
|
|
192
|
+
const name = payload.name
|
|
193
|
+
const shortName = payload.shortName
|
|
194
|
+
if (
|
|
195
|
+
typeof invokeId !== 'string' ||
|
|
196
|
+
typeof toolCallId !== 'string' ||
|
|
197
|
+
typeof name !== 'string' ||
|
|
198
|
+
typeof shortName !== 'string'
|
|
199
|
+
) {
|
|
200
|
+
return
|
|
201
|
+
}
|
|
202
|
+
try {
|
|
203
|
+
const result = await handler({
|
|
204
|
+
invokeId,
|
|
205
|
+
toolCallId,
|
|
206
|
+
name,
|
|
207
|
+
shortName,
|
|
208
|
+
arguments:
|
|
209
|
+
payload.arguments && typeof payload.arguments === 'object'
|
|
210
|
+
? payload.arguments
|
|
211
|
+
: {},
|
|
212
|
+
})
|
|
213
|
+
await bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_TOOLS_COMPLETE, [
|
|
214
|
+
{
|
|
215
|
+
invokeId,
|
|
216
|
+
toolCallId: result.toolCallId ?? toolCallId,
|
|
217
|
+
content: result.content,
|
|
218
|
+
isError: result.isError,
|
|
219
|
+
},
|
|
220
|
+
])
|
|
221
|
+
} catch (error) {
|
|
222
|
+
await bridge.call(PLATFORM_BRIDGE_METHODS.AGENTS_TOOLS_COMPLETE, [
|
|
223
|
+
{
|
|
224
|
+
invokeId,
|
|
225
|
+
toolCallId,
|
|
226
|
+
content: error instanceof Error ? error.message : String(error),
|
|
227
|
+
isError: true,
|
|
228
|
+
},
|
|
229
|
+
])
|
|
230
|
+
}
|
|
231
|
+
})()
|
|
232
|
+
})
|
|
233
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export {
|
|
2
|
+
advanceAgentSessionPending,
|
|
3
|
+
approveAgentSessionTools,
|
|
4
|
+
callAgentRunModel,
|
|
5
|
+
createAgentSession,
|
|
6
|
+
deleteAgentSession,
|
|
7
|
+
interruptAgentSession,
|
|
8
|
+
listAgentSessions,
|
|
9
|
+
onAgentRunEvent,
|
|
10
|
+
onAgentToolInvoke,
|
|
11
|
+
readAgentLlmMenuOptions,
|
|
12
|
+
readAgentRunContext,
|
|
13
|
+
readAgentSession,
|
|
14
|
+
readLocalModelsStatus,
|
|
15
|
+
registerAgentTools,
|
|
16
|
+
rejectAgentSessionTools,
|
|
17
|
+
resolveAgentRunToolCalls,
|
|
18
|
+
sendAgentRunMessage,
|
|
19
|
+
sendAgentSessionMessage,
|
|
20
|
+
startAgentRun,
|
|
21
|
+
updateAgentSession,
|
|
22
|
+
} from './agents.mjs'
|
|
23
|
+
export type {
|
|
24
|
+
PlatformAgentMessage,
|
|
25
|
+
PlatformAgentMessageAttachment,
|
|
26
|
+
PlatformAgentImageAttachment,
|
|
27
|
+
PlatformAgentSessionConfig,
|
|
28
|
+
PlatformAgentSessionConfigPatch,
|
|
29
|
+
PlatformAgentSessionMetadata,
|
|
30
|
+
PlatformAgentSessionRecord,
|
|
31
|
+
PlatformAgentSessionScope,
|
|
32
|
+
PlatformAgentSessionSnapshot,
|
|
33
|
+
PlatformAgentSessionSummary,
|
|
34
|
+
PlatformAgentSessionToolPolicy,
|
|
35
|
+
PlatformAgentUiRunState,
|
|
36
|
+
PlatformAgentUiToolCall,
|
|
37
|
+
PlatformCreateAgentSessionRequest,
|
|
38
|
+
PlatformListAgentSessionsRequest,
|
|
39
|
+
PlatformReadAgentSessionRequest,
|
|
40
|
+
PlatformUpdateAgentSessionRequest,
|
|
41
|
+
} from './agentTypes.js'
|
|
42
|
+
|
|
43
|
+
export type {
|
|
44
|
+
PlatformAgentRunEvent,
|
|
45
|
+
PlatformAgentRunSnapshot,
|
|
46
|
+
PlatformAgentRunContext,
|
|
47
|
+
PlatformAgentRunUsage,
|
|
48
|
+
PlatformAgentLlmMenuOption,
|
|
49
|
+
PlatformCallAgentModelRequest,
|
|
50
|
+
PlatformInterruptAgentSessionRequest,
|
|
51
|
+
PlatformReadAgentLlmMenuOptionsRequest,
|
|
52
|
+
PlatformReadAgentRunContextRequest,
|
|
53
|
+
PlatformResolveAgentToolCallsRequest,
|
|
54
|
+
PlatformSendAgentRunMessageRequest,
|
|
55
|
+
PlatformStartAgentRunRequest,
|
|
56
|
+
PlatformAgentSessionDriveRequest,
|
|
57
|
+
PlatformAgentSessionDriveResult,
|
|
58
|
+
PlatformRejectAgentSessionToolsRequest,
|
|
59
|
+
PlatformSendAgentSessionMessageRequest,
|
|
60
|
+
PlatformLocalModelRuntimeStatus,
|
|
61
|
+
PlatformToolResolution,
|
|
62
|
+
} from './agentTypes.js'
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PlatformAppSettingsUpdateRequest } from './types.js'
|
|
2
|
+
|
|
3
|
+
export function getPlatformAppSettings(
|
|
4
|
+
appSlug: string,
|
|
5
|
+
): Promise<Record<string, unknown>>
|
|
6
|
+
|
|
7
|
+
export function updatePlatformAppSettings(
|
|
8
|
+
request: PlatformAppSettingsUpdateRequest,
|
|
9
|
+
): Promise<Record<string, unknown>>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { bridge } from './client.mjs'
|
|
2
|
+
import { PLATFORM_BRIDGE_METHODS } from './methods.mjs'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @param {string} appSlug
|
|
6
|
+
* @returns {Promise<Record<string, unknown>>}
|
|
7
|
+
*/
|
|
8
|
+
export async function getPlatformAppSettings(appSlug) {
|
|
9
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.SETTINGS_APP_GET, [appSlug])
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @param {import('./types.ts').PlatformAppSettingsUpdateRequest} request
|
|
14
|
+
* @returns {Promise<Record<string, unknown>>}
|
|
15
|
+
*/
|
|
16
|
+
export async function updatePlatformAppSettings(request) {
|
|
17
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.SETTINGS_APP_UPDATE, [request])
|
|
18
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** Injected into plugin iframe documents (cross-origin safe via bridge). */
|
|
2
|
+
import { injectAppFrameDocumentStyles } from '../theme/utils/appFrameDocumentStyles.mjs'
|
|
3
|
+
|
|
4
|
+
export const PLATFORM_THEME_STYLE_ID = 'platform-theme-vars-embedded'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @param {{ mode?: string, css?: string } | null | undefined} payload
|
|
8
|
+
*/
|
|
9
|
+
export function applyThemeFromHost(payload) {
|
|
10
|
+
if (!payload || typeof payload.css !== 'string' || !payload.css.trim()) return
|
|
11
|
+
|
|
12
|
+
let el = document.getElementById(PLATFORM_THEME_STYLE_ID)
|
|
13
|
+
if (!el) {
|
|
14
|
+
el = document.createElement('style')
|
|
15
|
+
el.id = PLATFORM_THEME_STYLE_ID
|
|
16
|
+
document.head.appendChild(el)
|
|
17
|
+
}
|
|
18
|
+
el.textContent = payload.css
|
|
19
|
+
|
|
20
|
+
const root = document.documentElement
|
|
21
|
+
if (typeof payload.mode === 'string') {
|
|
22
|
+
root.dataset.platformTheme = payload.mode
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const paletteId = payload.surfacePaletteId
|
|
26
|
+
if (typeof paletteId === 'string' && paletteId.trim()) {
|
|
27
|
+
root.dataset.platformSurfacePalette = paletteId.trim()
|
|
28
|
+
} else {
|
|
29
|
+
delete root.dataset.platformSurfacePalette
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
injectAppFrameDocumentStyles()
|
|
33
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
PlatformAssetContext,
|
|
3
|
+
PlatformAssetDeleteRequest,
|
|
4
|
+
PlatformAssetGetContextRequest,
|
|
5
|
+
PlatformAssetListScopedRequest,
|
|
6
|
+
PlatformAssetReferenceSwapRequest,
|
|
7
|
+
PlatformAssetReferenceSwapScopedRequest,
|
|
8
|
+
PlatformAssetReferenceSwapResult,
|
|
9
|
+
PlatformAssetSelection,
|
|
10
|
+
PlatformAssetSourceUpdateRequest,
|
|
11
|
+
PlatformAssetSourceUpdateScopedRequest,
|
|
12
|
+
PlatformAssetSummary,
|
|
13
|
+
PlatformAssetTransformRequest,
|
|
14
|
+
PlatformAssetUpdateRequest,
|
|
15
|
+
PlatformAssetVersionCreateRequest,
|
|
16
|
+
} from './types.js'
|
|
17
|
+
|
|
18
|
+
export declare function listCollectionAssets(
|
|
19
|
+
collectionPath: string,
|
|
20
|
+
): Promise<PlatformAssetSummary[]>
|
|
21
|
+
|
|
22
|
+
export declare function listScopedCollectionAssets(
|
|
23
|
+
request: PlatformAssetListScopedRequest,
|
|
24
|
+
): Promise<PlatformAssetSummary[]>
|
|
25
|
+
|
|
26
|
+
export declare function deleteCollectionAsset(
|
|
27
|
+
request: PlatformAssetDeleteRequest,
|
|
28
|
+
): Promise<boolean>
|
|
29
|
+
|
|
30
|
+
export declare function updateCollectionAsset(
|
|
31
|
+
request: PlatformAssetUpdateRequest,
|
|
32
|
+
): Promise<PlatformAssetSummary>
|
|
33
|
+
|
|
34
|
+
export declare function updateCollectionAssetSource(
|
|
35
|
+
request: PlatformAssetSourceUpdateRequest,
|
|
36
|
+
): Promise<PlatformAssetSummary>
|
|
37
|
+
|
|
38
|
+
export declare function updateCollectionAssetSourceScoped(
|
|
39
|
+
request: PlatformAssetSourceUpdateScopedRequest,
|
|
40
|
+
): Promise<PlatformAssetSummary>
|
|
41
|
+
|
|
42
|
+
export declare function getSelectedCollectionAsset(): Promise<PlatformAssetSelection | null>
|
|
43
|
+
|
|
44
|
+
export declare function setSelectedCollectionAsset(
|
|
45
|
+
selection: PlatformAssetSelection | null,
|
|
46
|
+
): Promise<boolean>
|
|
47
|
+
|
|
48
|
+
export declare function createCollectionAssetVersion(
|
|
49
|
+
request: PlatformAssetVersionCreateRequest,
|
|
50
|
+
): Promise<PlatformAssetSummary>
|
|
51
|
+
|
|
52
|
+
export declare function swapCollectionAssetReferences(
|
|
53
|
+
request: PlatformAssetReferenceSwapRequest,
|
|
54
|
+
): Promise<PlatformAssetReferenceSwapResult>
|
|
55
|
+
|
|
56
|
+
export declare function swapCollectionAssetReferencesScoped(
|
|
57
|
+
request: PlatformAssetReferenceSwapScopedRequest,
|
|
58
|
+
): Promise<PlatformAssetReferenceSwapResult>
|
|
59
|
+
|
|
60
|
+
export declare function transformCollectionAsset(
|
|
61
|
+
request: PlatformAssetTransformRequest,
|
|
62
|
+
): Promise<PlatformAssetSummary>
|
|
63
|
+
|
|
64
|
+
export declare function getCollectionAssetContext(
|
|
65
|
+
request: PlatformAssetGetContextRequest,
|
|
66
|
+
): Promise<PlatformAssetContext | null>
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { bridge } from './client.mjs'
|
|
2
|
+
import { PLATFORM_BRIDGE_METHODS } from './methods.mjs'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* List file + inline assets for a writer workspace or `.document` package root.
|
|
6
|
+
* Requires `assets` permission in plugin.json.
|
|
7
|
+
*
|
|
8
|
+
* @param {string} collectionPath Absolute path to the collection root
|
|
9
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary[]>}
|
|
10
|
+
*/
|
|
11
|
+
export async function listCollectionAssets(collectionPath) {
|
|
12
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_LIST, [collectionPath])
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* List assets when the app supplies manifest-known document paths (e.g. book chapters).
|
|
17
|
+
* Requires `assets` permission in plugin.json.
|
|
18
|
+
*
|
|
19
|
+
* @param {import('./types.js').PlatformAssetListScopedRequest} request
|
|
20
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary[]>}
|
|
21
|
+
*/
|
|
22
|
+
export async function listScopedCollectionAssets(request) {
|
|
23
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_LIST_SCOPED, [request])
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* @param {import('./types.js').PlatformAssetDeleteRequest} request
|
|
28
|
+
* @returns {Promise<boolean>}
|
|
29
|
+
*/
|
|
30
|
+
export async function deleteCollectionAsset(request) {
|
|
31
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_DELETE, [request])
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @param {import('./types.js').PlatformAssetUpdateRequest} request
|
|
36
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary>}
|
|
37
|
+
*/
|
|
38
|
+
export async function updateCollectionAsset(request) {
|
|
39
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_UPDATE, [request])
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Update inline mermaid / table / math source in document HTML.
|
|
44
|
+
*
|
|
45
|
+
* @param {import('./types.js').PlatformAssetSourceUpdateRequest} request
|
|
46
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary>}
|
|
47
|
+
*/
|
|
48
|
+
export async function updateCollectionAssetSource(request) {
|
|
49
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_UPDATE_SOURCE, [request])
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Update inline mermaid / table / math source when the app supplies document paths.
|
|
54
|
+
*
|
|
55
|
+
* @param {import('./types.js').PlatformAssetSourceUpdateScopedRequest} request
|
|
56
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary>}
|
|
57
|
+
*/
|
|
58
|
+
export async function updateCollectionAssetSourceScoped(request) {
|
|
59
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_UPDATE_SOURCE_SCOPED, [
|
|
60
|
+
request,
|
|
61
|
+
])
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** @returns {Promise<import('./types.js').PlatformAssetSelection | null>} */
|
|
65
|
+
export async function getSelectedCollectionAsset() {
|
|
66
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_GET_SELECTED, [])
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* @param {import('./types.js').PlatformAssetSelection | null} selection
|
|
71
|
+
* @returns {Promise<boolean>}
|
|
72
|
+
*/
|
|
73
|
+
export async function setSelectedCollectionAsset(selection) {
|
|
74
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_SET_SELECTED, [selection])
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @param {import('./types.js').PlatformAssetVersionCreateRequest} request
|
|
79
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary>}
|
|
80
|
+
*/
|
|
81
|
+
export async function createCollectionAssetVersion(request) {
|
|
82
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_CREATE_VERSION, [request])
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* @param {import('./types.js').PlatformAssetReferenceSwapRequest} request
|
|
87
|
+
* @returns {Promise<import('./types.js').PlatformAssetReferenceSwapResult>}
|
|
88
|
+
*/
|
|
89
|
+
export async function swapCollectionAssetReferences(request) {
|
|
90
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_SWAP_REFERENCES, [request])
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Swap asset references when the app supplies document paths for collection scope.
|
|
95
|
+
*
|
|
96
|
+
* @param {import('./types.js').PlatformAssetReferenceSwapScopedRequest} request
|
|
97
|
+
* @returns {Promise<import('./types.js').PlatformAssetReferenceSwapResult>}
|
|
98
|
+
*/
|
|
99
|
+
export async function swapCollectionAssetReferencesScoped(request) {
|
|
100
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_SWAP_REFERENCES_SCOPED, [
|
|
101
|
+
request,
|
|
102
|
+
])
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Local quick-variant transform (filter / rotate / flip) → new version in lineage.
|
|
107
|
+
*
|
|
108
|
+
* @param {import('./types.js').PlatformAssetTransformRequest} request
|
|
109
|
+
* @returns {Promise<import('./types.js').PlatformAssetSummary>}
|
|
110
|
+
*/
|
|
111
|
+
export async function transformCollectionAsset(request) {
|
|
112
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_TRANSFORM, [request])
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* @param {import('./types.js').PlatformAssetGetContextRequest} request
|
|
117
|
+
* @returns {Promise<import('./types.js').PlatformAssetContext | null>}
|
|
118
|
+
*/
|
|
119
|
+
export async function getCollectionAssetContext(request) {
|
|
120
|
+
return bridge.call(PLATFORM_BRIDGE_METHODS.ASSETS_GET_CONTEXT, [request])
|
|
121
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { bridge } from './client.mjs'
|
|
2
|
+
import { PLATFORM_BRIDGE_METHODS } from './methods.mjs'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Cold-start: pull `catalog.open` intent after bridge + boot (path only; app reads via fs).
|
|
6
|
+
*
|
|
7
|
+
* @returns {Promise<import('./types.ts').ResourceOpenEvent | null>}
|
|
8
|
+
*/
|
|
9
|
+
export async function consumePendingCatalogOpen() {
|
|
10
|
+
const result = await bridge.call(
|
|
11
|
+
PLATFORM_BRIDGE_METHODS.CATALOG_CONSUME_PENDING_OPEN,
|
|
12
|
+
)
|
|
13
|
+
return result?.resource ?? null
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Same rule as shell `isAppInstalled` in catalogAppState.ts.
|
|
18
|
+
*
|
|
19
|
+
* @param {import('./types.ts').PlatformAppInstallState} app
|
|
20
|
+
* @returns {boolean}
|
|
21
|
+
*/
|
|
22
|
+
export function isPluginAppInstalled(app) {
|
|
23
|
+
return Boolean(app.pluginRoot)
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { consumePendingCatalogOpen, isPluginAppInstalled } from './catalog.mjs'
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { PlatformBridgeClient } from './types.js'
|
|
2
|
+
import type { PlatformBridgeEventName } from './events.mjs'
|
|
3
|
+
import type { PlatformBridgeMethodName } from './methods.mjs'
|
|
4
|
+
|
|
5
|
+
export declare const PLATFORM_BRIDGE_EVENTS: {
|
|
6
|
+
readonly RESOURCE_OPEN: 'resource.open'
|
|
7
|
+
readonly THEME_CHANGED: 'theme.changed'
|
|
8
|
+
readonly RENDER_PROGRESS: 'render.progress'
|
|
9
|
+
readonly DEBUG_TEST: 'debug.test'
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export {
|
|
13
|
+
PLATFORM_BRIDGE_METHODS,
|
|
14
|
+
PLATFORM_BRIDGE_METHOD_PREFIXES,
|
|
15
|
+
} from './methods.mjs'
|
|
16
|
+
|
|
17
|
+
export const bridge: PlatformBridgeClient
|
|
18
|
+
|
|
19
|
+
export type { PlatformBridgeEventName, PlatformBridgeMethodName }
|