@hachej/boring-workspace 0.1.42 → 0.1.44

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.
@@ -2,7 +2,7 @@ import { jsx as c, jsxs as z } from "react/jsx-runtime";
2
2
  import { useRef as D, useEffect as A, useMemo as M, useCallback as w, createContext as S, useContext as $ } from "react";
3
3
  import { Tree as E } from "react-arborist";
4
4
  import { FolderOpenIcon as J, FolderIcon as K, ChevronRightIcon as U, Loader2Icon as V } from "lucide-react";
5
- import { L as X } from "./WorkspaceProvider-DkZAxsYo.js";
5
+ import { L as X } from "./WorkspaceProvider-CSwoKjTp.js";
6
6
  import { EmptyState as Y, Input as Z } from "@hachej/boring-ui-kit";
7
7
  import { c as N } from "./utils-B6yFEsav.js";
8
8
  import { createDragDropManager as y } from "dnd-core";
@@ -15,7 +15,7 @@ import { TableHeader as ft } from "@tiptap/extension-table-header";
15
15
  import { TableCell as pt } from "@tiptap/extension-table-cell";
16
16
  import mt from "@tiptap/extension-image";
17
17
  import { c as S } from "./utils-B6yFEsav.js";
18
- import { _ as O, aq as V, p as ht } from "./WorkspaceProvider-DkZAxsYo.js";
18
+ import { _ as O, aq as V, p as ht } from "./WorkspaceProvider-CSwoKjTp.js";
19
19
  import { uploadFile as wt } from "@hachej/boring-agent/front";
20
20
  import kt from "@tiptap/extension-code-block-lowlight";
21
21
  import { createLowlight as bt, common as vt } from "lowlight";
@@ -3,7 +3,7 @@ import { useState as V, useCallback as v, useMemo as Y, useEffect as k, useRef a
3
3
  import { IconButton as F, LoadingState as xe, ResizeHandle as pe, Button as ke, Kbd as Ce } from "@hachej/boring-ui-kit";
4
4
  import { ChevronLeft as ye, MessageSquare as Se, Search as Pe, Plus as _e } from "lucide-react";
5
5
  import { c as m } from "./utils-B6yFEsav.js";
6
- import { al as Ne, a2 as We, ad as Ie, G as Oe, as as de, aG as Be, a7 as ze, aJ as Re, aK as Q, u as Le, ao as Ae } from "./WorkspaceProvider-DkZAxsYo.js";
6
+ import { al as Ne, a2 as We, ad as Ie, G as Oe, as as de, aG as Be, a7 as ze, aJ as Re, aK as Q, u as Le, ao as Ae } from "./WorkspaceProvider-CSwoKjTp.js";
7
7
  function Ue(e, t, r = !0) {
8
8
  if (!r || typeof window > "u") return t;
9
9
  try {
@@ -2548,7 +2548,7 @@ async function Wn(e) {
2548
2548
  }
2549
2549
  if (!n) throw new Error("Clipboard not available");
2550
2550
  }
2551
- const Kr = () => import("./FileTree-CVsvICGP.js").then((e) => ({ default: e.FileTree }));
2551
+ const Kr = () => import("./FileTree-DKzSeYJX.js").then((e) => ({ default: e.FileTree }));
2552
2552
  function Wa() {
2553
2553
  Kr();
2554
2554
  }
@@ -3520,7 +3520,7 @@ function Bn({ params: e, api: t, className: n }) {
3520
3520
  );
3521
3521
  }
3522
3522
  const cc = ft(
3523
- () => import("./MarkdownEditor-BvaGmzWP.js").then((e) => ({ default: e.MarkdownEditor }))
3523
+ () => import("./MarkdownEditor-FJtYn6Xx.js").then((e) => ({ default: e.MarkdownEditor }))
3524
3524
  );
3525
3525
  function lc({ params: e, api: t, className: n }) {
3526
3526
  const r = typeof (e == null ? void 0 : e.path) == "string" ? e.path : "", {
@@ -7158,7 +7158,7 @@ function wu(e) {
7158
7158
  const Zt = "Boring UI";
7159
7159
  function hr(e) {
7160
7160
  const t = e == null ? void 0 : e.trim();
7161
- return !t || /^(?:[a-z][a-z\d+.-]*:\/\/|[a-z]:[\\/]|\\\\|\/|\.\.?[\\/])/i.test(t) || /^(?:::1|localhost(?::\d+)?|\d{1,3}(?:\.\d{1,3}){3}(?::\d+)?|\[[a-f\d:]+\](?::\d+)?|[a-z\d-]+(?:\.[a-z\d-]+)+(?::\d+)?)$/i.test(t) ? null : t;
7161
+ return !t || /^(?:[a-z][a-z\d+.-]*:\/\/|[a-z]:[\\/]|\\\\|\/|\.\.?[\\/])/i.test(t) || /^(?:::1|localhost(?::\d+)?|\d{1,3}(?:\.\d{1,3}){3}(?::\d+)?|\[[a-f\d:]+\](?::\d+)?|[a-z\d-]+(?:\.[a-z\d-]+)+(?::\d+)?)$/i.test(t) || /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t) ? null : t;
7162
7162
  }
7163
7163
  function Su(e) {
7164
7164
  const t = hr(e.workspaceLabel);
@@ -421,7 +421,7 @@ export declare type UseWorkspaceAgentSessions<TSession extends WorkspaceAgentSes
421
421
  refreshKey?: unknown;
422
422
  }) => WorkspaceAgentSessionsApi<TSession>;
423
423
 
424
- export declare function WorkspaceAgentFront<TSession extends WorkspaceAgentSession = WorkspaceAgentSession>({ workspaceId, chatPanel: chatPanelProp, useSessions: useSessionsProp, requestHeaders, sessionStorageKey, providerStorageKey, surfaceStorageKey, beforeShell, afterShell, panels, commands, catalogs, plugins, excludeDefaults, capabilities, apiBaseUrl, authHeaders, apiTimeout, defaultTheme, onThemeChange, persistenceEnabled, bridgeEndpoint, fullPageBasePath, onAuthError, sessions, activeSessionId, onSwitchSession, onCreateSession, onDeleteSession, onActiveSessionIdChange, appTitle, workspaceLabel, defaultSessionTitle, navEnabled, defaultNavOpen, defaultSurfaceOpen, defaultWorkbenchLeftTab, surfaceInitialPanels, topBarLeft, topBarRight, showThemeToggle, chatParams, hotReloadEnabled, frontPluginHotReload, extraPanels, extraCommands, provisionWorkspace, bootPreloadPaths, onWorkspaceWarmupStatusChange, onOpenNav, onOpenSurface, surfaceButtonBottomOffset, className, }: WorkspaceAgentFrontProps<TSession>): JSX.Element;
424
+ export declare function WorkspaceAgentFront<TSession extends WorkspaceAgentSession = WorkspaceAgentSession>({ workspaceId, chatPanel: chatPanelProp, useSessions: useSessionsProp, requestHeaders, sessionStorageKey, providerStorageKey, surfaceStorageKey, beforeShell, afterShell, panels, commands, catalogs, plugins, excludeDefaults, capabilities, apiBaseUrl, authHeaders, apiTimeout, defaultTheme, onThemeChange, persistenceEnabled, debug, bridgeEndpoint, fullPageBasePath, onAuthError, sessions, activeSessionId, onSwitchSession, onCreateSession, onDeleteSession, onActiveSessionIdChange, appTitle, workspaceLabel, defaultSessionTitle, navEnabled, defaultNavOpen, defaultSurfaceOpen, defaultWorkbenchLeftTab, defaultWorkbenchLeftOpen, surfaceInitialPanels, topBarLeft, topBarRight, showThemeToggle, chatParams, externalPlugins, hotReloadEnabled, frontPluginHotReload, extraPanels, extraCommands, provisionWorkspace, bootPreloadPaths, onWorkspaceWarmupStatusChange, onOpenNav, onOpenSurface, surfaceButtonBottomOffset, className, }: WorkspaceAgentFrontProps<TSession>): JSX.Element;
425
425
 
426
426
  export declare interface WorkspaceAgentFrontProps<TSession extends WorkspaceAgentSession = WorkspaceAgentSession> extends Omit<WorkspaceProviderProps, "children" | "workspaceId" | "storageKey" | "chatPanel">, Omit<ChatLayoutProps, "nav" | "navParams" | "center" | "centerParams" | "chatPanes" | "activeChatPaneId" | "onActiveChatPaneChange" | "onCloseChatPane" | "onCreateChatPaneAfter" | "onDropChatSession" | "flashChatPaneId" | "surface" | "surfaceParams" | "sidebar" | "sidebarParams" | "storageKey"> {
427
427
  workspaceId: string;
@@ -440,6 +440,7 @@ export declare interface WorkspaceAgentFrontProps<TSession extends WorkspaceAgen
440
440
  defaultNavOpen?: boolean;
441
441
  defaultSurfaceOpen?: boolean;
442
442
  defaultWorkbenchLeftTab?: string;
443
+ defaultWorkbenchLeftOpen?: boolean;
443
444
  surfaceInitialPanels?: SurfaceShellProps["initialPanels"];
444
445
  topBarLeft?: ReactNode;
445
446
  topBarRight?: ReactNode;
@@ -462,6 +463,12 @@ export declare interface WorkspaceAgentFrontProps<TSession extends WorkspaceAgen
462
463
  onDeleteSession?: (id: string) => void;
463
464
  onActiveSessionIdChange?: (sessionId: string | null) => void;
464
465
  chatParams?: Record<string, unknown>;
466
+ /**
467
+ * Enable user-authored external plugin UX in the frontend. When `false`,
468
+ * disables front plugin hot reload and hides the chat `/reload` UX. App/
469
+ * internal statically composed plugins still work.
470
+ */
471
+ externalPlugins?: boolean;
465
472
  /**
466
473
  * Forward to ChatPanel — when `false`, the `/reload` slash command is
467
474
  * hidden and the PluginUpdateStatus banner above the composer is