@hachej/boring-workspace 0.1.63 → 0.1.65
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 +230 -0
- package/dist/MarkdownEditor-C55gVDyW.js +743 -0
- package/dist/WorkspaceLoadingState-D3i4X-eH.js +847 -0
- package/dist/WorkspaceProvider-Ddx7GByq.js +8770 -0
- package/dist/app-front.d.ts +106 -4
- package/dist/app-front.js +3110 -2427
- package/dist/app-server.d.ts +2 -2
- package/dist/app-server.js +6 -4
- package/dist/boring-workspace.css +2 -1
- package/dist/charts.d.ts +6 -1
- package/dist/charts.js +131 -138
- package/dist/plugin.d.ts +64 -1
- package/dist/plugin.js +32 -0
- package/dist/rolldown-runtime-Dqa2HsxW.js +20 -0
- package/dist/{runtimeEnv-HolIkcoB.d.ts → runtimeEnv-CU-c4kaV.d.ts} +7 -0
- package/dist/server.d.ts +2 -2
- package/dist/server.js +4 -3
- package/dist/testing-e2e.d.ts +5 -0
- package/dist/testing-e2e.js +33 -42
- package/dist/testing.d.ts +6 -1
- package/dist/testing.js +9474 -10814
- package/dist/utils-BRcxFdrz.js +8 -0
- package/dist/workspace.css +2790 -301
- package/dist/workspace.d.ts +164 -21
- package/dist/workspace.js +568 -734
- package/docs/plans/archive/CODE_OWNERSHIP_CLEANUP_PLAN.md +1 -1
- package/docs/plans/archive/DECLARATIVE_LAYOUT_MIGRATION.md +4 -4
- package/docs/plans/archive/GENERIC_EXPLORER_PLUGIN_PLAN.md +10 -10
- package/docs/plans/archive/PLUGIN_MODEL.md +37 -37
- package/docs/plans/archive/WORKSPACE_V2_PLAN.md +2 -2
- package/package.json +50 -50
- package/dist/FileTree-CUvn5K86.js +0 -315
- package/dist/MarkdownEditor-5f4lhBqc.js +0 -598
- package/dist/WorkspaceLoadingState-y087Q6ek.js +0 -866
- package/dist/WorkspaceProvider-U4izhS84.js +0 -8660
- package/dist/utils-B6yFEsav.js +0 -8
package/dist/workspace.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ import { DockviewPanelApi } from 'dockview-react';
|
|
|
8
8
|
import { ErrorInfo } from 'react';
|
|
9
9
|
import { Extension } from '@codemirror/state';
|
|
10
10
|
import { FunctionComponentElement } from 'react';
|
|
11
|
-
import { JSX } from 'react
|
|
11
|
+
import { JSX } from 'react';
|
|
12
12
|
import { JSXElementConstructor } from 'react';
|
|
13
13
|
import { LucideIcon } from 'lucide-react';
|
|
14
14
|
import { MouseEvent as MouseEvent_2 } from 'react';
|
|
@@ -48,6 +48,11 @@ export declare interface AgentTool {
|
|
|
48
48
|
execute(params: Record<string, unknown>, ctx: ToolExecContext): Promise<ToolResult>;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
export declare interface AppLeftOverlayChromeValue {
|
|
52
|
+
headerInsetStart: boolean;
|
|
53
|
+
headerInsetEnd: boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
51
56
|
export declare interface ArtifactPanel {
|
|
52
57
|
id: string;
|
|
53
58
|
component: string;
|
|
@@ -80,6 +85,7 @@ export declare function bootstrap(options: BootstrapOptions): BootstrapResult;
|
|
|
80
85
|
export declare interface BootstrapOptions {
|
|
81
86
|
chatPanel: unknown;
|
|
82
87
|
plugins?: BoringFrontFactoryWithId[];
|
|
88
|
+
capturedPlugins?: CapturedFrontPlugin[];
|
|
83
89
|
defaults?: BoringFrontFactoryWithId[];
|
|
84
90
|
excludeDefaults?: string[];
|
|
85
91
|
registries: {
|
|
@@ -104,10 +110,27 @@ declare interface BoringFrontAPI {
|
|
|
104
110
|
registerPanel<T = unknown>(registration: BoringFrontPanelRegistration<T>): void;
|
|
105
111
|
registerWorkspaceSource<T = unknown>(registration: BoringFrontWorkspaceSourceRegistration<T>): void;
|
|
106
112
|
registerPanelCommand(registration: BoringFrontPanelCommandRegistration): void;
|
|
113
|
+
registerAppLeftAction(registration: BoringFrontAppLeftActionRegistration): void;
|
|
107
114
|
registerSurfaceResolver(registration: BoringFrontSurfaceResolverRegistration): void;
|
|
108
115
|
registerToolRenderer(registration: BoringFrontToolRendererRegistration): void;
|
|
109
116
|
}
|
|
110
117
|
|
|
118
|
+
declare interface BoringFrontAppLeftActionRegistration {
|
|
119
|
+
id: string;
|
|
120
|
+
label: string;
|
|
121
|
+
icon?: ComponentType<{
|
|
122
|
+
className?: string;
|
|
123
|
+
}>;
|
|
124
|
+
trailing?: ComponentType;
|
|
125
|
+
overlay: ComponentType<BoringFrontAppLeftOverlayProps>;
|
|
126
|
+
order?: number;
|
|
127
|
+
emphasis?: boolean;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
declare interface BoringFrontAppLeftOverlayProps {
|
|
131
|
+
onClose: () => void;
|
|
132
|
+
}
|
|
133
|
+
|
|
111
134
|
declare interface BoringFrontBindingRegistration {
|
|
112
135
|
id: string;
|
|
113
136
|
component: PluginBinding;
|
|
@@ -271,6 +294,7 @@ declare interface CapturedBoringFrontRegistrations {
|
|
|
271
294
|
panels: BoringFrontPanelRegistration<any>[];
|
|
272
295
|
workspaceSources: BoringFrontWorkspaceSourceRegistration<any>[];
|
|
273
296
|
panelCommands: BoringFrontPanelCommandRegistration[];
|
|
297
|
+
appLeftActions: BoringFrontAppLeftActionRegistration[];
|
|
274
298
|
surfaceResolvers: BoringFrontSurfaceResolverRegistration[];
|
|
275
299
|
toolRenderers: BoringFrontToolRendererRegistration[];
|
|
276
300
|
}
|
|
@@ -390,6 +414,8 @@ export declare interface ChatLayoutProps {
|
|
|
390
414
|
center?: string;
|
|
391
415
|
centerParams?: Record<string, unknown>;
|
|
392
416
|
chatPanes?: ChatPaneDescriptor[];
|
|
417
|
+
/** Optional host actions rendered in the active chat pane header. */
|
|
418
|
+
chatTopActions?: ReactNode;
|
|
393
419
|
activeChatPaneId?: string | null;
|
|
394
420
|
onActiveChatPaneChange?: (id: string) => void;
|
|
395
421
|
onCloseChatPane?: (id: string) => void;
|
|
@@ -533,24 +559,24 @@ export declare function createWorkspacePluginClient(apiBaseUrl: string, workspac
|
|
|
533
559
|
export declare function createWorkspaceStore(options?: CreateWorkspaceStoreOptions): {
|
|
534
560
|
(): WorkspaceStore;
|
|
535
561
|
<U>(selector: (state: WorkspaceStore) => U): U;
|
|
536
|
-
} & Omit<StoreApi_3<WorkspaceStore>, "setState" | "persist"> & {
|
|
562
|
+
} & Omit< StoreApi_3<WorkspaceStore>, "setState" | "persist"> & {
|
|
537
563
|
setState(partial: WorkspaceStore | Partial<WorkspaceStore> | ((state: WorkspaceStore) => WorkspaceStore | Partial<WorkspaceStore>), replace?: false | undefined): unknown;
|
|
538
564
|
setState(state: WorkspaceStore | ((state: WorkspaceStore) => WorkspaceStore), replace: true): unknown;
|
|
539
565
|
persist: {
|
|
540
|
-
setOptions: (options: Partial<PersistOptions<WorkspaceStore, {
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
566
|
+
setOptions: (options: Partial< PersistOptions<WorkspaceStore, {
|
|
567
|
+
layout: unknown;
|
|
568
|
+
sidebar: SidebarState;
|
|
569
|
+
panelSizes: Record<string, number>;
|
|
544
570
|
}, unknown>>) => void;
|
|
545
571
|
clearStorage: () => void;
|
|
546
572
|
rehydrate: () => Promise<void> | void;
|
|
547
573
|
hasHydrated: () => boolean;
|
|
548
574
|
onHydrate: (fn: (state: WorkspaceStore) => void) => () => void;
|
|
549
575
|
onFinishHydration: (fn: (state: WorkspaceStore) => void) => () => void;
|
|
550
|
-
getOptions: () => Partial<PersistOptions<WorkspaceStore, {
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
576
|
+
getOptions: () => Partial< PersistOptions<WorkspaceStore, {
|
|
577
|
+
layout: unknown;
|
|
578
|
+
sidebar: SidebarState;
|
|
579
|
+
panelSizes: Record<string, number>;
|
|
554
580
|
}, unknown>>;
|
|
555
581
|
};
|
|
556
582
|
} & {
|
|
@@ -733,7 +759,7 @@ declare class FetchClient {
|
|
|
733
759
|
private retryBaseMs;
|
|
734
760
|
constructor(opts: FetchClientOptions);
|
|
735
761
|
private request;
|
|
736
|
-
getTree(path: string, signal?: AbortSignal): Promise<FileEntry[]>;
|
|
762
|
+
getTree(path: string, signal?: AbortSignal, filesystem?: string): Promise<FileEntry[]>;
|
|
737
763
|
getFile(path: string, signal?: AbortSignal, filesystem?: string): Promise<FileContent>;
|
|
738
764
|
/**
|
|
739
765
|
* Write file content. When `expectedMtimeMs` is supplied, the server
|
|
@@ -800,6 +826,8 @@ declare class FileConflictError extends Error {
|
|
|
800
826
|
|
|
801
827
|
declare interface FileContent {
|
|
802
828
|
content: string;
|
|
829
|
+
/** Access granted by the resolved filesystem binding, when the server exposes it. */
|
|
830
|
+
access?: "readonly" | "readwrite";
|
|
803
831
|
/**
|
|
804
832
|
* Server-stat'd modification time. Used as the OCC baseline for the
|
|
805
833
|
* next write — the client sends it back as `expectedMtimeMs` so the
|
|
@@ -934,7 +962,7 @@ export declare interface FileTreeNode {
|
|
|
934
962
|
* `<FileTreeView>`. Drop into a dockview registry as-is, or compose
|
|
935
963
|
* `FileTreeView` directly when you want different chrome/search UX.
|
|
936
964
|
*/
|
|
937
|
-
export declare function FileTreePane({ params, rootDir, searchQuery: controlledSearchQuery, panelApi, bridge, api, chromeless, className, }: FileTreePaneProps): JSX.Element;
|
|
965
|
+
export declare function FileTreePane({ params, rootDir, searchQuery: controlledSearchQuery, panelApi, bridge, api, chromeless, filesystem, access, roots, className, }: FileTreePaneProps): JSX.Element;
|
|
938
966
|
|
|
939
967
|
declare interface FileTreePaneParams extends LeftTabParams {
|
|
940
968
|
rootDir?: string;
|
|
@@ -942,6 +970,9 @@ declare interface FileTreePaneParams extends LeftTabParams {
|
|
|
942
970
|
query?: string;
|
|
943
971
|
bridge?: unknown;
|
|
944
972
|
chromeless?: boolean;
|
|
973
|
+
filesystem?: FilesystemId;
|
|
974
|
+
access?: "readonly" | "readwrite";
|
|
975
|
+
roots?: FileTreeRootConfig[];
|
|
945
976
|
revealFileTreeRequest?: {
|
|
946
977
|
path: string;
|
|
947
978
|
seq: number;
|
|
@@ -954,6 +985,9 @@ export declare interface FileTreePaneProps extends Partial<PaneProps<FileTreePan
|
|
|
954
985
|
panelApi?: DockviewPanelApi;
|
|
955
986
|
bridge?: FileTreeBridge;
|
|
956
987
|
chromeless?: boolean;
|
|
988
|
+
filesystem?: FilesystemId;
|
|
989
|
+
access?: "readonly" | "readwrite";
|
|
990
|
+
roots?: FileTreeRootConfig[];
|
|
957
991
|
className?: string;
|
|
958
992
|
}
|
|
959
993
|
|
|
@@ -982,6 +1016,14 @@ export declare interface FileTreeProps {
|
|
|
982
1016
|
className?: string;
|
|
983
1017
|
}
|
|
984
1018
|
|
|
1019
|
+
declare interface FileTreeRootConfig {
|
|
1020
|
+
filesystem: FilesystemId;
|
|
1021
|
+
label: string;
|
|
1022
|
+
rootDir?: string;
|
|
1023
|
+
access?: "readonly" | "readwrite";
|
|
1024
|
+
searchPlaceholder?: string;
|
|
1025
|
+
}
|
|
1026
|
+
|
|
985
1027
|
/**
|
|
986
1028
|
* File tree with the full workbench actions: tracks container height,
|
|
987
1029
|
* routes selects through `bridge.openFile`, and provides a right-click
|
|
@@ -993,7 +1035,7 @@ export declare interface FileTreeProps {
|
|
|
993
1035
|
* want a "Files" panel; `WorkbenchLeftPane` uses this primitive directly to
|
|
994
1036
|
* share its search input with the Data tab.
|
|
995
1037
|
*/
|
|
996
|
-
export declare function FileTreeView({ rootDir, searchQuery, bridge, revealFileTreeRequest, ignoreNames, className, }: FileTreeViewProps): JSX.Element;
|
|
1038
|
+
export declare function FileTreeView({ rootDir, searchQuery, bridge, revealFileTreeRequest, filesystem, access, ignoreNames, className, }: FileTreeViewProps): JSX.Element;
|
|
997
1039
|
|
|
998
1040
|
export declare interface FileTreeViewProps {
|
|
999
1041
|
rootDir?: string;
|
|
@@ -1004,6 +1046,8 @@ export declare interface FileTreeViewProps {
|
|
|
1004
1046
|
path: string;
|
|
1005
1047
|
seq: number;
|
|
1006
1048
|
} | null;
|
|
1049
|
+
filesystem?: FilesystemId;
|
|
1050
|
+
access?: "readonly" | "readwrite";
|
|
1007
1051
|
/**
|
|
1008
1052
|
* Names (or regex patterns) to hide from the tree. Defaults to
|
|
1009
1053
|
* `DEFAULT_TREE_IGNORE` (node_modules, .git, dist, …). Pass `[]` to
|
|
@@ -1083,7 +1127,7 @@ export declare interface LeftTabParams {
|
|
|
1083
1127
|
} | null;
|
|
1084
1128
|
}
|
|
1085
1129
|
|
|
1086
|
-
export declare function MarkdownEditor({ content, onChange, readOnly, placeholder, className, documentPath, }: MarkdownEditorProps): JSX.Element;
|
|
1130
|
+
export declare function MarkdownEditor({ content, onChange, readOnly, placeholder, className, documentPath, filesystem: rawFilesystem, }: MarkdownEditorProps): JSX.Element;
|
|
1087
1131
|
|
|
1088
1132
|
export declare function MarkdownEditorPane({ params, api, className }: MarkdownEditorPaneProps): JSX.Element;
|
|
1089
1133
|
|
|
@@ -1101,6 +1145,8 @@ export declare interface MarkdownEditorProps {
|
|
|
1101
1145
|
className?: string;
|
|
1102
1146
|
/** Workspace-relative markdown file path, used to make uploaded image links relative. */
|
|
1103
1147
|
documentPath?: string;
|
|
1148
|
+
/** Filesystem identity for relative markdown links/assets. Defaults to user. */
|
|
1149
|
+
filesystem?: FilesystemId;
|
|
1104
1150
|
}
|
|
1105
1151
|
|
|
1106
1152
|
export declare const MAX_PANELS = 50;
|
|
@@ -1140,7 +1186,9 @@ export declare function onFilesystemChanged(handler: (payload: FilesystemEventMe
|
|
|
1140
1186
|
path: string;
|
|
1141
1187
|
}) => void): () => void;
|
|
1142
1188
|
|
|
1143
|
-
export declare type OpenArtifactHandler = (path: string
|
|
1189
|
+
export declare type OpenArtifactHandler = (path: string, options?: {
|
|
1190
|
+
filesystem?: FilesystemId;
|
|
1191
|
+
}) => void;
|
|
1144
1192
|
|
|
1145
1193
|
export declare const openFileSchema: z.ZodObject<{
|
|
1146
1194
|
path: z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>;
|
|
@@ -1366,7 +1414,7 @@ export declare type PluginBinding = ComponentType<unknown>;
|
|
|
1366
1414
|
export declare interface PluginContributionError {
|
|
1367
1415
|
kind: "contribution";
|
|
1368
1416
|
pluginId: string;
|
|
1369
|
-
contributionKind: "panel" | "workspace-source" | "catalog-row" | "chat-suggestion";
|
|
1417
|
+
contributionKind: "panel" | "workspace-source" | "catalog-row" | "chat-suggestion" | "app-left-action";
|
|
1370
1418
|
contributionId?: string;
|
|
1371
1419
|
error: Error;
|
|
1372
1420
|
componentStack?: string | null;
|
|
@@ -1378,7 +1426,7 @@ export declare class PluginError extends Error {
|
|
|
1378
1426
|
}
|
|
1379
1427
|
|
|
1380
1428
|
export declare class PluginErrorBoundary extends Component<Props, State> {
|
|
1381
|
-
static contextType: Context<PluginErrorContextValue | null>;
|
|
1429
|
+
static contextType: Context< PluginErrorContextValue | null>;
|
|
1382
1430
|
context: React.ContextType<typeof PluginErrorContext>;
|
|
1383
1431
|
state: State;
|
|
1384
1432
|
static getDerivedStateFromError(error: Error): State;
|
|
@@ -1415,7 +1463,7 @@ export declare function postUiCommand(command: UiCommand): void;
|
|
|
1415
1463
|
|
|
1416
1464
|
declare interface Props {
|
|
1417
1465
|
pluginId: string;
|
|
1418
|
-
contributionKind: "panel" | "workspace-source" | "catalog-row" | "chat-suggestion";
|
|
1466
|
+
contributionKind: "panel" | "workspace-source" | "catalog-row" | "chat-suggestion" | "app-left-action";
|
|
1419
1467
|
contributionId?: string;
|
|
1420
1468
|
children?: ReactNode;
|
|
1421
1469
|
onError?: (error: Error, info: ErrorInfo) => void;
|
|
@@ -1763,6 +1811,8 @@ export declare function useActivePanels(): readonly PanelConfig[];
|
|
|
1763
1811
|
|
|
1764
1812
|
export declare function useApiBaseUrl(): string;
|
|
1765
1813
|
|
|
1814
|
+
export declare function useAppLeftOverlayChrome(): AppLeftOverlayChromeValue;
|
|
1815
|
+
|
|
1766
1816
|
export declare function useArtifactPanels(surfaceApi: DockviewShellApi | null): UseArtifactPanelsReturn;
|
|
1767
1817
|
|
|
1768
1818
|
export declare interface UseArtifactPanelsReturn {
|
|
@@ -1892,6 +1942,7 @@ export declare interface UseFilePaneReturn {
|
|
|
1892
1942
|
error: Error | null;
|
|
1893
1943
|
content: string | null;
|
|
1894
1944
|
isDirty: boolean;
|
|
1945
|
+
isReadonly: boolean;
|
|
1895
1946
|
conflict: FileConflictError | null;
|
|
1896
1947
|
onReloadFromServer: () => Promise<void>;
|
|
1897
1948
|
onOverwrite: () => Promise<void>;
|
|
@@ -1944,7 +1995,7 @@ export declare function userMeta(): {
|
|
|
1944
1995
|
ts: number;
|
|
1945
1996
|
};
|
|
1946
1997
|
|
|
1947
|
-
export declare function useSetSidebar(): (sidebar: Partial<SidebarState>) => void;
|
|
1998
|
+
export declare function useSetSidebar(): (sidebar: Partial< SidebarState>) => void;
|
|
1948
1999
|
|
|
1949
2000
|
export declare function useSidebarState(): SidebarState;
|
|
1950
2001
|
|
|
@@ -1992,6 +2043,8 @@ export declare function useWorkspacePluginClient(): WorkspacePluginClient;
|
|
|
1992
2043
|
|
|
1993
2044
|
export declare function useWorkspaceRequestId(): string | null;
|
|
1994
2045
|
|
|
2046
|
+
export declare function useWorkspaceShellCapabilities(): WorkspaceShellCapabilities;
|
|
2047
|
+
|
|
1995
2048
|
export declare function useWorkspaceSourceRegistry(): WorkspaceSourceRegistry;
|
|
1996
2049
|
|
|
1997
2050
|
export declare function WorkbenchLeftPane({ rootDir, bridge, defaultTab, activeTab: controlledActiveTab, activePanelId, onActiveTabChange, revealFileTreeRequest, onOpenPanel, onReloadAgentPlugins, onCollapse, onExpand, onCloseSourcePane, railOnly, className, }: WorkbenchLeftPaneProps): JSX.Element;
|
|
@@ -2083,6 +2136,16 @@ export declare type WorkspaceAttentionBlocker = {
|
|
|
2083
2136
|
sessionId?: string;
|
|
2084
2137
|
/** Optional generic session-row badge contributed by the plugin that owns this attention. */
|
|
2085
2138
|
sessionBadge?: WorkspaceAttentionSessionBadge;
|
|
2139
|
+
/**
|
|
2140
|
+
* Remove this blocker once its workspace chat session disappears from the
|
|
2141
|
+
* authoritative session list. Leave unset for external inbox items whose
|
|
2142
|
+
* `sessionId` is a source/thread identifier rather than a local chat id.
|
|
2143
|
+
*/
|
|
2144
|
+
pruneWhenSessionMissing?: boolean;
|
|
2145
|
+
/** Explicit inbox projection metadata. New inbox-aware plugins should provide this instead of relying on reason parsing. */
|
|
2146
|
+
inbox?: WorkspaceAttentionInboxMetadata;
|
|
2147
|
+
/** Optional shell focus behavior requested by the plugin that owns this blocker. */
|
|
2148
|
+
focus?: WorkspaceAttentionFocusMetadata;
|
|
2086
2149
|
actions?: WorkspaceAttentionBlockerAction[];
|
|
2087
2150
|
};
|
|
2088
2151
|
|
|
@@ -2097,6 +2160,27 @@ export declare interface WorkspaceAttentionContextValue {
|
|
|
2097
2160
|
removeBlocker: (id: string) => void;
|
|
2098
2161
|
}
|
|
2099
2162
|
|
|
2163
|
+
export declare type WorkspaceAttentionFocusMetadata = {
|
|
2164
|
+
/** Close the workbench left pane when this blocker becomes active for the current session. */
|
|
2165
|
+
closeWorkbenchLeftPane?: boolean;
|
|
2166
|
+
};
|
|
2167
|
+
|
|
2168
|
+
declare type WorkspaceAttentionInboxMetadata = {
|
|
2169
|
+
kind: "question" | "review" | "approval" | "notice";
|
|
2170
|
+
sourceLabel: string;
|
|
2171
|
+
createdAt?: string | number | Date;
|
|
2172
|
+
updatedAt?: string | number | Date;
|
|
2173
|
+
priority?: number;
|
|
2174
|
+
};
|
|
2175
|
+
|
|
2176
|
+
export declare type WorkspaceAttentionProviderProps = {
|
|
2177
|
+
children: ReactNode;
|
|
2178
|
+
/** Authoritative set of existing chat sessions. Blockers that opt into pruning outside this set are stale and removed. */
|
|
2179
|
+
knownSessionIds?: readonly string[];
|
|
2180
|
+
/** Keep false while sessions are still loading/paginated so valid blockers are not pruned early. */
|
|
2181
|
+
knownSessionsAuthoritative?: boolean;
|
|
2182
|
+
};
|
|
2183
|
+
|
|
2100
2184
|
export declare type WorkspaceAttentionSessionBadge = {
|
|
2101
2185
|
/** Stable badge kind for data attributes and plugin-specific styling hooks. */
|
|
2102
2186
|
kind: string;
|
|
@@ -2137,8 +2221,9 @@ export declare interface WorkspaceBridgeContextValue {
|
|
|
2137
2221
|
|
|
2138
2222
|
export declare type WorkspaceChatPanelComponent = ComponentType<any>;
|
|
2139
2223
|
|
|
2140
|
-
export declare interface WorkspaceChatPanelProps extends PiChatPanelProps<WorkspaceAttentionBlocker> {
|
|
2224
|
+
export declare interface WorkspaceChatPanelProps extends Omit<PiChatPanelProps<WorkspaceAttentionBlocker>, "onOpenArtifact"> {
|
|
2141
2225
|
sessionId: string;
|
|
2226
|
+
onOpenArtifact?: OpenArtifactHandler;
|
|
2142
2227
|
/** Endpoint base for agent → visible-workbench UI commands. */
|
|
2143
2228
|
bridgeEndpoint?: string | null;
|
|
2144
2229
|
/** Imperative handle getter for the visible workbench surface. */
|
|
@@ -2151,6 +2236,11 @@ export declare interface WorkspaceChatPanelProps extends PiChatPanelProps<Worksp
|
|
|
2151
2236
|
openWorkbenchSources?: () => void;
|
|
2152
2237
|
/** Closes the visible workbench surface after an ephemeral command finishes. */
|
|
2153
2238
|
closeWorkbench?: () => void;
|
|
2239
|
+
/** Host-injected composer blockers (for shell policies such as detached read-only chat). */
|
|
2240
|
+
composerBlockers?: WorkspaceAttentionBlocker[];
|
|
2241
|
+
onComposerStop?: () => void;
|
|
2242
|
+
onComposerBlockerAction?: (blocker: WorkspaceAttentionBlocker, action: string) => void;
|
|
2243
|
+
onData?: (part: unknown) => void;
|
|
2154
2244
|
}
|
|
2155
2245
|
|
|
2156
2246
|
export declare function workspaceComposerStopAppliesToSession(detail: unknown, sessionId: string, options?: WorkspaceComposerStopMatchOptions): boolean;
|
|
@@ -2172,6 +2262,7 @@ export declare function workspaceComposerStopTargetSessionId(detail: unknown, fa
|
|
|
2172
2262
|
export declare interface WorkspaceContextValue {
|
|
2173
2263
|
chatPanel: WorkspaceChatPanelComponent | null;
|
|
2174
2264
|
registeredPlugins: RegisteredPluginMeta[];
|
|
2265
|
+
workspaceId?: string;
|
|
2175
2266
|
debug: boolean;
|
|
2176
2267
|
}
|
|
2177
2268
|
|
|
@@ -2360,7 +2451,7 @@ export declare interface WorkspacePluginEventMap {
|
|
|
2360
2451
|
};
|
|
2361
2452
|
}
|
|
2362
2453
|
|
|
2363
|
-
export declare function WorkspaceProvider({ children, chatPanel, plugins, excludeDefaults, panels, commands, catalogs, capabilities, apiBaseUrl, authHeaders, apiTimeout, activeSessionId, openSessionIds, defaultTheme, onThemeChange, workspaceId, workspaceLabel, appTitle, storageKey, persistenceEnabled, manageDocumentTitle, bridgeEndpoint, onAuthError, onOpenFile, debug, frontPluginHotReload, fullPageBasePath, commandPaletteSessionSearch, }: WorkspaceProviderProps): JSX.Element;
|
|
2454
|
+
export declare function WorkspaceProvider({ children, chatPanel, plugins, capturedPlugins, excludeDefaults, panels, commands, catalogs, capabilities, apiBaseUrl, authHeaders, apiTimeout, activeSessionId, openSessionIds, attentionSessionIds, attentionSessionsAuthoritative, defaultTheme, onThemeChange, workspaceId, workspaceLabel, appTitle, storageKey, persistenceEnabled, manageDocumentTitle, bridgeEndpoint, onAuthError, onOpenFile, debug, frontPluginHotReload, fullPageBasePath, commandPaletteSessionSearch, }: WorkspaceProviderProps): JSX.Element;
|
|
2364
2455
|
|
|
2365
2456
|
export declare interface WorkspaceProviderProps {
|
|
2366
2457
|
children: ReactNode;
|
|
@@ -2370,6 +2461,7 @@ export declare interface WorkspaceProviderProps {
|
|
|
2370
2461
|
* `@hachej/boring-workspace/plugin`.
|
|
2371
2462
|
*/
|
|
2372
2463
|
plugins?: BoringFrontFactoryWithId[];
|
|
2464
|
+
capturedPlugins?: CapturedFrontPlugin[];
|
|
2373
2465
|
excludeDefaults?: string[];
|
|
2374
2466
|
panels?: PanelConfig[];
|
|
2375
2467
|
commands?: CommandConfig[];
|
|
@@ -2383,6 +2475,10 @@ export declare interface WorkspaceProviderProps {
|
|
|
2383
2475
|
activeSessionId?: string | null;
|
|
2384
2476
|
/** Session ids that are currently open in chat panes, for plugins that must avoid opening closed-session UI. */
|
|
2385
2477
|
openSessionIds?: readonly string[];
|
|
2478
|
+
/** Authoritative chat session ids used to drop stale session-scoped Inbox/attention entries. */
|
|
2479
|
+
attentionSessionIds?: readonly string[];
|
|
2480
|
+
/** False while session data is loading or paginated; prevents pruning valid off-page attention entries. */
|
|
2481
|
+
attentionSessionsAuthoritative?: boolean;
|
|
2386
2482
|
defaultTheme?: "light" | "dark" | undefined;
|
|
2387
2483
|
onThemeChange?: (theme: "light" | "dark") => void;
|
|
2388
2484
|
workspaceId?: string;
|
|
@@ -2406,6 +2502,48 @@ export declare interface WorkspaceProviderProps {
|
|
|
2406
2502
|
commandPaletteSessionSearch?: CommandPaletteSessionSearchConfig;
|
|
2407
2503
|
}
|
|
2408
2504
|
|
|
2505
|
+
export declare interface WorkspaceShellAnchorRect {
|
|
2506
|
+
x: number;
|
|
2507
|
+
y: number;
|
|
2508
|
+
width: number;
|
|
2509
|
+
height: number;
|
|
2510
|
+
top: number;
|
|
2511
|
+
right: number;
|
|
2512
|
+
bottom: number;
|
|
2513
|
+
left: number;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
export declare type WorkspaceShellArtifactTarget = {
|
|
2517
|
+
type: "surface";
|
|
2518
|
+
surfaceKind: string;
|
|
2519
|
+
target?: string;
|
|
2520
|
+
params?: Record<string, unknown>;
|
|
2521
|
+
} | {
|
|
2522
|
+
type: "panel";
|
|
2523
|
+
panelComponentId: string;
|
|
2524
|
+
params?: Record<string, unknown>;
|
|
2525
|
+
};
|
|
2526
|
+
|
|
2527
|
+
export declare interface WorkspaceShellCapabilities {
|
|
2528
|
+
openArtifact(target: WorkspaceShellArtifactTarget | null, options?: {
|
|
2529
|
+
sessionId?: string | null;
|
|
2530
|
+
title?: string;
|
|
2531
|
+
instanceId?: string;
|
|
2532
|
+
}): WorkspaceShellCapabilityResult;
|
|
2533
|
+
openDetachedChat(sessionId: string, options?: {
|
|
2534
|
+
anchor?: WorkspaceShellAnchorRect;
|
|
2535
|
+
title?: string;
|
|
2536
|
+
}): WorkspaceShellCapabilityResult;
|
|
2537
|
+
}
|
|
2538
|
+
|
|
2539
|
+
export declare type WorkspaceShellCapabilityResult = {
|
|
2540
|
+
success: true;
|
|
2541
|
+
} | {
|
|
2542
|
+
success: false;
|
|
2543
|
+
reason: "no-artifact" | "open-failed" | "invalid-session" | "placement-failed";
|
|
2544
|
+
message: string;
|
|
2545
|
+
};
|
|
2546
|
+
|
|
2409
2547
|
export declare interface WorkspaceSourceConfig<T = any> {
|
|
2410
2548
|
id: string;
|
|
2411
2549
|
title: string;
|
|
@@ -2504,3 +2642,8 @@ declare type WorkspaceStoreApi = {
|
|
|
2504
2642
|
};
|
|
2505
2643
|
|
|
2506
2644
|
export { }
|
|
2645
|
+
|
|
2646
|
+
|
|
2647
|
+
declare global {
|
|
2648
|
+
var __BORING_RUNTIME_SINGLETONS__: Record<string, unknown> | undefined;
|
|
2649
|
+
}
|