@hachej/boring-workspace 0.1.71 → 0.1.73
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,59 @@
|
|
|
1
|
+
export interface FileTreeNode {
|
|
2
|
+
name: string;
|
|
3
|
+
kind: "file" | "dir";
|
|
4
|
+
path: string;
|
|
5
|
+
children?: FileTreeNode[];
|
|
6
|
+
/**
|
|
7
|
+
* Internal: marks a placeholder row used for inline new-file/new-folder
|
|
8
|
+
* input. Consumers (FileTreeView) inject this when the user starts a
|
|
9
|
+
* create action; FileTree renders an <input> instead of a name.
|
|
10
|
+
*/
|
|
11
|
+
isDraft?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface FileTreeEditState {
|
|
14
|
+
/** Path of the row currently being edited (rename target or draft path). */
|
|
15
|
+
path: string;
|
|
16
|
+
/** When true, treat blank/Esc as cancel-without-error (new-file/folder flow). */
|
|
17
|
+
isDraft: boolean;
|
|
18
|
+
/** Pre-filled value (for rename). */
|
|
19
|
+
initialValue?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface FileTreeProps {
|
|
22
|
+
files: FileTreeNode[];
|
|
23
|
+
selectedPath?: string | null;
|
|
24
|
+
searchQuery?: string;
|
|
25
|
+
height?: number;
|
|
26
|
+
/** Path of the row whose name should render as an <input>. */
|
|
27
|
+
editing?: FileTreeEditState | null;
|
|
28
|
+
/** Path that should be scrolled into view, opening parent folders if needed. */
|
|
29
|
+
revealPath?: string | null;
|
|
30
|
+
/** Paths currently being mutated — render a small spinner on those rows. */
|
|
31
|
+
pendingPaths?: ReadonlySet<string>;
|
|
32
|
+
onSelect?: (path: string) => void;
|
|
33
|
+
onExpand?: (path: string) => void;
|
|
34
|
+
onCollapse?: (path: string) => void;
|
|
35
|
+
onContextMenu?: (event: React.MouseEvent, node: FileTreeNode) => void;
|
|
36
|
+
onDragDrop?: (sourcePath: string, targetDirPath: string) => void;
|
|
37
|
+
/** Called after a reveal request has opened parents and scheduled scrolling. */
|
|
38
|
+
onRevealHandled?: (path: string) => void;
|
|
39
|
+
/** Called when the user presses Enter on an inline-edit input. */
|
|
40
|
+
onSubmitEdit?: (path: string, value: string) => void;
|
|
41
|
+
/** Called when the user presses Esc or blurs without submitting. */
|
|
42
|
+
onCancelEdit?: () => void;
|
|
43
|
+
className?: string;
|
|
44
|
+
}
|
|
45
|
+
export interface SanitizeFileTreeResult {
|
|
46
|
+
nodes: FileTreeNode[];
|
|
47
|
+
/** How many nodes were removed (pathless or duplicate id). */
|
|
48
|
+
dropped: number;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Make tree data safe for react-arborist (`idAccessor="path"`), which THROWS
|
|
52
|
+
* "Data must contain an 'id' property …" on a non-string id and misbehaves on a duplicate
|
|
53
|
+
* id. Drops any node without a non-empty string `path`, and any node whose `path` was
|
|
54
|
+
* already seen (ids must be unique), recursively. Both are unrenderable as distinct nodes
|
|
55
|
+
* anyway, so dropping them is correct and stops one malformed listing entry from crashing
|
|
56
|
+
* the whole file panel. PURE: no logging side effect — the caller surfaces `dropped`.
|
|
57
|
+
*/
|
|
58
|
+
export declare function sanitizeFileTree(nodes: FileTreeNode[]): SanitizeFileTreeResult;
|
|
59
|
+
export declare function FileTree({ files, selectedPath, searchQuery, height, editing, revealPath, pendingPaths, onSelect, onExpand, onCollapse, onContextMenu, onSubmitEdit, onCancelEdit, onRevealHandled, onDragDrop, className, }: FileTreeProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { DockviewPanelApi } from 'dockview-react';
|
|
2
|
+
import { FileTreeBridge } from '../../../../front/bridge/types';
|
|
3
|
+
import { FilesystemId } from '../../../../shared/types/filesystem';
|
|
4
|
+
import { PaneProps } from '../../../../shared/types/panel';
|
|
5
|
+
import { LeftTabParams } from '../../../../shared/plugins/types';
|
|
6
|
+
export { copyToClipboard } from './clipboard';
|
|
7
|
+
export declare function preloadFileTreeComponent(): void;
|
|
8
|
+
declare function clampContextMenuPosition(x: number, y: number, menuRect: Pick<DOMRect, "width" | "height">, viewportWidth: number, viewportHeight: number): {
|
|
9
|
+
x: number;
|
|
10
|
+
y: number;
|
|
11
|
+
};
|
|
12
|
+
export interface FileTreeViewProps {
|
|
13
|
+
rootDir?: string;
|
|
14
|
+
/** Already-debounced query. Empty/undefined means no filter. */
|
|
15
|
+
searchQuery?: string;
|
|
16
|
+
bridge?: FileTreeBridge;
|
|
17
|
+
revealFileTreeRequest?: {
|
|
18
|
+
path: string;
|
|
19
|
+
seq: number;
|
|
20
|
+
} | null;
|
|
21
|
+
filesystem?: FilesystemId;
|
|
22
|
+
access?: "readonly" | "readwrite";
|
|
23
|
+
/**
|
|
24
|
+
* Names (or regex patterns) to hide from the tree. Defaults to
|
|
25
|
+
* `DEFAULT_TREE_IGNORE` (node_modules, .git, dist, …). Pass `[]` to
|
|
26
|
+
* show everything; pass your own array to override entirely. Patterns
|
|
27
|
+
* match on file/folder NAME, not the full path.
|
|
28
|
+
*/
|
|
29
|
+
ignoreNames?: ReadonlyArray<string | RegExp>;
|
|
30
|
+
/** Forwarded to the inner <FileTree>. */
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* File tree with the full workbench actions: tracks container height,
|
|
35
|
+
* routes selects through `bridge.openFile`, and provides a right-click
|
|
36
|
+
* context menu (new file/folder, rename, delete, copy path) plus a
|
|
37
|
+
* delete-confirmation dialog.
|
|
38
|
+
*
|
|
39
|
+
* The chrome (PanelChrome, search input) is the consumer's responsibility.
|
|
40
|
+
* `FileTreePane` (below) is the default chromed wrapper for hosts that just
|
|
41
|
+
* want a "Files" panel; `WorkbenchLeftPane` uses this primitive directly to
|
|
42
|
+
* share its search input with the Data tab.
|
|
43
|
+
*/
|
|
44
|
+
export declare function FileTreeView({ rootDir, searchQuery, bridge, revealFileTreeRequest, filesystem, access, ignoreNames, className, }: FileTreeViewProps): import("react").JSX.Element;
|
|
45
|
+
export { clampContextMenuPosition };
|
|
46
|
+
export interface FileTreeRootConfig {
|
|
47
|
+
filesystem: FilesystemId;
|
|
48
|
+
label: string;
|
|
49
|
+
rootDir?: string;
|
|
50
|
+
access?: "readonly" | "readwrite";
|
|
51
|
+
searchPlaceholder?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface FileTreePaneParams extends LeftTabParams {
|
|
54
|
+
rootDir?: string;
|
|
55
|
+
searchQuery?: string;
|
|
56
|
+
query?: string;
|
|
57
|
+
bridge?: unknown;
|
|
58
|
+
chromeless?: boolean;
|
|
59
|
+
filesystem?: FilesystemId;
|
|
60
|
+
access?: "readonly" | "readwrite";
|
|
61
|
+
roots?: FileTreeRootConfig[];
|
|
62
|
+
revealFileTreeRequest?: {
|
|
63
|
+
path: string;
|
|
64
|
+
seq: number;
|
|
65
|
+
} | null;
|
|
66
|
+
}
|
|
67
|
+
export interface FileTreePaneProps extends Partial<PaneProps<FileTreePaneParams>> {
|
|
68
|
+
rootDir?: string;
|
|
69
|
+
searchQuery?: string;
|
|
70
|
+
panelApi?: DockviewPanelApi;
|
|
71
|
+
bridge?: FileTreeBridge;
|
|
72
|
+
chromeless?: boolean;
|
|
73
|
+
filesystem?: FilesystemId;
|
|
74
|
+
access?: "readonly" | "readwrite";
|
|
75
|
+
roots?: FileTreeRootConfig[];
|
|
76
|
+
className?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Default "Files" panel: `PanelChrome` + always-visible search input wired to
|
|
80
|
+
* `<FileTreeView>`. Drop into a dockview registry as-is, or compose
|
|
81
|
+
* `FileTreeView` directly when you want different chrome/search UX.
|
|
82
|
+
*/
|
|
83
|
+
export declare function FileTreePane({ params, rootDir, searchQuery: controlledSearchQuery, panelApi, bridge, api, chromeless, filesystem, access, roots, className, }: FileTreePaneProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy `text` to the clipboard. Falls back to a hidden-textarea + execCommand
|
|
3
|
+
* when `navigator.clipboard` is unavailable (non-secure contexts: plain http
|
|
4
|
+
* served from a non-localhost IP, file://, etc.).
|
|
5
|
+
*/
|
|
6
|
+
export declare function copyToClipboard(text: string): Promise<void>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DragDropManager } from 'dnd-core';
|
|
2
|
+
/**
|
|
3
|
+
* react-arborist mounts a react-dnd HTML5 backend for every tree by default.
|
|
4
|
+
* That can trip react-dnd's global HTML5 backend guard when multiple file-tree
|
|
5
|
+
* panes, React roots, or Vite HMR remnants overlap briefly. Keep one manager for
|
|
6
|
+
* all workspace file trees in this JS realm and hand it to arborist.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getFileTreeDndManager(): DragDropManager;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FileEntry } from '../data/types';
|
|
2
|
+
import { FileTreeNode } from './FileTree';
|
|
3
|
+
export declare function buildTree(entries: FileEntry[], childrenByDir: Map<string, FileEntry[]>): FileTreeNode[];
|
|
4
|
+
export declare function parentDir(path: string): string;
|
|
5
|
+
export declare function dirKey(dir: string): string;
|
|
6
|
+
export declare function mergeEntries(base: FileEntry[] | undefined, optimistic: FileEntry[] | undefined): FileEntry[] | undefined;
|
|
7
|
+
export type DraftEditing = {
|
|
8
|
+
kind: 'create-file';
|
|
9
|
+
parentDir: string;
|
|
10
|
+
path: string;
|
|
11
|
+
} | {
|
|
12
|
+
kind: 'create-folder';
|
|
13
|
+
parentDir: string;
|
|
14
|
+
path: string;
|
|
15
|
+
} | {
|
|
16
|
+
kind: 'rename';
|
|
17
|
+
path: string;
|
|
18
|
+
initialValue: string;
|
|
19
|
+
} | null;
|
|
20
|
+
export declare function injectDraftIntoTree(tree: FileTreeNode[], editing: DraftEditing, rootDir: string): FileTreeNode[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function FilesystemFilePanelBinding(): null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface HtmlViewerProps {
|
|
2
|
+
path: string;
|
|
3
|
+
filesystem?: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveHtmlPreviewAssetPath(sourcePath: string, assetUrl: string): string | null;
|
|
7
|
+
export declare function rawFileUrlFor(base: string, path: string, workspaceRequestId?: string | null, filesystem?: string): string;
|
|
8
|
+
export declare function rewriteCssAssetUrls(css: string, sourcePath: string, base: string, workspaceRequestId?: string | null, filesystem?: string): string;
|
|
9
|
+
export declare function prepareHtmlPreviewDocument(options: {
|
|
10
|
+
html: string;
|
|
11
|
+
path: string;
|
|
12
|
+
apiBaseUrl: string;
|
|
13
|
+
headers: Record<string, string>;
|
|
14
|
+
workspaceRequestId?: string | null;
|
|
15
|
+
filesystem?: string;
|
|
16
|
+
signal: AbortSignal;
|
|
17
|
+
}): Promise<string>;
|
|
18
|
+
export declare function HtmlViewer({ path, filesystem, className }: HtmlViewerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { FilesystemId } from '../../../../shared/types/filesystem';
|
|
2
|
+
import { PaneProps } from '../../../../shared/types/panel';
|
|
3
|
+
export type HtmlViewerPaneProps = PaneProps<{
|
|
4
|
+
path?: string;
|
|
5
|
+
filesystem?: FilesystemId;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function HtmlViewerPane({ params, className }: HtmlViewerPaneProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BoringFrontSetup } from '../../../shared/plugins/frontFactory';
|
|
2
|
+
import { BoringFrontFactoryWithId } from '../../../plugin';
|
|
3
|
+
export { useFilePane } from './useFilePane';
|
|
4
|
+
export { FilePaneShell } from './FilePaneShell';
|
|
5
|
+
export { ConflictBanner } from './ConflictBanner';
|
|
6
|
+
export { emitFilesystemAgentFileChange, useAutoOpenAgentFiles, onFilesystemChanged, } from './agentFileBridge';
|
|
7
|
+
export type { UseFilePaneOptions, UseFilePaneReturn } from './useFilePane';
|
|
8
|
+
export type { UseAutoOpenAgentFilesOptions } from './agentFileBridge';
|
|
9
|
+
declare const filesystemFront: BoringFrontSetup;
|
|
10
|
+
export default filesystemFront;
|
|
11
|
+
export declare const filesystemPlugin: BoringFrontFactoryWithId;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { FilesystemId } from '../../../../shared/types/filesystem';
|
|
2
|
+
export declare function sanitizeHtml(html: string): string;
|
|
3
|
+
export interface MarkdownEditorProps {
|
|
4
|
+
content: string;
|
|
5
|
+
onChange?: (content: string) => void;
|
|
6
|
+
readOnly?: boolean;
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Workspace-relative markdown file path, used to make uploaded image links relative. */
|
|
10
|
+
documentPath?: string;
|
|
11
|
+
/** Filesystem identity for relative markdown links/assets. Defaults to user. */
|
|
12
|
+
filesystem?: FilesystemId;
|
|
13
|
+
}
|
|
14
|
+
export interface MarkdownFrontmatterEntry {
|
|
15
|
+
key: string;
|
|
16
|
+
value: string;
|
|
17
|
+
}
|
|
18
|
+
export interface MarkdownFrontmatterSummary {
|
|
19
|
+
entries: MarkdownFrontmatterEntry[];
|
|
20
|
+
block: string;
|
|
21
|
+
raw: string;
|
|
22
|
+
body: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function parseMarkdownFrontmatter(content: string): MarkdownFrontmatterSummary | null;
|
|
25
|
+
export declare function serializeMarkdownEditorChange(nextBody: string, editorFocused: boolean, frontmatter: MarkdownFrontmatterSummary | null, userInteracted?: boolean): string | null;
|
|
26
|
+
export declare function countMarkdownWords(content: string): number;
|
|
27
|
+
/**
|
|
28
|
+
* Decide whether a TipTap `onUpdate` emission is a genuine user edit worth
|
|
29
|
+
* propagating to `onChange`.
|
|
30
|
+
*
|
|
31
|
+
* TipTap fires `onUpdate` not only for typed input but also while the editor
|
|
32
|
+
* settles on init / remount / DOM re-parent. Those unfocused emissions can be
|
|
33
|
+
* non-empty normalized markdown (for example frontmatter rewritten as a rule +
|
|
34
|
+
* heading), so saving them can corrupt files before the user touches anything.
|
|
35
|
+
* Keep toolbar edits working too: focus may be on a toolbar button, so a prior
|
|
36
|
+
* pointer/key interaction inside this editor shell also marks updates as user
|
|
37
|
+
* initiated.
|
|
38
|
+
*/
|
|
39
|
+
export declare function isUserEditedChange(_nextContent: string, editorFocused: boolean, userInteracted?: boolean): boolean;
|
|
40
|
+
export declare function rawFileUrlForMarkdownImage(src: string, documentPath: string | undefined, apiBaseUrl: string, workspaceRequestId?: string | null, filesystem?: FilesystemId): string;
|
|
41
|
+
export declare function workspaceFilePathForMarkdownLink(href: string, documentPath?: string): string | null;
|
|
42
|
+
export declare function isSafeUrl(url: string): boolean;
|
|
43
|
+
export declare function readFileAsDataUrl(file: Blob): Promise<string>;
|
|
44
|
+
export declare function MarkdownEditor({ content, onChange, readOnly, placeholder, className, documentPath, filesystem: rawFilesystem, }: MarkdownEditorProps): 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 MarkdownEditorPaneProps = PaneProps<{
|
|
4
|
+
path?: string;
|
|
5
|
+
filesystem?: FilesystemId;
|
|
6
|
+
mode?: "view" | "edit" | "diff";
|
|
7
|
+
}>;
|
|
8
|
+
export declare function MarkdownEditorPane({ params, api, className }: MarkdownEditorPaneProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Node } from '@tiptap/core';
|
|
2
|
+
/**
|
|
3
|
+
* Image extension with persisted width + a corner drag handle.
|
|
4
|
+
*
|
|
5
|
+
* The width is stored on the node as a plain numeric attribute. Plain images
|
|
6
|
+
* serialize as GitHub-compatible markdown (``). Resized/aligned
|
|
7
|
+
* images serialize as GitHub-compatible HTML so width/alignment survives.
|
|
8
|
+
* The NodeView only kicks in inside the editor.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ResizableImage: Node<any, any>;
|
package/dist/src/plugins/filesystemPlugin/front/markdown-editor/__tests__/MarkdownEditor.test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface MediaViewerProps {
|
|
2
|
+
path: string;
|
|
3
|
+
kind: "image" | "pdf";
|
|
4
|
+
filesystem?: string;
|
|
5
|
+
reloadKey?: number;
|
|
6
|
+
onReload?: () => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function MediaViewer({ path, kind, filesystem, reloadKey, onReload, className }: MediaViewerProps): import("react").JSX.Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { FilesystemId } from '../../../../shared/types/filesystem';
|
|
2
|
+
import { PaneProps } from '../../../../shared/types/panel';
|
|
3
|
+
export type MediaViewerPaneProps = PaneProps<{
|
|
4
|
+
path?: string;
|
|
5
|
+
kind?: "image" | "pdf";
|
|
6
|
+
filesystem?: FilesystemId;
|
|
7
|
+
}>;
|
|
8
|
+
export declare function MediaViewerPane({ params, className }: MediaViewerPaneProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface UseMediaViewerReloadOptions {
|
|
2
|
+
path: string;
|
|
3
|
+
}
|
|
4
|
+
export interface UseMediaViewerReloadReturn {
|
|
5
|
+
reloadKey: number;
|
|
6
|
+
reload: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function useMediaViewerReload({ path }: UseMediaViewerReloadOptions): UseMediaViewerReloadReturn;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { FileEntry } from './data/types';
|
|
2
|
+
export declare const DEFAULT_TREE_IGNORE: ReadonlyArray<string | RegExp>;
|
|
3
|
+
export declare function matchesAny(name: string, patterns: ReadonlyArray<string | RegExp>): boolean;
|
|
4
|
+
export declare function filterIgnoredEntries(entries: FileEntry[] | undefined, ignoreNames: ReadonlyArray<string | RegExp>): FileEntry[] | undefined;
|
|
5
|
+
export declare function toFileSearchGlob(query: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { SurfaceResolverConfig } from '../../../shared/types/surface';
|
|
2
|
+
interface FilesystemSurfaceHandler {
|
|
3
|
+
component: string;
|
|
4
|
+
patterns?: string[];
|
|
5
|
+
fallback?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function patternSpecificity(pattern: string): number;
|
|
8
|
+
export declare const filesystemSurfaceResolver: SurfaceResolverConfig;
|
|
9
|
+
export declare const filesystemSurfaceHandlers: FilesystemSurfaceHandler[];
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { FilesystemId } from '../../../shared/types/filesystem';
|
|
2
|
+
import { FileConflictError } from './data/fetchClient';
|
|
3
|
+
export interface UseFilePaneOptions {
|
|
4
|
+
/** The file path to load/edit. If empty/undefined, pane shows "no file selected". */
|
|
5
|
+
path: string;
|
|
6
|
+
/** Filesystem identity for cache/dirty/stale separation. Defaults to user. */
|
|
7
|
+
filesystem?: FilesystemId;
|
|
8
|
+
/** Unique panel ID for lifecycle tracking. Omit to use a stable per-pane fallback ID. */
|
|
9
|
+
panelId?: string;
|
|
10
|
+
/** Initial content (optional, for draft/unsaved files). */
|
|
11
|
+
initialContent?: string;
|
|
12
|
+
/** When supplied, auto-create the file with this content if it does not exist. */
|
|
13
|
+
createIfMissing?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface UseFilePaneReturn {
|
|
16
|
+
isLoading: boolean;
|
|
17
|
+
error: Error | null;
|
|
18
|
+
content: string | null;
|
|
19
|
+
isDirty: boolean;
|
|
20
|
+
isReadonly: boolean;
|
|
21
|
+
conflict: FileConflictError | null;
|
|
22
|
+
onReloadFromServer: () => Promise<void>;
|
|
23
|
+
onOverwrite: () => Promise<void>;
|
|
24
|
+
setContent: (content: string) => void;
|
|
25
|
+
save: () => Promise<void>;
|
|
26
|
+
flushSave: () => Promise<void>;
|
|
27
|
+
fileName: string;
|
|
28
|
+
tabTitle: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Shared hook for file-based panes (code editor, markdown editor, etc.).
|
|
32
|
+
*
|
|
33
|
+
* Handles:
|
|
34
|
+
* - File loading via React Query
|
|
35
|
+
* - Local content state with dirty tracking
|
|
36
|
+
* - Optimistic concurrency control (OCC) via mtime
|
|
37
|
+
* - External file change detection
|
|
38
|
+
* - Conflict resolution (reload vs overwrite)
|
|
39
|
+
* - Panel title updates with dirty indicator
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* function MyEditorPane({ params, api }) {
|
|
44
|
+
* const { content, setContent, isLoading, error, conflict, ... } = useFilePane({
|
|
45
|
+
* path: params.path,
|
|
46
|
+
* panelId: api.id,
|
|
47
|
+
* })
|
|
48
|
+
*
|
|
49
|
+
* if (!params.path) return <NoFileSelected />
|
|
50
|
+
* if (error) return <ErrorBanner error={error} />
|
|
51
|
+
*
|
|
52
|
+
* return (
|
|
53
|
+
* <>
|
|
54
|
+
* {conflict && <ConflictBanner onReload={onReloadFromServer} onOverwrite={onOverwrite} />}
|
|
55
|
+
* <MyEditor content={content} onChange={setContent} />
|
|
56
|
+
* </>
|
|
57
|
+
* )
|
|
58
|
+
* }
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function useFilePane(options: UseFilePaneOptions): UseFilePaneReturn;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const FILESYSTEM_PLUGIN_ID = "filesystem";
|
|
2
|
+
export declare const FILES_LEFT_TAB_ID = "files";
|
|
3
|
+
export declare const FILES_CATALOG_ID = "files";
|
|
4
|
+
export declare const FILES_QUERY_KEY_SEGMENT = "files";
|
|
5
|
+
export declare const FILESYSTEM_SURFACE_RESOLVER_ID = "filesystem-path";
|
|
6
|
+
export declare const CODE_EDITOR_PANEL_ID = "code-editor";
|
|
7
|
+
export declare const CSV_VIEWER_PANEL_ID = "csv-viewer";
|
|
8
|
+
export declare const MARKDOWN_EDITOR_PANEL_ID = "markdown-editor";
|
|
9
|
+
export declare const IMAGE_VIEWER_PANEL_ID = "image-viewer";
|
|
10
|
+
export declare const PDF_VIEWER_PANEL_ID = "pdf-viewer";
|
|
11
|
+
export declare const HTML_VIEWER_PANEL_ID = "html-viewer";
|
|
12
|
+
export declare const EMPTY_FILE_PANEL_ID = "empty-file-panel";
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { FilesystemId } from '../../../shared/types/filesystem';
|
|
2
|
+
export declare const FILESYSTEM_FILE_CHANGED_EVENT = "filesystem:file.changed";
|
|
3
|
+
export declare const FILESYSTEM_FILE_CREATED_EVENT = "filesystem:file.created";
|
|
4
|
+
export declare const FILESYSTEM_FILE_MOVED_EVENT = "filesystem:file.moved";
|
|
5
|
+
export declare const FILESYSTEM_FILE_DELETED_EVENT = "filesystem:file.deleted";
|
|
6
|
+
export declare const filesystemEvents: {
|
|
7
|
+
readonly changed: "filesystem:file.changed";
|
|
8
|
+
readonly created: "filesystem:file.created";
|
|
9
|
+
readonly moved: "filesystem:file.moved";
|
|
10
|
+
readonly deleted: "filesystem:file.deleted";
|
|
11
|
+
};
|
|
12
|
+
export type FilesystemEventMeta = ({
|
|
13
|
+
cause: "user";
|
|
14
|
+
} | {
|
|
15
|
+
cause: "agent";
|
|
16
|
+
toolCallId: string;
|
|
17
|
+
} | {
|
|
18
|
+
cause: "remote";
|
|
19
|
+
toolCallId?: string;
|
|
20
|
+
}) & {
|
|
21
|
+
ts: number;
|
|
22
|
+
filesystem?: FilesystemId;
|
|
23
|
+
};
|
|
24
|
+
export interface FilesystemEventMap {
|
|
25
|
+
[FILESYSTEM_FILE_MOVED_EVENT]: FilesystemEventMeta & {
|
|
26
|
+
from: string;
|
|
27
|
+
to: string;
|
|
28
|
+
};
|
|
29
|
+
[FILESYSTEM_FILE_DELETED_EVENT]: FilesystemEventMeta & {
|
|
30
|
+
path: string;
|
|
31
|
+
};
|
|
32
|
+
[FILESYSTEM_FILE_CREATED_EVENT]: FilesystemEventMeta & {
|
|
33
|
+
path: string;
|
|
34
|
+
kind: "file" | "dir";
|
|
35
|
+
};
|
|
36
|
+
[FILESYSTEM_FILE_CHANGED_EVENT]: FilesystemEventMeta & {
|
|
37
|
+
path: string;
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @hachej/boring-workspace/shared — shared contract layer.
|
|
3
|
+
*
|
|
4
|
+
* Code (types + runtime) that BOTH front and server bundles import.
|
|
5
|
+
* This is the workspace's public SDK surface for plugin authors and
|
|
6
|
+
* app shells that wire things together manually.
|
|
7
|
+
*
|
|
8
|
+
* Isolation rule: no imports from ../front/** or ../server/**.
|
|
9
|
+
*
|
|
10
|
+
* Sub-folders:
|
|
11
|
+
* - `types/` — pure type definitions, zero runtime
|
|
12
|
+
* - `plugins/` — shared plugin internals used by the public `/plugin` subpath and bootstrap
|
|
13
|
+
*/
|
|
14
|
+
export type { WorkspaceBridge, UiState, UiCommand, CommandResult } from './ui-bridge';
|
|
15
|
+
export { WorkspaceBridgeErrorCode, createWorkspaceBridgeError, } from './workspace-bridge-rpc';
|
|
16
|
+
export type { BridgeActorAttribution, BridgeActorKind, BridgeAuthContext, BridgeCallerClass, BridgeIdempotencyPolicy, BridgeRedactedActorRef, WorkspaceBridgeCallFailure, WorkspaceBridgeCallRequest, WorkspaceBridgeCallResponse, WorkspaceBridgeCallSuccess, WorkspaceBridgeError, WorkspaceBridgeFileAssetPointer, WorkspaceBridgeJsonValue, WorkspaceBridgeOperationDefinition, } from './workspace-bridge-rpc';
|
|
17
|
+
export type { PanelConfig, CommandConfig, PaneProps, PanelRegistration } from './types/panel';
|
|
18
|
+
export type { FilesystemId, UiFileResource, UiFileResourceInput, } from './types/filesystem';
|
|
19
|
+
export { COMPANY_CONTEXT_FILESYSTEM_ID, USER_FILESYSTEM_ID, normalizeUiFileResource, normalizeUiFilesystem, uiFileResourceKey, withUiFileResource, } from './types/filesystem';
|
|
20
|
+
export type { SurfaceOpenRequest, SurfacePanelResolution, SurfaceResolverConfig, SurfaceResolverRegistration, } from './types/surface';
|
|
21
|
+
export { WORKSPACE_OPEN_PATH_SURFACE_KIND } from './types/surface';
|
|
22
|
+
export { definePanel } from './types/panel';
|
|
23
|
+
export type { AgentTool, JSONSchema, ToolExecContext, ToolResult } from './types/agent-tool';
|
|
24
|
+
export type { TelemetryEvent, TelemetrySink } from './telemetry';
|
|
25
|
+
export { noopTelemetry, safeCapture } from './telemetry';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { CatalogConfig } from './types';
|
|
2
|
+
export interface CatalogRegistryOptions {
|
|
3
|
+
warnOnDuplicate?: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class CatalogRegistry {
|
|
6
|
+
private catalogs;
|
|
7
|
+
private listeners;
|
|
8
|
+
private snapshotCache;
|
|
9
|
+
private warnOnDuplicate;
|
|
10
|
+
constructor(options?: CatalogRegistryOptions);
|
|
11
|
+
register(config: CatalogConfig, sourcePluginId: string): void;
|
|
12
|
+
unregister(id: string): void;
|
|
13
|
+
unregisterByPluginId(pluginId: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Atomic replace by pluginId: drop owned catalogs and register the new
|
|
16
|
+
* set in one emit. Pi parity for reload semantics.
|
|
17
|
+
*
|
|
18
|
+
* Collision policy: a new catalog id already owned by a DIFFERENT pluginId
|
|
19
|
+
* is skipped with a warning — same posture as `register`'s warnOnDuplicate
|
|
20
|
+
* but never silently overwriting another plugin's contribution.
|
|
21
|
+
*/
|
|
22
|
+
replaceByPluginId(pluginId: string, catalogs: CatalogConfig[]): void;
|
|
23
|
+
list(): readonly CatalogConfig[];
|
|
24
|
+
get(id: string): CatalogConfig | undefined;
|
|
25
|
+
subscribe: (cb: () => void) => (() => void);
|
|
26
|
+
getSnapshot: () => readonly CatalogConfig[];
|
|
27
|
+
private emit;
|
|
28
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CommandConfig } from '../types/panel';
|
|
2
|
+
export declare class CommandRegistry {
|
|
3
|
+
private commands;
|
|
4
|
+
private listeners;
|
|
5
|
+
private snapshotCache;
|
|
6
|
+
registerCommand(config: CommandConfig): void;
|
|
7
|
+
unregisterByPluginId(pluginId: string): void;
|
|
8
|
+
unregisterCommand(id: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Atomic replace by pluginId: drop owned commands and register the new
|
|
11
|
+
* set in one emit. Pi parity for reload semantics.
|
|
12
|
+
*
|
|
13
|
+
* Collision policy: a new command id already owned by a DIFFERENT pluginId
|
|
14
|
+
* is skipped with a warning — preserves cross-plugin isolation on reload.
|
|
15
|
+
*/
|
|
16
|
+
replaceByPluginId(pluginId: string, commands: CommandConfig[]): void;
|
|
17
|
+
getCommand(id: string): CommandConfig | undefined;
|
|
18
|
+
getCommands(): CommandConfig[];
|
|
19
|
+
getActiveCommands(): CommandConfig[];
|
|
20
|
+
subscribe: (cb: () => void) => (() => void);
|
|
21
|
+
getSnapshot: () => readonly CommandConfig[];
|
|
22
|
+
private emit;
|
|
23
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { SurfaceOpenRequest, SurfacePanelResolution, SurfaceResolverConfig, SurfaceResolverRegistration } from '../types/surface';
|
|
2
|
+
export declare class SurfaceResolverRegistry {
|
|
3
|
+
private resolvers;
|
|
4
|
+
private registrationOrder;
|
|
5
|
+
private listeners;
|
|
6
|
+
private snapshotCache;
|
|
7
|
+
register(id: string, config: SurfaceResolverRegistration): void;
|
|
8
|
+
unregister(id: string): void;
|
|
9
|
+
/**
|
|
10
|
+
* Atomic replace by pluginId: drop owned resolvers and register the new
|
|
11
|
+
* set in one emit. Pi parity for reload semantics.
|
|
12
|
+
*
|
|
13
|
+
* Collision policy: a new resolver id already owned by a DIFFERENT
|
|
14
|
+
* pluginId is skipped with a warning.
|
|
15
|
+
*/
|
|
16
|
+
replaceByPluginId(pluginId: string, resolvers: SurfaceResolverConfig[]): void;
|
|
17
|
+
get(id: string): SurfaceResolverConfig | undefined;
|
|
18
|
+
has(id: string): boolean;
|
|
19
|
+
list(): SurfaceResolverConfig[];
|
|
20
|
+
resolve(request: SurfaceOpenRequest): SurfacePanelResolution | undefined;
|
|
21
|
+
subscribe: (cb: () => void) => (() => void);
|
|
22
|
+
getSnapshot: () => readonly SurfaceResolverConfig[];
|
|
23
|
+
private emit;
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|