@burdenoff/microfe-workspaces 2026.626.2 → 2026.626.3
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.
|
@@ -20,7 +20,8 @@ function c(t) {
|
|
|
20
20
|
authToken: t || void 0,
|
|
21
21
|
workspaceToken: !0,
|
|
22
22
|
query: a(e),
|
|
23
|
-
variables: { filter: { workspaceId: n } }
|
|
23
|
+
variables: { filter: { workspaceId: n } },
|
|
24
|
+
suppressGlobalErrorEvent: !0
|
|
24
25
|
})).data?.projects ?? {
|
|
25
26
|
items: [],
|
|
26
27
|
total: 0
|
|
@@ -45,7 +46,8 @@ function l(e) {
|
|
|
45
46
|
gateway: "workspace",
|
|
46
47
|
authToken: e || void 0,
|
|
47
48
|
workspaceToken: !0,
|
|
48
|
-
query: a(t)
|
|
49
|
+
query: a(t),
|
|
50
|
+
suppressGlobalErrorEvent: !0
|
|
49
51
|
})).data, r = n?.workspaceResourceUsage ? {
|
|
50
52
|
usedBytes: Math.round(n.workspaceResourceUsage.currentStorageGb * s),
|
|
51
53
|
totalBytes: Math.round((n.workspaceResourceLimits?.maxStorageGb ?? 0) * s),
|
|
@@ -100,7 +102,8 @@ function d(e, t = !1) {
|
|
|
100
102
|
gateway: "workspace",
|
|
101
103
|
authToken: e || void 0,
|
|
102
104
|
workspaceToken: !0,
|
|
103
|
-
query: u
|
|
105
|
+
query: u,
|
|
106
|
+
suppressGlobalErrorEvent: !0
|
|
104
107
|
})).data;
|
|
105
108
|
return {
|
|
106
109
|
recentVibes: t?.recentVibes ?? [],
|
|
@@ -129,7 +132,8 @@ function f(e) {
|
|
|
129
132
|
let t = (await o({
|
|
130
133
|
gateway: "global",
|
|
131
134
|
authToken: e || void 0,
|
|
132
|
-
query: a(n)
|
|
135
|
+
query: a(n),
|
|
136
|
+
suppressGlobalErrorEvent: !0
|
|
133
137
|
})).data;
|
|
134
138
|
return {
|
|
135
139
|
currentUser: t?.currentUser ?? null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDashboardData.js","names":[],"sources":["../../../../src/pages/dashboard/hooks/useDashboardData.ts"],"sourcesContent":["/**\n * Dashboard Data Hooks\n *\n * Three parallel queries: workspace gateway (features + projects), global gateway.\n * Uses graphqlFetch from fe-libs with React Query for caching.\n *\n * IMPORTANT: Workspace/org/member data lives in the global tenant service\n * (global gateway), NOT in the workspace service (workspace gateway).\n * The workspace gateway is used for workspace-scoped features like\n * activity, calendar, tags, groups, projects, and workflows.\n *\n * All GraphQL operations are defined in src/operations/ and generated via codegen.\n * Document nodes are imported and converted to strings via print() for graphqlFetch.\n */\nimport { useQuery } from '@tanstack/react-query';\nimport { print } from 'graphql';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useActiveContext } from '@burdenoff/fe-libs/shared/providers/shell';\nimport {\n DashboardProjectsDocument,\n DashboardWorkspaceDataDocument,\n} from '../../../generated/wspace-operations';\nimport { DashboardGlobalDataDocument } from '../../../generated/global-operations';\nimport type {\n WorkspaceDashboardData,\n GlobalDashboardData,\n VibeSummary,\n SessionSummary,\n AgentFleetSummary,\n} from '../types';\n\nconst BYTES_PER_GB = 1024 ** 3;\n\n// ─── Hooks ────────────────────────────────────────────────────────────────────\n\nexport function useProjectsDashboardData(authToken?: string | null) {\n const { workspaceId } = useActiveContext();\n\n return useQuery({\n queryKey: ['dashboard', 'projects', workspaceId],\n enabled: !!authToken && !!workspaceId,\n queryFn: async (): Promise<WorkspaceDashboardData['projects']> => {\n const result = await graphqlFetch<{\n projects: WorkspaceDashboardData['projects'];\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n workspaceToken: true,\n query: print(DashboardProjectsDocument),\n variables: { filter: { workspaceId } },\n });\n\n return result.data?.projects ?? { items: [], total: 0 };\n },\n staleTime: 2 * 60 * 1000,\n gcTime: 5 * 60 * 1000,\n retry: 1,\n refetchOnWindowFocus: true,\n });\n}\n\nexport function useWorkspaceDashboardData(authToken?: string | null) {\n const { workspaceId } = useActiveContext();\n\n return useQuery({\n queryKey: ['dashboard', 'workspace', workspaceId],\n enabled: !!authToken && !!workspaceId,\n queryFn: async (): Promise<WorkspaceDashboardData> => {\n const result = await graphqlFetch<{\n getRecentActivities: WorkspaceDashboardData['recentActivities'];\n upcomingEvents: WorkspaceDashboardData['upcomingEvents'];\n getTags: WorkspaceDashboardData['tags'];\n myGroups: {\n edges: Array<{ node: { id: string; name: string; description?: string } }>;\n totalCount: number;\n };\n dashboardSummary: WorkspaceDashboardData['workflowStats'];\n workspaceResourceUsage: { currentStorageGb: number } | null;\n workspaceResourceLimits: { maxStorageGb?: number | null } | null;\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n workspaceToken: true,\n query: print(DashboardWorkspaceDataDocument),\n });\n\n // Gracefully handle partial failures — the gateway may return data for some\n // subgraphs and errors for others due to individual services being down.\n const data = result.data;\n const storageUsage = data?.workspaceResourceUsage\n ? {\n usedBytes: Math.round(data.workspaceResourceUsage.currentStorageGb * BYTES_PER_GB),\n totalBytes: Math.round(\n (data.workspaceResourceLimits?.maxStorageGb ?? 0) * BYTES_PER_GB\n ),\n fileCount: null,\n }\n : null;\n\n return {\n // Workspace data comes from the global gateway (see useGlobalDashboardData)\n // and is merged in at the DashboardPage level.\n workspaces: { items: [], total: 0 },\n // Projects fetched separately via useProjectsDashboardData to avoid\n // being poisoned by other subgraph errors in the combined query.\n projects: { items: [], total: 0 },\n recentActivities: data?.getRecentActivities ?? [],\n upcomingEvents: data?.upcomingEvents ?? [],\n tags: data?.getTags ?? { items: [], total: 0 },\n groups: {\n items: (data?.myGroups?.edges ?? []).map((e) => ({\n id: e.node.id,\n name: e.node.name,\n description: e.node.description,\n })),\n totalCount: data?.myGroups?.totalCount ?? 0,\n },\n workflowStats: data?.dashboardSummary ?? null,\n storageUsage,\n };\n },\n staleTime: 2 * 60 * 1000, // 2 minutes — dashboard data changes moderately\n gcTime: 5 * 60 * 1000,\n retry: 1,\n refetchOnWindowFocus: true,\n });\n}\n\n// ─── VibeControls-specific dashboard data ────────────────────────────────────\n// Issued as raw GraphQL strings to avoid coupling to codegen for the new\n// `recentVibes` + `agentFleetSummary` queries (added in wspace-vibecontrols-svc).\n// Falls back to empty state if any field is missing in the deployed schema,\n// so the dashboard degrades gracefully during schema rollout.\n\nconst VIBECONTROLS_DASHBOARD_QUERY = `\n query VibeControlsDashboardData {\n recentVibes(limit: 5) {\n id\n name\n status\n workspaceId\n updatedAt\n }\n activeSessions(pagination: { limit: 5 }) {\n items {\n id\n name\n status\n agent { id name }\n startedAt\n vibeId\n }\n }\n agentFleetSummary {\n total\n online\n offline\n degraded\n lastSeenAt\n }\n }\n`;\n\ninterface VibecontrolsDashboardResponse {\n recentVibes?: VibeSummary[] | null;\n activeSessions?: { items?: SessionSummary[] | null } | null;\n agentFleetSummary?: AgentFleetSummary | null;\n}\n\nexport interface VibecontrolsDashboardData {\n recentVibes: VibeSummary[];\n activeSessions: SessionSummary[];\n agentFleet: AgentFleetSummary | null;\n}\n\nexport function useVibecontrolsDashboardData(authToken?: string | null, enabled = false) {\n const { workspaceId } = useActiveContext();\n\n return useQuery({\n queryKey: ['dashboard', 'vibecontrols', workspaceId],\n enabled: !!authToken && !!workspaceId && enabled,\n queryFn: async (): Promise<VibecontrolsDashboardData> => {\n try {\n const result = await graphqlFetch<VibecontrolsDashboardResponse>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n workspaceToken: true,\n query: VIBECONTROLS_DASHBOARD_QUERY,\n });\n const data = result.data;\n return {\n recentVibes: data?.recentVibes ?? [],\n activeSessions: data?.activeSessions?.items ?? [],\n agentFleet: data?.agentFleetSummary ?? null,\n };\n } catch {\n // Schema may not yet be deployed in this environment — render empty.\n return { recentVibes: [], activeSessions: [], agentFleet: null };\n }\n },\n staleTime: 60 * 1000,\n gcTime: 5 * 60 * 1000,\n retry: 0,\n refetchOnWindowFocus: true,\n });\n}\n\nexport function useGlobalDashboardData(authToken?: string | null) {\n return useQuery({\n queryKey: ['dashboard', 'global'],\n enabled: !!authToken,\n queryFn: async (): Promise<GlobalDashboardData> => {\n const result = await graphqlFetch<{\n currentUser: GlobalDashboardData['currentUser'];\n myDashboardPreferences: Record<string, unknown> | null;\n myWorkspaces: {\n items: Array<{\n id: string;\n name: string;\n status: string;\n type: string;\n createdAt: string;\n memberCount: number;\n }>;\n total: number;\n };\n myOrganizations: {\n items: Array<{\n id: string;\n name: string;\n status: string;\n type: string;\n createdAt: string;\n }>;\n total: number;\n };\n }>({\n gateway: 'global',\n authToken: authToken || undefined,\n query: print(DashboardGlobalDataDocument),\n });\n\n const data = result.data;\n\n return {\n currentUser: data?.currentUser ?? null,\n dashboardPreferences: data?.myDashboardPreferences\n ? (data.myDashboardPreferences as unknown as GlobalDashboardData['dashboardPreferences'])\n : null,\n workspaces: data?.myWorkspaces ?? { items: [], total: 0 },\n organizations: data?.myOrganizations ?? { items: [], total: 0 },\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes — user info and prefs change rarely\n gcTime: 10 * 60 * 1000,\n retry: 1,\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDashboardData.js","names":[],"sources":["../../../../src/pages/dashboard/hooks/useDashboardData.ts"],"sourcesContent":["/**\n * Dashboard Data Hooks\n *\n * Three parallel queries: workspace gateway (features + projects), global gateway.\n * Uses graphqlFetch from fe-libs with React Query for caching.\n *\n * IMPORTANT: Workspace/org/member data lives in the global tenant service\n * (global gateway), NOT in the workspace service (workspace gateway).\n * The workspace gateway is used for workspace-scoped features like\n * activity, calendar, tags, groups, projects, and workflows.\n *\n * All GraphQL operations are defined in src/operations/ and generated via codegen.\n * Document nodes are imported and converted to strings via print() for graphqlFetch.\n */\nimport { useQuery } from '@tanstack/react-query';\nimport { print } from 'graphql';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useActiveContext } from '@burdenoff/fe-libs/shared/providers/shell';\nimport {\n DashboardProjectsDocument,\n DashboardWorkspaceDataDocument,\n} from '../../../generated/wspace-operations';\nimport { DashboardGlobalDataDocument } from '../../../generated/global-operations';\nimport type {\n WorkspaceDashboardData,\n GlobalDashboardData,\n VibeSummary,\n SessionSummary,\n AgentFleetSummary,\n} from '../types';\n\nconst BYTES_PER_GB = 1024 ** 3;\n\n// ─── Hooks ────────────────────────────────────────────────────────────────────\n\nexport function useProjectsDashboardData(authToken?: string | null) {\n const { workspaceId } = useActiveContext();\n\n return useQuery({\n queryKey: ['dashboard', 'projects', workspaceId],\n enabled: !!authToken && !!workspaceId,\n queryFn: async (): Promise<WorkspaceDashboardData['projects']> => {\n const result = await graphqlFetch<{\n projects: WorkspaceDashboardData['projects'];\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n workspaceToken: true,\n query: print(DashboardProjectsDocument),\n variables: { filter: { workspaceId } },\n // Dashboard widgets degrade gracefully (empty state) when a subgraph\n // is unavailable; a transient backend failure here is not actionable\n // for the user, so suppress the global error toast/console log.\n suppressGlobalErrorEvent: true,\n });\n\n return result.data?.projects ?? { items: [], total: 0 };\n },\n staleTime: 2 * 60 * 1000,\n gcTime: 5 * 60 * 1000,\n retry: 1,\n refetchOnWindowFocus: true,\n });\n}\n\nexport function useWorkspaceDashboardData(authToken?: string | null) {\n const { workspaceId } = useActiveContext();\n\n return useQuery({\n queryKey: ['dashboard', 'workspace', workspaceId],\n enabled: !!authToken && !!workspaceId,\n queryFn: async (): Promise<WorkspaceDashboardData> => {\n const result = await graphqlFetch<{\n getRecentActivities: WorkspaceDashboardData['recentActivities'];\n upcomingEvents: WorkspaceDashboardData['upcomingEvents'];\n getTags: WorkspaceDashboardData['tags'];\n myGroups: {\n edges: Array<{ node: { id: string; name: string; description?: string } }>;\n totalCount: number;\n };\n dashboardSummary: WorkspaceDashboardData['workflowStats'];\n workspaceResourceUsage: { currentStorageGb: number } | null;\n workspaceResourceLimits: { maxStorageGb?: number | null } | null;\n }>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n workspaceToken: true,\n query: print(DashboardWorkspaceDataDocument),\n // This combined query fans out across several workspace subgraphs\n // (activity, calendar, tags, groups, workflow, files). A single\n // subgraph 500 nulls the whole response, but every field below is\n // null-coalesced to an empty state, so the dashboard still renders.\n // Suppress the global error toast/console log — a degraded subgraph\n // is not user-actionable here.\n suppressGlobalErrorEvent: true,\n });\n\n // Gracefully handle partial failures — the gateway may return data for some\n // subgraphs and errors for others due to individual services being down.\n const data = result.data;\n const storageUsage = data?.workspaceResourceUsage\n ? {\n usedBytes: Math.round(data.workspaceResourceUsage.currentStorageGb * BYTES_PER_GB),\n totalBytes: Math.round(\n (data.workspaceResourceLimits?.maxStorageGb ?? 0) * BYTES_PER_GB\n ),\n fileCount: null,\n }\n : null;\n\n return {\n // Workspace data comes from the global gateway (see useGlobalDashboardData)\n // and is merged in at the DashboardPage level.\n workspaces: { items: [], total: 0 },\n // Projects fetched separately via useProjectsDashboardData to avoid\n // being poisoned by other subgraph errors in the combined query.\n projects: { items: [], total: 0 },\n recentActivities: data?.getRecentActivities ?? [],\n upcomingEvents: data?.upcomingEvents ?? [],\n tags: data?.getTags ?? { items: [], total: 0 },\n groups: {\n items: (data?.myGroups?.edges ?? []).map((e) => ({\n id: e.node.id,\n name: e.node.name,\n description: e.node.description,\n })),\n totalCount: data?.myGroups?.totalCount ?? 0,\n },\n workflowStats: data?.dashboardSummary ?? null,\n storageUsage,\n };\n },\n staleTime: 2 * 60 * 1000, // 2 minutes — dashboard data changes moderately\n gcTime: 5 * 60 * 1000,\n retry: 1,\n refetchOnWindowFocus: true,\n });\n}\n\n// ─── VibeControls-specific dashboard data ────────────────────────────────────\n// Issued as raw GraphQL strings to avoid coupling to codegen for the new\n// `recentVibes` + `agentFleetSummary` queries (added in wspace-vibecontrols-svc).\n// Falls back to empty state if any field is missing in the deployed schema,\n// so the dashboard degrades gracefully during schema rollout.\n\nconst VIBECONTROLS_DASHBOARD_QUERY = `\n query VibeControlsDashboardData {\n recentVibes(limit: 5) {\n id\n name\n status\n workspaceId\n updatedAt\n }\n activeSessions(pagination: { limit: 5 }) {\n items {\n id\n name\n status\n agent { id name }\n startedAt\n vibeId\n }\n }\n agentFleetSummary {\n total\n online\n offline\n degraded\n lastSeenAt\n }\n }\n`;\n\ninterface VibecontrolsDashboardResponse {\n recentVibes?: VibeSummary[] | null;\n activeSessions?: { items?: SessionSummary[] | null } | null;\n agentFleetSummary?: AgentFleetSummary | null;\n}\n\nexport interface VibecontrolsDashboardData {\n recentVibes: VibeSummary[];\n activeSessions: SessionSummary[];\n agentFleet: AgentFleetSummary | null;\n}\n\nexport function useVibecontrolsDashboardData(authToken?: string | null, enabled = false) {\n const { workspaceId } = useActiveContext();\n\n return useQuery({\n queryKey: ['dashboard', 'vibecontrols', workspaceId],\n enabled: !!authToken && !!workspaceId && enabled,\n queryFn: async (): Promise<VibecontrolsDashboardData> => {\n try {\n const result = await graphqlFetch<VibecontrolsDashboardResponse>({\n gateway: 'workspace',\n authToken: authToken || undefined,\n workspaceToken: true,\n query: VIBECONTROLS_DASHBOARD_QUERY,\n // Schema may not be deployed in this environment; handled locally\n // (empty fallback below). Suppress the global error toast/log.\n suppressGlobalErrorEvent: true,\n });\n const data = result.data;\n return {\n recentVibes: data?.recentVibes ?? [],\n activeSessions: data?.activeSessions?.items ?? [],\n agentFleet: data?.agentFleetSummary ?? null,\n };\n } catch {\n // Schema may not yet be deployed in this environment — render empty.\n return { recentVibes: [], activeSessions: [], agentFleet: null };\n }\n },\n staleTime: 60 * 1000,\n gcTime: 5 * 60 * 1000,\n retry: 0,\n refetchOnWindowFocus: true,\n });\n}\n\nexport function useGlobalDashboardData(authToken?: string | null) {\n return useQuery({\n queryKey: ['dashboard', 'global'],\n enabled: !!authToken,\n queryFn: async (): Promise<GlobalDashboardData> => {\n const result = await graphqlFetch<{\n currentUser: GlobalDashboardData['currentUser'];\n myDashboardPreferences: Record<string, unknown> | null;\n myWorkspaces: {\n items: Array<{\n id: string;\n name: string;\n status: string;\n type: string;\n createdAt: string;\n memberCount: number;\n }>;\n total: number;\n };\n myOrganizations: {\n items: Array<{\n id: string;\n name: string;\n status: string;\n type: string;\n createdAt: string;\n }>;\n total: number;\n };\n }>({\n gateway: 'global',\n authToken: authToken || undefined,\n query: print(DashboardGlobalDataDocument),\n // Dashboard data is null-coalesced to empty state below; a transient\n // subgraph failure should not raise a user-facing error here.\n suppressGlobalErrorEvent: true,\n });\n\n const data = result.data;\n\n return {\n currentUser: data?.currentUser ?? null,\n dashboardPreferences: data?.myDashboardPreferences\n ? (data.myDashboardPreferences as unknown as GlobalDashboardData['dashboardPreferences'])\n : null,\n workspaces: data?.myWorkspaces ?? { items: [], total: 0 },\n organizations: data?.myOrganizations ?? { items: [], total: 0 },\n };\n },\n staleTime: 5 * 60 * 1000, // 5 minutes — user info and prefs change rarely\n gcTime: 10 * 60 * 1000,\n retry: 1,\n });\n}\n"],"mappings":"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"}
|