+ <>
{
cwd={{ root: homeRoot, path: currentPath.replace(/^\//, '') }}
/>
)}
-
+ >
);
};
diff --git a/src/workspaces/plugins/FileBrowser/client/Widget.tsx b/src/apps/officer-web/Screens/Dashboard/Files/Widget.tsx
similarity index 99%
rename from src/workspaces/plugins/FileBrowser/client/Widget.tsx
rename to src/apps/officer-web/Screens/Dashboard/Files/Widget.tsx
index 2c225594..f45d220a 100644
--- a/src/workspaces/plugins/FileBrowser/client/Widget.tsx
+++ b/src/apps/officer-web/Screens/Dashboard/Files/Widget.tsx
@@ -2,12 +2,11 @@ import { useState, useEffect, useRef, useMemo } from 'react';
import { useNavigate, Link } from 'react-router';
import { Folder, Pin, PinOff, Search, Clock, FolderOpen, Loader2, X, ChevronDown, ChevronUp } from 'lucide-react';
import { getIcon } from 'material-file-icons';
-import { useFiles, type DirEntry } from './state/useFiles';
+import { useFiles, type DirEntry, Breadcrumb } from 'widgets/FileBrowser';
import { useRecentFiles } from './state/useRecentFiles';
import { usePinnedFiles } from './state/usePinnedFiles';
import { useUserState } from '@/state/useUserState';
import { Card } from '@/components/Card';
-import { Breadcrumb } from './Screen/Breadcrumb';
type Tab = 'browse' | 'recent' | 'pinned';
diff --git a/src/apps/officer-web/Screens/Dashboard/Files/index.tsx b/src/apps/officer-web/Screens/Dashboard/Files/index.tsx
new file mode 100644
index 00000000..fe0caff0
--- /dev/null
+++ b/src/apps/officer-web/Screens/Dashboard/Files/index.tsx
@@ -0,0 +1,2 @@
+export { Files } from './Screen';
+export { FileBrowser as FileBrowserWidget } from './Widget';
diff --git a/src/workspaces/plugins/FileBrowser/client/state/usePinnedFiles.ts b/src/apps/officer-web/Screens/Dashboard/Files/state/usePinnedFiles.ts
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/client/state/usePinnedFiles.ts
rename to src/apps/officer-web/Screens/Dashboard/Files/state/usePinnedFiles.ts
diff --git a/src/workspaces/plugins/FileBrowser/client/state/useRecentFiles.ts b/src/apps/officer-web/Screens/Dashboard/Files/state/useRecentFiles.ts
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/client/state/useRecentFiles.ts
rename to src/apps/officer-web/Screens/Dashboard/Files/state/useRecentFiles.ts
diff --git a/src/apps/officer-web/Screens/Dashboard/Home/index.tsx b/src/apps/officer-web/Screens/Dashboard/Home/index.tsx
index a3a4109b..46351a48 100644
--- a/src/apps/officer-web/Screens/Dashboard/Home/index.tsx
+++ b/src/apps/officer-web/Screens/Dashboard/Home/index.tsx
@@ -1,5 +1,5 @@
import { ChatLauncher } from './ChatLauncher';
-import { Widget as FileBrowser } from 'plugins/FileBrowser/client';
+import { FileBrowserWidget as FileBrowser } from '@/Screens/Dashboard/Files';
import { Widget as ChatHistory } from 'plugins/ChatHistory/client';
import { Catalog } from 'sounds';
diff --git a/src/apps/officer-web/Screens/Dashboard/Terminal/index.tsx b/src/apps/officer-web/Screens/Dashboard/Terminal/index.tsx
index b5e7f15d..de32955d 100644
--- a/src/apps/officer-web/Screens/Dashboard/Terminal/index.tsx
+++ b/src/apps/officer-web/Screens/Dashboard/Terminal/index.tsx
@@ -1,4 +1,4 @@
-import { TerminalView } from 'widgets/TerminalView';
+import { TerminalView } from 'widgets/Terminal';
export const Terminal = () => {
return ;
diff --git a/src/apps/officer-web/Screens/Dashboard/index.tsx b/src/apps/officer-web/Screens/Dashboard/index.tsx
index 6af169fd..662215cb 100644
--- a/src/apps/officer-web/Screens/Dashboard/index.tsx
+++ b/src/apps/officer-web/Screens/Dashboard/index.tsx
@@ -11,3 +11,4 @@ export * from './Skills';
export * from './TaskLogs';
export * from './Tasks';
export * from './Terminal';
+export * from './Files';
diff --git a/src/workspaces/plugins/FileBrowser/server/router.ts b/src/servers/api/file-browser/router.ts
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/server/router.ts
rename to src/servers/api/file-browser/router.ts
diff --git a/src/servers/hono.ts b/src/servers/hono.ts
index 4ed09325..b68a906c 100644
--- a/src/servers/hono.ts
+++ b/src/servers/hono.ts
@@ -16,6 +16,7 @@ import { scrapeRouter } from './api/scrape/scrape';
import { uploadRouter } from './api/upload/upload';
import { settingsRouter } from './api/settings/settings';
import { taskLogsRouter } from './api/task-logs/task-logs';
+import { router as fileBrowserRouter } from './api/file-browser/router';
import { readdirSync, existsSync } from 'node:fs';
import { join } from 'node:path';
import { CustomError } from './custom-errors';
@@ -55,6 +56,7 @@ protectedRouter.route('/scrape', scrapeRouter);
protectedRouter.route('/upload', uploadRouter);
protectedRouter.route('/user', settingsRouter);
protectedRouter.route('/task-logs', taskLogsRouter);
+protectedRouter.route('/file-browser', fileBrowserRouter);
// Auto-discover and mount plugin routers, then mount the protected router.
// Hono's .route() copies routes at call time, so plugins must be loaded first.
diff --git a/src/workspaces/plugins/FileBrowser/client/index.ts b/src/workspaces/plugins/FileBrowser/client/index.ts
deleted file mode 100644
index ebf00d81..00000000
--- a/src/workspaces/plugins/FileBrowser/client/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export { FileBrowser as Widget } from './Widget';
-export { Files as Screen } from './Screen';
diff --git a/src/workspaces/plugins/FileBrowser/index.ts b/src/workspaces/plugins/FileBrowser/index.ts
deleted file mode 100644
index cf583364..00000000
--- a/src/workspaces/plugins/FileBrowser/index.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-export { Widget, Screen } from './client';
-export { router, apiPath } from './server';
-
-export const plugin = {
- id: 'FileBrowser',
- name: 'File Browser',
- description: 'Browse, upload, and manage files',
-};
diff --git a/src/workspaces/plugins/FileBrowser/server/index.ts b/src/workspaces/plugins/FileBrowser/server/index.ts
deleted file mode 100644
index dcbe713f..00000000
--- a/src/workspaces/plugins/FileBrowser/server/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './router';
-
-export const apiPath = 'file-browser';
diff --git a/src/workspaces/plugins/package.json b/src/workspaces/plugins/package.json
index 6c39c333..1302524f 100644
--- a/src/workspaces/plugins/package.json
+++ b/src/workspaces/plugins/package.json
@@ -4,9 +4,6 @@
"private": true,
"type": "module",
"exports": {
- "./FileBrowser": "./FileBrowser/index.ts",
- "./FileBrowser/client": "./FileBrowser/client/index.ts",
- "./FileBrowser/server": "./FileBrowser/server/index.ts",
"./Chat": "./Chat/index.ts",
"./Chat/client": "./Chat/client/index.ts",
"./ChatHistory": "./ChatHistory/index.ts",
diff --git a/src/workspaces/plugins/FileBrowser/client/Screen/Breadcrumb.tsx b/src/workspaces/widgets/FileBrowser/Breadcrumb.tsx
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/client/Screen/Breadcrumb.tsx
rename to src/workspaces/widgets/FileBrowser/Breadcrumb.tsx
diff --git a/src/workspaces/plugins/FileBrowser/client/Screen/Toolbar.tsx b/src/workspaces/widgets/FileBrowser/Toolbar.tsx
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/client/Screen/Toolbar.tsx
rename to src/workspaces/widgets/FileBrowser/Toolbar.tsx
diff --git a/src/workspaces/widgets/FileBrowser/index.ts b/src/workspaces/widgets/FileBrowser/index.ts
new file mode 100644
index 00000000..dfd52576
--- /dev/null
+++ b/src/workspaces/widgets/FileBrowser/index.ts
@@ -0,0 +1,4 @@
+export { Breadcrumb } from './Breadcrumb';
+export { Toolbar } from './Toolbar';
+export { useFiles, type DirEntry } from './useFiles';
+export { useTasks, type TaskSummary } from './useTasks';
diff --git a/src/workspaces/plugins/FileBrowser/client/state/useFiles.ts b/src/workspaces/widgets/FileBrowser/useFiles.ts
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/client/state/useFiles.ts
rename to src/workspaces/widgets/FileBrowser/useFiles.ts
diff --git a/src/workspaces/plugins/FileBrowser/client/state/useTasks.ts b/src/workspaces/widgets/FileBrowser/useTasks.ts
similarity index 100%
rename from src/workspaces/plugins/FileBrowser/client/state/useTasks.ts
rename to src/workspaces/widgets/FileBrowser/useTasks.ts
diff --git a/src/workspaces/widgets/TerminalView.tsx b/src/workspaces/widgets/Terminal/Terminal.tsx
similarity index 100%
rename from src/workspaces/widgets/TerminalView.tsx
rename to src/workspaces/widgets/Terminal/Terminal.tsx
diff --git a/src/workspaces/widgets/Terminal/index.ts b/src/workspaces/widgets/Terminal/index.ts
new file mode 100644
index 00000000..e8f90209
--- /dev/null
+++ b/src/workspaces/widgets/Terminal/index.ts
@@ -0,0 +1 @@
+export { TerminalView, type TerminalViewProps } from './Terminal';
diff --git a/src/workspaces/widgets/package.json b/src/workspaces/widgets/package.json
index 0dbeba53..635f0ca4 100644
--- a/src/workspaces/widgets/package.json
+++ b/src/workspaces/widgets/package.json
@@ -2,6 +2,7 @@
"name": "widgets",
"private": true,
"exports": {
- "./TerminalView": "./TerminalView.tsx"
+ "./Terminal": "./Terminal/index.ts",
+ "./FileBrowser": "./FileBrowser/index.ts"
}
}