@hachej/boring-workspace 0.1.71 → 0.1.72
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/dist/{FileTree-B_fRS4Om.js → FileTree-C8JPlZtS.js} +1 -1
- package/dist/{MarkdownEditor-C55gVDyW.js → MarkdownEditor-B9wN6tGH.js} +14 -14
- package/dist/{WorkspaceLoadingState-D3i4X-eH.js → WorkspaceLoadingState-TgOWTNJC.js} +350 -203
- package/dist/{WorkspaceProvider-Ddx7GByq.js → WorkspaceProvider-DcOiZU24.js} +9 -9
- package/dist/app-front.d.ts +2 -883
- package/dist/app-front.js +1049 -1033
- package/dist/app-server.d.ts +4 -4
- package/dist/bridge-client.d.ts +2 -2
- package/dist/charts.d.ts +2 -119
- package/dist/plugin.d.ts +3 -3
- package/dist/{runtimeEnv-CU-c4kaV.d.ts → runtimeEnv-DKtVLBXo.d.ts} +2 -2
- package/dist/server.d.ts +6 -6
- package/dist/shared.d.ts +3 -3
- package/dist/src/__tests__/WorkspaceProvider.test.d.ts +1 -0
- package/dist/src/__tests__/exploration.property.test.d.ts +1 -0
- package/dist/src/__tests__/plugin-integration.test.d.ts +1 -0
- package/dist/src/__tests__/public-api.test.d.ts +1 -0
- package/dist/src/__tests__/publicFileStateApi.test.d.ts +1 -0
- package/dist/src/__tests__/theme-system.test.d.ts +1 -0
- package/dist/src/app/front/CloseLeftPaneOnAttention.d.ts +10 -0
- package/dist/src/app/front/PluginAppLeftHost.d.ts +18 -0
- package/dist/src/app/front/WorkspaceAgentFront.d.ts +174 -0
- package/dist/src/app/front/WorkspaceAgentStatusStates.d.ts +5 -0
- package/dist/src/app/front/WorkspaceBackgroundBoot.d.ts +10 -0
- package/dist/src/app/front/WorkspaceBootGate.d.ts +12 -0
- package/dist/src/app/front/WorkspaceFullPagePanel.d.ts +5 -0
- package/dist/src/app/front/WorkspaceShellCapabilitiesHost.d.ts +20 -0
- package/dist/src/app/front/WorkspaceUiStateSync.d.ts +9 -0
- package/dist/src/app/front/__tests__/WorkspaceAgentFront.test.d.ts +1 -0
- package/dist/src/app/front/__tests__/WorkspaceBackgroundBoot.test.d.ts +1 -0
- package/dist/src/app/front/__tests__/WorkspaceBootGate.test.d.ts +1 -0
- package/dist/src/app/front/__tests__/WorkspaceFullPagePanel.test.d.ts +1 -0
- package/dist/src/app/front/__tests__/chatPaneState.property.test.d.ts +1 -0
- package/dist/src/app/front/__tests__/useWorkspaceShellCapabilitiesController.test.d.ts +1 -0
- package/dist/src/app/front/__tests__/workspacePreload.test.d.ts +1 -0
- package/dist/src/app/front/chatPaneState.d.ts +8 -0
- package/dist/src/app/front/fullPageRoute.d.ts +10 -0
- package/dist/src/app/front/fullPageRouteErrors.d.ts +7 -0
- package/dist/src/app/front/index.d.ts +8 -0
- package/dist/src/app/front/localStorageSessions.d.ts +18 -0
- package/dist/src/app/front/useWorkspaceShellCapabilitiesController.d.ts +8 -0
- package/dist/src/app/front/workspaceBuiltinPlugins.d.ts +6 -0
- package/dist/src/app/front/workspacePreload.d.ts +64 -0
- package/dist/src/bridge-client/__tests__/client.test.d.ts +1 -0
- package/dist/src/bridge-client/index.d.ts +65 -0
- package/dist/src/front/agentPlugins/__tests__/registerAgentPlugin.test.d.ts +1 -0
- package/dist/src/front/agentPlugins/registerAgentPlugin.d.ts +26 -0
- package/dist/src/front/agentPlugins/reloadEvent.d.ts +7 -0
- package/dist/src/front/attention/WorkspaceAttentionProvider.d.ts +71 -0
- package/dist/src/front/attention/__tests__/WorkspaceAttentionProvider.test.d.ts +1 -0
- package/dist/src/front/attention/index.d.ts +2 -0
- package/dist/src/front/bridge/WorkspaceLink.d.ts +35 -0
- package/dist/src/front/bridge/__tests__/WorkspaceLink.test.d.ts +1 -0
- package/dist/src/front/bridge/__tests__/bridge.property.test.d.ts +1 -0
- package/dist/src/front/bridge/__tests__/bridge.test.d.ts +1 -0
- package/dist/src/front/bridge/__tests__/client.test.d.ts +1 -0
- package/dist/src/front/bridge/__tests__/uiCommandDispatcher.test.d.ts +1 -0
- package/dist/src/front/bridge/__tests__/uiCommandStream.test.d.ts +1 -0
- package/dist/src/front/bridge/client.d.ts +33 -0
- package/dist/src/front/bridge/createBridge.d.ts +8 -0
- package/dist/src/front/bridge/index.d.ts +12 -0
- package/dist/src/front/bridge/types.d.ts +92 -0
- package/dist/src/front/bridge/uiCommandBus.d.ts +3 -0
- package/dist/src/front/bridge/uiCommandDispatcher.d.ts +44 -0
- package/dist/src/front/bridge/uiCommandStream.d.ts +41 -0
- package/dist/src/front/bridge/validation.d.ts +66 -0
- package/dist/src/front/charts/__tests__/charts.test.d.ts +1 -0
- package/dist/src/front/charts/index.d.ts +92 -0
- package/dist/src/front/chrome/artifact-surface/ArtifactSurfacePane.d.ts +18 -0
- package/dist/src/front/chrome/artifact-surface/SurfaceShell.d.ts +84 -0
- package/dist/src/front/chrome/artifact-surface/__tests__/ArtifactSurfacePane.persistence.test.d.ts +1 -0
- package/dist/src/front/chrome/artifact-surface/__tests__/ArtifactSurfacePane.test.d.ts +1 -0
- package/dist/src/front/chrome/artifact-surface/__tests__/SurfaceShell.test.d.ts +1 -0
- package/dist/src/front/chrome/artifact-surface/__tests__/resolvePanelForPath.test.d.ts +1 -0
- package/dist/src/front/chrome/artifact-surface/definition.d.ts +12 -0
- package/dist/src/front/chrome/artifact-surface/surfaceShellHelpers.d.ts +10 -0
- package/dist/src/front/chrome/chat/ChatPanelHost.d.ts +16 -0
- package/dist/src/front/chrome/chat/DetachedChatPopover.d.ts +11 -0
- package/dist/src/front/chrome/chat/__tests__/ChatPanelHost.test.d.ts +1 -0
- package/dist/src/front/chrome/chat/composerStop.d.ts +19 -0
- package/dist/src/front/chrome/chat/definition.d.ts +16 -0
- package/dist/src/front/chrome/chat/types.d.ts +30 -0
- package/dist/src/front/chrome/empty-pane/EmptyPane.d.ts +5 -0
- package/dist/src/front/chrome/empty-pane/__tests__/EmptyPane.test.d.ts +1 -0
- package/dist/src/front/chrome/management/ManagementOverlaySurface.d.ts +16 -0
- package/dist/src/front/chrome/plugins/PluginsOverlay.d.ts +16 -0
- package/dist/src/front/chrome/session-list/SessionBrowser.d.ts +20 -0
- package/dist/src/front/chrome/session-list/__tests__/SessionBrowser.test.d.ts +1 -0
- package/dist/src/front/chrome/session-list/definition.d.ts +28 -0
- package/dist/src/front/chrome/skills/SkillsPage.d.ts +11 -0
- package/dist/src/front/chrome/skills/definition.d.ts +3 -0
- package/dist/src/front/chrome/workbench-left/WorkbenchLeftPane.d.ts +28 -0
- package/dist/src/front/chrome/workbench-left/__tests__/WorkbenchLeftPane.test.d.ts +1 -0
- package/dist/src/front/chrome/workbench-left/definition.d.ts +12 -0
- package/dist/src/front/chrome/workbench-left/useWorkspaceLeftPaneActions.d.ts +48 -0
- package/dist/src/front/components/CommandPalette.d.ts +21 -0
- package/dist/src/front/components/ControlTooltip.d.ts +12 -0
- package/dist/src/front/components/ErrorChip.d.ts +6 -0
- package/dist/src/front/components/PanelErrorBoundary.d.ts +22 -0
- package/dist/src/front/components/SessionList.d.ts +15 -0
- package/dist/src/front/components/WorkspaceLoadingState.d.ts +8 -0
- package/dist/src/front/components/__tests__/CommandPalette.test.d.ts +1 -0
- package/dist/src/front/components/__tests__/PanelErrorBoundary.test.d.ts +1 -0
- package/dist/src/front/components/__tests__/SessionList.test.d.ts +1 -0
- package/dist/src/front/components/__tests__/WorkspaceLoadingState.test.d.ts +1 -0
- package/dist/src/front/components/commandPaletteHelpers.d.ts +16 -0
- package/dist/src/front/components/recent/__tests__/migrate.test.d.ts +1 -0
- package/dist/src/front/components/recent/__tests__/recentStore.test.d.ts +1 -0
- package/dist/src/front/components/recent/index.d.ts +2 -0
- package/dist/src/front/components/recent/recentStore.d.ts +9 -0
- package/dist/src/front/components/recent/types.d.ts +23 -0
- package/dist/src/front/components/useCommandPaletteCatalogSearch.d.ts +7 -0
- package/dist/src/front/components/useCommandPaletteChrome.d.ts +14 -0
- package/dist/src/front/components/useCommandPaletteSelection.d.ts +15 -0
- package/dist/src/front/detached/DetachedPanelPopover.d.ts +2 -0
- package/dist/src/front/detached/detachedPanelTypes.d.ts +21 -0
- package/dist/src/front/detached/useDetachedPanelPosition.d.ts +10 -0
- package/dist/src/front/dock/DockviewShell.d.ts +6 -0
- package/dist/src/front/dock/PanelChrome.d.ts +16 -0
- package/dist/src/front/dock/ShadcnTab.d.ts +2 -0
- package/dist/src/front/dock/__tests__/dock.test.d.ts +1 -0
- package/dist/src/front/dock/index.d.ts +3 -0
- package/dist/src/front/dock/types.d.ts +69 -0
- package/dist/src/front/events/__tests__/agentBridge.test.d.ts +1 -0
- package/dist/src/front/events/__tests__/bus.test.d.ts +1 -0
- package/dist/src/front/events/__tests__/types.test.d.ts +1 -0
- package/dist/src/front/events/__tests__/useEvent.test.d.ts +1 -0
- package/dist/src/front/events/agentBridge.d.ts +1 -0
- package/dist/src/front/events/bus.d.ts +21 -0
- package/dist/src/front/events/index.d.ts +7 -0
- package/dist/src/front/events/types.d.ts +137 -0
- package/dist/src/front/events/useEvent.d.ts +7 -0
- package/dist/src/front/fullPage.d.ts +24 -0
- package/dist/src/front/hooks/__tests__/useArtifactPanels.test.d.ts +1 -0
- package/dist/src/front/hooks/__tests__/useArtifactRouting.test.d.ts +1 -0
- package/dist/src/front/hooks/__tests__/useEditorLifecycle.test.d.ts +1 -0
- package/dist/src/front/hooks/__tests__/useKeyboardShortcuts.test.d.ts +1 -0
- package/dist/src/front/hooks/__tests__/useViewportBreakpoint.test.d.ts +1 -0
- package/dist/src/front/hooks/index.d.ts +6 -0
- package/dist/src/front/hooks/useArtifactPanels.d.ts +14 -0
- package/dist/src/front/hooks/useArtifactRouting.d.ts +12 -0
- package/dist/src/front/hooks/useEditorLifecycle.d.ts +27 -0
- package/dist/src/front/hooks/useKeyboardShortcuts.d.ts +13 -0
- package/dist/src/front/hooks/useResponsiveSidebarCollapse.d.ts +6 -0
- package/dist/src/front/hooks/useViewportBreakpoint.d.ts +1 -0
- package/dist/src/front/layout/ChatLayout.d.ts +4 -0
- package/dist/src/front/layout/ChatPaneStage.d.ts +59 -0
- package/dist/src/front/layout/ChatPaneStageDock.d.ts +5 -0
- package/dist/src/front/layout/IdeLayout.d.ts +4 -0
- package/dist/src/front/layout/ResponsiveDockviewShell.d.ts +6 -0
- package/dist/src/front/layout/ThemeToggle.d.ts +10 -0
- package/dist/src/front/layout/TopBar.d.ts +17 -0
- package/dist/src/front/layout/__tests__/ChatPaneStageDock.test.d.ts +1 -0
- package/dist/src/front/layout/__tests__/TopBar.test.d.ts +1 -0
- package/dist/src/front/layout/__tests__/presets.test.d.ts +1 -0
- package/dist/src/front/layout/cornerChrome.d.ts +10 -0
- package/dist/src/front/layout/index.d.ts +9 -0
- package/dist/src/front/layout/mobileShell.d.ts +18 -0
- package/dist/src/front/layout/paneCollapseButton.d.ts +15 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftOverlayChromeContext.d.ts +1 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftPane.d.ts +75 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftPaneActions.d.ts +13 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftPaneHeader.d.ts +7 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftPaneProjects.d.ts +18 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftPaneSections.d.ts +6 -0
- package/dist/src/front/layout/plugin-tabs/AppLeftPaneSessionRow.d.ts +18 -0
- package/dist/src/front/layout/plugin-tabs/PluginTabsWorkspaceShell.d.ts +15 -0
- package/dist/src/front/layout/plugin-tabs/__tests__/AppLeftPane.test.d.ts +1 -0
- package/dist/src/front/layout/types.d.ts +40 -0
- package/dist/src/front/layout/useViewportWidth.d.ts +1 -0
- package/dist/src/front/lib/utils.d.ts +2 -0
- package/dist/src/front/lib/utils.test.d.ts +1 -0
- package/dist/src/front/lib/validation.d.ts +189 -0
- package/dist/src/front/plugin/PluginErrorBoundary.d.ts +21 -0
- package/dist/src/front/plugin/PluginErrorContext.d.ts +19 -0
- package/dist/src/front/plugin/PluginInspector.d.ts +8 -0
- package/dist/src/front/plugin/__tests__/CatalogRegistry.test.d.ts +1 -0
- package/dist/src/front/plugin/__tests__/PluginErrorBoundary.test.d.ts +1 -0
- package/dist/src/front/plugin/__tests__/PluginInspector.test.d.ts +1 -0
- package/dist/src/front/plugin/__tests__/useWorkspacePluginClient.test.d.ts +1 -0
- package/dist/src/front/plugin/index.d.ts +10 -0
- package/dist/src/front/plugin/useActivePanels.d.ts +2 -0
- package/dist/src/front/plugin/useCatalogs.d.ts +2 -0
- package/dist/src/front/plugin/useCommands.d.ts +2 -0
- package/dist/src/front/plugin/useWorkspacePluginClient.d.ts +29 -0
- package/dist/src/front/provider/WorkspaceProvider.d.ts +84 -0
- package/dist/src/front/provider/index.d.ts +9 -0
- package/dist/src/front/provider/workspaceTitle.d.ts +5 -0
- package/dist/src/front/registry/PanelRegistry.d.ts +39 -0
- package/dist/src/front/registry/PanelRenderStatusBoundary.d.ts +38 -0
- package/dist/src/front/registry/RegistryProvider.d.ts +21 -0
- package/dist/src/front/registry/WorkspaceSourceRegistry.d.ts +25 -0
- package/dist/src/front/registry/__tests__/registry.test.d.ts +1 -0
- package/dist/src/front/registry/__tests__/replaceByPluginId.test.d.ts +1 -0
- package/dist/src/front/registry/__tests__/subscribe.test.d.ts +1 -0
- package/dist/src/front/registry/coreRegistrations.d.ts +2 -0
- package/dist/src/front/registry/getFileIcon.d.ts +2 -0
- package/dist/src/front/registry/index.d.ts +7 -0
- package/dist/src/front/registry/types.d.ts +2 -0
- package/dist/src/front/shell/WorkspaceShellCapabilitiesContext.d.ts +1 -0
- package/dist/src/front/store/__tests__/store.property.test.d.ts +1 -0
- package/dist/src/front/store/__tests__/store.test.d.ts +1 -0
- package/dist/src/front/store/index.d.ts +35 -0
- package/dist/src/front/store/localStorageValues.d.ts +4 -0
- package/dist/src/front/store/selectors.d.ts +21 -0
- package/dist/src/front/store/types.d.ts +53 -0
- package/dist/src/front/testing/TestWorkspaceProvider.d.ts +13 -0
- package/dist/src/front/testing/__tests__/testing.test.d.ts +1 -0
- package/dist/src/front/testing/createLocalStorageSessions.d.ts +16 -0
- package/dist/src/front/testing/createMockBridge.d.ts +20 -0
- package/dist/src/front/testing/createMockPaneProps.d.ts +11 -0
- package/dist/src/front/testing/createMockRegistry.d.ts +7 -0
- package/dist/src/front/testing/createMockSessions.d.ts +24 -0
- package/dist/src/front/testing/e2e.d.ts +61 -0
- package/dist/src/front/testing/index.d.ts +17 -0
- package/dist/src/front/testing/mockApi.d.ts +9 -0
- package/dist/src/front/testing/renderPane.d.ts +20 -0
- package/dist/src/front/theme/codemirror-theme.d.ts +4 -0
- package/dist/src/front/theme/index.d.ts +1 -0
- package/dist/src/front/toast/__tests__/toast.test.d.ts +1 -0
- package/dist/src/front/toast/index.d.ts +1 -0
- package/dist/src/index.d.ts +90 -0
- package/dist/src/plugin.d.ts +19 -0
- package/dist/src/plugins/filesystemPlugin/front/ConflictBanner.d.ts +14 -0
- package/dist/src/plugins/filesystemPlugin/front/FilePaneShell.d.ts +73 -0
- package/dist/src/plugins/filesystemPlugin/front/__tests__/agentFileBridge.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/__tests__/filePanelBinding.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/__tests__/filesystemPlugin.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/__tests__/search.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/__tests__/useFilePane.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/agentFileBridge.d.ts +12 -0
- package/dist/src/plugins/filesystemPlugin/front/catalogs.d.ts +9 -0
- package/dist/src/plugins/filesystemPlugin/front/code-editor/CodeEditor.d.ts +10 -0
- package/dist/src/plugins/filesystemPlugin/front/code-editor/CodeEditorPane.d.ts +8 -0
- package/dist/src/plugins/filesystemPlugin/front/code-editor/__tests__/CodeEditor.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/code-editor/__tests__/CodeEditorPane.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/DataProvider.d.ts +16 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/fetchClient.integration.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/fetchClient.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/fileRecords.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/hooks.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/useFileEventInvalidation.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/useFileEventStream.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/__tests__/useFileUpload.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/data/fetchClient.d.ts +63 -0
- package/dist/src/plugins/filesystemPlugin/front/data/fileRecords.d.ts +34 -0
- package/dist/src/plugins/filesystemPlugin/front/data/filesystemErrorRedaction.d.ts +2 -0
- package/dist/src/plugins/filesystemPlugin/front/data/hooks.d.ts +48 -0
- package/dist/src/plugins/filesystemPlugin/front/data/index.d.ts +9 -0
- package/dist/src/plugins/filesystemPlugin/front/data/treePreloadCache.d.ts +3 -0
- package/dist/src/plugins/filesystemPlugin/front/data/types.d.ts +37 -0
- package/dist/src/plugins/filesystemPlugin/front/data/useFileEventInvalidation.d.ts +28 -0
- package/dist/src/plugins/filesystemPlugin/front/data/useFileEventStream.d.ts +27 -0
- package/dist/src/plugins/filesystemPlugin/front/data/useFileUpload.d.ts +12 -0
- package/dist/src/plugins/filesystemPlugin/front/empty-file-panel/EmptyFilePanel.d.ts +6 -0
- package/dist/src/plugins/filesystemPlugin/front/empty-file-panel/definition.d.ts +8 -0
- package/dist/src/plugins/filesystemPlugin/front/events.d.ts +6 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/FileTree.d.ts +59 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/FileTreeView.d.ts +83 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/__tests__/FileTree.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/__tests__/FileTreePane.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/__tests__/copyToClipboard.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/clipboard.d.ts +6 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/dndManager.d.ts +8 -0
- package/dist/src/plugins/filesystemPlugin/front/file-tree/treeModel.d.ts +20 -0
- package/dist/src/plugins/filesystemPlugin/front/filePanelBinding.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/html-viewer/HtmlViewer.d.ts +18 -0
- package/dist/src/plugins/filesystemPlugin/front/html-viewer/HtmlViewer.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/html-viewer/HtmlViewerPane.d.ts +7 -0
- package/dist/src/plugins/filesystemPlugin/front/index.d.ts +11 -0
- package/dist/src/plugins/filesystemPlugin/front/markdown-editor/MarkdownEditor.d.ts +44 -0
- package/dist/src/plugins/filesystemPlugin/front/markdown-editor/MarkdownEditorPane.d.ts +8 -0
- package/dist/src/plugins/filesystemPlugin/front/markdown-editor/ResizableImage.d.ts +10 -0
- package/dist/src/plugins/filesystemPlugin/front/markdown-editor/__tests__/MarkdownEditor.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/markdown-editor/__tests__/MarkdownEditorPane.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/media-viewer/MediaViewer.d.ts +9 -0
- package/dist/src/plugins/filesystemPlugin/front/media-viewer/MediaViewer.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/media-viewer/MediaViewerPane.d.ts +8 -0
- package/dist/src/plugins/filesystemPlugin/front/media-viewer/useMediaViewerReload.d.ts +8 -0
- package/dist/src/plugins/filesystemPlugin/front/media-viewer/useMediaViewerReload.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/search.d.ts +5 -0
- package/dist/src/plugins/filesystemPlugin/front/search.test.d.ts +1 -0
- package/dist/src/plugins/filesystemPlugin/front/surfaceResolver.d.ts +10 -0
- package/dist/src/plugins/filesystemPlugin/front/useFilePane.d.ts +61 -0
- package/dist/src/plugins/filesystemPlugin/shared/constants.d.ts +12 -0
- package/dist/src/plugins/filesystemPlugin/shared/events.d.ts +39 -0
- package/dist/src/shared/__tests__/filesystem.test.d.ts +1 -0
- package/dist/src/shared/__tests__/telemetry.test.d.ts +1 -0
- package/dist/src/shared/__tests__/workspaceBridgeRpc.test.d.ts +1 -0
- package/dist/src/shared/index.d.ts +25 -0
- package/dist/src/shared/plugins/CatalogRegistry.d.ts +28 -0
- package/dist/src/shared/plugins/CommandRegistry.d.ts +23 -0
- package/dist/src/shared/plugins/SurfaceResolverRegistry.d.ts +24 -0
- package/dist/src/shared/plugins/__tests__/bootstrap.test.d.ts +1 -0
- package/dist/src/shared/plugins/__tests__/frontFactory.test.d.ts +1 -0
- package/dist/src/shared/plugins/__tests__/manifest.test.d.ts +1 -0
- package/dist/src/shared/plugins/__tests__/uiBridgeRegistry.test.d.ts +1 -0
- package/dist/src/shared/plugins/appLeftOverlayChrome.d.ts +10 -0
- package/dist/src/shared/plugins/bootstrap.d.ts +41 -0
- package/dist/src/shared/plugins/errors.d.ts +5 -0
- package/dist/src/shared/plugins/frontFactory.d.ts +166 -0
- package/dist/src/shared/plugins/index.d.ts +5 -0
- package/dist/src/shared/plugins/manifest.d.ts +58 -0
- package/dist/src/shared/plugins/runtimePluginTypes.d.ts +51 -0
- package/dist/src/shared/plugins/types.d.ts +84 -0
- package/dist/src/shared/plugins/uiBridgeRegistry.d.ts +44 -0
- package/dist/src/shared/plugins/workspaceShellCapabilities.d.ts +44 -0
- package/dist/src/shared/telemetry.d.ts +11 -0
- package/dist/src/shared/types/agent-tool.d.ts +30 -0
- package/dist/src/shared/types/boring-core-front.d.ts +2 -0
- package/dist/src/shared/types/filesystem.d.ts +15 -0
- package/dist/src/shared/types/panel.d.ts +123 -0
- package/dist/src/shared/types/surface.d.ts +42 -0
- package/dist/src/shared/ui-bridge.d.ts +77 -0
- package/dist/src/shared/workspace-bridge-rpc.d.ts +122 -0
- package/dist/{surface-aLQ_Hryw.d.ts → surface-h6IgrsK5.d.ts} +1 -1
- package/dist/testing-e2e.d.ts +2 -73
- package/dist/testing.d.ts +2 -433
- package/dist/testing.js +11 -11
- package/dist/{ui-bridge-D2eO3epD.d.ts → ui-bridge-C4CyIrQA.d.ts} +1 -1
- package/dist/{workspace-bridge-rpc-A98RA5o6.d.ts → workspace-bridge-rpc-BHsOJMlW.d.ts} +1 -1
- package/dist/workspace.css +21 -0
- package/dist/workspace.d.ts +2 -2649
- package/dist/workspace.js +40 -40
- package/package.json +4 -4
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReactElement } from 'react';
|
|
2
|
+
import { RenderOptions, RenderResult } from '@testing-library/react';
|
|
3
|
+
import { PanelRegistry } from '../registry/PanelRegistry';
|
|
4
|
+
import { MockWorkspaceBridge } from './createMockBridge';
|
|
5
|
+
import { MockDataFixtures } from './mockApi';
|
|
6
|
+
export interface RenderPaneOptions extends Omit<RenderOptions, "wrapper"> {
|
|
7
|
+
fixtures?: MockDataFixtures;
|
|
8
|
+
bridge?: MockWorkspaceBridge;
|
|
9
|
+
registry?: PanelRegistry;
|
|
10
|
+
apiBaseUrl?: string;
|
|
11
|
+
authHeaders?: Record<string, string>;
|
|
12
|
+
defaultTheme?: "light" | "dark";
|
|
13
|
+
timeout?: number;
|
|
14
|
+
injectBridgeProp?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export type RenderPaneResult = RenderResult & {
|
|
17
|
+
bridge: MockWorkspaceBridge;
|
|
18
|
+
registry: PanelRegistry;
|
|
19
|
+
};
|
|
20
|
+
export declare function renderPane(ui: ReactElement, options?: RenderPaneOptions): RenderPaneResult;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { createShadcnTheme } from './codemirror-theme';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { Toaster, toast, dismissToast, subscribeToasts, getActiveToasts, clearToasts, type ToastApi, type ToastInput, type ToastRecord, type ToastVariant, type ToasterProps, } from '@hachej/boring-ui-kit';
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export { bootstrap, PluginError, } from './shared/plugins';
|
|
2
|
+
export type { PluginErrorKind, BootstrapOptions, BootstrapResult, PanelRegistryLike, WorkspaceSourceRegistryLike, CommandRegistryLike, CatalogRegistryLike, SurfaceResolverRegistryLike, } from './shared/plugins';
|
|
3
|
+
export type { PluginBinding, CatalogAdapter, CatalogBadge, CatalogConfig, CatalogFacets, CatalogFacetsArgs, CatalogFacetConfig, CatalogFacetValue, CatalogRow, CatalogSearchArgs, CatalogSearchResult, LeftTabParams, LeftTabComponent, PluginProvider, PluginProviderProps, AgentTool, JSONSchema, ToolExecContext, ToolResult, } from './shared/plugins';
|
|
4
|
+
export { CatalogRegistry } from './shared/plugins/CatalogRegistry';
|
|
5
|
+
export type { CatalogRegistryOptions } from './shared/plugins/CatalogRegistry';
|
|
6
|
+
export { useCommands, useActivePanels, useCatalogs, PluginErrorBoundary, PluginErrorProvider, usePluginErrors, WorkspacePluginClientProvider, createWorkspacePluginClient, useWorkspacePluginClient, } from './front/plugin';
|
|
7
|
+
export type { PluginError as PluginContributionError, WorkspacePluginClient } from './front/plugin';
|
|
8
|
+
export { filesystemPlugin, emitFilesystemAgentFileChange, useAutoOpenAgentFiles, onFilesystemChanged, useFilePane, } from './plugins/filesystemPlugin/front';
|
|
9
|
+
export type { UseAutoOpenAgentFilesOptions, UseFilePaneOptions, UseFilePaneReturn, } from './plugins/filesystemPlugin/front';
|
|
10
|
+
export { DataProvider as WorkspaceFilesProvider, readFileRecords, useApiBaseUrl, useHasDataClient as useHasWorkspaceFilesProvider, useWorkspaceRequestId, } from './plugins/filesystemPlugin/front/data';
|
|
11
|
+
export type { FileRecordsFormat, FileRecordsResult, FileRecordsSource, ReadFileRecordsOptions, } from './plugins/filesystemPlugin/front/data';
|
|
12
|
+
export { filesystemEvents } from './plugins/filesystemPlugin/shared/events';
|
|
13
|
+
export type { FilesystemEventMap, FilesystemEventMeta } from './plugins/filesystemPlugin/shared/events';
|
|
14
|
+
export { cn } from './front/lib/utils';
|
|
15
|
+
export { PanelRegistry } from './front/registry/PanelRegistry';
|
|
16
|
+
export { WorkspaceSourceRegistry } from './front/registry/WorkspaceSourceRegistry';
|
|
17
|
+
export { CommandRegistry } from './shared/plugins/CommandRegistry';
|
|
18
|
+
export { SurfaceResolverRegistry } from './shared/plugins/SurfaceResolverRegistry';
|
|
19
|
+
export { RegistryProvider, useRegistry, useWorkspaceSourceRegistry, useCommandRegistry, useCatalogRegistry, useSurfaceResolverRegistry, WORKSPACE_OPEN_PATH_SURFACE_KIND, } from './front/registry';
|
|
20
|
+
export { useAppLeftOverlayChrome } from './shared/plugins/appLeftOverlayChrome';
|
|
21
|
+
export type { AppLeftOverlayChromeValue } from './shared/plugins/appLeftOverlayChrome';
|
|
22
|
+
export { useWorkspaceShellCapabilities } from './shared/plugins/workspaceShellCapabilities';
|
|
23
|
+
export type { WorkspaceShellAnchorRect, WorkspaceShellArtifactTarget, WorkspaceShellCapabilityResult, WorkspaceShellCapabilities, } from './shared/plugins/workspaceShellCapabilities';
|
|
24
|
+
export { getFileIcon } from './front/registry';
|
|
25
|
+
export type { PanelConfig, PanelRegistration, CommandConfig, PaneProps, WorkspaceSourceConfig, WorkspaceSourceOpenPanelConfig, WorkspaceSourceProps, WorkspaceSourceRegistration, SurfaceOpenRequest, SurfacePanelResolution, SurfaceResolverConfig, SurfaceResolverRegistration, } from './front/registry';
|
|
26
|
+
export { DockviewShell, PanelChrome, useDockviewApi } from './front/dock';
|
|
27
|
+
export type { LayoutConfig, GroupConfig, DockviewShellProps, DockviewShellApi, PanelLifecycleApi, SerializedLayout, } from './front/dock';
|
|
28
|
+
export { IdeLayout, buildIdeLayout, ChatLayout, buildChatLayout, TopBar, ResponsiveDockviewShell, } from './front/layout';
|
|
29
|
+
export type { IdeLayoutProps, ChatLayoutProps, TopBarProps, ResponsiveDockviewShellProps, } from './front/layout';
|
|
30
|
+
export { useEditorLifecycle, type EditorLifecycleAdapter, type UseEditorLifecycleOptions, type UseEditorLifecycleReturn, } from './front/hooks';
|
|
31
|
+
export { buildFullPagePanelHref, useFullPagePanelHref, usePanelRenderMode, useIsFullPagePanel, } from './front/fullPage';
|
|
32
|
+
export type { BuildFullPagePanelHrefInput, PanelRenderMode } from './front/fullPage';
|
|
33
|
+
export { useViewportBreakpoint } from './front/hooks';
|
|
34
|
+
export { useResponsiveSidebarCollapse, type UseResponsiveSidebarCollapseOptions, } from './front/hooks';
|
|
35
|
+
export { useArtifactPanels, type ArtifactPanel, type UseArtifactPanelsReturn, } from './front/hooks';
|
|
36
|
+
export { useArtifactRouting, type UseArtifactRoutingOptions, type UseArtifactRoutingReturn, } from './front/hooks';
|
|
37
|
+
export { useKeyboardShortcuts, formatShortcut, type ShortcutBinding, type UseKeyboardShortcutsOptions, } from './front/hooks';
|
|
38
|
+
export { CommandPalette } from './front/components/CommandPalette';
|
|
39
|
+
export type { CommandPaletteProps } from './front/components/CommandPalette';
|
|
40
|
+
export { WorkspaceLoadingState } from './front/components/WorkspaceLoadingState';
|
|
41
|
+
export type { WorkspaceLoadingStateProps } from './front/components/WorkspaceLoadingState';
|
|
42
|
+
export { ArtifactSurfacePane } from './front/chrome/artifact-surface/ArtifactSurfacePane';
|
|
43
|
+
export type { ArtifactSurfacePaneProps } from './front/chrome/artifact-surface/ArtifactSurfacePane';
|
|
44
|
+
export { EmptyPane } from './front/chrome/empty-pane/EmptyPane';
|
|
45
|
+
export type { EmptyPaneProps } from './front/chrome/empty-pane/EmptyPane';
|
|
46
|
+
export { CodeEditorPane } from './plugins/filesystemPlugin/front/code-editor/CodeEditorPane';
|
|
47
|
+
export type { CodeEditorPaneProps } from './plugins/filesystemPlugin/front/code-editor/CodeEditorPane';
|
|
48
|
+
export { FileTreePane, FileTreeView, } from './plugins/filesystemPlugin/front/file-tree/FileTreeView';
|
|
49
|
+
export type { FileTreePaneProps, FileTreeViewProps, } from './plugins/filesystemPlugin/front/file-tree/FileTreeView';
|
|
50
|
+
export { MarkdownEditorPane } from './plugins/filesystemPlugin/front/markdown-editor/MarkdownEditorPane';
|
|
51
|
+
export type { MarkdownEditorPaneProps } from './plugins/filesystemPlugin/front/markdown-editor/MarkdownEditorPane';
|
|
52
|
+
export { definePanel } from './front/registry/types';
|
|
53
|
+
export { createShadcnTheme } from './front/theme';
|
|
54
|
+
export { events, useEvent, userMeta, agentMeta, emitAgentData, workspaceEvents, } from './front/events';
|
|
55
|
+
export type { Origin, EventMeta, WorkspacePluginEventMap, WorkspaceEventMap, WorkspaceEventName, } from './front/events';
|
|
56
|
+
export { toast, Toaster, dismissToast } from './front/toast';
|
|
57
|
+
export type { ToastApi, ToastInput, ToastRecord, ToastVariant, ToasterProps, } from './front/toast';
|
|
58
|
+
export { createBridge } from './front/bridge';
|
|
59
|
+
export { createBridgeClient } from './front/bridge';
|
|
60
|
+
export { postUiCommand, UI_COMMAND_EVENT, WORKSPACE_SURFACE_OPEN_SKIPPED_EVENT, WorkspaceLink, workspaceLinkCommand, workspaceLinkHref } from './front/bridge';
|
|
61
|
+
export type { BridgeClient, BridgeClientOptions, UIStatePut, WorkspaceLinkProps, WorkspaceLinkTarget, } from './front/bridge';
|
|
62
|
+
export type { DispatchContext, UiCommand, WorkspaceBridge, BridgeEventMap, CommandResult, DynamicPaneConfig, Unsubscribe, CausedBy, } from './front/bridge';
|
|
63
|
+
export { openFileSchema, openPanelSchema, closePanelSchema, notificationSchema, navigateToLineSchema, expandToFileSchema, MAX_PANELS, } from './front/bridge';
|
|
64
|
+
export { PanelErrorBoundary } from './front/components/PanelErrorBoundary';
|
|
65
|
+
export type { PanelErrorBoundaryProps } from './front/components/PanelErrorBoundary';
|
|
66
|
+
export { CodeEditor } from './plugins/filesystemPlugin/front/code-editor/CodeEditor';
|
|
67
|
+
export type { CodeEditorProps } from './plugins/filesystemPlugin/front/code-editor/CodeEditor';
|
|
68
|
+
export { FileTree } from './plugins/filesystemPlugin/front/file-tree/FileTree';
|
|
69
|
+
export type { FileTreeProps, FileTreeNode, } from './plugins/filesystemPlugin/front/file-tree/FileTree';
|
|
70
|
+
export { MarkdownEditor } from './plugins/filesystemPlugin/front/markdown-editor/MarkdownEditor';
|
|
71
|
+
export type { MarkdownEditorProps } from './plugins/filesystemPlugin/front/markdown-editor/MarkdownEditor';
|
|
72
|
+
export { SessionList } from './front/components/SessionList';
|
|
73
|
+
export type { SessionListProps, SessionItem, } from './front/components/SessionList';
|
|
74
|
+
export { SessionBrowser } from './front/chrome/session-list/SessionBrowser';
|
|
75
|
+
export { SurfaceShell } from './front/chrome/artifact-surface/SurfaceShell';
|
|
76
|
+
export { WorkbenchLeftPane } from './front/chrome/workbench-left/WorkbenchLeftPane';
|
|
77
|
+
export { useWorkspaceLeftPaneActions } from './front/chrome/workbench-left/useWorkspaceLeftPaneActions';
|
|
78
|
+
export type { SessionBrowserProps } from './front/chrome/session-list/SessionBrowser';
|
|
79
|
+
export type { OpenArtifactHandler, WorkspaceChatPanelComponent, WorkspaceChatPanelProps, } from './front/chrome/chat/types';
|
|
80
|
+
export { WORKSPACE_COMPOSER_STOP_EVENT, WORKSPACE_COMPOSER_STOP_REASONS, emitWorkspaceComposerStop, isWorkspaceComposerStopDetail, isWorkspaceComposerStopReason, workspaceComposerStopAppliesToSession, workspaceComposerStopTargetSessionId, } from './front/chrome/chat/composerStop';
|
|
81
|
+
export type { WorkspaceComposerStopDetail, WorkspaceComposerStopMatchOptions, WorkspaceComposerStopReason, } from './front/chrome/chat/composerStop';
|
|
82
|
+
export type { SurfaceShellProps, SurfaceShellApi, SurfaceShellSnapshot, SurfaceShellTab, OpenPanelConfig, } from './front/chrome/artifact-surface/SurfaceShell';
|
|
83
|
+
export type { WorkbenchLeftPaneProps, WorkbenchLeftTabId, } from './front/chrome/workbench-left/WorkbenchLeftPane';
|
|
84
|
+
export type { UseWorkspaceLeftPaneActionsOptions, WorkspaceLeftPaneAction, WorkspaceLeftPaneOpenPanelConfig, } from './front/chrome/workbench-left/useWorkspaceLeftPaneActions';
|
|
85
|
+
export { WorkspaceProvider, ThemeProvider, useTheme, useWorkspaceBridge, useWorkspaceContext, useWorkspaceContextOptional, useWorkspaceChatPanel, WORKSPACE_ATTENTION_ACTION_EVENT, emitWorkspaceAttentionAction, useWorkspaceAttention, workspaceAttentionSessionBadgeForBlocker, } from './front/provider';
|
|
86
|
+
export type { WorkspaceProviderProps, FrontPluginHotReloadMode, ThemeProviderProps, WorkspaceBridgeContextValue, WorkspaceContextValue, WorkspaceAttentionActionDetail, WorkspaceAttentionBlocker, WorkspaceAttentionBlockerAction, WorkspaceAttentionContextValue, WorkspaceAttentionProviderProps, WorkspaceAttentionSessionBadge, WorkspaceAttentionFocusMetadata, } from './front/provider';
|
|
87
|
+
export { createWorkspaceStore } from './front/store';
|
|
88
|
+
export type { CreateWorkspaceStoreOptions } from './front/store';
|
|
89
|
+
export { bindStore, useActiveFile, useActivePanel, useSidebarState, useSetSidebar, useOpenPanels, useDirtyFiles, useThemePreference, useHydrationComplete, useResetLayout, } from './front/store/selectors';
|
|
90
|
+
export type { WorkspaceState, WorkspaceActions, WorkspaceStore, PanelState, Notification, SidebarState, } from './front/store/types';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hachej/boring-workspace/plugin subpath
|
|
3
|
+
*
|
|
4
|
+
* Browser-safe authoring surface for package.json based plugins.
|
|
5
|
+
* A package uses `pi` for agent/Pi contributions and `boring` for workspace/UI
|
|
6
|
+
* contributions. Front entries default-export a BoringFrontFactory.
|
|
7
|
+
*/
|
|
8
|
+
export { captureFrontPlugin, createCapturingBoringFrontAPI, definePlugin, } from './shared/plugins/frontFactory';
|
|
9
|
+
export type { BoringFrontAPI, BoringFrontFactory, BoringFrontFactoryWithId, BoringFrontSetup, BoringFrontBindingRegistration, BoringFrontPanelRegistration, BoringFrontPanelCommandRegistration, BoringFrontAppLeftActionRegistration, BoringFrontAppLeftOverlayProps, BoringFrontWorkspaceSourceRegistration, BoringFrontProviderRegistration, BoringFrontSurfaceResolverRegistration, CapturedBoringFrontRegistrations, CapturingBoringFrontAPIHandle, DefinePluginConfig, CapturedFrontPlugin, } from './shared/plugins/frontFactory';
|
|
10
|
+
export { validateBoringPluginManifest, isSafePluginRelativePath, isValidBoringPluginId, } from './shared/plugins/manifest';
|
|
11
|
+
export { WORKSPACE_OPEN_PATH_SURFACE_KIND } from './shared/types/surface';
|
|
12
|
+
export { useAppLeftOverlayChrome } from './shared/plugins/appLeftOverlayChrome';
|
|
13
|
+
export type { AppLeftOverlayChromeValue } from './shared/plugins/appLeftOverlayChrome';
|
|
14
|
+
export { useWorkspaceShellCapabilities } from './shared/plugins/workspaceShellCapabilities';
|
|
15
|
+
export type { WorkspaceShellAnchorRect, WorkspaceShellArtifactTarget, WorkspaceShellCapabilityResult, WorkspaceShellCapabilities, } from './shared/plugins/workspaceShellCapabilities';
|
|
16
|
+
export { execWorkspaceUi, getWorkspaceUiBridge, notify, openPanel, NoWorkspaceUiBridgeError, } from './shared/plugins/uiBridgeRegistry';
|
|
17
|
+
export type { OpenPanelArgs } from './shared/plugins/uiBridgeRegistry';
|
|
18
|
+
export type { BoringPackageBoringField, BoringPackagePiField, BoringPackagePiSource, BoringPackagePiSourceObject, BoringPluginManifestErrorCode, BoringPluginManifestIssue, BoringPluginManifestValidationResult, BoringPluginPackageJson, } from './shared/plugins/manifest';
|
|
19
|
+
export type { PaneProps, WorkspaceSourceProps, WorkspaceSourceOpenPanelConfig } from './shared/types/panel';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FileConflictError } from './data/fetchClient';
|
|
2
|
+
export interface ConflictBannerProps {
|
|
3
|
+
conflict: FileConflictError;
|
|
4
|
+
onReload: () => void | Promise<void>;
|
|
5
|
+
onOverwrite: () => void | Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Shared conflict banner for file panes.
|
|
9
|
+
*
|
|
10
|
+
* Shown when a file has been modified externally (OCC conflict).
|
|
11
|
+
* Offers two choices: reload from server (discard local changes) or
|
|
12
|
+
* overwrite server (force save local changes).
|
|
13
|
+
*/
|
|
14
|
+
export declare function ConflictBanner({ conflict, onReload, onOverwrite }: ConflictBannerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { FileConflictError } from './data/fetchClient';
|
|
3
|
+
export interface FilePaneShellProps {
|
|
4
|
+
/** The file path being edited (for "no file selected" check). */
|
|
5
|
+
path: string;
|
|
6
|
+
/** The file content (null = loading). */
|
|
7
|
+
content: string | null;
|
|
8
|
+
/** Loading state from React Query. */
|
|
9
|
+
isLoading: boolean;
|
|
10
|
+
/** Error from React Query. */
|
|
11
|
+
error: Error | null;
|
|
12
|
+
/** Conflict state (if OCC check failed). */
|
|
13
|
+
conflict: FileConflictError | null;
|
|
14
|
+
/** Readonly panes disable mutation affordances by construction. */
|
|
15
|
+
readOnly?: boolean;
|
|
16
|
+
/** Handler for content changes. */
|
|
17
|
+
onChange: (content: string) => void;
|
|
18
|
+
/** Handler for reload from server. */
|
|
19
|
+
onReload: () => void | Promise<void>;
|
|
20
|
+
/** Handler for overwrite server. */
|
|
21
|
+
onOverwrite: () => void | Promise<void>;
|
|
22
|
+
/** The actual editor component to render. */
|
|
23
|
+
editorComponent: React.ComponentType<{
|
|
24
|
+
content: string;
|
|
25
|
+
onChange: (content: string) => void;
|
|
26
|
+
readOnly?: boolean;
|
|
27
|
+
className?: string;
|
|
28
|
+
[key: string]: unknown;
|
|
29
|
+
}>;
|
|
30
|
+
/** Additional props to pass to the editor component. */
|
|
31
|
+
editorProps?: Record<string, unknown>;
|
|
32
|
+
/** Custom loading fallback (optional). */
|
|
33
|
+
loadingFallback?: ReactNode;
|
|
34
|
+
/** Custom error message (optional). */
|
|
35
|
+
errorMessage?: string;
|
|
36
|
+
/** Filesystem identity for disclosure-safe governed filesystem error rendering. */
|
|
37
|
+
filesystem?: string;
|
|
38
|
+
/** Wrapper className for the root element. */
|
|
39
|
+
className?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Shared shell for file-based editor panes.
|
|
43
|
+
*
|
|
44
|
+
* Handles:
|
|
45
|
+
* - "No file selected" state
|
|
46
|
+
* - Error display
|
|
47
|
+
* - Loading fallback
|
|
48
|
+
* - Conflict banner
|
|
49
|
+
* - Suspense boundary for lazy-loaded editors
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* function CodeEditorPane({ params }) {
|
|
54
|
+
* const { content, isLoading, error, conflict, setContent, ... } = useFilePane({ path: params.path })
|
|
55
|
+
*
|
|
56
|
+
* return (
|
|
57
|
+
* <FilePaneShell
|
|
58
|
+
* path={params.path}
|
|
59
|
+
* content={content}
|
|
60
|
+
* isLoading={isLoading}
|
|
61
|
+
* error={error}
|
|
62
|
+
* conflict={conflict}
|
|
63
|
+
* onChange={setContent}
|
|
64
|
+
* onReload={onReloadFromServer}
|
|
65
|
+
* onOverwrite={onOverwrite}
|
|
66
|
+
* editorComponent={CodeEditor}
|
|
67
|
+
* editorProps={{ language: "typescript", wordWrap: true }}
|
|
68
|
+
* />
|
|
69
|
+
* )
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export declare function FilePaneShell({ path, content, isLoading, error, conflict, readOnly, onChange, onReload, onOverwrite, editorComponent: Editor, editorProps, loadingFallback, errorMessage, filesystem, className, }: FilePaneShellProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FilesystemEventMeta } from '../shared/events';
|
|
2
|
+
export declare function emitFilesystemAgentFileChange(part: unknown): void;
|
|
3
|
+
export interface UseAutoOpenAgentFilesOptions {
|
|
4
|
+
skip?: (path: string) => boolean;
|
|
5
|
+
filesOnly?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function useAutoOpenAgentFiles(onOpen: (path: string) => void, options?: UseAutoOpenAgentFilesOptions): void;
|
|
8
|
+
/** Subscribe to file-changed events. Returns the unsubscribe function. */
|
|
9
|
+
export declare function onFilesystemChanged(handler: (payload: FilesystemEventMeta & {
|
|
10
|
+
path: string;
|
|
11
|
+
}) => void): () => void;
|
|
12
|
+
export declare function FilesystemAgentFileBridge(): null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CatalogConfig, CatalogRow } from '../../../shared/plugins/types';
|
|
2
|
+
export interface FilesCatalogClient {
|
|
3
|
+
search(query: string, limit?: number, signal?: AbortSignal): Promise<string[]>;
|
|
4
|
+
}
|
|
5
|
+
export interface CreateFilesCatalogOptions {
|
|
6
|
+
client: FilesCatalogClient;
|
|
7
|
+
onSelect?: (path: string, row: CatalogRow) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function createFilesCatalog({ client, onSelect, }: CreateFilesCatalogOptions): CatalogConfig;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CodeEditorProps {
|
|
2
|
+
content: string;
|
|
3
|
+
onChange?: (content: string) => void;
|
|
4
|
+
language?: string;
|
|
5
|
+
readOnly?: boolean;
|
|
6
|
+
lineNumbers?: boolean;
|
|
7
|
+
wordWrap?: boolean;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function CodeEditor({ content, onChange, language, readOnly, lineNumbers, wordWrap, className, }: CodeEditorProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FilesystemId } from '../../../../shared/types/filesystem';
|
|
2
|
+
import { PaneProps } from '../../../../front/registry/types';
|
|
3
|
+
export type CodeEditorPaneProps = PaneProps<{
|
|
4
|
+
path?: string;
|
|
5
|
+
filesystem?: FilesystemId;
|
|
6
|
+
mode?: "view" | "edit" | "diff";
|
|
7
|
+
}>;
|
|
8
|
+
export declare function CodeEditorPane({ params, api, className }: CodeEditorPaneProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/plugins/filesystemPlugin/front/code-editor/__tests__/CodeEditorPane.test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { FetchClient } from './fetchClient';
|
|
3
|
+
interface DataProviderProps {
|
|
4
|
+
apiBaseUrl: string;
|
|
5
|
+
authHeaders?: Record<string, string>;
|
|
6
|
+
onAuthError?: (statusCode: number) => void;
|
|
7
|
+
timeout?: number;
|
|
8
|
+
client?: FetchClient;
|
|
9
|
+
children: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export declare function useDataClient(): FetchClient;
|
|
12
|
+
export declare function useHasDataClient(): boolean;
|
|
13
|
+
export declare function useApiBaseUrl(): string;
|
|
14
|
+
export declare function useWorkspaceRequestId(): string | null;
|
|
15
|
+
export declare function DataProvider({ apiBaseUrl, authHeaders, onAuthError, timeout, client: providedClient, children, }: DataProviderProps): import("react").JSX.Element;
|
|
16
|
+
export {};
|
package/dist/src/plugins/filesystemPlugin/front/data/__tests__/fetchClient.integration.test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/src/plugins/filesystemPlugin/front/data/__tests__/useFileEventInvalidation.test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { FetchClientOptions, FileContent, FileEntry, FileStat, GitUrlMetadata } from './types';
|
|
2
|
+
export declare class FetchClient {
|
|
3
|
+
private baseUrl;
|
|
4
|
+
private headers;
|
|
5
|
+
private onAuthError?;
|
|
6
|
+
private onTimeout?;
|
|
7
|
+
private timeout;
|
|
8
|
+
private maxRetries;
|
|
9
|
+
private retryBaseMs;
|
|
10
|
+
constructor(opts: FetchClientOptions);
|
|
11
|
+
private request;
|
|
12
|
+
getTree(path: string, signal?: AbortSignal, filesystem?: string): Promise<FileEntry[]>;
|
|
13
|
+
getFile(path: string, signal?: AbortSignal, filesystem?: string): Promise<FileContent>;
|
|
14
|
+
/**
|
|
15
|
+
* Write file content. When `expectedMtimeMs` is supplied, the server
|
|
16
|
+
* runs an optimistic-concurrency check and returns 409 if the file
|
|
17
|
+
* has been modified since that mtime — surfaced here as a typed
|
|
18
|
+
* `FileConflictError` so the editor can ask the user to reload or
|
|
19
|
+
* force-overwrite. The returned `mtimeMs` is the server's stat
|
|
20
|
+
* after the write; callers use it as the OCC baseline for the
|
|
21
|
+
* next save. Set `returnMtimeMs: false` only for writes that do
|
|
22
|
+
* not need a fresh OCC baseline (for example, creating an empty
|
|
23
|
+
* file before immediately opening/refetching it). That lets remote
|
|
24
|
+
* sandboxes skip an expensive post-write stat.
|
|
25
|
+
*/
|
|
26
|
+
writeFile(path: string, content: string, opts?: {
|
|
27
|
+
expectedMtimeMs?: number;
|
|
28
|
+
returnMtimeMs?: boolean;
|
|
29
|
+
filesystem?: string;
|
|
30
|
+
}): Promise<{
|
|
31
|
+
mtimeMs?: number;
|
|
32
|
+
}>;
|
|
33
|
+
deleteFile(path: string, options?: {
|
|
34
|
+
filesystem?: string;
|
|
35
|
+
}): Promise<void>;
|
|
36
|
+
stat(path: string, signal?: AbortSignal, filesystem?: string): Promise<FileStat>;
|
|
37
|
+
getGitUrlMetadata(path: string, signal?: AbortSignal): Promise<GitUrlMetadata>;
|
|
38
|
+
search(query: string, limit?: number, signal?: AbortSignal): Promise<string[]>;
|
|
39
|
+
createDir(path: string, options?: {
|
|
40
|
+
filesystem?: string;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
moveFile(from: string, to: string, options?: {
|
|
43
|
+
filesystem?: string;
|
|
44
|
+
}): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
export declare class FetchError extends Error {
|
|
47
|
+
readonly status: number;
|
|
48
|
+
readonly body?: unknown | undefined;
|
|
49
|
+
constructor(status: number, message: string, body?: unknown | undefined);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Thrown by `writeFile` when the server returns 409 because the file
|
|
53
|
+
* has been modified since the client's last read. Carries the
|
|
54
|
+
* server's current mtime so the editor can show the user a
|
|
55
|
+
* Reload-vs-Overwrite choice with the actual conflict context.
|
|
56
|
+
*/
|
|
57
|
+
export declare class FileConflictError extends Error {
|
|
58
|
+
readonly path: string;
|
|
59
|
+
readonly currentMtimeMs: number | null;
|
|
60
|
+
readonly expectedMtimeMs: number | null;
|
|
61
|
+
constructor(path: string, currentMtimeMs: number | null, expectedMtimeMs: number | null);
|
|
62
|
+
static from(err: FetchError, path: string): FileConflictError;
|
|
63
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type FileRecordsFormat = "json-array" | "ndjson" | "csv";
|
|
2
|
+
export interface FileRecordsSource {
|
|
3
|
+
kind: "file";
|
|
4
|
+
path: string;
|
|
5
|
+
format: FileRecordsFormat;
|
|
6
|
+
recordSet?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface FileRecordsResult {
|
|
9
|
+
source: FileRecordsSource;
|
|
10
|
+
path: string;
|
|
11
|
+
format: FileRecordsFormat;
|
|
12
|
+
columns: {
|
|
13
|
+
name: string;
|
|
14
|
+
type: string;
|
|
15
|
+
}[];
|
|
16
|
+
rows: Record<string, unknown>[];
|
|
17
|
+
total: number;
|
|
18
|
+
hasMore: boolean;
|
|
19
|
+
offset: number;
|
|
20
|
+
limit: number;
|
|
21
|
+
mtimeMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ReadFileRecordsOptions {
|
|
24
|
+
path: string;
|
|
25
|
+
recordSet?: string;
|
|
26
|
+
offset?: number;
|
|
27
|
+
limit?: number;
|
|
28
|
+
q?: string;
|
|
29
|
+
apiBaseUrl?: string;
|
|
30
|
+
headers?: Record<string, string>;
|
|
31
|
+
workspaceId?: string;
|
|
32
|
+
signal?: AbortSignal;
|
|
33
|
+
}
|
|
34
|
+
export declare function readFileRecords(options: ReadFileRecordsOptions): Promise<FileRecordsResult>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { UseQueryResult, UseMutationResult } from '@tanstack/react-query';
|
|
2
|
+
import { FilesystemId } from '../../../../shared/types/filesystem';
|
|
3
|
+
import { FileContent, FileEntry, FileStat, GitUrlMetadata } from './types';
|
|
4
|
+
export interface UseFileContentOptions {
|
|
5
|
+
/** Filesystem identity for cache/event separation. Data transport remains provider-owned. */
|
|
6
|
+
filesystem?: FilesystemId;
|
|
7
|
+
/** Create the file with this content when the initial read returns 404. */
|
|
8
|
+
createIfMissing?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function useFileContent(path: string | null, options?: UseFileContentOptions): UseQueryResult<FileContent>;
|
|
11
|
+
export declare function useFileList(dir: string | null, filesystem?: FilesystemId): UseQueryResult<FileEntry[]>;
|
|
12
|
+
export declare function useStat(path: string | null, filesystem?: FilesystemId): UseQueryResult<FileStat>;
|
|
13
|
+
export declare function useGitUrlMetadata(path: string | null): UseQueryResult<GitUrlMetadata>;
|
|
14
|
+
export declare function useFileSearch(query: string, limit?: number): UseQueryResult<string[]>;
|
|
15
|
+
export interface FileWriteVariables {
|
|
16
|
+
filesystem?: FilesystemId;
|
|
17
|
+
path: string;
|
|
18
|
+
content: string;
|
|
19
|
+
/**
|
|
20
|
+
* Read-time mtime baseline for optimistic concurrency. When
|
|
21
|
+
* supplied, the server returns 409 (surfaced as `FileConflictError`)
|
|
22
|
+
* if the file has changed since. Omit to force-overwrite.
|
|
23
|
+
*/
|
|
24
|
+
expectedMtimeMs?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Set false for writes that do not need a fresh server mtime. Keeps
|
|
27
|
+
* remote-sandbox creates fast by avoiding an immediate post-write stat.
|
|
28
|
+
*/
|
|
29
|
+
returnMtimeMs?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface FileWriteResult {
|
|
32
|
+
/** Server stat after the write — the next save's OCC baseline. */
|
|
33
|
+
mtimeMs?: number;
|
|
34
|
+
}
|
|
35
|
+
export declare function useFileWrite(): UseMutationResult<FileWriteResult, Error, FileWriteVariables>;
|
|
36
|
+
export declare function useCreateDir(): UseMutationResult<void, Error, {
|
|
37
|
+
path: string;
|
|
38
|
+
filesystem?: string;
|
|
39
|
+
}>;
|
|
40
|
+
export declare function useMoveFile(): UseMutationResult<void, Error, {
|
|
41
|
+
from: string;
|
|
42
|
+
to: string;
|
|
43
|
+
filesystem?: string;
|
|
44
|
+
}>;
|
|
45
|
+
export declare function useDeleteFile(): UseMutationResult<void, Error, {
|
|
46
|
+
path: string;
|
|
47
|
+
filesystem?: string;
|
|
48
|
+
}>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { DataProvider, useDataClient, useHasDataClient, useApiBaseUrl, useWorkspaceRequestId, } from './DataProvider';
|
|
2
|
+
export { FetchClient, FetchError } from './fetchClient';
|
|
3
|
+
export { readFileRecords } from './fileRecords';
|
|
4
|
+
export { useFileContent, useFileContent as useFileData, useFileList, useStat, useGitUrlMetadata, useFileSearch, useFileWrite, useCreateDir, useMoveFile, useDeleteFile, } from './hooks';
|
|
5
|
+
export { getPreloadedTreeEntries, setPreloadedTreeEntries, } from './treePreloadCache';
|
|
6
|
+
export type { FileEntry, FileContent, FileStat, FetchClientOptions, GitUrlMetadata } from './types';
|
|
7
|
+
export type { FileRecordsFormat, FileRecordsResult, FileRecordsSource, ReadFileRecordsOptions } from './fileRecords';
|
|
8
|
+
export { useFileUpload } from './useFileUpload';
|
|
9
|
+
export type { UseFileUploadOptions, UseFileUploadResult } from './useFileUpload';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { FileEntry } from './types';
|
|
2
|
+
export declare function setPreloadedTreeEntries(apiBaseUrl: string | null | undefined, workspaceId: string | null | undefined, dir: string | null | undefined, entries: FileEntry[]): void;
|
|
3
|
+
export declare function getPreloadedTreeEntries(apiBaseUrl: string | null | undefined, workspaceId: string | null | undefined, dir: string | null | undefined): FileEntry[] | undefined;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface FileEntry {
|
|
2
|
+
name: string;
|
|
3
|
+
kind: "file" | "dir";
|
|
4
|
+
path: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FileContent {
|
|
7
|
+
content: string;
|
|
8
|
+
/** Access granted by the resolved filesystem binding, when the server exposes it. */
|
|
9
|
+
access?: "readonly" | "readwrite";
|
|
10
|
+
/**
|
|
11
|
+
* Server-stat'd modification time. Used as the OCC baseline for the
|
|
12
|
+
* next write — the client sends it back as `expectedMtimeMs` so the
|
|
13
|
+
* server can return 409 if the file changed underneath. Optional
|
|
14
|
+
* because not every workspace impl can stat cheaply (sandbox
|
|
15
|
+
* impl is best-effort).
|
|
16
|
+
*/
|
|
17
|
+
mtimeMs?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface FileStat {
|
|
20
|
+
size: number;
|
|
21
|
+
mtimeMs: number;
|
|
22
|
+
kind: "file" | "dir";
|
|
23
|
+
}
|
|
24
|
+
export interface GitUrlMetadata {
|
|
25
|
+
enabled: boolean;
|
|
26
|
+
reason?: string;
|
|
27
|
+
url?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface FetchClientOptions {
|
|
30
|
+
apiBaseUrl: string;
|
|
31
|
+
authHeaders?: Record<string, string>;
|
|
32
|
+
onAuthError?: (statusCode: number) => void;
|
|
33
|
+
onTimeout?: (route: string) => void;
|
|
34
|
+
timeout?: number;
|
|
35
|
+
maxRetries?: number;
|
|
36
|
+
retryBaseMs?: number;
|
|
37
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Single source of truth for translating workspace bus `filesystem:file.*` events
|
|
3
|
+
* into React Query invalidation. Mounted once inside `DataProvider`.
|
|
4
|
+
*
|
|
5
|
+
* Why centralized:
|
|
6
|
+
* - Prior version had `useFileChangeStream` in `@hachej/boring-agent` doing
|
|
7
|
+
* its own invalidation with the wrong key shape (`['file', path]`
|
|
8
|
+
* vs the workspace's `[base, "files", path]`). Editor never
|
|
9
|
+
* refreshed on agent edits.
|
|
10
|
+
* - Now: agent SSE chunks → ChatPanelHost forwards via
|
|
11
|
+
* filesystem agent-data bridge → filesystem bus event → THIS hook → invalidate.
|
|
12
|
+
* User actions (`useFileWrite`, etc.) emit onto the same bus →
|
|
13
|
+
* same invalidator. One path, one bug surface.
|
|
14
|
+
*
|
|
15
|
+
* Granular invalidation per event kind so a content-only change
|
|
16
|
+
* doesn't nuke tree/search caches:
|
|
17
|
+
* filesystem:file.changed → files(path) + stat(path)
|
|
18
|
+
* filesystem:file.created file → tree(parent) + files(path) + stat(path)
|
|
19
|
+
* filesystem:file.created dir → tree(parent) (no file content, no stat fetch)
|
|
20
|
+
* filesystem:file.moved → tree(parents of from+to) + files(from+to) + stat(from+to)
|
|
21
|
+
* + everything cached under from/ (dir moves) + search
|
|
22
|
+
* filesystem:file.deleted → tree(parent) + files(path) + stat(path) + search
|
|
23
|
+
*
|
|
24
|
+
* Tree invalidation targets the changed path's PARENT listing, not the
|
|
25
|
+
* whole `tree` prefix — during event storms (large dir moves, builds)
|
|
26
|
+
* a prefix invalidation refetched every mounted listing per batch.
|
|
27
|
+
*/
|
|
28
|
+
export declare function useFileEventInvalidation(): void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subscribes to the server-side `/api/v1/fs/events` SSE stream and
|
|
3
|
+
* fans events out onto the workspace event bus with `cause: "remote"`.
|
|
4
|
+
*
|
|
5
|
+
* Wire format (per server contract, see fsEvents.ts):
|
|
6
|
+
* - `event: change` → `{ eventId, seq, ts, change: WorkspaceChangeEvent }`
|
|
7
|
+
* - `event: unsupported` → server can't observe changes, fall back
|
|
8
|
+
* - `event: resync-required` → reconnected with a stale Last-Event-ID,
|
|
9
|
+
* server's ring buffer can't fill the gap. Drop everything.
|
|
10
|
+
*
|
|
11
|
+
* Reliability:
|
|
12
|
+
* - EventSource auto-handles reconnect + `Last-Event-ID` header.
|
|
13
|
+
* - Client dedupes by `eventId` against a tiny LRU.
|
|
14
|
+
* - On `resync-required`, we invalidate ALL React Query caches the
|
|
15
|
+
* hook touches (files / tree / stat / search) so consumers refetch
|
|
16
|
+
* on next read. No need to re-subscribe — EventSource keeps going,
|
|
17
|
+
* and the server starts feeding live events again immediately.
|
|
18
|
+
*
|
|
19
|
+
* Self-echo handling stays at the data layer: the bus subscriber
|
|
20
|
+
* invalidates queries, and `useEditorLifecycle`'s monotonic mtime
|
|
21
|
+
* check inside `MarkdownEditorPane` means re-fetched-but-identical
|
|
22
|
+
* content is a no-op for the editor. Step 3b adds eventId dedup but
|
|
23
|
+
* intentionally does NOT add per-client UX suppression — that's a
|
|
24
|
+
* future concern (toasts, badges) once we have actual UX surfaces
|
|
25
|
+
* that fire on file changes.
|
|
26
|
+
*/
|
|
27
|
+
export declare function useFileEventStream(): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { UploadFileResult } from '@hachej/boring-agent/front';
|
|
2
|
+
export interface UseFileUploadOptions {
|
|
3
|
+
directory?: string;
|
|
4
|
+
}
|
|
5
|
+
export interface UseFileUploadResult {
|
|
6
|
+
upload: (file: File, opts?: {
|
|
7
|
+
sourcePath?: string;
|
|
8
|
+
directory?: string;
|
|
9
|
+
}) => Promise<UploadFileResult>;
|
|
10
|
+
uploading: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function useFileUpload(opts?: UseFileUploadOptions): UseFileUploadResult;
|