@elench/shell 0.1.8 → 0.1.10
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/README.md +9 -9
- package/dist/components/shell/primitives/sidebar-new-button.js +1 -1
- package/dist/components/shell/primitives/sidebar-new-button.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/shell/api.d.ts +17 -0
- package/dist/lib/shell/api.d.ts.map +1 -0
- package/dist/lib/shell/api.js +93 -0
- package/dist/lib/shell/api.js.map +1 -0
- package/dist/styles.css +406 -1
- package/dist/workbench.d.ts +194 -0
- package/dist/workbench.d.ts.map +1 -0
- package/dist/workbench.js +378 -0
- package/dist/workbench.js.map +1 -0
- package/package.json +4 -2
- package/dist/public-api.d.ts +0 -114
- package/dist/public-api.d.ts.map +0 -1
- package/dist/public-api.js +0 -151
- package/dist/public-api.js.map +0 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { ShellTab, ShellTabTarget, ShellTabTone } from "./lib/shell/types.js";
|
|
3
|
+
import { type ShellApiRequestInit } from "./lib/shell/api.js";
|
|
4
|
+
type Value<T> = T | ((ctx: ShellViewContext) => T);
|
|
5
|
+
export type ShellTransport = <T>(path: string, init?: ShellApiRequestInit) => Promise<T>;
|
|
6
|
+
export type ShellResourceDefinition = {
|
|
7
|
+
path: Value<string>;
|
|
8
|
+
init?: Value<ShellApiRequestInit | undefined>;
|
|
9
|
+
enabled?: Value<boolean>;
|
|
10
|
+
staleTime?: number;
|
|
11
|
+
};
|
|
12
|
+
export type ShellCommandDefinition<TInput = unknown, TOutput = unknown> = {
|
|
13
|
+
path: Value<string>;
|
|
14
|
+
init?: Value<ShellApiRequestInit | undefined>;
|
|
15
|
+
body?: (input: TInput, ctx: ShellViewContext) => unknown;
|
|
16
|
+
invalidates?: string[];
|
|
17
|
+
onSuccess?: (output: TOutput, input: TInput, helpers: ShellCommandHelpers) => void;
|
|
18
|
+
};
|
|
19
|
+
export type ShellCommandHelpers = {
|
|
20
|
+
closeTab: (id: string) => void;
|
|
21
|
+
invalidate: (ids: string[]) => void;
|
|
22
|
+
openTab: (tab: ShellWorkbenchTab, options?: {
|
|
23
|
+
preview?: boolean;
|
|
24
|
+
}) => void;
|
|
25
|
+
pinTab: (id: string) => void;
|
|
26
|
+
};
|
|
27
|
+
export type ShellResourceState<T = unknown> = {
|
|
28
|
+
data: T | undefined;
|
|
29
|
+
error: Error | null;
|
|
30
|
+
isError: boolean;
|
|
31
|
+
isLoading: boolean;
|
|
32
|
+
isPending: boolean;
|
|
33
|
+
refetch: () => void;
|
|
34
|
+
};
|
|
35
|
+
export type ShellCommandState<TInput = unknown, TOutput = unknown> = {
|
|
36
|
+
data: TOutput | undefined;
|
|
37
|
+
error: Error | null;
|
|
38
|
+
isError: boolean;
|
|
39
|
+
isPending: boolean;
|
|
40
|
+
run: (input: TInput) => void;
|
|
41
|
+
runAsync: (input: TInput) => Promise<TOutput>;
|
|
42
|
+
};
|
|
43
|
+
export type ShellViewContext = {
|
|
44
|
+
app: ShellWorkbenchAppDefinition;
|
|
45
|
+
commands: Record<string, ShellCommandState>;
|
|
46
|
+
resources: Record<string, ShellResourceState>;
|
|
47
|
+
section: ShellWorkbenchSectionDefinition;
|
|
48
|
+
tab: ShellWorkbenchTab;
|
|
49
|
+
};
|
|
50
|
+
export type ShellWorkbenchTab<TTarget extends ShellTabTarget = ShellTabTarget> = ShellTab & {
|
|
51
|
+
sectionId: string;
|
|
52
|
+
title: string;
|
|
53
|
+
target: TTarget;
|
|
54
|
+
};
|
|
55
|
+
export type ShellTabInput<TTarget extends ShellTabTarget = ShellTabTarget> = {
|
|
56
|
+
id: string;
|
|
57
|
+
title: string;
|
|
58
|
+
description?: string;
|
|
59
|
+
target: TTarget;
|
|
60
|
+
tone?: ShellTabTone;
|
|
61
|
+
};
|
|
62
|
+
export type ShellSidebarItemDefinition = {
|
|
63
|
+
tab: ShellWorkbenchTab;
|
|
64
|
+
icon?: ReactNode;
|
|
65
|
+
openMode?: "preview" | "pinned";
|
|
66
|
+
};
|
|
67
|
+
export type ShellSidebarSectionDefinition = {
|
|
68
|
+
title: string;
|
|
69
|
+
items: ShellSidebarItemDefinition[];
|
|
70
|
+
};
|
|
71
|
+
export type ShellSidebarNewDefinition = {
|
|
72
|
+
noun: string;
|
|
73
|
+
tab: ShellWorkbenchTab;
|
|
74
|
+
};
|
|
75
|
+
export type ShellWorkbenchSectionDefinition = {
|
|
76
|
+
id: string;
|
|
77
|
+
label: string;
|
|
78
|
+
icon: ReactNode;
|
|
79
|
+
sidebar?: {
|
|
80
|
+
newItem?: ShellSidebarNewDefinition;
|
|
81
|
+
sections?: ShellSidebarSectionDefinition[];
|
|
82
|
+
};
|
|
83
|
+
status?: Value<ReactNode>;
|
|
84
|
+
tabs: ShellWorkbenchTab[];
|
|
85
|
+
view: Value<ShellViewNode>;
|
|
86
|
+
inspector?: Value<ShellInspectorField[]>;
|
|
87
|
+
};
|
|
88
|
+
export type ShellWorkbenchAppDefinition = {
|
|
89
|
+
id: string;
|
|
90
|
+
title: string;
|
|
91
|
+
apiBase?: string;
|
|
92
|
+
resources?: Record<string, ShellResourceDefinition>;
|
|
93
|
+
commands?: Record<string, ShellCommandDefinition>;
|
|
94
|
+
sections: ShellWorkbenchSectionDefinition[];
|
|
95
|
+
storageNamespace?: string;
|
|
96
|
+
};
|
|
97
|
+
export type ShellMetricDefinition = {
|
|
98
|
+
title: string;
|
|
99
|
+
value: ReactNode;
|
|
100
|
+
description?: ReactNode;
|
|
101
|
+
};
|
|
102
|
+
export type ShellRowStatus = "healthy" | "degraded" | "failed" | "unknown";
|
|
103
|
+
export type ShellRowDefinition = {
|
|
104
|
+
title: ReactNode;
|
|
105
|
+
detail?: ReactNode;
|
|
106
|
+
meta?: ReactNode;
|
|
107
|
+
status?: ShellRowStatus;
|
|
108
|
+
};
|
|
109
|
+
export type ShellInspectorField = {
|
|
110
|
+
label: string;
|
|
111
|
+
value: ReactNode;
|
|
112
|
+
};
|
|
113
|
+
export type ShellViewNode = {
|
|
114
|
+
type: "page";
|
|
115
|
+
title: ReactNode;
|
|
116
|
+
description?: ReactNode;
|
|
117
|
+
eyebrow?: ReactNode;
|
|
118
|
+
actions?: ShellViewNode[];
|
|
119
|
+
children?: ShellViewNode[];
|
|
120
|
+
} | {
|
|
121
|
+
type: "metrics";
|
|
122
|
+
items: ShellMetricDefinition[];
|
|
123
|
+
} | {
|
|
124
|
+
type: "columns";
|
|
125
|
+
children: ShellViewNode[];
|
|
126
|
+
} | {
|
|
127
|
+
type: "stack";
|
|
128
|
+
children: ShellViewNode[];
|
|
129
|
+
} | {
|
|
130
|
+
type: "section";
|
|
131
|
+
title: string;
|
|
132
|
+
children: ShellViewNode[];
|
|
133
|
+
} | {
|
|
134
|
+
type: "rows";
|
|
135
|
+
rows: ShellRowDefinition[];
|
|
136
|
+
empty?: {
|
|
137
|
+
title: string;
|
|
138
|
+
description: string;
|
|
139
|
+
};
|
|
140
|
+
} | {
|
|
141
|
+
type: "code";
|
|
142
|
+
content: string;
|
|
143
|
+
} | {
|
|
144
|
+
type: "empty";
|
|
145
|
+
title: string;
|
|
146
|
+
description: string;
|
|
147
|
+
} | {
|
|
148
|
+
type: "loading";
|
|
149
|
+
label?: string;
|
|
150
|
+
} | {
|
|
151
|
+
type: "error";
|
|
152
|
+
title: string;
|
|
153
|
+
description: string;
|
|
154
|
+
retry?: () => void;
|
|
155
|
+
} | {
|
|
156
|
+
type: "button";
|
|
157
|
+
label: string;
|
|
158
|
+
icon?: ReactNode;
|
|
159
|
+
command: string;
|
|
160
|
+
input?: unknown;
|
|
161
|
+
} | {
|
|
162
|
+
type: "refresh";
|
|
163
|
+
label?: string;
|
|
164
|
+
icon?: ReactNode;
|
|
165
|
+
resources: string[];
|
|
166
|
+
} | {
|
|
167
|
+
type: "open-resource-form";
|
|
168
|
+
command: string;
|
|
169
|
+
fieldLabel: string;
|
|
170
|
+
buttonLabel: string;
|
|
171
|
+
defaultValue?: string;
|
|
172
|
+
} | {
|
|
173
|
+
type: "conversation";
|
|
174
|
+
command: string;
|
|
175
|
+
defaultMessage?: string;
|
|
176
|
+
emptyTitle: string;
|
|
177
|
+
emptyDescription: string;
|
|
178
|
+
side?: ShellViewNode[];
|
|
179
|
+
output?: (result: unknown) => string;
|
|
180
|
+
};
|
|
181
|
+
export declare function defineWorkbenchTab<TTarget extends ShellTabTarget>(sectionId: string, tab: ShellTabInput<TTarget>): ShellWorkbenchTab<TTarget>;
|
|
182
|
+
export declare function defineWorkbenchApp(app: ShellWorkbenchAppDefinition): ShellWorkbenchAppDefinition;
|
|
183
|
+
export declare function ShellWorkbench({ app, initialSectionId, transport, }: {
|
|
184
|
+
app: ShellWorkbenchAppDefinition;
|
|
185
|
+
initialSectionId?: string;
|
|
186
|
+
transport?: ShellTransport;
|
|
187
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
188
|
+
export declare function ShellErrorBoundaryView({ error, onRetry, title, }: {
|
|
189
|
+
error: Error;
|
|
190
|
+
onRetry: () => void;
|
|
191
|
+
title?: string;
|
|
192
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
193
|
+
export {};
|
|
194
|
+
//# sourceMappingURL=workbench.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbench.d.ts","sourceRoot":"","sources":["../src/workbench.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, startTransition, useContext, useEffect, useMemo, useState, } from "react";
|
|
4
|
+
import { QueryCache, QueryClient, QueryClientProvider, useQueries, useQueryClient, } from "@tanstack/react-query";
|
|
5
|
+
import { RefreshCcwIcon } from "lucide-react";
|
|
6
|
+
import { AppShell } from "./components/shell/app-shell.js";
|
|
7
|
+
import { SidebarActionRow } from "./components/shell/primitives/sidebar-action-row.js";
|
|
8
|
+
import { SidebarFrame } from "./components/shell/primitives/sidebar-frame.js";
|
|
9
|
+
import { SidebarNewButton } from "./components/shell/primitives/sidebar-new-button.js";
|
|
10
|
+
import { SidebarSection } from "./components/shell/primitives/sidebar-section.js";
|
|
11
|
+
import { WorkspaceFormHeader, WorkspacePageFrame, } from "./components/shell/primitives/workspace-page.js";
|
|
12
|
+
import { InspectorField, InspectorValue, } from "./components/shell/primitives/inspector-panel.js";
|
|
13
|
+
import { ThemeProvider } from "./hooks/use-theme.js";
|
|
14
|
+
import { useShellRegistry } from "./hooks/shell/shell-registry-provider.js";
|
|
15
|
+
import { useShellStore } from "./hooks/shell/use-shell-store.js";
|
|
16
|
+
import { createShellApiClient, } from "./lib/shell/api.js";
|
|
17
|
+
import { logger } from "./lib/infra/logger.js";
|
|
18
|
+
import { Button } from "./components/ui/button.js";
|
|
19
|
+
import { Input } from "./components/ui/input.js";
|
|
20
|
+
import { Textarea } from "./components/ui/textarea.js";
|
|
21
|
+
import { TooltipProvider } from "./components/ui/tooltip.js";
|
|
22
|
+
import { EmptyState, ErrorState, LoadingState, } from "./components/system/async-state.js";
|
|
23
|
+
import { StatusDot } from "./components/system/status.js";
|
|
24
|
+
import { cn } from "./lib/utils.js";
|
|
25
|
+
const queryLog = logger.named("query");
|
|
26
|
+
const WorkbenchContext = createContext(null);
|
|
27
|
+
function read(value, ctx) {
|
|
28
|
+
return typeof value === "function"
|
|
29
|
+
? value(ctx)
|
|
30
|
+
: value;
|
|
31
|
+
}
|
|
32
|
+
export function defineWorkbenchTab(sectionId, tab) {
|
|
33
|
+
return {
|
|
34
|
+
...tab,
|
|
35
|
+
sectionId,
|
|
36
|
+
mode: sectionId,
|
|
37
|
+
label: tab.title,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function defineWorkbenchApp(app) {
|
|
41
|
+
if (app.sections.length === 0) {
|
|
42
|
+
throw new Error("Shell apps must define at least one section.");
|
|
43
|
+
}
|
|
44
|
+
const sectionIds = app.sections.map((section) => section.id);
|
|
45
|
+
if (new Set(sectionIds).size !== sectionIds.length) {
|
|
46
|
+
throw new Error("Shell sections must have unique ids.");
|
|
47
|
+
}
|
|
48
|
+
return app;
|
|
49
|
+
}
|
|
50
|
+
function createQueryClient() {
|
|
51
|
+
return new QueryClient({
|
|
52
|
+
queryCache: new QueryCache({
|
|
53
|
+
onError: (error, query) => {
|
|
54
|
+
queryLog
|
|
55
|
+
.event("query.error")
|
|
56
|
+
.setError(error)
|
|
57
|
+
.set("queryKey", JSON.stringify(query.queryKey))
|
|
58
|
+
.send();
|
|
59
|
+
},
|
|
60
|
+
}),
|
|
61
|
+
defaultOptions: {
|
|
62
|
+
queries: {
|
|
63
|
+
staleTime: 30000,
|
|
64
|
+
retry: 2,
|
|
65
|
+
refetchOnWindowFocus: true,
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export function ShellWorkbench({ app, initialSectionId, transport, }) {
|
|
71
|
+
const [queryClient] = useState(createQueryClient);
|
|
72
|
+
const runtime = useMemo(() => ({ app, transport }), [app, transport]);
|
|
73
|
+
return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(ThemeProvider, { children: _jsx(TooltipProvider, { delayDuration: 150, children: _jsx(WorkbenchContext.Provider, { value: runtime, children: _jsx(AppShell, { appTitle: app.title, initialActiveMode: initialSectionId ?? app.sections[0]?.id, workspaces: app.sections.map((section) => toWorkspace(app, section)), children: _jsx(CompactWorkspace, {}) }) }) }) }) }));
|
|
74
|
+
}
|
|
75
|
+
export function ShellErrorBoundaryView({ error, onRetry, title = "Something went wrong", }) {
|
|
76
|
+
return (_jsx(ErrorState, { title: title, description: error.message, action: _jsx(Button, { size: "sm", onClick: onRetry, children: "Try again" }), className: "min-h-[60vh]" }));
|
|
77
|
+
}
|
|
78
|
+
function useWorkbenchRuntime() {
|
|
79
|
+
const runtime = useContext(WorkbenchContext);
|
|
80
|
+
if (!runtime)
|
|
81
|
+
throw new Error("Shell workbench context is not available.");
|
|
82
|
+
return runtime;
|
|
83
|
+
}
|
|
84
|
+
function useApiFetch(app, transport) {
|
|
85
|
+
return useMemo(() => transport ?? createShellApiClient({ baseUrl: app.apiBase }), [app.apiBase, transport]);
|
|
86
|
+
}
|
|
87
|
+
function useWorkbenchContext(section, tab) {
|
|
88
|
+
const { app, transport } = useWorkbenchRuntime();
|
|
89
|
+
const apiFetch = useApiFetch(app, transport);
|
|
90
|
+
const queryClient = useQueryClient();
|
|
91
|
+
const store = useShellStore();
|
|
92
|
+
const [commandSnapshots, setCommandSnapshots] = useState({});
|
|
93
|
+
const resourceEntries = Object.entries(app.resources ?? {});
|
|
94
|
+
const resourceSpecs = resourceEntries.map(([id, resource]) => {
|
|
95
|
+
const emptyCtx = {
|
|
96
|
+
app,
|
|
97
|
+
commands: {},
|
|
98
|
+
resources: {},
|
|
99
|
+
section,
|
|
100
|
+
tab,
|
|
101
|
+
};
|
|
102
|
+
const path = read(resource.path, emptyCtx);
|
|
103
|
+
const enabled = resource.enabled ? read(resource.enabled, emptyCtx) : true;
|
|
104
|
+
const init = resource.init ? read(resource.init, emptyCtx) : undefined;
|
|
105
|
+
return { enabled, id, init, path, resource };
|
|
106
|
+
});
|
|
107
|
+
const resourceQueries = useQueries({
|
|
108
|
+
queries: resourceSpecs.map(({ enabled, id, init, path, resource }) => ({
|
|
109
|
+
queryKey: [app.id, "resource", id, path, init?.method ?? "GET"],
|
|
110
|
+
queryFn: () => apiFetch(path, init),
|
|
111
|
+
enabled,
|
|
112
|
+
staleTime: resource.staleTime,
|
|
113
|
+
})),
|
|
114
|
+
});
|
|
115
|
+
const resources = Object.fromEntries(resourceSpecs.map(({ id }, index) => {
|
|
116
|
+
const query = resourceQueries[index];
|
|
117
|
+
return [
|
|
118
|
+
id,
|
|
119
|
+
{
|
|
120
|
+
data: query.data,
|
|
121
|
+
error: query.error,
|
|
122
|
+
isError: query.isError,
|
|
123
|
+
isLoading: query.isLoading,
|
|
124
|
+
isPending: query.isPending,
|
|
125
|
+
refetch: () => void query.refetch(),
|
|
126
|
+
},
|
|
127
|
+
];
|
|
128
|
+
}));
|
|
129
|
+
const helpers = {
|
|
130
|
+
closeTab: (id) => store.closeTab(id, { source: "app_shell" }),
|
|
131
|
+
invalidate: (ids) => {
|
|
132
|
+
for (const id of ids) {
|
|
133
|
+
void queryClient.invalidateQueries({
|
|
134
|
+
predicate: (query) => query.queryKey[0] === app.id &&
|
|
135
|
+
query.queryKey[1] === "resource" &&
|
|
136
|
+
(ids.length === 0 || query.queryKey[2] === id),
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
openTab: (nextTab, options) => {
|
|
141
|
+
store.setActiveMode(nextTab.sectionId, { source: "app_shell" });
|
|
142
|
+
store.openTab(toInternalTab(nextTab), {
|
|
143
|
+
source: "app_shell",
|
|
144
|
+
preview: options?.preview,
|
|
145
|
+
});
|
|
146
|
+
},
|
|
147
|
+
pinTab: (id) => store.pinTab(id, { source: "app_shell" }),
|
|
148
|
+
};
|
|
149
|
+
const commands = Object.fromEntries(Object.entries(app.commands ?? {}).map(([id, command]) => {
|
|
150
|
+
const snapshot = commandSnapshots[id] ?? {
|
|
151
|
+
data: undefined,
|
|
152
|
+
error: null,
|
|
153
|
+
isError: false,
|
|
154
|
+
isPending: false,
|
|
155
|
+
};
|
|
156
|
+
const runAsync = async (input) => {
|
|
157
|
+
setCommandSnapshots((current) => ({
|
|
158
|
+
...current,
|
|
159
|
+
[id]: {
|
|
160
|
+
data: current[id]?.data,
|
|
161
|
+
error: null,
|
|
162
|
+
isError: false,
|
|
163
|
+
isPending: true,
|
|
164
|
+
},
|
|
165
|
+
}));
|
|
166
|
+
try {
|
|
167
|
+
const ctx = {
|
|
168
|
+
app,
|
|
169
|
+
commands: {},
|
|
170
|
+
resources,
|
|
171
|
+
section,
|
|
172
|
+
tab,
|
|
173
|
+
};
|
|
174
|
+
const path = read(command.path, ctx);
|
|
175
|
+
const init = command.init ? read(command.init, ctx) : undefined;
|
|
176
|
+
const body = command.body ? command.body(input, ctx) : input;
|
|
177
|
+
const output = await apiFetch(path, {
|
|
178
|
+
method: "POST",
|
|
179
|
+
...init,
|
|
180
|
+
...(body == null ? {} : { json: body }),
|
|
181
|
+
});
|
|
182
|
+
setCommandSnapshots((current) => ({
|
|
183
|
+
...current,
|
|
184
|
+
[id]: {
|
|
185
|
+
data: output,
|
|
186
|
+
error: null,
|
|
187
|
+
isError: false,
|
|
188
|
+
isPending: false,
|
|
189
|
+
},
|
|
190
|
+
}));
|
|
191
|
+
helpers.invalidate(command.invalidates ?? Object.keys(app.resources ?? {}));
|
|
192
|
+
command.onSuccess?.(output, input, helpers);
|
|
193
|
+
return output;
|
|
194
|
+
}
|
|
195
|
+
catch (error) {
|
|
196
|
+
const nextError = error instanceof Error ? error : new Error(String(error));
|
|
197
|
+
setCommandSnapshots((current) => ({
|
|
198
|
+
...current,
|
|
199
|
+
[id]: {
|
|
200
|
+
data: current[id]?.data,
|
|
201
|
+
error: nextError,
|
|
202
|
+
isError: true,
|
|
203
|
+
isPending: false,
|
|
204
|
+
},
|
|
205
|
+
}));
|
|
206
|
+
throw nextError;
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
return [
|
|
210
|
+
id,
|
|
211
|
+
{
|
|
212
|
+
data: snapshot.data,
|
|
213
|
+
error: snapshot.error,
|
|
214
|
+
isError: snapshot.isError,
|
|
215
|
+
isPending: snapshot.isPending,
|
|
216
|
+
run: (input) => {
|
|
217
|
+
void runAsync(input);
|
|
218
|
+
},
|
|
219
|
+
runAsync,
|
|
220
|
+
},
|
|
221
|
+
];
|
|
222
|
+
}));
|
|
223
|
+
return { app, commands, resources, section, tab };
|
|
224
|
+
}
|
|
225
|
+
function toInternalTab(tab) {
|
|
226
|
+
return {
|
|
227
|
+
...tab,
|
|
228
|
+
mode: tab.sectionId,
|
|
229
|
+
label: tab.title,
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function toWorkspace(app, section) {
|
|
233
|
+
const Sidebar = () => _jsx(WorkbenchSidebar, { section: section });
|
|
234
|
+
const Workspace = ({ tab }) => {
|
|
235
|
+
if (!tab)
|
|
236
|
+
return _jsx("div", { "aria-label": "No open tab", className: "h-full" });
|
|
237
|
+
return (_jsx(WorkbenchTab, { section: section, tab: ensureWorkbenchTab(section, tab) }));
|
|
238
|
+
};
|
|
239
|
+
const Inspector = section.inspector
|
|
240
|
+
? ({ tab }) => {
|
|
241
|
+
if (!tab) {
|
|
242
|
+
return _jsx(EmptyState, { title: "No tab selected", description: "" });
|
|
243
|
+
}
|
|
244
|
+
return (_jsx(WorkbenchInspector, { section: section, tab: ensureWorkbenchTab(section, tab) }));
|
|
245
|
+
}
|
|
246
|
+
: undefined;
|
|
247
|
+
return {
|
|
248
|
+
mode: section.id,
|
|
249
|
+
label: section.label,
|
|
250
|
+
icon: section.icon,
|
|
251
|
+
Sidebar,
|
|
252
|
+
Workspace,
|
|
253
|
+
Inspector,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
function ensureWorkbenchTab(section, tab) {
|
|
257
|
+
const known = section.tabs.find((candidate) => candidate.id === tab.id);
|
|
258
|
+
return {
|
|
259
|
+
...tab,
|
|
260
|
+
sectionId: tab.sectionId ?? tab.mode,
|
|
261
|
+
title: tab.title ?? tab.label,
|
|
262
|
+
target: tab.target,
|
|
263
|
+
...(known ?? {}),
|
|
264
|
+
};
|
|
265
|
+
}
|
|
266
|
+
function WorkbenchSidebar({ section, }) {
|
|
267
|
+
const store = useShellStore();
|
|
268
|
+
const activeTabId = useShellStore((state) => state.activeTabId);
|
|
269
|
+
const sidebar = section.sidebar;
|
|
270
|
+
const open = (tab, preview) => {
|
|
271
|
+
store.setActiveMode(section.id, { source: "sidebar" });
|
|
272
|
+
store.openTab(toInternalTab(tab), { source: "sidebar", preview });
|
|
273
|
+
};
|
|
274
|
+
return (_jsxs(SidebarFrame, { title: section.label, children: [sidebar?.newItem ? (_jsx(SidebarNewButton, { noun: sidebar.newItem.noun, onClick: () => open(sidebar.newItem.tab, true) })) : null, sidebar?.sections?.map((group) => (_jsx(SidebarSection, { title: group.title, children: group.items.map((item) => (_jsx(SidebarActionRow, { active: activeTabId === item.tab.id, "aria-selected": activeTabId === item.tab.id, description: item.tab.description, icon: item.icon, onClick: () => open(item.tab, (item.openMode ?? "preview") === "preview"), onDoubleClick: () => store.pinTab(item.tab.id, { source: "sidebar" }), role: "tab", title: item.tab.title }, item.tab.id))) }, group.title)))] }));
|
|
275
|
+
}
|
|
276
|
+
function WorkbenchTab({ section, tab, }) {
|
|
277
|
+
const ctx = useWorkbenchContext(section, tab);
|
|
278
|
+
return _jsx(_Fragment, { children: renderNode(read(section.view, ctx), ctx) });
|
|
279
|
+
}
|
|
280
|
+
function WorkbenchInspector({ section, tab, }) {
|
|
281
|
+
const ctx = useWorkbenchContext(section, tab);
|
|
282
|
+
const fields = section.inspector ? read(section.inspector, ctx) : [];
|
|
283
|
+
return (_jsx("div", { className: "space-y-2", children: fields.map((field) => (_jsx(InspectorField, { label: field.label, value: _jsx(InspectorValue, { children: field.value }) }, field.label))) }));
|
|
284
|
+
}
|
|
285
|
+
function renderNode(node, ctx) {
|
|
286
|
+
switch (node.type) {
|
|
287
|
+
case "page":
|
|
288
|
+
return (_jsxs(WorkspacePageFrame, { width: "full", children: [_jsx(WorkspaceFormHeader, { actions: node.actions?.map((action, index) => (_jsx("span", { children: renderNode(action, ctx) }, index))), description: node.description, eyebrow: node.eyebrow, title: String(node.title) }), _jsx("div", { className: "space-y-6", children: node.children?.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) })] }));
|
|
289
|
+
case "metrics":
|
|
290
|
+
return (_jsx("div", { className: "grid gap-3 md:grid-cols-2 xl:grid-cols-4", children: node.items.map((item) => (_jsx(Metric, { ...item }, item.title))) }));
|
|
291
|
+
case "columns":
|
|
292
|
+
return (_jsx("div", { className: "grid gap-5 xl:grid-cols-[minmax(0,1fr)_minmax(20rem,0.7fr)]", children: node.children.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) }));
|
|
293
|
+
case "stack":
|
|
294
|
+
return (_jsx("div", { className: "space-y-5", children: node.children.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) }));
|
|
295
|
+
case "section":
|
|
296
|
+
return (_jsxs("section", { children: [_jsx("h2", { className: "mb-3 text-[13px] font-semibold text-fg", children: node.title }), _jsx("div", { className: "space-y-3", children: node.children.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) })] }));
|
|
297
|
+
case "rows":
|
|
298
|
+
return node.rows.length > 0 ? (_jsx("div", { className: "space-y-2", children: node.rows.map((row, index) => (_jsx(DataRow, { ...row }, index))) })) : node.empty ? (_jsx(EmptyState, { title: node.empty.title, description: node.empty.description, className: "min-h-[14rem]" })) : null;
|
|
299
|
+
case "code":
|
|
300
|
+
return (_jsx("pre", { className: "max-h-[32rem] min-h-[22rem] overflow-auto rounded-[10px] border border-border bg-bg-card p-4 font-mono text-[12px] leading-5 text-fg", children: node.content }));
|
|
301
|
+
case "empty":
|
|
302
|
+
return _jsx(EmptyState, { title: node.title, description: node.description });
|
|
303
|
+
case "loading":
|
|
304
|
+
return _jsx(LoadingState, { label: node.label });
|
|
305
|
+
case "error":
|
|
306
|
+
return (_jsx(ErrorState, { title: node.title, description: node.description, action: node.retry ? (_jsxs(Button, { size: "sm", variant: "outline", onClick: node.retry, children: [_jsx(RefreshCcwIcon, { className: "size-3.5" }), "Retry"] })) : undefined }));
|
|
307
|
+
case "button": {
|
|
308
|
+
const command = ctx.commands[node.command];
|
|
309
|
+
return (_jsxs(Button, { disabled: command?.isPending, onClick: () => command?.run(node.input), children: [node.icon, command?.isPending ? "Working..." : node.label] }));
|
|
310
|
+
}
|
|
311
|
+
case "refresh":
|
|
312
|
+
return (_jsxs(Button, { size: "sm", variant: "outline", onClick: () => node.resources.forEach((resourceId) => ctx.resources[resourceId]?.refetch()), children: [node.icon, node.label ?? "Refresh"] }));
|
|
313
|
+
case "open-resource-form":
|
|
314
|
+
return _jsx(OpenResourceForm, { node: node, ctx: ctx });
|
|
315
|
+
case "conversation":
|
|
316
|
+
return _jsx(Conversation, { node: node, ctx: ctx });
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
function Metric({ description, title, value }) {
|
|
320
|
+
return (_jsxs("div", { className: "rounded-[10px] border border-border bg-bg-card px-4 py-[14px]", children: [_jsx("p", { className: "mb-1.5 text-[11px] font-medium tracking-[0.06em] text-fg-tertiary uppercase", children: title }), _jsx("p", { className: "font-mono text-[22px] leading-[1.2] font-semibold text-fg", children: value }), description ? (_jsx("p", { className: "mt-1 text-[11.5px] text-fg-tertiary", children: description })) : null] }));
|
|
321
|
+
}
|
|
322
|
+
function DataRow({ detail, meta, status, title }) {
|
|
323
|
+
return (_jsxs("div", { className: "rounded-[10px] border border-border bg-bg-card px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2 text-[12px] font-medium text-fg", children: [_jsx(StatusDot, { status: status ?? "unknown", className: "shrink-0" }), _jsx("span", { className: "truncate", children: title })] }), meta ? (_jsx("div", { className: "shrink-0 text-[11px] text-fg-tertiary", children: meta })) : null] }), detail ? (_jsx("div", { className: "mt-1 truncate text-[11px] text-fg-tertiary", children: detail })) : null] }));
|
|
324
|
+
}
|
|
325
|
+
function OpenResourceForm({ ctx, node, }) {
|
|
326
|
+
const [value, setValue] = useState(node.defaultValue ?? "");
|
|
327
|
+
const command = ctx.commands[node.command];
|
|
328
|
+
return (_jsxs("div", { className: "max-w-xl space-y-3", children: [_jsx(Input, { "aria-label": node.fieldLabel, onChange: (event) => setValue(event.target.value), value: value }), _jsx(Button, { className: "w-full", disabled: command?.isPending || value.trim().length === 0, onClick: () => command?.run(value), children: command?.isPending ? "Opening..." : node.buttonLabel }), command?.isError ? (_jsx("div", { className: "rounded-md border border-destructive/30 bg-destructive/8 px-3 py-2 text-[12px] text-fg", children: command.error?.message ?? "Command failed." })) : null] }));
|
|
329
|
+
}
|
|
330
|
+
function Conversation({ ctx, node, }) {
|
|
331
|
+
const command = ctx.commands[node.command];
|
|
332
|
+
const defaultMessage = node.defaultMessage ?? "";
|
|
333
|
+
const [message, setMessage] = useState(defaultMessage);
|
|
334
|
+
const [turns, setTurns] = useState([]);
|
|
335
|
+
useEffect(() => {
|
|
336
|
+
if (message === defaultMessage)
|
|
337
|
+
return;
|
|
338
|
+
if (message.trim().length === 0)
|
|
339
|
+
return;
|
|
340
|
+
useShellStore.getState().pinTab(ctx.tab.id, { source: "app_shell" });
|
|
341
|
+
}, [ctx.tab.id, defaultMessage, message]);
|
|
342
|
+
const submit = () => {
|
|
343
|
+
const nextMessage = message.trim();
|
|
344
|
+
if (!nextMessage || !command)
|
|
345
|
+
return;
|
|
346
|
+
setTurns((current) => [...current, { role: "user", content: nextMessage }]);
|
|
347
|
+
command
|
|
348
|
+
.runAsync({ message: nextMessage })
|
|
349
|
+
.then((result) => {
|
|
350
|
+
const output = node.output
|
|
351
|
+
? node.output(result)
|
|
352
|
+
: typeof result === "string"
|
|
353
|
+
? result
|
|
354
|
+
: JSON.stringify(result, null, 2);
|
|
355
|
+
setTurns((current) => [
|
|
356
|
+
...current,
|
|
357
|
+
{ role: "assistant", content: output || "No output." },
|
|
358
|
+
]);
|
|
359
|
+
startTransition(() => useShellStore.getState().pinTab(ctx.tab.id));
|
|
360
|
+
})
|
|
361
|
+
.catch((error) => {
|
|
362
|
+
setTurns((current) => [
|
|
363
|
+
...current,
|
|
364
|
+
{ role: "assistant", content: error.message },
|
|
365
|
+
]);
|
|
366
|
+
});
|
|
367
|
+
};
|
|
368
|
+
return (_jsxs("div", { className: "grid min-h-[34rem] gap-4 lg:grid-cols-[minmax(0,1fr)_320px]", children: [_jsxs("div", { className: "flex min-h-0 flex-col rounded-[10px] border border-border bg-bg-card", children: [_jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: turns.length === 0 && !command?.data ? (_jsx(EmptyState, { title: node.emptyTitle, description: node.emptyDescription, className: "min-h-[22rem]" })) : (_jsx("div", { className: "space-y-3", children: turns.map((turn, index) => (_jsxs("div", { className: cn("rounded-lg border px-3 py-2 text-[13px] leading-6", turn.role === "user"
|
|
369
|
+
? "border-primary/25 bg-primary/8"
|
|
370
|
+
: "border-border bg-bg-elevated"), children: [_jsx("div", { className: "mb-1 text-[11px] font-semibold tracking-[0.06em] text-fg-tertiary uppercase", children: turn.role }), _jsx("pre", { className: "whitespace-pre-wrap font-sans text-fg", children: turn.content })] }, `${turn.role}-${index}`))) })) }), _jsxs("div", { className: "border-t border-border p-3", children: [_jsx(Textarea, { className: "min-h-24 resize-none", onChange: (event) => setMessage(event.target.value), value: message }), _jsx("div", { className: "mt-3 flex items-center justify-end gap-3", children: _jsx(Button, { disabled: command?.isPending || message.trim().length === 0, onClick: submit, children: "Send" }) })] })] }), node.side ? (_jsx("div", { className: "space-y-3", children: node.side.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) })) : null] }));
|
|
371
|
+
}
|
|
372
|
+
function CompactWorkspace() {
|
|
373
|
+
const { activeTabWorkspace, activeModeWorkspace, activeTab } = useShellRegistry();
|
|
374
|
+
const Workspace = activeTabWorkspace?.Workspace ?? activeModeWorkspace?.Workspace ?? null;
|
|
375
|
+
const tab = activeTabWorkspace ? activeTab : null;
|
|
376
|
+
return Workspace ? _jsx(Workspace, { tab: tab }) : null;
|
|
377
|
+
}
|
|
378
|
+
//# sourceMappingURL=workbench.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workbench.js","sourceRoot":"","sources":["../src/workbench.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elench/shell",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.10",
|
|
4
|
+
"description": "Reusable Elench desktop shell packaged behind a public domain API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
7
7
|
"sideEffects": [
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"build": "rm -rf dist && tsc -p tsconfig.json && cp src/styles.css dist/styles.css && node scripts/rewrite-dist-imports.mjs",
|
|
23
|
+
"prepack": "npm run build",
|
|
23
24
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
24
25
|
"test": "vitest run --config vitest.config.ts"
|
|
25
26
|
},
|
|
@@ -29,6 +30,7 @@
|
|
|
29
30
|
"react-dom": "^19.0.0"
|
|
30
31
|
},
|
|
31
32
|
"dependencies": {
|
|
33
|
+
"@tanstack/react-query": "^5.97.0",
|
|
32
34
|
"class-variance-authority": "^0.7.1",
|
|
33
35
|
"clsx": "^2.1.1",
|
|
34
36
|
"cmdk": "^1.1.1",
|