@grackle-ai/web-components 0.112.0 → 0.112.1

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 (28) hide show
  1. package/.rush/temp/{c8b4fba3a6cfb704f3582f1197cac0fc11abbc50.untar.log → 30718c57404891eb5c6c96c935c4a6879170c963.untar.log} +2 -2
  2. package/.rush/temp/{e2794f6b3dd02e58a0ca34e8c438c22d25296c3e.untar.log → 6ab1fbb7acd3281d7612ffe24dcc9982dd8c9061.untar.log} +2 -2
  3. package/.rush/temp/operation/_phase_build/all.log +5 -5
  4. package/.rush/temp/operation/_phase_build/log-chunks.jsonl +5 -5
  5. package/.rush/temp/operation/_phase_build/state.json +1 -1
  6. package/.rush/temp/operation/_phase_test/all.log +24 -24
  7. package/.rush/temp/operation/_phase_test/log-chunks.jsonl +24 -24
  8. package/.rush/temp/operation/_phase_test/state.json +1 -1
  9. package/dist/index.js +3900 -3895
  10. package/package.json +2 -2
  11. package/rush-logs/web-components._phase_build.cache.log +1 -1
  12. package/rush-logs/web-components._phase_test.cache.log +1 -1
  13. package/src/components/display/SplashScreen.tsx +2 -1
  14. package/src/components/layout/AppNav.stories.tsx +5 -5
  15. package/src/components/layout/AppNav.tsx +23 -14
  16. package/src/components/layout/StatusBar.tsx +2 -1
  17. package/src/components/panels/KeyboardShortcutsPanel.stories.tsx +2 -2
  18. package/src/components/panels/KeyboardShortcutsPanel.tsx +3 -2
  19. package/src/index.ts +2 -0
  20. package/src/utils/assetUrl.test.ts +23 -0
  21. package/src/utils/assetUrl.ts +33 -0
  22. package/.rush/temp/c8b4fba3a6cfb704f3582f1197cac0fc11abbc50.tar.log +0 -235
  23. package/.rush/temp/chunked-rush-logs/web-components._phase_build.chunks.jsonl +0 -18
  24. package/.rush/temp/chunked-rush-logs/web-components._phase_test.chunks.jsonl +0 -125
  25. package/.rush/temp/e2794f6b3dd02e58a0ca34e8c438c22d25296c3e.tar.log +0 -12
  26. package/rush-logs/web-components._phase_build.log +0 -18
  27. package/rush-logs/web-components._phase_test.log +0 -125
  28. package/temp/build/lint/_eslint-5eVG3S6w.json +0 -830
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grackle-ai/web-components",
3
- "version": "0.112.0",
3
+ "version": "0.112.1",
4
4
  "description": "Presentational React component library for the Grackle web UI",
5
5
  "license": "MIT",
6
6
  "sideEffects": [
@@ -46,7 +46,7 @@
46
46
  "remark-gfm": "^4.0.0",
47
47
  "lucide-react": "~0.474.0",
48
48
  "react-router": "^7.0.0",
49
- "@grackle-ai/common": "0.112.0"
49
+ "@grackle-ai/common": "0.112.1"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@rushstack/heft": "1.2.7",
@@ -1,4 +1,4 @@
1
1
  Build cache hit.
2
- Cache key: c8b4fba3a6cfb704f3582f1197cac0fc11abbc50
2
+ Cache key: 30718c57404891eb5c6c96c935c4a6879170c963
3
3
  Clearing cached folders: dist, storybook-static, .rush/temp/operation/_phase_build
4
4
  Successfully restored output from the build cache.
@@ -1,4 +1,4 @@
1
1
  Build cache hit.
2
- Cache key: e2794f6b3dd02e58a0ca34e8c438c22d25296c3e
2
+ Cache key: 6ab1fbb7acd3281d7612ffe24dcc9982dd8c9061
3
3
  Clearing cached folders: .rush/temp/operation/_phase_test
4
4
  Successfully restored output from the build cache.
@@ -1,5 +1,6 @@
1
1
  import type { JSX } from "react";
2
2
  import { Spinner } from "./Spinner.js";
3
+ import { assetUrl } from "../../utils/assetUrl.js";
3
4
  import styles from "./SplashScreen.module.scss";
4
5
 
5
6
  /**
@@ -9,7 +10,7 @@ import styles from "./SplashScreen.module.scss";
9
10
  export function SplashScreen(): JSX.Element {
10
11
  return (
11
12
  <div className={styles.splash} data-testid="splash-screen">
12
- <img src="/grackle-logo.png" alt="Grackle" className={styles.logo} />
13
+ <img src={assetUrl("grackle-logo.png")} alt="Grackle" className={styles.logo} />
13
14
  <Spinner size="xl" label="Loading Grackle" liveRegion />
14
15
  </div>
15
16
  );
@@ -17,7 +17,7 @@ type Story = StoryObj<typeof meta>;
17
17
  export const AllTabsRendered: Story = {
18
18
  play: async ({ canvas }) => {
19
19
  await expect(canvas.getByRole("tab", { name: /Dashboard/ })).toBeInTheDocument();
20
- await expect(canvas.getByRole("tab", { name: /Chat/ })).toBeInTheDocument();
20
+ await expect(canvas.getByRole("tab", { name: /Sessions/ })).toBeInTheDocument();
21
21
  await expect(canvas.getByRole("tab", { name: /Tasks/ })).toBeInTheDocument();
22
22
  await expect(canvas.getByRole("tab", { name: /Environments/ })).toBeInTheDocument();
23
23
  await expect(canvas.getByRole("tab", { name: /Knowledge/ })).toBeInTheDocument();
@@ -30,14 +30,14 @@ export const CoreOnlyTabs: Story = {
30
30
  args: {
31
31
  tabs: [
32
32
  { view: "dashboard", label: "Dashboard", icon: <Home size={ICON_LG} />, route: HOME_URL, testId: "sidebar-tab-dashboard" },
33
- { view: "chat", label: "Chat", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
33
+ { view: "chat", label: "Sessions", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
34
34
  { view: "environments", label: "Environments", icon: <Monitor size={ICON_LG} />, route: ENVIRONMENTS_URL, testId: "sidebar-tab-environments" },
35
35
  { view: "settings", label: "Settings", icon: <Settings size={ICON_LG} />, route: SETTINGS_CREDENTIALS_URL, testId: "sidebar-tab-settings" },
36
36
  ],
37
37
  },
38
38
  play: async ({ canvas }) => {
39
39
  await expect(canvas.getByRole("tab", { name: /Dashboard/ })).toBeInTheDocument();
40
- await expect(canvas.getByRole("tab", { name: /Chat/ })).toBeInTheDocument();
40
+ await expect(canvas.getByRole("tab", { name: /Sessions/ })).toBeInTheDocument();
41
41
  await expect(canvas.getByRole("tab", { name: /Environments/ })).toBeInTheDocument();
42
42
  await expect(canvas.getByRole("tab", { name: /Settings/ })).toBeInTheDocument();
43
43
  await expect(canvas.queryByRole("tab", { name: /Tasks/ })).not.toBeInTheDocument();
@@ -51,7 +51,7 @@ export const AllTabsExplicit: Story = {
51
51
  args: {
52
52
  tabs: [
53
53
  { view: "dashboard", label: "Dashboard", icon: <Home size={ICON_LG} />, route: HOME_URL, testId: "sidebar-tab-dashboard" },
54
- { view: "chat", label: "Chat", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
54
+ { view: "chat", label: "Sessions", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
55
55
  { view: "tasks", label: "Tasks", icon: <ClipboardList size={ICON_LG} />, route: TASKS_URL, testId: "sidebar-tab-tasks" },
56
56
  { view: "environments", label: "Environments", icon: <Monitor size={ICON_LG} />, route: ENVIRONMENTS_URL, testId: "sidebar-tab-environments" },
57
57
  { view: "knowledge", label: "Knowledge", icon: <Brain size={ICON_LG} />, route: KNOWLEDGE_URL, testId: "sidebar-tab-knowledge" },
@@ -78,7 +78,7 @@ export const SettingsPinnedRight: Story = {
78
78
  args: {
79
79
  tabs: [
80
80
  { view: "dashboard", label: "Dashboard", icon: <Home size={ICON_LG} />, route: HOME_URL, testId: "sidebar-tab-dashboard" },
81
- { view: "chat", label: "Chat", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
81
+ { view: "chat", label: "Sessions", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
82
82
  { view: "environments", label: "Environments", icon: <Monitor size={ICON_LG} />, route: ENVIRONMENTS_URL, testId: "sidebar-tab-environments" },
83
83
  { view: "settings", label: "Settings", icon: <Settings size={ICON_LG} />, route: SETTINGS_CREDENTIALS_URL, testId: "sidebar-tab-settings", align: "end" },
84
84
  { view: "tasks", label: "Tasks", icon: <ClipboardList size={ICON_LG} />, route: TASKS_URL, testId: "sidebar-tab-tasks" },
@@ -21,18 +21,24 @@ export interface AppTab {
21
21
  route: string;
22
22
  /** data-testid suffix. */
23
23
  testId: string;
24
+ /**
25
+ * Display order within the nav bar (lower numbers appear first). Applied
26
+ * across all plugins so tab order is explicit rather than dependent on plugin
27
+ * load order. End-aligned tabs ignore this and are always pinned right.
28
+ */
29
+ order?: number;
24
30
  /** Horizontal alignment within the nav bar. `"end"` pins the tab to the right edge. */
25
31
  align?: "end";
26
32
  }
27
33
 
28
34
  /** Ordered list of all app navigation tabs. Exported for plugin registry use. */
29
35
  export const TABS: AppTab[] = [
30
- { view: "dashboard", label: "Dashboard", icon: <Home size={ICON_LG} />, route: HOME_URL, testId: "sidebar-tab-dashboard" },
31
- { view: "chat", label: "Chat", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat" },
32
- { view: "tasks", label: "Tasks", icon: <ClipboardList size={ICON_LG} />, route: TASKS_URL, testId: "sidebar-tab-tasks" },
33
- { view: "environments", label: "Environments", icon: <Monitor size={ICON_LG} />, route: ENVIRONMENTS_URL, testId: "sidebar-tab-environments" },
34
- { view: "knowledge", label: "Knowledge", icon: <Brain size={ICON_LG} />, route: KNOWLEDGE_URL, testId: "sidebar-tab-knowledge" },
35
- { view: "findings", label: "Findings", icon: <Search size={ICON_LG} />, route: FINDINGS_URL, testId: "sidebar-tab-findings" },
36
+ { view: "dashboard", label: "Dashboard", icon: <Home size={ICON_LG} />, route: HOME_URL, testId: "sidebar-tab-dashboard", order: 0 },
37
+ { view: "tasks", label: "Tasks", icon: <ClipboardList size={ICON_LG} />, route: TASKS_URL, testId: "sidebar-tab-tasks", order: 1 },
38
+ { view: "environments", label: "Environments", icon: <Monitor size={ICON_LG} />, route: ENVIRONMENTS_URL, testId: "sidebar-tab-environments", order: 2 },
39
+ { view: "chat", label: "Sessions", icon: <MessageSquare size={ICON_LG} />, route: CHAT_URL, testId: "sidebar-tab-chat", order: 3 },
40
+ { view: "findings", label: "Findings", icon: <Search size={ICON_LG} />, route: FINDINGS_URL, testId: "sidebar-tab-findings", order: 4 },
41
+ { view: "knowledge", label: "Knowledge", icon: <Brain size={ICON_LG} />, route: KNOWLEDGE_URL, testId: "sidebar-tab-knowledge", order: 5 },
36
42
  { view: "settings", label: "Settings", icon: <Settings size={ICON_LG} />, route: SETTINGS_CREDENTIALS_URL, testId: "sidebar-tab-settings", align: "end" },
37
43
  ];
38
44
 
@@ -67,15 +73,18 @@ export function AppNav({ tabs = TABS }: { tabs?: AppTab[] }): JSX.Element {
67
73
 
68
74
  const activeView = getActiveView(location.pathname);
69
75
 
70
- // Render end-aligned tabs (e.g. Settings) last regardless of the incoming order,
71
- // so they stay pinned to the right edge no matter which plugins contribute tabs.
72
- const orderedTabs = useMemo(
73
- () => [
74
- ...tabs.filter((t) => t.align !== "end"),
76
+ // Sort by explicit `order`, then render end-aligned tabs (e.g. Settings) last
77
+ // regardless of order, so they stay pinned to the right edge no matter which
78
+ // plugins contribute tabs. Tabs without an `order` keep their incoming order
79
+ // (stable sort) and fall after explicitly-ordered ones.
80
+ const orderedTabs = useMemo(() => {
81
+ const byOrder = (a: AppTab, b: AppTab): number =>
82
+ (a.order ?? Number.MAX_SAFE_INTEGER) - (b.order ?? Number.MAX_SAFE_INTEGER);
83
+ return [
84
+ ...tabs.filter((t) => t.align !== "end").sort(byOrder),
75
85
  ...tabs.filter((t) => t.align === "end"),
76
- ],
77
- [tabs],
78
- );
86
+ ];
87
+ }, [tabs]);
79
88
  const firstEndAlignedView = orderedTabs.find((t) => t.align === "end")?.view;
80
89
 
81
90
  const handleClick = useCallback((tab: AppTab) => {
@@ -3,6 +3,7 @@ import { Circle, Menu } from "lucide-react";
3
3
  import type { ConnectionStatus, Environment, Session } from "../../hooks/types.js";
4
4
  import { ICON_LG, ICON_XS } from "../../utils/iconSize.js";
5
5
  import { HOME_URL, useAppNavigate } from "../../utils/navigation.js";
6
+ import { assetUrl } from "../../utils/assetUrl.js";
6
7
  import { Tooltip } from "../display/Tooltip.js";
7
8
  import styles from "./StatusBar.module.scss";
8
9
 
@@ -51,7 +52,7 @@ export function StatusBar({ connectionStatus, environments, sessions, onToggleSi
51
52
  )}
52
53
  <Tooltip text="Home" placement="bottom">
53
54
  <button type="button" className={styles.brand} onClick={() => navigate(HOME_URL)} data-testid="statusbar-brand">
54
- <img src="/icon-192x192.png" alt="" className={styles.brandLogo} aria-hidden="true" data-testid="statusbar-logo" />
55
+ <img src={assetUrl("icon-192x192.png")} alt="" className={styles.brandLogo} aria-hidden="true" data-testid="statusbar-logo" />
55
56
  Grackle
56
57
  </button>
57
58
  </Tooltip>
@@ -25,7 +25,7 @@ export const AllCategoriesRendered: Story = {
25
25
  await expect(canvas.getByText("Workspace Page")).toBeInTheDocument();
26
26
  await expect(canvas.getByText("Navigation Lists")).toBeInTheDocument();
27
27
  await expect(canvas.getByText("Editing")).toBeInTheDocument();
28
- await expect(canvas.getByText("Chat")).toBeInTheDocument();
28
+ await expect(canvas.getByText("Sessions")).toBeInTheDocument();
29
29
  },
30
30
  };
31
31
 
@@ -35,6 +35,6 @@ export const ShortcutDescriptions: Story = {
35
35
  await expect(canvas.getByText("Open keyboard shortcuts reference")).toBeInTheDocument();
36
36
  await expect(canvas.getByText("Create a new task")).toBeInTheDocument();
37
37
  await expect(canvas.getByText("Switch to Overview tab")).toBeInTheDocument();
38
- await expect(canvas.getByText("Send message (when input is focused)")).toBeInTheDocument();
38
+ await expect(canvas.getByText("Send message (when the composer is focused)")).toBeInTheDocument();
39
39
  },
40
40
  };
@@ -66,9 +66,10 @@ const SHORTCUT_GROUPS: ShortcutGroup[] = [
66
66
  ],
67
67
  },
68
68
  {
69
- title: "Chat",
69
+ title: "Sessions",
70
70
  shortcuts: [
71
- { keys: ["Enter"], description: "Send message (when input is focused)" },
71
+ { keys: ["Ctrl/Cmd", "Enter"], description: "Send message (when the composer is focused)" },
72
+ { keys: ["Enter"], description: "Insert a new line in the message composer" },
72
73
  ],
73
74
  },
74
75
  ];
package/src/index.ts CHANGED
@@ -202,6 +202,8 @@ export { computeKpis, getAttentionTasks, getActiveSessions, getWorkspaceSnapshot
202
202
 
203
203
  export { isNearAnchor, computeScrollCompensation, SCROLL_ANCHOR_THRESHOLD_PX } from "./utils/scrollUtils.js";
204
204
 
205
+ export { assetUrl } from "./utils/assetUrl.js";
206
+
205
207
  // ─── Themes ──────────────────────────────────────────────────────────────────
206
208
 
207
209
  export { THEMES, THEME_IDS, DEFAULT_THEME_ID, getThemeById } from "./themes.js";
@@ -0,0 +1,23 @@
1
+ import { describe, it, expect, afterEach, vi } from "vitest";
2
+ import { assetUrl } from "./assetUrl.js";
3
+
4
+ describe("assetUrl", () => {
5
+ afterEach(() => {
6
+ vi.unstubAllEnvs();
7
+ });
8
+
9
+ it("prefixes the file with the default base URL", () => {
10
+ vi.stubEnv("BASE_URL", "/");
11
+ expect(assetUrl("icon-192x192.png")).toBe("/icon-192x192.png");
12
+ });
13
+
14
+ it("prefixes the file with a sub-path base URL (demo deployment)", () => {
15
+ vi.stubEnv("BASE_URL", "/grackle/demo/");
16
+ expect(assetUrl("icon-192x192.png")).toBe("/grackle/demo/icon-192x192.png");
17
+ });
18
+
19
+ it("collapses a leading slash on the file name so the base join never double-slashes", () => {
20
+ vi.stubEnv("BASE_URL", "/grackle/demo/");
21
+ expect(assetUrl("/grackle-logo.png")).toBe("/grackle/demo/grackle-logo.png");
22
+ });
23
+ });
@@ -0,0 +1,33 @@
1
+ // Minimal typing for Vite's `import.meta.env.BASE_URL`. We deliberately avoid a
2
+ // full `/// <reference types="vite/client" />` so that Vite's broad ambient
3
+ // asset-module declarations (`*.png`, `*.css`, ...) don't leak into the type
4
+ // graph of every program that compiles this file — we only need `BASE_URL`.
5
+ declare global {
6
+ interface ImportMetaEnv {
7
+ /** Base public path the app is served from (Vite `base`); always ends in `/`. */
8
+ readonly BASE_URL: string;
9
+ }
10
+ interface ImportMeta {
11
+ readonly env: ImportMetaEnv;
12
+ }
13
+ }
14
+
15
+ /**
16
+ * Resolve a public asset path against the application's configured base URL.
17
+ *
18
+ * Public assets (logos, icons, the web manifest) sit at the site root in local
19
+ * development but under a sub-path when the app is deployed to a base URL — e.g.
20
+ * the GitHub Pages demo served from `/grackle/demo/`. A leading-slash `src` is
21
+ * resolved by the browser against the origin root and ignores Vite's `base`, so
22
+ * such assets 404 on sub-path deployments. Prefixing with
23
+ * `import.meta.env.BASE_URL` (always set by Vite, with a trailing slash) yields
24
+ * a path that is correct in every deployment.
25
+ *
26
+ * @param fileName - The asset's file name relative to the public root, ideally
27
+ * without a leading slash (e.g. `"icon-192x192.png"`). A leading slash is
28
+ * tolerated and stripped to avoid a double slash after the base.
29
+ * @returns The base-prefixed asset URL (e.g. `"/grackle/demo/icon-192x192.png"`).
30
+ */
31
+ export function assetUrl(fileName: string): string {
32
+ return `${import.meta.env.BASE_URL}${fileName.replace(/^\//, "")}`;
33
+ }
@@ -1,235 +0,0 @@
1
- Start time: Fri May 22 2026 22:01:11 GMT+0000 (Coordinated Universal Time)
2
- Invoking "/usr/bin/tar -c -f /home/runner/work/grackle/grackle/common/temp/build-cache/c8b4fba3a6cfb704f3582f1197cac0fc11abbc50-128955391daa6f01.temp -z --files-from=-"
3
-
4
- ======= BEGIN PROCESS INPUT ======
5
- .rush/temp/operation/_phase_build/all.log
6
- .rush/temp/operation/_phase_build/log-chunks.jsonl
7
- .rush/temp/operation/_phase_build/state.json
8
- dist/index.css
9
- dist/index.js
10
- storybook-static/assets/AboutPanel.stories-ybpANdrt.js
11
- storybook-static/assets/AgentToolCard-B8Rlgyd_.js
12
- storybook-static/assets/AgentToolCard-C1VqaVin.css
13
- storybook-static/assets/AgentToolCard.stories-Cg68CXa1.js
14
- storybook-static/assets/AppNav-DWQJ1dTq.css
15
- storybook-static/assets/AppNav.stories-DPfBnB6c.js
16
- storybook-static/assets/AppearancePanel.stories-CZBIius3.js
17
- storybook-static/assets/BottomStatusBar-CeAacGHf.css
18
- storybook-static/assets/BottomStatusBar.stories-Coj3Q1FX.js
19
- storybook-static/assets/Breadcrumbs-BB5u7_nM.css
20
- storybook-static/assets/Breadcrumbs.stories-BpWnf4T7.js
21
- storybook-static/assets/Button-BMBuMgiM.css
22
- storybook-static/assets/Button-rCMOmpLr.js
23
- storybook-static/assets/Button.stories-F0pHraoB.js
24
- storybook-static/assets/Callout-D5tFovqB.css
25
- storybook-static/assets/Callout-DzSM2KAv.js
26
- storybook-static/assets/Callout.stories-C5pm49DL.js
27
- storybook-static/assets/ChatInput-Ci5SZXgq.css
28
- storybook-static/assets/ChatInput.stories--4BDWKcJ.js
29
- storybook-static/assets/Color-YHDXOIA2-CxvS6WYh.js
30
- storybook-static/assets/ConfirmDialog-B_iVdIL1.js
31
- storybook-static/assets/ConfirmDialog-Jqq4bffz.css
32
- storybook-static/assets/ConfirmDialog.stories-D8W6DL7L.js
33
- storybook-static/assets/CopyButton-PAjlD7lE.css
34
- storybook-static/assets/CopyButton-RfXmIm_F.js
35
- storybook-static/assets/CopyButton.stories-B3xeO3Ao.js
36
- storybook-static/assets/CredentialProvidersPanel.stories-DokzYlDc.js
37
- storybook-static/assets/DagView-BZV40eAE.css
38
- storybook-static/assets/DagView.stories-B1z1AnMv.js
39
- storybook-static/assets/DemoBanner-DVSwhfpb.css
40
- storybook-static/assets/DemoBanner.stories-vCkrb_NA.js
41
- storybook-static/assets/DocsRenderer-CFRXHY34-Bpn8X34b.js
42
- storybook-static/assets/EditableCheckbox.stories-B8S2-OOA.js
43
- storybook-static/assets/EditableField-C3Qf3r87.css
44
- storybook-static/assets/EditableField.module-B3_EXsWq.js
45
- storybook-static/assets/EditableTextArea.stories-DDpN-W77.js
46
- storybook-static/assets/EditableTextField-tNChjPhf.js
47
- storybook-static/assets/EditableTextField.stories-DAZEvYEB.js
48
- storybook-static/assets/EnvironmentEditPanel-ERl5EQ53.css
49
- storybook-static/assets/EnvironmentEditPanel.stories-CT3I-t_C.js
50
- storybook-static/assets/EnvironmentNav-BfyZMUiq.css
51
- storybook-static/assets/EnvironmentNav.stories-CGbGyoQe.js
52
- storybook-static/assets/EnvironmentSelect-CNy3LtVn.css
53
- storybook-static/assets/EnvironmentSelect.stories-BWBea2nK.js
54
- storybook-static/assets/EventHoverRow-CM2QWJmd.js
55
- storybook-static/assets/EventHoverRow-CxddGRVu.css
56
- storybook-static/assets/EventHoverRow.stories-B00qi2g3.js
57
- storybook-static/assets/EventRenderer-BlNCdNZc.css
58
- storybook-static/assets/EventRenderer-DaJvscsl.js
59
- storybook-static/assets/EventRenderer.stories-CzFqVt2r.js
60
- storybook-static/assets/EventStream-CfWRUqli.css
61
- storybook-static/assets/EventStream.stories-BF4va8-L.js
62
- storybook-static/assets/FileEditCard-D7KxJiYU.js
63
- storybook-static/assets/FileEditCard.stories-DpOCSkd0.js
64
- storybook-static/assets/FileReadCard-_A59UClJ.js
65
- storybook-static/assets/FileReadCard.stories-BJ2tNKO-.js
66
- storybook-static/assets/FindingCard-DNUJUioH.js
67
- storybook-static/assets/FindingCard.stories-P_0MvX1o.js
68
- storybook-static/assets/FindingsPanel-BXeVYIqe.css
69
- storybook-static/assets/FindingsPanel.stories-DTrmmELw.js
70
- storybook-static/assets/FloatingActionBar-JAfEbqWE.css
71
- storybook-static/assets/FloatingActionBar-Ndi4m2YD.js
72
- storybook-static/assets/FloatingActionBar.stories-DChXdr5H.js
73
- storybook-static/assets/GenericToolCard-vbUPhDvV.js
74
- storybook-static/assets/GenericToolCard.stories-12WLikPw.js
75
- storybook-static/assets/IpcCard-C1vDrUai.js
76
- storybook-static/assets/IpcCard.stories-BTkluszk.js
77
- storybook-static/assets/KeyboardShortcutsPanel-DvUOQ_Zz.css
78
- storybook-static/assets/KeyboardShortcutsPanel.stories-C6ebt5QT.js
79
- storybook-static/assets/KnowledgeCard-XesoELnc.js
80
- storybook-static/assets/KnowledgeCard.stories-DgXGEYpH.js
81
- storybook-static/assets/KnowledgeDetailPanel-Da99SnFY.css
82
- storybook-static/assets/KnowledgeDetailPanel.stories-DalEu-47.js
83
- storybook-static/assets/KnowledgeGraph-DYK-e4SV.css
84
- storybook-static/assets/KnowledgeGraph.stories-JnOhTvBO.js
85
- storybook-static/assets/KnowledgeNav-DO01esra.css
86
- storybook-static/assets/KnowledgeNav.stories-CBOlv9hr.js
87
- storybook-static/assets/McpAppWidget.stories-5z2Be7PN.js
88
- storybook-static/assets/McpToolSelector-Aen78-OR.css
89
- storybook-static/assets/McpToolSelector.stories-BcJ8tZ_w.js
90
- storybook-static/assets/MetadataCard-CGJ5W-Bk.js
91
- storybook-static/assets/MetadataCard.stories-Cnpuxrt6.js
92
- storybook-static/assets/PersonaManager-By6uQtUH.css
93
- storybook-static/assets/PersonaManager.stories-BdO9lLd4.js
94
- storybook-static/assets/ScheduleManager-uGq6m69d.css
95
- storybook-static/assets/ScheduleManager.stories-BJRmm6jj.js
96
- storybook-static/assets/SearchCard-DEr03a8n.js
97
- storybook-static/assets/SearchCard.stories-D78lJ02P.js
98
- storybook-static/assets/SessionAttemptSelector-YIvjd5FY.css
99
- storybook-static/assets/SessionAttemptSelector.stories-CuWOBwNP.js
100
- storybook-static/assets/SessionPicker-BnmjwFI9.css
101
- storybook-static/assets/SessionPicker-DRbmbI6x.js
102
- storybook-static/assets/SessionPicker.stories-DiTyHsrD.js
103
- storybook-static/assets/SettingsNav-n38XJoZr.css
104
- storybook-static/assets/SettingsNav.stories-BeEc25uS.js
105
- storybook-static/assets/SettingsPanel-CJs2yOqy.css
106
- storybook-static/assets/SettingsPanel.module-Br2rQNDe.js
107
- storybook-static/assets/ShellCard-C-XjdbCf.js
108
- storybook-static/assets/ShellCard.stories-P4EhNQOX.js
109
- storybook-static/assets/Sidebar-Dhfb-x8Q.css
110
- storybook-static/assets/Sidebar.stories-BPuchTBQ.js
111
- storybook-static/assets/Skeleton-54NKBtCz.css
112
- storybook-static/assets/Skeleton.stories-C_misFyv.js
113
- storybook-static/assets/Spinner-CBqj2s1K.js
114
- storybook-static/assets/Spinner-Cbkh7n9y.css
115
- storybook-static/assets/Spinner.stories-vAoeLCdV.js
116
- storybook-static/assets/SplashScreen-hSSeMgSs.css
117
- storybook-static/assets/SplashScreen.stories-DhZ0D9IT.js
118
- storybook-static/assets/SplitButton-BB1UopKw.css
119
- storybook-static/assets/SplitButton.stories-B74wXo75.js
120
- storybook-static/assets/StatusBar-DYMcOqer.css
121
- storybook-static/assets/StatusBar.stories-D_Qtetdn.js
122
- storybook-static/assets/StreamDetailPanel-Qbtzwilu.css
123
- storybook-static/assets/StreamDetailPanel.stories-B1Kfulxd.js
124
- storybook-static/assets/StreamList-B131mjFo.css
125
- storybook-static/assets/StreamList.stories-CYQz_Zld.js
126
- storybook-static/assets/TaskActionButtons-C-wAOp-W.css
127
- storybook-static/assets/TaskActionButtons.stories-DROTayZ0.js
128
- storybook-static/assets/TaskCard-Bwc2dHJW.js
129
- storybook-static/assets/TaskCard.stories-Gw2iralM.js
130
- storybook-static/assets/TaskEditPanel-Cr1utkBZ.css
131
- storybook-static/assets/TaskEditPanel.stories-BfSK0GWf.js
132
- storybook-static/assets/TaskList-BuDIJ0ee.css
133
- storybook-static/assets/TaskList.stories-P2IUsvzz.js
134
- storybook-static/assets/TaskNode-C5aJky5a.css
135
- storybook-static/assets/TaskNode-wGHTYQn-.js
136
- storybook-static/assets/TaskNode.stories-De6PSYvs.js
137
- storybook-static/assets/TaskOverviewPanel-CuO66F6M.css
138
- storybook-static/assets/TaskOverviewPanel.stories-DOMld17Z.js
139
- storybook-static/assets/Toast-C2s2TSk_.js
140
- storybook-static/assets/Toast-DxCFpQwo.css
141
- storybook-static/assets/Toast.stories-3vTK7oIX.js
142
- storybook-static/assets/ToastContainer-BfujqikU.css
143
- storybook-static/assets/ToastContainer.stories-3M7dLhan.js
144
- storybook-static/assets/TodoCard-DzqHdSVX.css
145
- storybook-static/assets/TodoCard-fvPJDwRE.js
146
- storybook-static/assets/TodoCard.stories-uaRlwhGN.js
147
- storybook-static/assets/TokensPanel.stories-BLVA8-xW.js
148
- storybook-static/assets/ToolCard-cpVDAs87.js
149
- storybook-static/assets/ToolCard.stories-D8Fq5fdi.js
150
- storybook-static/assets/ToolSearchCard-B45gz8e3.js
151
- storybook-static/assets/ToolSearchCard.stories-CPBx8EjW.js
152
- storybook-static/assets/Tooltip-BEIBIXE3.css
153
- storybook-static/assets/Tooltip-C1cDx3lg.js
154
- storybook-static/assets/Tooltip.stories-CwMCMe7_.js
155
- storybook-static/assets/UpdateBanner.stories-2SngJCKC.js
156
- storybook-static/assets/WorkpadCard-60h07o3P.js
157
- storybook-static/assets/WorkpadCard.stories-DJo4w1VC.js
158
- storybook-static/assets/WorkpadPanel-C6T8CtoU.js
159
- storybook-static/assets/WorkpadPanel-VDs4R_k8.css
160
- storybook-static/assets/WorkpadPanel.stories-DyhLQCw8.js
161
- storybook-static/assets/WorkspaceBoard-BlSyPWpw.css
162
- storybook-static/assets/WorkspaceBoard.stories-pNgoKrO4.js
163
- storybook-static/assets/WorkspaceFormFields-B7ndeC7z.css
164
- storybook-static/assets/WorkspaceFormFields.stories-Bv4wEjF5.js
165
- storybook-static/assets/check-BK7ScIdm.js
166
- storybook-static/assets/chevron-down-CJJryvZ4.js
167
- storybook-static/assets/chevron-right-DFWyZf4v.js
168
- storybook-static/assets/chunk-UVKPFVEO-CDLegBp7.js
169
- storybook-static/assets/chunk-XP5HYGXS-BHXC9YeQ.js
170
- storybook-static/assets/circle-C68bNRTz.js
171
- storybook-static/assets/classifyTool-DKAAIUjq.js
172
- storybook-static/assets/clipboard-JBTeXkPi.js
173
- storybook-static/assets/createLucideIcon-BSGK_pbN.js
174
- storybook-static/assets/entry-preview-CmlyZPB9.js
175
- storybook-static/assets/entry-preview-docs-CAgjVEX9.js
176
- storybook-static/assets/enum-converters-C3oReWuX.js
177
- storybook-static/assets/format-cBZDFpLA.js
178
- storybook-static/assets/iconSize-vtvemS-M.js
179
- storybook-static/assets/iframe-CAUAIBe5.js
180
- storybook-static/assets/index-B2V9nFGU.js
181
- storybook-static/assets/index-BPftEo5x.js
182
- storybook-static/assets/index-C5DSJyK4.js
183
- storybook-static/assets/index-CH2Su9EI.js
184
- storybook-static/assets/index-DgH-xKnr.js
185
- storybook-static/assets/index-JhL3uwfD.js
186
- storybook-static/assets/index-hLVmTiZX.js
187
- storybook-static/assets/info-BRs2Dgww.js
188
- storybook-static/assets/jsx-runtime-D_zvdyIk.js
189
- storybook-static/assets/message-square-2md5w1vC.js
190
- storybook-static/assets/mockData-B8IHQBHU.js
191
- storybook-static/assets/navigation-DGdWI-Op.js
192
- storybook-static/assets/preview-BDMYBg5e.js
193
- storybook-static/assets/preview-DAVcJ_De.css
194
- storybook-static/assets/preview-DitdPczW.js
195
- storybook-static/assets/proxy-YSrA_aH7.js
196
- storybook-static/assets/react-18-ChRu7atC.js
197
- storybook-static/assets/search-DVDwfi7p.js
198
- storybook-static/assets/storybook-decorators-Ctazaq3L.js
199
- storybook-static/assets/storybook-helpers-FCgvxKHv.js
200
- storybook-static/assets/taskStatus-ChCWSHfB.js
201
- storybook-static/assets/test-utils-Cye2pOmz.js
202
- storybook-static/assets/themes-CqH_kF0s.js
203
- storybook-static/assets/time-CUK3yShY.js
204
- storybook-static/assets/toolCards-lnR4NwvJ.css
205
- storybook-static/assets/toolCards.module-Mg4Y60Eh.js
206
- storybook-static/assets/triangle-alert-CBlUkhSx.js
207
- storybook-static/assets/useEditableField-BRw-5G92.js
208
- storybook-static/assets/x-DUVT0mGQ.js
209
- storybook-static/assets/zoom-CI9lZUT8.js
210
- storybook-static/favicon.svg
211
- storybook-static/iframe.html
212
- storybook-static/index.html
213
- storybook-static/index.json
214
- storybook-static/nunito-sans-bold-italic.woff2
215
- storybook-static/nunito-sans-bold.woff2
216
- storybook-static/nunito-sans-italic.woff2
217
- storybook-static/nunito-sans-regular.woff2
218
- storybook-static/project.json
219
- storybook-static/sb-addons/controls-2/manager-bundle.js
220
- storybook-static/sb-addons/docs-1/manager-bundle.js
221
- storybook-static/sb-addons/storybook-core-core-server-presets-0/common-manager-bundle.js
222
- storybook-static/sb-common-assets/favicon.svg
223
- storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2
224
- storybook-static/sb-common-assets/nunito-sans-bold.woff2
225
- storybook-static/sb-common-assets/nunito-sans-italic.woff2
226
- storybook-static/sb-common-assets/nunito-sans-regular.woff2
227
- storybook-static/sb-manager/globals-module-info.js
228
- storybook-static/sb-manager/globals-runtime.js
229
- storybook-static/sb-manager/globals.js
230
- storybook-static/sb-manager/runtime.js
231
- ======== END PROCESS INPUT =======
232
- ======= BEGIN PROCESS OUTPUT =======
233
- ======== END PROCESS OUTPUT ========
234
-
235
- Exited with code "0"
@@ -1,18 +0,0 @@
1
- {"kind":"O","text":"Invoking: heft run --only build -- --clean \n"}
2
- {"kind":"O","text":" ---- build started ---- \n"}
3
- {"kind":"O","text":"[build:typescript] Using TypeScript version 5.7.3\n"}
4
- {"kind":"O","text":"[build:storybook-build] Building Storybook...\n"}
5
- {"kind":"O","text":"[build:storybook-build] Storybook build completed.\n"}
6
- {"kind":"O","text":"[build:vite-build] Starting Vite build...\n"}
7
- {"kind":"O","text":"[build:lint] Using ESLint version 9.39.4\n"}
8
- {"kind":"O","text":"\u001b[36mvite v6.4.2 \u001b[32mbuilding for production...\u001b[36m\u001b[39m\n"}
9
- {"kind":"O","text":"transforming...\n"}
10
- {"kind":"O","text":"\u001b[32m✓\u001b[39m 2715 modules transformed.\n"}
11
- {"kind":"O","text":"rendering chunks...\n"}
12
- {"kind":"O","text":"computing gzip size...\n"}
13
- {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[35mindex.css \u001b[39m\u001b[1m\u001b[2m 158.47 kB\u001b[22m\u001b[1m\u001b[22m\u001b[2m │ gzip: 20.60 kB\u001b[22m\n"}
14
- {"kind":"O","text":"\u001b[2mdist/\u001b[22m\u001b[36mindex.js \u001b[39m\u001b[1m\u001b[33m1,590.94 kB\u001b[39m\u001b[22m\u001b[2m │ gzip: 401.57 kB\u001b[22m\n"}
15
- {"kind":"O","text":"\u001b[32m✓ built in 5.74s\u001b[39m\n"}
16
- {"kind":"O","text":"[build:vite-build] Vite build completed.\n"}
17
- {"kind":"O","text":" ---- build finished (74.958s) ---- \n"}
18
- {"kind":"O","text":"-------------------- Finished (74.961s) --------------------\n"}