@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,10 @@
|
|
|
1
|
+
import { ReactNode, FunctionComponentElement, ProviderProps } from 'react';
|
|
2
|
+
export interface AppLeftOverlayChromeValue {
|
|
3
|
+
headerInsetStart: boolean;
|
|
4
|
+
headerInsetEnd: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare function AppLeftOverlayChromeProvider({ value, children, }: {
|
|
7
|
+
value: AppLeftOverlayChromeValue;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}): FunctionComponentElement<ProviderProps<AppLeftOverlayChromeValue>>;
|
|
10
|
+
export declare function useAppLeftOverlayChrome(): AppLeftOverlayChromeValue;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { BoringFrontFactoryWithId, BoringFrontPanelCommandRegistration, CapturedFrontPlugin } from './frontFactory';
|
|
2
|
+
import { CatalogConfig } from './types';
|
|
3
|
+
import { CommandConfig, PanelRegistration, WorkspaceSourceRegistration } from '../types/panel';
|
|
4
|
+
import { SurfaceResolverRegistration } from '../types/surface';
|
|
5
|
+
export interface PanelRegistryLike {
|
|
6
|
+
register(id: string, config: PanelRegistration): void;
|
|
7
|
+
}
|
|
8
|
+
export interface WorkspaceSourceRegistryLike {
|
|
9
|
+
register(id: string, config: WorkspaceSourceRegistration): void;
|
|
10
|
+
}
|
|
11
|
+
export interface CommandRegistryLike {
|
|
12
|
+
registerCommand(command: CommandConfig): void;
|
|
13
|
+
}
|
|
14
|
+
export interface CatalogRegistryLike {
|
|
15
|
+
register(catalog: CatalogConfig, pluginId: string): void;
|
|
16
|
+
}
|
|
17
|
+
export interface SurfaceResolverRegistryLike {
|
|
18
|
+
register(id: string, config: SurfaceResolverRegistration): void;
|
|
19
|
+
}
|
|
20
|
+
export interface BootstrapOptions {
|
|
21
|
+
chatPanel: unknown;
|
|
22
|
+
plugins?: BoringFrontFactoryWithId[];
|
|
23
|
+
capturedPlugins?: CapturedFrontPlugin[];
|
|
24
|
+
defaults?: BoringFrontFactoryWithId[];
|
|
25
|
+
excludeDefaults?: string[];
|
|
26
|
+
registries: {
|
|
27
|
+
panels: PanelRegistryLike;
|
|
28
|
+
workspaceSources?: WorkspaceSourceRegistryLike;
|
|
29
|
+
commands: CommandRegistryLike;
|
|
30
|
+
catalogs: CatalogRegistryLike;
|
|
31
|
+
surfaceResolvers?: SurfaceResolverRegistryLike;
|
|
32
|
+
};
|
|
33
|
+
panelCommandRunner?: (command: BoringFrontPanelCommandRegistration) => (() => void) | undefined;
|
|
34
|
+
}
|
|
35
|
+
export interface BootstrapResult {
|
|
36
|
+
registered: string[];
|
|
37
|
+
plugins: CapturedFrontPlugin[];
|
|
38
|
+
}
|
|
39
|
+
export declare function registerCapturedFrontPlugin(plugin: CapturedFrontPlugin, registries: BootstrapOptions["registries"], panelCommandRunner?: BootstrapOptions["panelCommandRunner"]): void;
|
|
40
|
+
export declare function captureBootstrapPlugins(options: Pick<BootstrapOptions, "plugins" | "defaults" | "excludeDefaults" | "capturedPlugins">): CapturedFrontPlugin[];
|
|
41
|
+
export declare function bootstrap(options: BootstrapOptions): BootstrapResult;
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { PanelConfig, PaneProps, WorkspaceSourceProps } from '../types/panel';
|
|
3
|
+
import { SurfaceOpenRequest, SurfacePanelResolution, SurfaceResolverExample, SurfaceResolverRegistration } from '../types/surface';
|
|
4
|
+
import { CatalogConfig, PluginBinding, PluginProvider } from './types';
|
|
5
|
+
export interface BoringFrontPanelRegistration<T = unknown> {
|
|
6
|
+
id: string;
|
|
7
|
+
component: ComponentType<PaneProps<T>> | (() => Promise<{
|
|
8
|
+
default: ComponentType<PaneProps<T>>;
|
|
9
|
+
}>);
|
|
10
|
+
label?: string;
|
|
11
|
+
icon?: ComponentType<{
|
|
12
|
+
className?: string;
|
|
13
|
+
}>;
|
|
14
|
+
placement?: PanelConfig["placement"];
|
|
15
|
+
requiresCapabilities?: string[];
|
|
16
|
+
essential?: boolean;
|
|
17
|
+
lazy?: boolean;
|
|
18
|
+
chromeless?: boolean;
|
|
19
|
+
supportsFullPage?: boolean;
|
|
20
|
+
source?: string;
|
|
21
|
+
}
|
|
22
|
+
export interface BoringFrontWorkspaceSourceRegistration<T = unknown> {
|
|
23
|
+
id: string;
|
|
24
|
+
component: ComponentType<WorkspaceSourceProps<T>> | (() => Promise<{
|
|
25
|
+
default: ComponentType<WorkspaceSourceProps<T>>;
|
|
26
|
+
}>);
|
|
27
|
+
label?: string;
|
|
28
|
+
icon?: ComponentType<{
|
|
29
|
+
className?: string;
|
|
30
|
+
}>;
|
|
31
|
+
requiresCapabilities?: string[];
|
|
32
|
+
lazy?: boolean;
|
|
33
|
+
chromeless?: boolean;
|
|
34
|
+
defaultPanelId?: string;
|
|
35
|
+
source?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface BoringFrontPanelCommandRegistration {
|
|
38
|
+
id: string;
|
|
39
|
+
title: string;
|
|
40
|
+
panelId?: string;
|
|
41
|
+
run?: () => void;
|
|
42
|
+
keywords?: string[];
|
|
43
|
+
shortcut?: string;
|
|
44
|
+
when?: () => boolean;
|
|
45
|
+
}
|
|
46
|
+
export interface BoringFrontProviderRegistration {
|
|
47
|
+
id: string;
|
|
48
|
+
component: PluginProvider;
|
|
49
|
+
}
|
|
50
|
+
export interface BoringFrontBindingRegistration {
|
|
51
|
+
id: string;
|
|
52
|
+
component: PluginBinding;
|
|
53
|
+
}
|
|
54
|
+
export interface BoringFrontAppLeftOverlayProps {
|
|
55
|
+
onClose: () => void;
|
|
56
|
+
}
|
|
57
|
+
export interface BoringFrontAppLeftActionRegistration {
|
|
58
|
+
id: string;
|
|
59
|
+
label: string;
|
|
60
|
+
icon?: ComponentType<{
|
|
61
|
+
className?: string;
|
|
62
|
+
}>;
|
|
63
|
+
trailing?: ComponentType;
|
|
64
|
+
overlay: ComponentType<BoringFrontAppLeftOverlayProps>;
|
|
65
|
+
order?: number;
|
|
66
|
+
emphasis?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface BoringFrontSurfaceResolverRegistration {
|
|
69
|
+
id?: string;
|
|
70
|
+
kind: string;
|
|
71
|
+
title?: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
targetHint?: string;
|
|
74
|
+
examples?: SurfaceResolverExample[];
|
|
75
|
+
metaSchema?: Record<string, unknown>;
|
|
76
|
+
source?: string;
|
|
77
|
+
resolve: (request: SurfaceOpenRequest) => SurfacePanelResolution | null | undefined;
|
|
78
|
+
}
|
|
79
|
+
export declare function normalizeFrontSurfaceResolver(resolver: BoringFrontSurfaceResolverRegistration, pluginId: string): {
|
|
80
|
+
id: string;
|
|
81
|
+
config: SurfaceResolverRegistration;
|
|
82
|
+
};
|
|
83
|
+
export type BoringFrontToolRenderer = (part: unknown) => ReactNode;
|
|
84
|
+
export interface BoringFrontToolRendererRegistration {
|
|
85
|
+
id: string;
|
|
86
|
+
render: BoringFrontToolRenderer;
|
|
87
|
+
}
|
|
88
|
+
export interface BoringFrontAPI {
|
|
89
|
+
registerProvider(registration: BoringFrontProviderRegistration): void;
|
|
90
|
+
registerBinding(registration: BoringFrontBindingRegistration): void;
|
|
91
|
+
registerCatalog(registration: CatalogConfig): void;
|
|
92
|
+
registerPanel<T = unknown>(registration: BoringFrontPanelRegistration<T>): void;
|
|
93
|
+
registerWorkspaceSource<T = unknown>(registration: BoringFrontWorkspaceSourceRegistration<T>): void;
|
|
94
|
+
registerPanelCommand(registration: BoringFrontPanelCommandRegistration): void;
|
|
95
|
+
registerAppLeftAction(registration: BoringFrontAppLeftActionRegistration): void;
|
|
96
|
+
registerSurfaceResolver(registration: BoringFrontSurfaceResolverRegistration): void;
|
|
97
|
+
registerToolRenderer(registration: BoringFrontToolRendererRegistration): void;
|
|
98
|
+
}
|
|
99
|
+
export type BoringFrontFactory = (api: BoringFrontAPI) => void | Promise<void>;
|
|
100
|
+
export type BoringFrontSetup = (api: BoringFrontAPI) => void;
|
|
101
|
+
type RejectAsyncSetup<C> = C extends {
|
|
102
|
+
setup?: infer Setup;
|
|
103
|
+
} ? Setup extends (...args: any[]) => infer Return ? Extract<Return, PromiseLike<unknown>> extends never ? unknown : never : unknown : unknown;
|
|
104
|
+
/**
|
|
105
|
+
* A `BoringFrontFactory` that carries its own plugin id (and optional
|
|
106
|
+
* label) as static properties. Produced by `definePlugin({ ... })` and used
|
|
107
|
+
* directly by `WorkspaceProvider.plugins`.
|
|
108
|
+
*/
|
|
109
|
+
export type BoringFrontFactoryWithId = BoringFrontFactory & {
|
|
110
|
+
pluginId: string;
|
|
111
|
+
pluginLabel?: string;
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Declarative plugin config — the canonical shape for `definePlugin`.
|
|
115
|
+
*/
|
|
116
|
+
export interface DefinePluginConfig {
|
|
117
|
+
id: string;
|
|
118
|
+
label?: string;
|
|
119
|
+
panels?: ReadonlyArray<BoringFrontPanelRegistration<any>>;
|
|
120
|
+
workspaceSources?: ReadonlyArray<BoringFrontWorkspaceSourceRegistration<any>>;
|
|
121
|
+
commands?: ReadonlyArray<BoringFrontPanelCommandRegistration>;
|
|
122
|
+
appLeftActions?: ReadonlyArray<BoringFrontAppLeftActionRegistration>;
|
|
123
|
+
surfaceResolvers?: ReadonlyArray<BoringFrontSurfaceResolverRegistration>;
|
|
124
|
+
providers?: ReadonlyArray<BoringFrontProviderRegistration>;
|
|
125
|
+
bindings?: ReadonlyArray<BoringFrontBindingRegistration>;
|
|
126
|
+
catalogs?: ReadonlyArray<CatalogConfig>;
|
|
127
|
+
toolRenderers?: ReadonlyArray<BoringFrontToolRendererRegistration>;
|
|
128
|
+
/**
|
|
129
|
+
* Escape hatch for registrations that can't be expressed declaratively.
|
|
130
|
+
* Called LAST, after every declarative field has been registered.
|
|
131
|
+
*/
|
|
132
|
+
setup?: BoringFrontSetup;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Define a boring-ui plugin. Takes a single declarative config object and
|
|
136
|
+
* returns a branded front factory.
|
|
137
|
+
*
|
|
138
|
+
* Older positional signatures are not supported. The `setup` field is
|
|
139
|
+
* synchronous so statically composed plugins cannot return a Promise during
|
|
140
|
+
* provider bootstrap.
|
|
141
|
+
*/
|
|
142
|
+
export declare function definePlugin<const Config extends DefinePluginConfig>(config: Config & RejectAsyncSetup<Config>): BoringFrontFactoryWithId;
|
|
143
|
+
export interface CapturedBoringFrontRegistrations {
|
|
144
|
+
providers: BoringFrontProviderRegistration[];
|
|
145
|
+
bindings: BoringFrontBindingRegistration[];
|
|
146
|
+
catalogs: CatalogConfig[];
|
|
147
|
+
panels: BoringFrontPanelRegistration<any>[];
|
|
148
|
+
workspaceSources: BoringFrontWorkspaceSourceRegistration<any>[];
|
|
149
|
+
panelCommands: BoringFrontPanelCommandRegistration[];
|
|
150
|
+
appLeftActions: BoringFrontAppLeftActionRegistration[];
|
|
151
|
+
surfaceResolvers: BoringFrontSurfaceResolverRegistration[];
|
|
152
|
+
toolRenderers: BoringFrontToolRendererRegistration[];
|
|
153
|
+
}
|
|
154
|
+
export interface CapturedFrontPlugin {
|
|
155
|
+
id: string;
|
|
156
|
+
label?: string;
|
|
157
|
+
registrations: CapturedBoringFrontRegistrations;
|
|
158
|
+
}
|
|
159
|
+
export interface CapturingBoringFrontAPIHandle extends BoringFrontAPI {
|
|
160
|
+
flush(): CapturedBoringFrontRegistrations;
|
|
161
|
+
}
|
|
162
|
+
export declare function createCapturingBoringFrontAPI(options?: {
|
|
163
|
+
pluginId?: string;
|
|
164
|
+
}): CapturingBoringFrontAPIHandle;
|
|
165
|
+
export declare function captureFrontPlugin(plugin: BoringFrontFactoryWithId): CapturedFrontPlugin;
|
|
166
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { PluginError } from './errors';
|
|
2
|
+
export type { PluginErrorKind } from './errors';
|
|
3
|
+
export type { PluginBinding, CatalogAdapter, CatalogBadge, CatalogConfig, CatalogFacets, CatalogFacetsArgs, CatalogFacetConfig, CatalogFacetValue, CatalogRow, CatalogSearchArgs, CatalogSearchResult, LeftTabParams, LeftTabComponent, PluginProvider, PluginProviderProps, AgentTool, JSONSchema, ToolExecContext, ToolResult, } from './types';
|
|
4
|
+
export { bootstrap } from './bootstrap';
|
|
5
|
+
export type { BootstrapOptions, BootstrapResult, PanelRegistryLike, WorkspaceSourceRegistryLike, CommandRegistryLike, CatalogRegistryLike, SurfaceResolverRegistryLike, } from './bootstrap';
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical package.json plugin shape for boring-ui workspace packages.
|
|
3
|
+
*
|
|
4
|
+
* Browser-safe: no node:* imports, no fs, no path.
|
|
5
|
+
*
|
|
6
|
+
* A plugin package has one package boundary and two namespaces:
|
|
7
|
+
* - `pi`: agent/Pi runtime contributions (extensions, skills, prompt, Pi packages)
|
|
8
|
+
* - `boring`: workspace/UI package discovery (front/server entrypoints and labels)
|
|
9
|
+
*/
|
|
10
|
+
export interface BoringPackageBoringField {
|
|
11
|
+
/** Optional stable plugin id. Defaults to package.json#name normalized for package discovery. */
|
|
12
|
+
id?: string;
|
|
13
|
+
/** Browser entry that default-exports a BoringFrontFactory. */
|
|
14
|
+
front?: string;
|
|
15
|
+
/** Workspace/UI support server entry. Set false to disable convention lookup. */
|
|
16
|
+
server?: string | false;
|
|
17
|
+
label?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface BoringPackagePiSourceObject {
|
|
20
|
+
source: string;
|
|
21
|
+
extensions?: string[];
|
|
22
|
+
skills?: string[];
|
|
23
|
+
themes?: string[];
|
|
24
|
+
prompts?: string[];
|
|
25
|
+
}
|
|
26
|
+
export type BoringPackagePiSource = string | BoringPackagePiSourceObject;
|
|
27
|
+
export interface BoringPackagePiField {
|
|
28
|
+
/** Native Pi extension entrypoints, relative to the package root. */
|
|
29
|
+
extensions?: string[];
|
|
30
|
+
/** Skill directories/files, relative to the package root. */
|
|
31
|
+
skills?: string[];
|
|
32
|
+
/** Additional Pi package sources to inject into Pi settings. */
|
|
33
|
+
packages?: BoringPackagePiSource[];
|
|
34
|
+
/** Agent context injected by the boring Pi extension. Prefer skills for large docs. */
|
|
35
|
+
systemPrompt?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface BoringPluginPackageJson {
|
|
38
|
+
name?: string;
|
|
39
|
+
version?: string;
|
|
40
|
+
boring?: BoringPackageBoringField;
|
|
41
|
+
pi?: BoringPackagePiField;
|
|
42
|
+
}
|
|
43
|
+
export type BoringPluginManifestErrorCode = "INVALID_ID" | "INVALID_VERSION" | "INVALID_FIELD" | "INVALID_PATH" | "MISSING_REQUIRED_FIELD";
|
|
44
|
+
export interface BoringPluginManifestIssue {
|
|
45
|
+
code: BoringPluginManifestErrorCode;
|
|
46
|
+
field: string;
|
|
47
|
+
message: string;
|
|
48
|
+
}
|
|
49
|
+
export type BoringPluginManifestValidationResult = {
|
|
50
|
+
valid: true;
|
|
51
|
+
packageJson: BoringPluginPackageJson;
|
|
52
|
+
} | {
|
|
53
|
+
valid: false;
|
|
54
|
+
issues: BoringPluginManifestIssue[];
|
|
55
|
+
};
|
|
56
|
+
export declare function isValidBoringPluginId(id: string): boolean;
|
|
57
|
+
export declare function isSafePluginRelativePath(value: string): boolean;
|
|
58
|
+
export declare function validateBoringPluginManifest(raw: unknown): BoringPluginManifestValidationResult;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { BoringPackageBoringField, BoringPackagePiField } from './manifest';
|
|
2
|
+
export type BoringPluginNativeFrontTargetTrust = "local-trusted-native";
|
|
3
|
+
/**
|
|
4
|
+
* Host-owned runtime import target for a plugin front entry.
|
|
5
|
+
*
|
|
6
|
+
* Only the trusted native/browser-module case exists today. Future
|
|
7
|
+
* target kinds (iframe/artifact/...) can extend the union without
|
|
8
|
+
* rewriting list/event payload shapes.
|
|
9
|
+
*/
|
|
10
|
+
export interface BoringPluginNativeFrontTarget {
|
|
11
|
+
kind: "native";
|
|
12
|
+
entryUrl: string;
|
|
13
|
+
revision: number;
|
|
14
|
+
trust: BoringPluginNativeFrontTargetTrust;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Plugin front served as a plain browser module URL — the Vite-dev transport
|
|
18
|
+
* (`/@fs/...`). Hosts running a Vite dev server let Vite transform the entry;
|
|
19
|
+
* the CLI's runtime host mints `native` targets instead.
|
|
20
|
+
*/
|
|
21
|
+
export interface BoringPluginModuleUrlFrontTarget {
|
|
22
|
+
kind: "module-url";
|
|
23
|
+
entryUrl: string;
|
|
24
|
+
revision: number;
|
|
25
|
+
}
|
|
26
|
+
export type BoringPluginFrontTarget = BoringPluginNativeFrontTarget | BoringPluginModuleUrlFrontTarget;
|
|
27
|
+
export type BoringPluginEvent = {
|
|
28
|
+
type: "boring.plugin.load";
|
|
29
|
+
id: string;
|
|
30
|
+
boring: BoringPackageBoringField;
|
|
31
|
+
version: string;
|
|
32
|
+
revision: number;
|
|
33
|
+
frontTarget?: BoringPluginFrontTarget;
|
|
34
|
+
} | {
|
|
35
|
+
type: "boring.plugin.unload";
|
|
36
|
+
id: string;
|
|
37
|
+
revision: number;
|
|
38
|
+
} | {
|
|
39
|
+
type: "boring.plugin.error";
|
|
40
|
+
id: string;
|
|
41
|
+
revision: number;
|
|
42
|
+
message: string;
|
|
43
|
+
};
|
|
44
|
+
export interface BoringPluginListEntry {
|
|
45
|
+
id: string;
|
|
46
|
+
boring: BoringPackageBoringField;
|
|
47
|
+
pi?: BoringPackagePiField;
|
|
48
|
+
version: string;
|
|
49
|
+
revision: number;
|
|
50
|
+
frontTarget?: BoringPluginFrontTarget;
|
|
51
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { ComponentType, ReactNode } from 'react';
|
|
2
|
+
import { WorkspaceSourceProps } from '../types/panel';
|
|
3
|
+
export type { AgentTool, JSONSchema, ToolExecContext, ToolResult, } from '../types/agent-tool';
|
|
4
|
+
export type CatalogBadge = {
|
|
5
|
+
/** 1–4 char mono code rendered as a chip. */
|
|
6
|
+
code: string;
|
|
7
|
+
tooltip?: string;
|
|
8
|
+
};
|
|
9
|
+
export type CatalogRow = {
|
|
10
|
+
id: string;
|
|
11
|
+
title: string;
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
group?: string;
|
|
14
|
+
leading?: CatalogBadge;
|
|
15
|
+
trailing?: CatalogBadge[];
|
|
16
|
+
meta?: string;
|
|
17
|
+
};
|
|
18
|
+
export type CatalogFacetValue = {
|
|
19
|
+
value: string;
|
|
20
|
+
count: number;
|
|
21
|
+
};
|
|
22
|
+
export type CatalogFacets = Record<string, CatalogFacetValue[]>;
|
|
23
|
+
export type CatalogFacetConfig = {
|
|
24
|
+
key: string;
|
|
25
|
+
label: string;
|
|
26
|
+
order?: string[];
|
|
27
|
+
formatValue?: (value: string) => string;
|
|
28
|
+
};
|
|
29
|
+
export type CatalogSearchArgs = {
|
|
30
|
+
query: string;
|
|
31
|
+
filters: Record<string, string[]>;
|
|
32
|
+
group?: {
|
|
33
|
+
key: string;
|
|
34
|
+
value: string;
|
|
35
|
+
};
|
|
36
|
+
limit: number;
|
|
37
|
+
offset: number;
|
|
38
|
+
signal?: AbortSignal;
|
|
39
|
+
};
|
|
40
|
+
export type CatalogSearchResult = {
|
|
41
|
+
items: CatalogRow[];
|
|
42
|
+
total: number;
|
|
43
|
+
hasMore: boolean;
|
|
44
|
+
};
|
|
45
|
+
export type CatalogFacetsArgs = {
|
|
46
|
+
filters: Record<string, string[]>;
|
|
47
|
+
signal?: AbortSignal;
|
|
48
|
+
};
|
|
49
|
+
export type CatalogAdapter = {
|
|
50
|
+
search(args: CatalogSearchArgs): Promise<CatalogSearchResult>;
|
|
51
|
+
fetchFacets?(args: CatalogFacetsArgs): Promise<CatalogFacets>;
|
|
52
|
+
};
|
|
53
|
+
export type PluginBinding = ComponentType<unknown>;
|
|
54
|
+
export interface PluginProviderProps {
|
|
55
|
+
apiBaseUrl: string;
|
|
56
|
+
authHeaders?: Record<string, string>;
|
|
57
|
+
onAuthError?: (statusCode: number) => void;
|
|
58
|
+
apiTimeout?: number;
|
|
59
|
+
activeSessionId?: string | null;
|
|
60
|
+
openSessionIds?: readonly string[];
|
|
61
|
+
children: ReactNode;
|
|
62
|
+
}
|
|
63
|
+
export type PluginProvider = ComponentType<PluginProviderProps>;
|
|
64
|
+
export interface CatalogConfig {
|
|
65
|
+
id: string;
|
|
66
|
+
label: string;
|
|
67
|
+
adapter: CatalogAdapter;
|
|
68
|
+
onSelect: (row: CatalogRow) => void;
|
|
69
|
+
pluginId?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface LeftTabParams {
|
|
72
|
+
rootDir?: string;
|
|
73
|
+
query?: string;
|
|
74
|
+
searchQuery?: string;
|
|
75
|
+
bridge?: unknown;
|
|
76
|
+
chromeless?: boolean;
|
|
77
|
+
/** Optional DOM target for left-tab toolbar actions owned by the pane. */
|
|
78
|
+
chromeActionsElement?: Element | null;
|
|
79
|
+
revealFileTreeRequest?: {
|
|
80
|
+
path: string;
|
|
81
|
+
seq: number;
|
|
82
|
+
} | null;
|
|
83
|
+
}
|
|
84
|
+
export type LeftTabComponent = ComponentType<WorkspaceSourceProps<LeftTabParams>>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { CommandResult, UiBridge, UiCommand } from '../ui-bridge';
|
|
2
|
+
/**
|
|
3
|
+
* Publish the workspace `UiBridge` for the current process so plugin slash
|
|
4
|
+
* commands can dispatch UI commands in-process. The agent server calls this
|
|
5
|
+
* once per server instance (see `createWorkspaceAgentServer`). Returns an
|
|
6
|
+
* unregister function — call it on server shutdown so a closed bridge is not
|
|
7
|
+
* left dangling for the next server in the same process (eval harness, tests).
|
|
8
|
+
*/
|
|
9
|
+
export declare function registerWorkspaceUiBridge(bridge: UiBridge): () => void;
|
|
10
|
+
/** The active workspace `UiBridge`, or `undefined` when none is registered. */
|
|
11
|
+
export declare function getWorkspaceUiBridge(): UiBridge | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Thrown by the plugin-facing helpers when no workspace bridge is active — for
|
|
14
|
+
* example when plugin code runs under a bare Pi CLI with no workspace UI
|
|
15
|
+
* attached. The message is deliberately actionable.
|
|
16
|
+
*/
|
|
17
|
+
export declare class NoWorkspaceUiBridgeError extends Error {
|
|
18
|
+
constructor();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Dispatch an arbitrary UI command through the active workspace bridge. This is
|
|
22
|
+
* the same call the agent's `exec_ui` tool makes; the connected browser drains
|
|
23
|
+
* the command. Prefer the named helpers below for common actions.
|
|
24
|
+
*/
|
|
25
|
+
export declare function execWorkspaceUi(command: UiCommand): Promise<CommandResult>;
|
|
26
|
+
export interface OpenPanelArgs {
|
|
27
|
+
/** Tab instance id. Reuse the same id to re-activate an existing tab. */
|
|
28
|
+
id: string;
|
|
29
|
+
/** Panel component id (one of the workspace's registered panels). */
|
|
30
|
+
component: string;
|
|
31
|
+
/** Optional params forwarded to the panel component. */
|
|
32
|
+
params?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Open an app/plugin panel in the workspace from a plugin slash command.
|
|
36
|
+
* In-process — no URL, no env. Throws `NoWorkspaceUiBridgeError` if no bridge.
|
|
37
|
+
*/
|
|
38
|
+
export declare function openPanel(args: OpenPanelArgs): Promise<CommandResult>;
|
|
39
|
+
/**
|
|
40
|
+
* Show a workspace notification (toast) from a plugin slash command. Unlike
|
|
41
|
+
* Pi's `ctx.ui.notify` (a terminal notification that is swallowed in
|
|
42
|
+
* server/headless mode), this surfaces in the browser via the UI bridge.
|
|
43
|
+
*/
|
|
44
|
+
export declare function notify(msg: string, level?: "info" | "warn" | "error"): Promise<CommandResult>;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { ReactNode, FunctionComponentElement, ProviderProps } from 'react';
|
|
2
|
+
export type WorkspaceShellArtifactTarget = {
|
|
3
|
+
type: "surface";
|
|
4
|
+
surfaceKind: string;
|
|
5
|
+
target?: string;
|
|
6
|
+
params?: Record<string, unknown>;
|
|
7
|
+
} | {
|
|
8
|
+
type: "panel";
|
|
9
|
+
panelComponentId: string;
|
|
10
|
+
params?: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
export type WorkspaceShellCapabilityResult = {
|
|
13
|
+
success: true;
|
|
14
|
+
} | {
|
|
15
|
+
success: false;
|
|
16
|
+
reason: "no-artifact" | "open-failed" | "invalid-session" | "placement-failed";
|
|
17
|
+
message: string;
|
|
18
|
+
};
|
|
19
|
+
export interface WorkspaceShellAnchorRect {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
top: number;
|
|
25
|
+
right: number;
|
|
26
|
+
bottom: number;
|
|
27
|
+
left: number;
|
|
28
|
+
}
|
|
29
|
+
export interface WorkspaceShellCapabilities {
|
|
30
|
+
openArtifact(target: WorkspaceShellArtifactTarget | null, options?: {
|
|
31
|
+
sessionId?: string | null;
|
|
32
|
+
title?: string;
|
|
33
|
+
instanceId?: string;
|
|
34
|
+
}): WorkspaceShellCapabilityResult;
|
|
35
|
+
openDetachedChat(sessionId: string, options?: {
|
|
36
|
+
anchor?: WorkspaceShellAnchorRect;
|
|
37
|
+
title?: string;
|
|
38
|
+
}): WorkspaceShellCapabilityResult;
|
|
39
|
+
}
|
|
40
|
+
export declare function WorkspaceShellCapabilitiesProvider({ value, children, }: {
|
|
41
|
+
value: WorkspaceShellCapabilities;
|
|
42
|
+
children?: ReactNode;
|
|
43
|
+
}): FunctionComponentElement<ProviderProps<WorkspaceShellCapabilities>>;
|
|
44
|
+
export declare function useWorkspaceShellCapabilities(): WorkspaceShellCapabilities;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TelemetrySink {
|
|
2
|
+
capture(event: TelemetryEvent): void | Promise<void>;
|
|
3
|
+
flush?(): void | Promise<void>;
|
|
4
|
+
}
|
|
5
|
+
export interface TelemetryEvent {
|
|
6
|
+
name: string;
|
|
7
|
+
distinctId?: string;
|
|
8
|
+
properties?: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare const noopTelemetry: TelemetrySink;
|
|
11
|
+
export declare function safeCapture(telemetry: TelemetrySink, event: TelemetryEvent): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type JSONSchema = Record<string, unknown>;
|
|
2
|
+
export type ToolReadinessRequirement = 'workspace-fs' | 'sandbox-exec' | 'ui-bridge' | 'runtime-dependencies' | `runtime:${string}`;
|
|
3
|
+
export interface ToolExecContext {
|
|
4
|
+
abortSignal: AbortSignal;
|
|
5
|
+
toolCallId: string;
|
|
6
|
+
onUpdate?: (partial: string) => void;
|
|
7
|
+
/** Agent chat/session id executing this tool, when known. */
|
|
8
|
+
sessionId?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ToolResult {
|
|
11
|
+
content: Array<{
|
|
12
|
+
type: "text";
|
|
13
|
+
text: string;
|
|
14
|
+
}>;
|
|
15
|
+
isError?: boolean;
|
|
16
|
+
details?: unknown;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Structural tool contract accepted from workspace plugins and UI tool
|
|
20
|
+
* factories. Kept agent-runtime-neutral so only the app integration layer
|
|
21
|
+
* needs to import @hachej/boring-agent.
|
|
22
|
+
*/
|
|
23
|
+
export interface AgentTool {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
promptSnippet?: string;
|
|
27
|
+
readinessRequirements?: ToolReadinessRequirement[];
|
|
28
|
+
parameters: JSONSchema;
|
|
29
|
+
execute(params: Record<string, unknown>, ctx: ToolExecContext): Promise<ToolResult>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export type FilesystemId = "user" | "company_context" | (string & {});
|
|
2
|
+
export declare const USER_FILESYSTEM_ID = "user";
|
|
3
|
+
export declare const COMPANY_CONTEXT_FILESYSTEM_ID = "company_context";
|
|
4
|
+
export interface UiFileResource {
|
|
5
|
+
readonly filesystem: FilesystemId;
|
|
6
|
+
readonly path: string;
|
|
7
|
+
}
|
|
8
|
+
export type UiFileResourceInput = string | {
|
|
9
|
+
readonly filesystem?: FilesystemId | null;
|
|
10
|
+
readonly path: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function normalizeUiFilesystem(filesystem: FilesystemId | null | undefined): FilesystemId;
|
|
13
|
+
export declare function normalizeUiFileResource(input: UiFileResourceInput): UiFileResource;
|
|
14
|
+
export declare function uiFileResourceKey(resource: UiFileResourceInput): string;
|
|
15
|
+
export declare function withUiFileResource<T extends Record<string, unknown>>(value: T, fallbackFilesystem?: FilesystemId | null): T & UiFileResource;
|