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