@hachej/boring-workspace 0.1.33 → 0.1.35
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-SmsE0Raq.js → FileTree-CkCxHBDu.js} +1 -1
- package/dist/MarkdownEditor-CtPphEVP.js +549 -0
- package/dist/{WorkspaceLoadingState-BlvZXmFg.js → WorkspaceLoadingState-Bl-92Dly.js} +287 -252
- package/dist/WorkspaceProvider-BhRPFy5R.js +7508 -0
- package/dist/app-front.d.ts +50 -3
- package/dist/app-front.js +893 -756
- package/dist/app-server.d.ts +11 -8
- package/dist/app-server.js +609 -79
- package/dist/boring-workspace.css +1 -1
- package/dist/{createInMemoryBridge-HJopAIbo.d.ts → createInMemoryBridge-zb8MpO60.d.ts} +11 -1
- package/dist/plugin.d.ts +8 -0
- package/dist/plugin.js +8 -1
- package/dist/runtime-server.d.ts +47 -0
- package/dist/runtime-server.js +32 -0
- package/dist/server.d.ts +63 -25
- package/dist/server.js +555 -46
- package/dist/testing.js +1 -1
- package/dist/workspace.css +328 -30
- package/dist/workspace.d.ts +68 -2
- package/dist/workspace.js +31 -30
- package/docs/PLUGIN_SYSTEM.md +5 -6
- package/package.json +10 -4
- package/dist/MarkdownEditor-zbp8ezds.js +0 -540
- package/dist/WorkspaceProvider-CuIZx1ua.js +0 -6553
package/dist/workspace.d.ts
CHANGED
|
@@ -100,6 +100,7 @@ declare interface BoringFrontAPI {
|
|
|
100
100
|
registerPanelCommand(registration: BoringFrontPanelCommandRegistration): void;
|
|
101
101
|
registerLeftTab<T = LeftTabParams>(registration: BoringFrontLeftTabRegistration<T>): void;
|
|
102
102
|
registerSurfaceResolver(registration: BoringFrontSurfaceResolverRegistration): void;
|
|
103
|
+
registerToolRenderer(registration: BoringFrontToolRendererRegistration): void;
|
|
103
104
|
}
|
|
104
105
|
|
|
105
106
|
declare interface BoringFrontBindingRegistration {
|
|
@@ -173,6 +174,13 @@ declare interface BoringFrontSurfaceResolverRegistration {
|
|
|
173
174
|
resolve: (request: SurfaceOpenRequest) => SurfacePanelResolution | null | undefined;
|
|
174
175
|
}
|
|
175
176
|
|
|
177
|
+
declare type BoringFrontToolRenderer = (part: unknown) => ReactNode;
|
|
178
|
+
|
|
179
|
+
declare interface BoringFrontToolRendererRegistration {
|
|
180
|
+
id: string;
|
|
181
|
+
render: BoringFrontToolRenderer;
|
|
182
|
+
}
|
|
183
|
+
|
|
176
184
|
export declare interface BridgeClient {
|
|
177
185
|
connect(): void;
|
|
178
186
|
disconnect(): void;
|
|
@@ -251,6 +259,7 @@ declare interface CapturedBoringFrontRegistrations {
|
|
|
251
259
|
panelCommands: BoringFrontPanelCommandRegistration[];
|
|
252
260
|
leftTabs: BoringFrontLeftTabRegistration<any>[];
|
|
253
261
|
surfaceResolvers: BoringFrontSurfaceResolverRegistration[];
|
|
262
|
+
toolRenderers: BoringFrontToolRendererRegistration[];
|
|
254
263
|
}
|
|
255
264
|
|
|
256
265
|
declare interface CapturedFrontPlugin {
|
|
@@ -367,6 +376,20 @@ export declare interface ChatLayoutProps {
|
|
|
367
376
|
navParams?: Record<string, unknown>;
|
|
368
377
|
center?: string;
|
|
369
378
|
centerParams?: Record<string, unknown>;
|
|
379
|
+
chatPanes?: ChatPaneDescriptor[];
|
|
380
|
+
activeChatPaneId?: string | null;
|
|
381
|
+
onActiveChatPaneChange?: (id: string) => void;
|
|
382
|
+
onCloseChatPane?: (id: string) => void;
|
|
383
|
+
onCreateChatPaneAfter?: (id: string) => void;
|
|
384
|
+
onDropChatSession?: (sessionId: string) => void;
|
|
385
|
+
flashChatPaneId?: string | null;
|
|
386
|
+
/**
|
|
387
|
+
* Chat stage layout engine. `dock` enables the dockview-backed stage
|
|
388
|
+
* (drag headers to split in any direction); defaults to the flex row.
|
|
389
|
+
* The `boring-workspace:chat-pane-engine` localStorage key overrides
|
|
390
|
+
* when no explicit value is passed.
|
|
391
|
+
*/
|
|
392
|
+
chatPaneEngine?: ChatPaneEngine | null;
|
|
370
393
|
surface?: string | null;
|
|
371
394
|
surfaceParams?: Record<string, unknown>;
|
|
372
395
|
surfaceOverlay?: ReactNode;
|
|
@@ -380,6 +403,25 @@ export declare interface ChatLayoutProps {
|
|
|
380
403
|
className?: string;
|
|
381
404
|
}
|
|
382
405
|
|
|
406
|
+
declare interface ChatPaneDescriptor {
|
|
407
|
+
id: string;
|
|
408
|
+
title?: string | null;
|
|
409
|
+
panel?: string;
|
|
410
|
+
params?: Record<string, unknown>;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
/**
|
|
414
|
+
* Layout engine for the chat pane stage.
|
|
415
|
+
*
|
|
416
|
+
* - `flex` (default): panes lay out as a single row of vertical splits.
|
|
417
|
+
* - `dock`: dockview-backed stage — drag pane headers to split in any
|
|
418
|
+
* direction and resize; geometry persists per workspace.
|
|
419
|
+
*
|
|
420
|
+
* Resolution order: explicit prop, then the
|
|
421
|
+
* `boring-workspace:chat-pane-engine` localStorage override, then `flex`.
|
|
422
|
+
*/
|
|
423
|
+
declare type ChatPaneEngine = "flex" | "dock";
|
|
424
|
+
|
|
383
425
|
export declare const closePanelSchema: z.ZodObject<{
|
|
384
426
|
id: z.ZodString;
|
|
385
427
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -674,6 +716,7 @@ declare class FetchClient {
|
|
|
674
716
|
}>;
|
|
675
717
|
deleteFile(path: string): Promise<void>;
|
|
676
718
|
stat(path: string, signal?: AbortSignal): Promise<FileStat>;
|
|
719
|
+
getGitUrlMetadata(path: string, signal?: AbortSignal): Promise<GitUrlMetadata>;
|
|
677
720
|
search(query: string, limit?: number, signal?: AbortSignal): Promise<string[]>;
|
|
678
721
|
createDir(path: string): Promise<void>;
|
|
679
722
|
moveFile(from: string, to: string): Promise<void>;
|
|
@@ -920,6 +963,12 @@ export declare type FrontPluginHotReloadMode = "vite" | false;
|
|
|
920
963
|
|
|
921
964
|
export declare function getFileIcon(filename: string): LucideIcon;
|
|
922
965
|
|
|
966
|
+
declare interface GitUrlMetadata {
|
|
967
|
+
enabled: boolean;
|
|
968
|
+
reason?: string;
|
|
969
|
+
url?: string;
|
|
970
|
+
}
|
|
971
|
+
|
|
923
972
|
export declare interface GroupConfig {
|
|
924
973
|
id: string;
|
|
925
974
|
position: "left" | "center" | "right" | "bottom";
|
|
@@ -1337,12 +1386,18 @@ export declare interface ResponsiveDockviewShellProps {
|
|
|
1337
1386
|
|
|
1338
1387
|
export declare type SerializedLayout = Parameters<DockviewApi["fromJSON"]>[0];
|
|
1339
1388
|
|
|
1340
|
-
export declare function SessionBrowser({ sessions, activeId, onSwitch, onCreate, onDelete, onLoadMore, hasMore, loadingMore, onClose, className, }: SessionBrowserProps): JSX.Element;
|
|
1389
|
+
export declare function SessionBrowser({ sessions, activeId, openIds, pinnedIds, onTogglePin, onSwitch, onOpenAsTab, onCreate, onDelete, onLoadMore, hasMore, loadingMore, onClose, className, }: SessionBrowserProps): JSX.Element;
|
|
1341
1390
|
|
|
1342
1391
|
export declare interface SessionBrowserProps {
|
|
1343
1392
|
sessions: SessionItem[];
|
|
1344
1393
|
activeId?: string | null;
|
|
1394
|
+
/** Session ids currently open as chat panes, in pane order. */
|
|
1395
|
+
openIds?: string[];
|
|
1396
|
+
/** Session ids the user pinned; surfaced in a Pinned section on top. */
|
|
1397
|
+
pinnedIds?: string[];
|
|
1398
|
+
onTogglePin?: (id: string) => void;
|
|
1345
1399
|
onSwitch?: (id: string) => void;
|
|
1400
|
+
onOpenAsTab?: (id: string) => void;
|
|
1346
1401
|
onCreate?: () => void;
|
|
1347
1402
|
onDelete?: (id: string) => void;
|
|
1348
1403
|
onLoadMore?: () => void;
|
|
@@ -1955,6 +2010,15 @@ export declare interface WorkspaceEventMap extends WorkspaceHostEventMap, Worksp
|
|
|
1955
2010
|
/** Names that share a prefix can be filtered with `startsWith`. */
|
|
1956
2011
|
export declare type WorkspaceEventName = keyof WorkspaceEventMap;
|
|
1957
2012
|
|
|
2013
|
+
export declare const workspaceEvents: {
|
|
2014
|
+
readonly uiCommand: "workspace:ui.command";
|
|
2015
|
+
readonly editorSaveStart: "workspace:editor.save.start";
|
|
2016
|
+
readonly editorSaveEnd: "workspace:editor.save.end";
|
|
2017
|
+
readonly panelUpdate: "workspace:panel.update";
|
|
2018
|
+
readonly panelClose: "workspace:panel.close";
|
|
2019
|
+
readonly agentData: "workspace:agent.data";
|
|
2020
|
+
};
|
|
2021
|
+
|
|
1958
2022
|
export declare function WorkspaceFilesProvider({ apiBaseUrl, authHeaders, onAuthError, timeout, client: providedClient, children, }: DataProviderProps): JSX.Element;
|
|
1959
2023
|
|
|
1960
2024
|
declare interface WorkspaceHostEventMap {
|
|
@@ -2071,7 +2135,7 @@ export declare interface WorkspacePluginEventMap {
|
|
|
2071
2135
|
};
|
|
2072
2136
|
}
|
|
2073
2137
|
|
|
2074
|
-
export declare function WorkspaceProvider({ children, chatPanel, plugins, excludeDefaults, panels, commands, catalogs, capabilities, apiBaseUrl, authHeaders, apiTimeout, defaultTheme, onThemeChange, workspaceId, storageKey, persistenceEnabled, bridgeEndpoint, onAuthError, onOpenFile, debug, frontPluginHotReload, fullPageBasePath, }: WorkspaceProviderProps): JSX.Element;
|
|
2138
|
+
export declare function WorkspaceProvider({ children, chatPanel, plugins, excludeDefaults, panels, commands, catalogs, capabilities, apiBaseUrl, authHeaders, apiTimeout, defaultTheme, onThemeChange, workspaceId, workspaceLabel, storageKey, persistenceEnabled, manageDocumentTitle, bridgeEndpoint, onAuthError, onOpenFile, debug, frontPluginHotReload, fullPageBasePath, }: WorkspaceProviderProps): JSX.Element;
|
|
2075
2139
|
|
|
2076
2140
|
export declare interface WorkspaceProviderProps {
|
|
2077
2141
|
children: ReactNode;
|
|
@@ -2093,8 +2157,10 @@ export declare interface WorkspaceProviderProps {
|
|
|
2093
2157
|
defaultTheme?: "light" | "dark" | undefined;
|
|
2094
2158
|
onThemeChange?: (theme: "light" | "dark") => void;
|
|
2095
2159
|
workspaceId?: string;
|
|
2160
|
+
workspaceLabel?: string;
|
|
2096
2161
|
storageKey?: string;
|
|
2097
2162
|
persistenceEnabled?: boolean;
|
|
2163
|
+
manageDocumentTitle?: boolean;
|
|
2098
2164
|
bridgeEndpoint?: string | null;
|
|
2099
2165
|
onAuthError?: (statusCode: number) => void;
|
|
2100
2166
|
onOpenFile?: (path: string) => void;
|
package/dist/workspace.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
var V = Object.defineProperty;
|
|
2
2
|
var X = (e, t, a) => t in e ? V(e, t, { enumerable: !0, configurable: !0, writable: !0, value: a }) : e[t] = a;
|
|
3
3
|
var T = (e, t, a) => X(e, typeof t != "symbol" ? t + "" : t, a);
|
|
4
|
-
import { u as K, p as Q, a as Y, b as Z, D as ee } from "./WorkspaceProvider-
|
|
5
|
-
import { A as Je, C as Ge, c as Ve, d as Xe, e as Qe, F as Ye, f as Ze, M as et, g as tt, P as at, h as rt, i as nt, j as st, k as ot, R as it, S as lt, l as ct, m as dt, T as ut, U as pt, W as ft, n as mt, o as ht, q as gt, r as bt, s as yt, t as vt, v as xt, w as kt, x as wt, y as Pt, z as St, B as Ct, E as Nt, G as
|
|
4
|
+
import { u as K, p as Q, a as Y, b as Z, D as ee } from "./WorkspaceProvider-BhRPFy5R.js";
|
|
5
|
+
import { A as Je, C as Ge, c as Ve, d as Xe, e as Qe, F as Ye, f as Ze, M as et, g as tt, P as at, h as rt, i as nt, j as st, k as ot, R as it, S as lt, l as ct, m as dt, T as ut, U as pt, W as ft, n as mt, o as ht, q as gt, r as bt, s as yt, t as vt, v as xt, w as kt, x as wt, y as Pt, z as St, B as Ct, E as Nt, G as Et, H as Rt, I as Tt, J as It, K as Ot, L as Ft, N as Lt, O as Mt, Q as Bt, V as Wt, X as Dt, Y as Kt, Z as $t, _ as jt, $ as zt, a0 as Ht, a1 as Ut, a2 as _t, a3 as qt, a4 as At, a5 as Jt, a6 as Gt, a7 as Vt, a8 as Xt, a9 as Qt, aa as Yt, ab as Zt, ac as ea, ad as ta, ae as aa, af as ra, ag as na, ah as sa, ai as oa, aj as ia, ak as la, al as ca, am as da, an as ua, ao as pa, ap as fa, aq as ma, ar as ha, as as ga } from "./WorkspaceProvider-BhRPFy5R.js";
|
|
6
6
|
import { c as C } from "./utils-B6yFEsav.js";
|
|
7
|
-
import { C as
|
|
7
|
+
import { C as ya, T as va, W as xa, b as ka } from "./WorkspaceLoadingState-Bl-92Dly.js";
|
|
8
8
|
import { jsx as r, jsxs as g, Fragment as te } from "react/jsx-runtime";
|
|
9
9
|
import { Button as P, Sheet as ae, SheetContent as re, SheetHeader as ne, SheetTitle as se, SheetDescription as oe, EmptyState as ie, Kbd as I, ErrorState as le, IconButton as O } from "@hachej/boring-ui-kit";
|
|
10
|
-
import { Toaster as
|
|
10
|
+
import { Toaster as Pa, dismissToast as Sa, toast as Ca } from "@hachej/boring-ui-kit";
|
|
11
11
|
import { useSyncExternalStore as $, useState as N, useEffect as k, useRef as S, useCallback as b, useMemo as w, Suspense as ce, Component as de } from "react";
|
|
12
|
-
import { C as
|
|
13
|
-
import { FileTree as
|
|
14
|
-
import { MarkdownEditor as
|
|
12
|
+
import { C as Ea, c as Ra } from "./CodeEditor-DQqOn4xz.js";
|
|
13
|
+
import { FileTree as Ia } from "./FileTree-CkCxHBDu.js";
|
|
14
|
+
import { MarkdownEditor as Fa } from "./MarkdownEditor-CtPphEVP.js";
|
|
15
15
|
import { MenuIcon as ue, PanelLeftOpenIcon as pe, PanelLeftCloseIcon as fe, PinIcon as me, CheckIcon as he, CopyIcon as ge } from "lucide-react";
|
|
16
|
-
import { d as
|
|
16
|
+
import { d as Ma } from "./panel-DnvDNQac.js";
|
|
17
17
|
function We() {
|
|
18
18
|
const e = K();
|
|
19
19
|
return $(e.subscribe, e.getSnapshot);
|
|
@@ -217,14 +217,14 @@ function Ce({
|
|
|
217
217
|
() => f ? e : Se(e),
|
|
218
218
|
[f, e]
|
|
219
219
|
), z = w(() => {
|
|
220
|
-
const x = f ? "inline-sidebar" : "overlay-sidebar", M = v.groups.map((
|
|
221
|
-
let
|
|
220
|
+
const x = f ? "inline-sidebar" : "overlay-sidebar", M = v.groups.map((E) => {
|
|
221
|
+
let R = "";
|
|
222
222
|
try {
|
|
223
|
-
|
|
223
|
+
R = JSON.stringify(E.params ?? null);
|
|
224
224
|
} catch {
|
|
225
|
-
|
|
225
|
+
R = "unserializable";
|
|
226
226
|
}
|
|
227
|
-
return `${
|
|
227
|
+
return `${E.id}:${E.panel ?? ""}:${R}`;
|
|
228
228
|
}).join(",");
|
|
229
229
|
return `${v.version}:${x}:${M}`;
|
|
230
230
|
}, [v, f]), H = $(
|
|
@@ -501,7 +501,7 @@ function _e({
|
|
|
501
501
|
/* @__PURE__ */ g("div", { className: "flex-1 overflow-y-auto", role: "list", "aria-label": "Session list", children: [
|
|
502
502
|
e.length === 0 && /* @__PURE__ */ r("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "No sessions" }),
|
|
503
503
|
e.map((s) => /* @__PURE__ */ r(
|
|
504
|
-
|
|
504
|
+
Re,
|
|
505
505
|
{
|
|
506
506
|
session: s,
|
|
507
507
|
isActive: s.id === t,
|
|
@@ -521,7 +521,7 @@ function _e({
|
|
|
521
521
|
}
|
|
522
522
|
);
|
|
523
523
|
}
|
|
524
|
-
async function
|
|
524
|
+
async function Ee(e) {
|
|
525
525
|
var a, n;
|
|
526
526
|
if (typeof navigator < "u" && ((a = navigator.clipboard) != null && a.writeText))
|
|
527
527
|
try {
|
|
@@ -539,7 +539,7 @@ async function Re(e) {
|
|
|
539
539
|
document.body.removeChild(t);
|
|
540
540
|
}
|
|
541
541
|
}
|
|
542
|
-
function
|
|
542
|
+
function Re({
|
|
543
543
|
session: e,
|
|
544
544
|
isActive: t,
|
|
545
545
|
isFocused: a,
|
|
@@ -550,7 +550,7 @@ function Ee({
|
|
|
550
550
|
rowRef: d
|
|
551
551
|
}) {
|
|
552
552
|
const [l, c] = N(!1), p = b((m) => {
|
|
553
|
-
m.stopPropagation(),
|
|
553
|
+
m.stopPropagation(), Ee(e.id).then((s) => {
|
|
554
554
|
s && (c(!0), window.setTimeout(() => c(!1), 1200));
|
|
555
555
|
});
|
|
556
556
|
}, [e.id]);
|
|
@@ -629,19 +629,19 @@ function Ee({
|
|
|
629
629
|
export {
|
|
630
630
|
Je as ArtifactSurfacePane,
|
|
631
631
|
Ge as CatalogRegistry,
|
|
632
|
-
|
|
633
|
-
|
|
632
|
+
ya as ChatLayout,
|
|
633
|
+
Ea as CodeEditor,
|
|
634
634
|
Ve as CodeEditorPane,
|
|
635
635
|
Xe as CommandPalette,
|
|
636
636
|
Qe as CommandRegistry,
|
|
637
637
|
ee as DockviewShell,
|
|
638
638
|
He as EmptyPane,
|
|
639
|
-
|
|
639
|
+
Ia as FileTree,
|
|
640
640
|
Ye as FileTreePane,
|
|
641
641
|
Ze as FileTreeView,
|
|
642
642
|
ze as IdeLayout,
|
|
643
643
|
et as MAX_PANELS,
|
|
644
|
-
|
|
644
|
+
Fa as MarkdownEditor,
|
|
645
645
|
tt as MarkdownEditorPane,
|
|
646
646
|
at as PanelChrome,
|
|
647
647
|
Ue as PanelErrorBoundary,
|
|
@@ -656,19 +656,19 @@ export {
|
|
|
656
656
|
ct as SurfaceResolverRegistry,
|
|
657
657
|
dt as SurfaceShell,
|
|
658
658
|
ut as ThemeProvider,
|
|
659
|
-
|
|
660
|
-
|
|
659
|
+
Pa as Toaster,
|
|
660
|
+
va as TopBar,
|
|
661
661
|
pt as UI_COMMAND_EVENT,
|
|
662
662
|
ft as WORKSPACE_OPEN_PATH_SURFACE_KIND,
|
|
663
663
|
mt as WorkbenchLeftPane,
|
|
664
664
|
ht as WorkspaceFilesProvider,
|
|
665
665
|
De as WorkspaceLink,
|
|
666
|
-
|
|
666
|
+
xa as WorkspaceLoadingState,
|
|
667
667
|
gt as WorkspaceProvider,
|
|
668
668
|
bt as agentMeta,
|
|
669
669
|
yt as bindStore,
|
|
670
670
|
vt as bootstrap,
|
|
671
|
-
|
|
671
|
+
ka as buildChatLayout,
|
|
672
672
|
xt as buildFullPagePanelHref,
|
|
673
673
|
Ne as buildIdeLayout,
|
|
674
674
|
kt as closePanelSchema,
|
|
@@ -677,12 +677,12 @@ export {
|
|
|
677
677
|
Pt as createBridgeClient,
|
|
678
678
|
Ra as createShadcnTheme,
|
|
679
679
|
St as createWorkspaceStore,
|
|
680
|
-
|
|
681
|
-
|
|
680
|
+
Ma as definePanel,
|
|
681
|
+
Sa as dismissToast,
|
|
682
682
|
Ct as emitAgentData,
|
|
683
683
|
Nt as emitFilesystemAgentFileChange,
|
|
684
|
-
|
|
685
|
-
|
|
684
|
+
Et as events,
|
|
685
|
+
Rt as expandToFileSchema,
|
|
686
686
|
Tt as filesystemEvents,
|
|
687
687
|
It as filesystemPlugin,
|
|
688
688
|
Ot as formatShortcut,
|
|
@@ -694,7 +694,7 @@ export {
|
|
|
694
694
|
Dt as openPanelSchema,
|
|
695
695
|
Q as postUiCommand,
|
|
696
696
|
Ke as readFileRecords,
|
|
697
|
-
|
|
697
|
+
Ca as toast,
|
|
698
698
|
Kt as useActiveFile,
|
|
699
699
|
$t as useActivePanel,
|
|
700
700
|
We as useActivePanels,
|
|
@@ -735,6 +735,7 @@ export {
|
|
|
735
735
|
fa as useWorkspaceContextOptional,
|
|
736
736
|
ma as useWorkspaceRequestId,
|
|
737
737
|
ha as userMeta,
|
|
738
|
+
ga as workspaceEvents,
|
|
738
739
|
j as workspaceLinkCommand,
|
|
739
740
|
be as workspaceLinkHref
|
|
740
741
|
};
|
package/docs/PLUGIN_SYSTEM.md
CHANGED
|
@@ -243,14 +243,13 @@ plugins. That template is an app/internal publishable package example.
|
|
|
243
243
|
|
|
244
244
|
### 4.7 `pluginHotReload`
|
|
245
245
|
|
|
246
|
-
`createWorkspaceAgentServer({ pluginHotReload })` controls
|
|
247
|
-
|
|
246
|
+
`createWorkspaceAgentServer({ pluginHotReload })` controls dynamic Pi/package
|
|
247
|
+
refresh through the canonical `/api/v1/agent/reload` path.
|
|
248
248
|
|
|
249
|
-
- `true` (default):
|
|
250
|
-
`/api/v1/agent
|
|
251
|
-
resources on `/api/v1/agent/reload`.
|
|
249
|
+
- `true` (default): keeps `/api/v1/agent-plugins/events` active and refreshes
|
|
250
|
+
discovered plugin Pi resources on `/api/v1/agent/reload`.
|
|
252
251
|
- `false`: static discovery/listing remains available, but package resources
|
|
253
|
-
are snapped once at boot and
|
|
252
|
+
are snapped once at boot and canonical reload skips plugin hot-refresh work.
|
|
254
253
|
|
|
255
254
|
---
|
|
256
255
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hachej/boring-workspace",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.35",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Workspace UI, plugin, and bridge package for composing chat, files, catalogs, editors, and app-specific panes.",
|
|
@@ -49,6 +49,11 @@
|
|
|
49
49
|
"import": "./dist/server.js",
|
|
50
50
|
"default": "./dist/server.js"
|
|
51
51
|
},
|
|
52
|
+
"./runtime-server": {
|
|
53
|
+
"types": "./dist/runtime-server.d.ts",
|
|
54
|
+
"import": "./dist/runtime-server.js",
|
|
55
|
+
"default": "./dist/runtime-server.js"
|
|
56
|
+
},
|
|
52
57
|
"./events": {
|
|
53
58
|
"types": "./dist/events.d.ts",
|
|
54
59
|
"import": "./dist/events.js"
|
|
@@ -130,8 +135,9 @@
|
|
|
130
135
|
"tailwind-merge": "^2.0.0",
|
|
131
136
|
"zod": "^3.23.0",
|
|
132
137
|
"zustand": "^5.0.0",
|
|
133
|
-
"@hachej/boring-agent": "0.1.
|
|
134
|
-
"@hachej/boring-ui-
|
|
138
|
+
"@hachej/boring-agent": "0.1.35",
|
|
139
|
+
"@hachej/boring-ui-plugin-cli": "0.1.35",
|
|
140
|
+
"@hachej/boring-ui-kit": "0.1.35"
|
|
135
141
|
},
|
|
136
142
|
"devDependencies": {
|
|
137
143
|
"@tailwindcss/postcss": "^4.0.0",
|
|
@@ -154,7 +160,7 @@
|
|
|
154
160
|
"typescript": "^5.4.0",
|
|
155
161
|
"vite": "^6.0.0",
|
|
156
162
|
"vite-plugin-dts": "^4.5.4",
|
|
157
|
-
"vitest": "^2.
|
|
163
|
+
"vitest": "^3.2.6",
|
|
158
164
|
"@boring-fixtures/default-plugin": "0.0.0"
|
|
159
165
|
},
|
|
160
166
|
"scripts": {
|