@elevasis/ui 2.6.0 → 2.7.0

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 (37) hide show
  1. package/dist/{chunk-CC4WGHGG.js → chunk-6FDGVZFL.js} +2 -2
  2. package/dist/{chunk-MU5EZV3L.js → chunk-HRIJZKFL.js} +1 -1
  3. package/dist/{chunk-FH5QGCXL.js → chunk-IFH4L6CR.js} +181 -6
  4. package/dist/{chunk-4GZ6VZWO.js → chunk-N6GYYWY3.js} +1 -1
  5. package/dist/{chunk-PHRDZFJT.js → chunk-SBND6P3L.js} +2 -2
  6. package/dist/{chunk-O4PMRC6J.js → chunk-SPMKW4VO.js} +29 -36
  7. package/dist/{chunk-X4BLH3JL.js → chunk-T6R3V4GW.js} +2 -2
  8. package/dist/{chunk-DQJM7T2N.js → chunk-TENLM2GN.js} +2 -2
  9. package/dist/{chunk-POFDRPDI.js → chunk-V6Z2U6ZV.js} +1 -1
  10. package/dist/{chunk-PEDPD3PU.js → chunk-VGBMSGYC.js} +1 -1
  11. package/dist/{chunk-6RGNVHG3.js → chunk-X4HUZINF.js} +2 -2
  12. package/dist/{chunk-ZB5PKIX5.js → chunk-Z5RHDI7T.js} +2 -2
  13. package/dist/components/index.d.ts +2 -1
  14. package/dist/components/index.js +32 -23
  15. package/dist/features/auth/index.js +9 -2
  16. package/dist/features/crm/index.js +5 -5
  17. package/dist/features/dashboard/index.js +5 -5
  18. package/dist/features/delivery/index.js +5 -5
  19. package/dist/features/lead-gen/index.js +8 -8
  20. package/dist/features/monitoring/index.js +6 -6
  21. package/dist/features/operations/index.js +7 -7
  22. package/dist/features/settings/index.d.ts +2 -1
  23. package/dist/features/settings/index.js +5 -5
  24. package/dist/hooks/index.d.ts +2 -1
  25. package/dist/hooks/index.js +4 -4
  26. package/dist/hooks/published.d.ts +2 -1
  27. package/dist/hooks/published.js +3 -3
  28. package/dist/index.d.ts +176 -18
  29. package/dist/index.js +4 -4
  30. package/dist/initialization/index.d.ts +2 -1
  31. package/dist/organization/index.d.ts +2 -1
  32. package/dist/provider/index.d.ts +174 -17
  33. package/dist/provider/index.js +2 -2
  34. package/dist/provider/published.d.ts +174 -17
  35. package/dist/provider/published.js +1 -1
  36. package/dist/types/index.d.ts +2 -1
  37. package/package.json +60 -88
@@ -2,8 +2,8 @@ import { FilterBar } from './chunk-PDHTXPSF.js';
2
2
  import { CustomModal } from './chunk-GBMNCNHX.js';
3
3
  import { AppShellLoader } from './chunk-YEX4MQSY.js';
4
4
  import { useAvailablePresets } from './chunk-VNUOQQNY.js';
5
- import { useDeleteCredential, useCreateCredential, useCredentials, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, useUserMemberships, useUpdateWebhookEndpoint, useDeleteWebhookEndpoint, useCreateWebhookEndpoint, useListWebhookEndpoints, useUpdateMemberConfig, useOrganizationMembers, useUpdateCredential, CredentialSchemas } from './chunk-DQJM7T2N.js';
6
- import { useResources, showErrorNotification } from './chunk-POFDRPDI.js';
5
+ import { useDeleteCredential, useCreateCredential, useCredentials, MEMBERSHIP_STATUS_COLORS, transformMembershipToTableRow, useUserMemberships, useUpdateWebhookEndpoint, useDeleteWebhookEndpoint, useCreateWebhookEndpoint, useListWebhookEndpoints, useUpdateMemberConfig, useOrganizationMembers, useUpdateCredential, CredentialSchemas } from './chunk-TENLM2GN.js';
6
+ import { useResources, showErrorNotification } from './chunk-V6Z2U6ZV.js';
7
7
  import { ListSkeleton, EmptyState, PageTitleCaption, CardHeader, APIErrorAlert, StatCard } from './chunk-Y3D3WFJG.js';
8
8
  import { formatDateTime, OAUTH_POPUP_CHECK_INTERVAL, OAUTH_FLOW_TIMEOUT } from './chunk-IOKL7BKE.js';
9
9
  import { useInitialization } from './chunk-TUXTSEAF.js';
@@ -3,7 +3,7 @@ import { PageContainer } from './chunk-BZZCNLT6.js';
3
3
  import { SubshellSidebarSection, SubshellNavItem } from './chunk-27COZ5AH.js';
4
4
  import { FilterBar } from './chunk-PDHTXPSF.js';
5
5
  import { CustomModal } from './chunk-GBMNCNHX.js';
6
- import { useDealTasksDue, useDeals, useCreateDealTask, useDeleteDeal, useTableSort, sortData, usePaginationState, useTableSelection, useDealDetail } from './chunk-POFDRPDI.js';
6
+ import { useDealTasksDue, useDeals, useCreateDealTask, useDeleteDeal, useTableSort, sortData, usePaginationState, useTableSelection, useDealDetail } from './chunk-V6Z2U6ZV.js';
7
7
  import { SubshellContentContainer } from './chunk-RX4UWZZR.js';
8
8
  import { CenteredErrorState, CardHeader, PageTitleCaption, EmptyState, ActivityTimeline } from './chunk-Y3D3WFJG.js';
9
9
  import { PAGE_SIZE_DEFAULT, formatTimeAgo } from './chunk-IOKL7BKE.js';
@@ -1,17 +1,17 @@
1
1
  import { ChatHeader, ChatSidebar } from './chunk-ROSMICXG.js';
2
2
  import { SubshellLoader, CollapsibleSidebarGroup } from './chunk-IDACMRGQ.js';
3
- import { ResourceHealthPanel } from './chunk-PEDPD3PU.js';
3
+ import { ResourceHealthPanel } from './chunk-VGBMSGYC.js';
4
4
  import { PageContainer } from './chunk-BZZCNLT6.js';
5
5
  import { SubshellSidebarSection, SubshellNavItem } from './chunk-27COZ5AH.js';
6
6
  import { CustomModal, ConfirmationModal } from './chunk-GBMNCNHX.js';
7
- import { BaseNode, useGraphTheme, BaseEdge, ExecutionStats, UnifiedWorkflowGraph, WorkflowExecutionTimeline, AgentExecutionVisualizer, AgentExecutionTimeline, GraphBackground, GraphFitViewButton, GraphFitViewHandler } from './chunk-ZB5PKIX5.js';
7
+ import { BaseNode, useGraphTheme, BaseEdge, ExecutionStats, UnifiedWorkflowGraph, WorkflowExecutionTimeline, AgentExecutionVisualizer, AgentExecutionTimeline, GraphBackground, GraphFitViewButton, GraphFitViewHandler } from './chunk-Z5RHDI7T.js';
8
8
  import { useCyberColors, CyberDonut } from './chunk-KFICYU6S.js';
9
9
  import { AppShellLoader } from './chunk-YEX4MQSY.js';
10
10
  import { getResourceStatusColor, useMergedExecution, useTimelineData, useAgentIterationData, getStatusIcon } from './chunk-XA34RETF.js';
11
- import { useStatusFilter, useResourceSearch, useResourcesDomainFilters, filterByDomainFilters, useCommandViewDomainFilters } from './chunk-DQJM7T2N.js';
12
- import { useErrorDetail, useExecution, useArchivedLogs, useDeleteExecution, useRetryExecution, useCancelExecution, useCommandQueueTotals, usePaginationState, useResources, useRecentExecutionsByResource, useExecuteAsync, useResourceDefinition, isSessionCapable, useDeleteTask, useCommandQueue, useSubmitAction, useCommandViewData, useCommandViewStats, useResourceExecutions, useCheckpointTasks, useCalibrationProjects, useCalibrationProject, useAllCalibrationProjects, useCommandViewStore, useCalibrationSSE, useCalibrationRunFull, useExecuteRun, useGradeRun, useCalibrationRuns, useExecutionPanelState, useDeleteSession, useCreateSession, useSessions, useSessionExecutions, useSession, showApiErrorNotification, showSuccessNotification, calibrationKeys, useDeleteProject, useCreateProject, useBulkDeleteExecutions } from './chunk-POFDRPDI.js';
11
+ import { useStatusFilter, useResourceSearch, useResourcesDomainFilters, filterByDomainFilters, useCommandViewDomainFilters } from './chunk-TENLM2GN.js';
12
+ import { useErrorDetail, useExecution, useArchivedLogs, useDeleteExecution, useRetryExecution, useCancelExecution, useCommandQueueTotals, usePaginationState, useResources, useRecentExecutionsByResource, useExecuteAsync, useResourceDefinition, isSessionCapable, useDeleteTask, useCommandQueue, useSubmitAction, useCommandViewData, useCommandViewStats, useResourceExecutions, useCheckpointTasks, useCalibrationProjects, useCalibrationProject, useAllCalibrationProjects, useCommandViewStore, useCalibrationSSE, useCalibrationRunFull, useExecuteRun, useGradeRun, useCalibrationRuns, useExecutionPanelState, useDeleteSession, useCreateSession, useSessions, useSessionExecutions, useSession, showApiErrorNotification, showSuccessNotification, calibrationKeys, useDeleteProject, useCreateProject, useBulkDeleteExecutions } from './chunk-V6Z2U6ZV.js';
13
13
  import { useGraphHighlighting, calculateGraphHeight, Graph_module_css_default, GRAPH_CONSTANTS } from './chunk-22UVE3RA.js';
14
- import { useOptionalElevasisFeatures, useElevasisFeatures } from './chunk-O4PMRC6J.js';
14
+ import { useOptionalElevasisFeatures, useElevasisFeatures } from './chunk-SPMKW4VO.js';
15
15
  import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer } from './chunk-RX4UWZZR.js';
16
16
  import { JsonViewer, CardHeader, PageTitleCaption, CollapsibleSection, TabCountBadge, ResourceCard, ContextViewer, EmptyState, APIErrorAlert } from './chunk-Y3D3WFJG.js';
17
17
  import { StyledMarkdown } from './chunk-3KMDHCAR.js';
@@ -189,7 +189,7 @@ var OrganizationModelNavigationSchema = z.object({
189
189
  });
190
190
 
191
191
  // ../core/src/organization-model/schema.ts
192
- var OrganizationModelSchema = z.object({
192
+ var OrganizationModelSchemaBase = z.object({
193
193
  version: z.literal(1).default(1),
194
194
  domains: z.array(SemanticDomainSchema).default([]),
195
195
  branding: OrganizationModelBrandingSchema,
@@ -200,6 +200,181 @@ var OrganizationModelSchema = z.object({
200
200
  delivery: OrganizationModelDeliverySchema,
201
201
  resourceMappings: z.array(ResourceMappingSchema).default([])
202
202
  });
203
+ function addIssue(ctx, path, message) {
204
+ ctx.addIssue({
205
+ code: z.ZodIssueCode.custom,
206
+ path,
207
+ message
208
+ });
209
+ }
210
+ function collectIds(items, ctx, collectionPath, label) {
211
+ const itemsById = /* @__PURE__ */ new Map();
212
+ items.forEach((item, index) => {
213
+ if (itemsById.has(item.id)) {
214
+ addIssue(ctx, [...collectionPath, index, "id"], `${label} id "${item.id}" must be unique`);
215
+ return;
216
+ }
217
+ itemsById.set(item.id, item);
218
+ });
219
+ return itemsById;
220
+ }
221
+ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ctx) => {
222
+ const domainsById = collectIds(model.domains, ctx, ["domains"], "Domain");
223
+ const surfacesById = collectIds(model.navigation.surfaces, ctx, ["navigation", "surfaces"], "Surface");
224
+ collectIds(model.navigation.groups, ctx, ["navigation", "groups"], "Navigation group");
225
+ collectIds(model.resourceMappings, ctx, ["resourceMappings"], "Resource mapping");
226
+ const resourceMappingsByResourceId = /* @__PURE__ */ new Map();
227
+ model.resourceMappings.forEach((resourceMapping, index) => {
228
+ if (resourceMappingsByResourceId.has(resourceMapping.resourceId)) {
229
+ addIssue(
230
+ ctx,
231
+ ["resourceMappings", index, "resourceId"],
232
+ `Resource mapping resourceId "${resourceMapping.resourceId}" must be unique`
233
+ );
234
+ return;
235
+ }
236
+ resourceMappingsByResourceId.set(resourceMapping.resourceId, resourceMapping);
237
+ });
238
+ if (model.navigation.defaultSurfaceId && !surfacesById.has(model.navigation.defaultSurfaceId)) {
239
+ addIssue(
240
+ ctx,
241
+ ["navigation", "defaultSurfaceId"],
242
+ `Default surface "${model.navigation.defaultSurfaceId}" must reference a declared navigation surface`
243
+ );
244
+ }
245
+ model.navigation.groups.forEach((group, groupIndex) => {
246
+ group.surfaceIds.forEach((surfaceId, surfaceIndex) => {
247
+ if (!surfacesById.has(surfaceId)) {
248
+ addIssue(
249
+ ctx,
250
+ ["navigation", "groups", groupIndex, "surfaceIds", surfaceIndex],
251
+ `Navigation group "${group.id}" references unknown surface "${surfaceId}"`
252
+ );
253
+ }
254
+ });
255
+ });
256
+ model.domains.forEach((domain, domainIndex) => {
257
+ domain.surfaceIds.forEach((surfaceId, surfaceIndex) => {
258
+ const surface = surfacesById.get(surfaceId);
259
+ if (!surface) {
260
+ addIssue(
261
+ ctx,
262
+ ["domains", domainIndex, "surfaceIds", surfaceIndex],
263
+ `Domain "${domain.id}" references unknown surface "${surfaceId}"`
264
+ );
265
+ return;
266
+ }
267
+ if (!surface.domainIds.includes(domain.id)) {
268
+ addIssue(
269
+ ctx,
270
+ ["domains", domainIndex, "surfaceIds", surfaceIndex],
271
+ `Domain "${domain.id}" references surface "${surfaceId}" but that surface does not include domain "${domain.id}"`
272
+ );
273
+ }
274
+ });
275
+ domain.resourceIds.forEach((resourceId, resourceIndex) => {
276
+ const resourceMapping = resourceMappingsByResourceId.get(resourceId);
277
+ if (!resourceMapping) {
278
+ addIssue(
279
+ ctx,
280
+ ["domains", domainIndex, "resourceIds", resourceIndex],
281
+ `Domain "${domain.id}" references unknown resource "${resourceId}"`
282
+ );
283
+ return;
284
+ }
285
+ if (!resourceMapping.domainIds.includes(domain.id)) {
286
+ addIssue(
287
+ ctx,
288
+ ["domains", domainIndex, "resourceIds", resourceIndex],
289
+ `Domain "${domain.id}" references resource "${resourceId}" but that resource mapping does not include domain "${domain.id}"`
290
+ );
291
+ }
292
+ });
293
+ });
294
+ model.navigation.surfaces.forEach((surface, surfaceIndex) => {
295
+ if (surface.parentId && !surfacesById.has(surface.parentId)) {
296
+ addIssue(
297
+ ctx,
298
+ ["navigation", "surfaces", surfaceIndex, "parentId"],
299
+ `Surface "${surface.id}" references unknown parent surface "${surface.parentId}"`
300
+ );
301
+ }
302
+ surface.domainIds.forEach((domainId, domainIndex) => {
303
+ const domain = domainsById.get(domainId);
304
+ if (!domain) {
305
+ addIssue(
306
+ ctx,
307
+ ["navigation", "surfaces", surfaceIndex, "domainIds", domainIndex],
308
+ `Surface "${surface.id}" references unknown domain "${domainId}"`
309
+ );
310
+ return;
311
+ }
312
+ if (!domain.surfaceIds.includes(surface.id)) {
313
+ addIssue(
314
+ ctx,
315
+ ["navigation", "surfaces", surfaceIndex, "domainIds", domainIndex],
316
+ `Surface "${surface.id}" references domain "${domainId}" but that domain does not include surface "${surface.id}"`
317
+ );
318
+ }
319
+ });
320
+ surface.resourceIds.forEach((resourceId, resourceIndex) => {
321
+ const resourceMapping = resourceMappingsByResourceId.get(resourceId);
322
+ if (!resourceMapping) {
323
+ addIssue(
324
+ ctx,
325
+ ["navigation", "surfaces", surfaceIndex, "resourceIds", resourceIndex],
326
+ `Surface "${surface.id}" references unknown resource "${resourceId}"`
327
+ );
328
+ return;
329
+ }
330
+ if (!resourceMapping.surfaceIds.includes(surface.id)) {
331
+ addIssue(
332
+ ctx,
333
+ ["navigation", "surfaces", surfaceIndex, "resourceIds", resourceIndex],
334
+ `Surface "${surface.id}" references resource "${resourceId}" but that resource mapping does not include surface "${surface.id}"`
335
+ );
336
+ }
337
+ });
338
+ });
339
+ model.resourceMappings.forEach((resourceMapping, resourceIndex) => {
340
+ resourceMapping.domainIds.forEach((domainId, domainIndex) => {
341
+ const domain = domainsById.get(domainId);
342
+ if (!domain) {
343
+ addIssue(
344
+ ctx,
345
+ ["resourceMappings", resourceIndex, "domainIds", domainIndex],
346
+ `Resource mapping "${resourceMapping.id}" references unknown domain "${domainId}"`
347
+ );
348
+ return;
349
+ }
350
+ if (!domain.resourceIds.includes(resourceMapping.resourceId)) {
351
+ addIssue(
352
+ ctx,
353
+ ["resourceMappings", resourceIndex, "domainIds", domainIndex],
354
+ `Resource mapping "${resourceMapping.id}" references domain "${domainId}" but that domain does not include resource "${resourceMapping.resourceId}"`
355
+ );
356
+ }
357
+ });
358
+ resourceMapping.surfaceIds.forEach((surfaceId, surfaceIndex) => {
359
+ const surface = surfacesById.get(surfaceId);
360
+ if (!surface) {
361
+ addIssue(
362
+ ctx,
363
+ ["resourceMappings", resourceIndex, "surfaceIds", surfaceIndex],
364
+ `Resource mapping "${resourceMapping.id}" references unknown surface "${surfaceId}"`
365
+ );
366
+ return;
367
+ }
368
+ if (!surface.resourceIds.includes(resourceMapping.resourceId)) {
369
+ addIssue(
370
+ ctx,
371
+ ["resourceMappings", resourceIndex, "surfaceIds", surfaceIndex],
372
+ `Resource mapping "${resourceMapping.id}" references surface "${surfaceId}" but that surface does not include resource "${resourceMapping.resourceId}"`
373
+ );
374
+ }
375
+ });
376
+ });
377
+ });
203
378
  var OrganizationGraphNodeKindSchema = z.enum([
204
379
  "organization",
205
380
  "feature",
@@ -1,6 +1,6 @@
1
1
  import { PRESETS, getPreset, generateShades, mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-47YILFON.js';
2
2
  import { AppBackground } from './chunk-CYXZHBP4.js';
3
- import { ElevasisCoreProvider } from './chunk-O4PMRC6J.js';
3
+ import { ElevasisCoreProvider } from './chunk-SPMKW4VO.js';
4
4
  import { ElevasisLoader } from './chunk-Y3D3WFJG.js';
5
5
  import { AppearanceProvider } from './chunk-QJ2KCHKX.js';
6
6
  import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-IOKL7BKE.js';
@@ -3,8 +3,8 @@ import { CustomModal } from './chunk-GBMNCNHX.js';
3
3
  import { CyberAreaChart, CostTrendChart, ActivityTrendChart } from './chunk-KFICYU6S.js';
4
4
  import { AppShellLoader } from './chunk-YEX4MQSY.js';
5
5
  import { formatDuration } from './chunk-XA34RETF.js';
6
- import { useExecutionLogsFilters, useTimeRangeDates, useActivityFilters } from './chunk-DQJM7T2N.js';
7
- import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead, useTestNotification } from './chunk-POFDRPDI.js';
6
+ import { useExecutionLogsFilters, useTimeRangeDates, useActivityFilters } from './chunk-TENLM2GN.js';
7
+ import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead, useTestNotification } from './chunk-V6Z2U6ZV.js';
8
8
  import { formatBucketTime, getTimeRangeDates } from './chunk-LXHZYSMQ.js';
9
9
  import { CenteredErrorState, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, EmptyState, PageTitleCaption, JsonViewer } from './chunk-Y3D3WFJG.js';
10
10
  import { PAGE_SIZE_DEFAULT } from './chunk-IOKL7BKE.js';
@@ -127,7 +127,8 @@ function OrgServiceBridge({
127
127
  }
128
128
  var FEATURE_KEY_ALIASES = {
129
129
  crm: "acquisition",
130
- "lead-gen": "acquisition"
130
+ "lead-gen": "acquisition",
131
+ projects: "delivery"
131
132
  };
132
133
  function createUseFeatureAccess({
133
134
  useInitialization: useInitialization2,
@@ -358,22 +359,35 @@ function filterNavLinks(links, disabledSubsectionPaths, isFeatureEnabled) {
358
359
  ];
359
360
  });
360
361
  }
362
+ function createShellNavItem(navEntry, placement, source, accessFeatureKey, links = navEntry.links) {
363
+ return {
364
+ ...navEntry,
365
+ links,
366
+ placement,
367
+ source,
368
+ accessFeatureKey
369
+ };
370
+ }
371
+ function createFeatureShellNavItem(feature, links = feature.navEntry?.links) {
372
+ if (!feature.navEntry) {
373
+ return void 0;
374
+ }
375
+ return createShellNavItem(
376
+ feature.navEntry,
377
+ "primary",
378
+ "feature",
379
+ feature.access.featureKey,
380
+ links
381
+ );
382
+ }
361
383
  function getFeatureNavItems(features, disabledSubsectionPaths, isFeatureEnabled) {
362
384
  return features.flatMap((feature) => {
363
385
  if (!feature.navEntry) {
364
386
  return [];
365
387
  }
366
388
  const links = feature.navEntry.links?.length ? filterNavLinks(feature.navEntry.links, disabledSubsectionPaths, isFeatureEnabled) : void 0;
367
- return [
368
- {
369
- ...feature.navEntry,
370
- links,
371
- placement: "primary",
372
- source: "feature",
373
- shellModuleKey: feature.key,
374
- accessFeatureKey: feature.access.featureKey
375
- }
376
- ];
389
+ const navItem = createFeatureShellNavItem(feature, links);
390
+ return navItem ? [navItem] : [];
377
391
  });
378
392
  }
379
393
  function resolveAppShellOverrides(appShellOverrides, organizationModel) {
@@ -401,15 +415,7 @@ function getAppShellNavItems(navItems, placement, disabledSubsectionPaths, isFea
401
415
  if (navItem.links && !links?.length && !navItem.link) {
402
416
  return [];
403
417
  }
404
- return [
405
- {
406
- ...navItem,
407
- links,
408
- placement,
409
- source: "app",
410
- accessFeatureKey: navItem.featureKey
411
- }
412
- ];
418
+ return [createShellNavItem(navItem, placement, "app", navItem.featureKey, links)];
413
419
  });
414
420
  }
415
421
  function findMatchingNavLink(links, currentPath) {
@@ -446,13 +452,7 @@ function resolveRoute(features, currentPath, disabledSubsectionPaths, isFeatureE
446
452
  status: "hidden",
447
453
  path: currentPath,
448
454
  feature,
449
- navItem: feature.navEntry ? {
450
- ...feature.navEntry,
451
- placement: "primary",
452
- source: "feature",
453
- shellModuleKey: feature.key,
454
- accessFeatureKey: feature.access.featureKey
455
- } : void 0,
455
+ navItem: createFeatureShellNavItem(feature),
456
456
  navLink: matchedLink
457
457
  };
458
458
  }
@@ -460,13 +460,7 @@ function resolveRoute(features, currentPath, disabledSubsectionPaths, isFeatureE
460
460
  status: "matched",
461
461
  path: currentPath,
462
462
  feature,
463
- navItem: feature.navEntry ? {
464
- ...feature.navEntry,
465
- placement: "primary",
466
- source: "feature",
467
- shellModuleKey: feature.key,
468
- accessFeatureKey: feature.access.featureKey
469
- } : void 0,
463
+ navItem: createFeatureShellNavItem(feature),
470
464
  navLink: matchedLink ?? void 0
471
465
  };
472
466
  }
@@ -589,10 +583,9 @@ function ElevasisFeaturesProvider({
589
583
  );
590
584
  const shellRuntime = useMemo(
591
585
  () => ({
592
- shellModel,
593
586
  resolveRoute: resolveRouteByPath
594
587
  }),
595
- [shellModel, resolveRouteByPath]
588
+ [resolveRouteByPath]
596
589
  );
597
590
  const value = useMemo(
598
591
  () => ({
@@ -1,10 +1,10 @@
1
- import { ResourceExecuteDialog } from './chunk-FH5QGCXL.js';
1
+ import { ResourceExecuteDialog } from './chunk-IFH4L6CR.js';
2
2
  import { TableSelectionToolbar, SortableHeader } from './chunk-TUMSNGTX.js';
3
3
  import { PageContainer } from './chunk-BZZCNLT6.js';
4
4
  import { SubshellSidebarSection, SubshellNavItem } from './chunk-27COZ5AH.js';
5
5
  import { FilterBar } from './chunk-PDHTXPSF.js';
6
6
  import { CustomModal } from './chunk-GBMNCNHX.js';
7
- import { showApiErrorNotification, acquisitionListKeys, showSuccessNotification, useListsTelemetry, useLists, useCreateList, useTableSort, sortData, usePaginationState, useTableSelection, useList, useListProgress, useListExecutions, useResourceDefinition, useCompanies, useDeleteCompanies, useContacts, useDeleteContacts } from './chunk-POFDRPDI.js';
7
+ import { showApiErrorNotification, acquisitionListKeys, showSuccessNotification, useListsTelemetry, useLists, useCreateList, useTableSort, sortData, usePaginationState, useTableSelection, useList, useListProgress, useListExecutions, useResourceDefinition, useCompanies, useDeleteCompanies, useContacts, useDeleteContacts } from './chunk-V6Z2U6ZV.js';
8
8
  import { SubshellContentContainer } from './chunk-RX4UWZZR.js';
9
9
  import { PageTitleCaption, CenteredErrorState, StatCard, EmptyState } from './chunk-Y3D3WFJG.js';
10
10
  import { useElevasisServices } from './chunk-QEPXAWE2.js';
@@ -1,6 +1,6 @@
1
- import { CredentialNameSchema, UuidSchema, useErrorNotification, showApiErrorNotification } from './chunk-POFDRPDI.js';
1
+ import { CredentialNameSchema, UuidSchema, useErrorNotification, showApiErrorNotification } from './chunk-V6Z2U6ZV.js';
2
2
  import { getTimeRangeDates } from './chunk-LXHZYSMQ.js';
3
- import { useNotificationAdapter } from './chunk-O4PMRC6J.js';
3
+ import { useNotificationAdapter } from './chunk-SPMKW4VO.js';
4
4
  import { GC_TIME_SHORT, STALE_TIME_MONITORING, GC_TIME_MEDIUM, STALE_TIME_DEFAULT } from './chunk-IOKL7BKE.js';
5
5
  import { useElevasisServices } from './chunk-QEPXAWE2.js';
6
6
  import { z } from 'zod';
@@ -1,6 +1,6 @@
1
1
  import { getTimeRangeDates, observabilityKeys } from './chunk-LXHZYSMQ.js';
2
2
  import { GRAPH_CONSTANTS } from './chunk-22UVE3RA.js';
3
- import { useNotificationAdapter } from './chunk-O4PMRC6J.js';
3
+ import { useNotificationAdapter } from './chunk-SPMKW4VO.js';
4
4
  import { HTTP_HEADERS } from './chunk-NVOCKXUQ.js';
5
5
  import { STALE_TIME_MONITORING, REFETCH_INTERVAL_DASHBOARD, REFETCH_INTERVAL_RUNNING, WS_MAX_RETRIES_BEFORE_ERROR, WS_RECONNECT_BASE_DELAY, WS_RECONNECT_MAX_DELAY, getErrorInfo, formatErrorMessage, getErrorTitle, STALE_TIME_DEFAULT, STALE_TIME_ADMIN, APIClientError } from './chunk-IOKL7BKE.js';
6
6
  import { useStableAccessToken } from './chunk-MTJ43R2E.js';
@@ -1,5 +1,5 @@
1
1
  import { useCyberColors, CyberLegendItem, CyberAreaChart } from './chunk-KFICYU6S.js';
2
- import { useResourcesHealth } from './chunk-POFDRPDI.js';
2
+ import { useResourcesHealth } from './chunk-V6Z2U6ZV.js';
3
3
  import { getTimeRangeDates, formatBucketTime } from './chunk-LXHZYSMQ.js';
4
4
  import { CardHeader, EmptyState } from './chunk-Y3D3WFJG.js';
5
5
  import { Paper, Center, Loader, Group } from '@mantine/core';
@@ -3,8 +3,8 @@ import { PageContainer } from './chunk-BZZCNLT6.js';
3
3
  import { SubshellSidebarSection, SubshellNavItem } from './chunk-27COZ5AH.js';
4
4
  import { FilterBar } from './chunk-PDHTXPSF.js';
5
5
  import { CustomModal } from './chunk-GBMNCNHX.js';
6
- import { useProjects, useProject, useProjectNotes, useDeleteProject as useDeleteProject$1, useUpdateMilestone, useCreateNote } from './chunk-DQJM7T2N.js';
7
- import { useDeleteProject, useTableSort, sortData, usePaginationState, useTableSelection } from './chunk-POFDRPDI.js';
6
+ import { useProjects, useProject, useProjectNotes, useDeleteProject as useDeleteProject$1, useUpdateMilestone, useCreateNote } from './chunk-TENLM2GN.js';
7
+ import { useDeleteProject, useTableSort, sortData, usePaginationState, useTableSelection } from './chunk-V6Z2U6ZV.js';
8
8
  import { SubshellContentContainer } from './chunk-RX4UWZZR.js';
9
9
  import { StatusBadge, EmptyState, PageTitleCaption, CenteredErrorState, StatCard } from './chunk-Y3D3WFJG.js';
10
10
  import { PAGE_SIZE_DEFAULT, formatTimeAgo, formatDate } from './chunk-IOKL7BKE.js';
@@ -2,8 +2,8 @@ import { ResourceHealthChart } from './chunk-LGKLC5MG.js';
2
2
  import { useCyberColors, HeroStatsRow } from './chunk-KFICYU6S.js';
3
3
  import { AppShellCenteredContainer, AppShellLoader } from './chunk-YEX4MQSY.js';
4
4
  import { STATUS_COLORS, getStatusIcon, formatDuration, getStatusColors, AGENT_CONSTANTS, shouldAnimateEdge, TIMELINE_CONSTANTS, calculateBarPosition, CONTAINER_CONSTANTS, useExecutionPath, useUnifiedWorkflowLayout, WORKFLOW_CONSTANTS, useReactFlowAgent } from './chunk-XA34RETF.js';
5
- import { useTimeRangeDates } from './chunk-DQJM7T2N.js';
6
- import { useDashboardMetrics, useResources, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-POFDRPDI.js';
5
+ import { useTimeRangeDates } from './chunk-TENLM2GN.js';
6
+ import { useDashboardMetrics, useResources, useUnresolvedErrors, useRecentExecutionsByResource, useCommandQueue, useScheduledTasks, useResourcesHealth } from './chunk-V6Z2U6ZV.js';
7
7
  import { getTimeRangeDates } from './chunk-LXHZYSMQ.js';
8
8
  import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, useFitViewTrigger } from './chunk-22UVE3RA.js';
9
9
  import { glassBase } from './chunk-47YILFON.js';
@@ -3831,13 +3831,14 @@ type ListConfigInput = z.infer<typeof ListConfigSchema>;
3831
3831
  /**
3832
3832
  * Per-user-per-org config (stored in org_memberships.config)
3833
3833
  * Controls which features a specific member can access within their org
3834
- * Valid feature keys: operations, monitoring, acquisition, calibration, seo
3834
+ * Valid feature keys: operations, monitoring, acquisition, delivery, calibration, seo
3835
3835
  */
3836
3836
  interface MembershipFeatureConfig {
3837
3837
  features?: {
3838
3838
  operations?: boolean;
3839
3839
  monitoring?: boolean;
3840
3840
  acquisition?: boolean;
3841
+ delivery?: boolean;
3841
3842
  calibration?: boolean;
3842
3843
  seo?: boolean;
3843
3844
  };
@@ -1,16 +1,16 @@
1
1
  import '../chunk-SMJLS23U.js';
2
2
  import { useBreadcrumbs } from '../chunk-MG3NF7QL.js';
3
- export { AllTasksPage, HealthStatusCard, MilestoneTimeline, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, TaskCard, UpcomingMilestonesPage, calculateProgress, deliveryManifest, formatStatusLabel, milestoneStatusColors, noteTypeColors, projectStatusColors, taskStatusColors, taskTypeColors } from '../chunk-6RGNVHG3.js';
4
- export { LEAD_GEN_ROUTE_LINKS, LIST_TEMPLATE_OPTIONS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenDeliverabilityPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, buildListConfig, getEnrichmentColor, getStatusColor, leadGenManifest, useDeleteLists } from '../chunk-X4BLH3JL.js';
5
- export { ActionModal, AgentDefinitionDisplay, AgentExecutionLogs, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, CheckpointGroup, CollapsibleJsonSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, ConfigCard, ContentSections, ContextUsageBadge, ContractDisplay, ExecutionErrorSection, FormFieldRenderer, LogEntry, LogGroup, NewKnowledgeMapEdge, NewKnowledgeMapGraph, NewKnowledgeMapNode, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceNotFoundState, SessionMemory, ToolsListDisplay, WorkflowDefinitionDisplay, WorkflowExecutionLogs, getExecutionStatusConfig, getIcon, getLogLevelConfig, iconMap, operationsManifest, useNewKnowledgeMapLayout } from '../chunk-FH5QGCXL.js';
3
+ export { AllTasksPage, HealthStatusCard, MilestoneTimeline, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, TaskCard, UpcomingMilestonesPage, calculateProgress, deliveryManifest, formatStatusLabel, milestoneStatusColors, noteTypeColors, projectStatusColors, taskStatusColors, taskTypeColors } from '../chunk-X4HUZINF.js';
4
+ export { LEAD_GEN_ROUTE_LINKS, LIST_TEMPLATE_OPTIONS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenDeliverabilityPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, buildListConfig, getEnrichmentColor, getStatusColor, leadGenManifest, useDeleteLists } from '../chunk-T6R3V4GW.js';
5
+ export { ActionModal, AgentDefinitionDisplay, AgentExecutionLogs, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, CheckpointGroup, CollapsibleJsonSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, ConfigCard, ContentSections, ContextUsageBadge, ContractDisplay, ExecutionErrorSection, FormFieldRenderer, LogEntry, LogGroup, NewKnowledgeMapEdge, NewKnowledgeMapGraph, NewKnowledgeMapNode, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceNotFoundState, SessionMemory, ToolsListDisplay, WorkflowDefinitionDisplay, WorkflowExecutionLogs, getExecutionStatusConfig, getIcon, getLogLevelConfig, iconMap, operationsManifest, useNewKnowledgeMapLayout } from '../chunk-IFH4L6CR.js';
6
6
  import '../chunk-ROSMICXG.js';
7
7
  import { SubshellLoader, CollapsibleSidebarGroup } from '../chunk-IDACMRGQ.js';
8
- import { NotificationList } from '../chunk-PHRDZFJT.js';
9
- export { ActivityCard, ActivityFilters as ActivityFiltersBar, ActivityTable, BusinessImpactCard, CostBreakdownCard, CostByModelTable, CostMetricsCard, ErrorAnalysisCard, ErrorBreakdownTable, ExecutionBreakdownTable, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, NotificationItem, NotificationList, monitoringManifest } from '../chunk-PHRDZFJT.js';
10
- export { ResourceHealthPanel } from '../chunk-PEDPD3PU.js';
8
+ import { NotificationList } from '../chunk-SBND6P3L.js';
9
+ export { ActivityCard, ActivityFilters as ActivityFiltersBar, ActivityTable, BusinessImpactCard, CostBreakdownCard, CostByModelTable, CostMetricsCard, ErrorAnalysisCard, ErrorBreakdownTable, ExecutionBreakdownTable, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, NotificationItem, NotificationList, monitoringManifest } from '../chunk-SBND6P3L.js';
10
+ export { ResourceHealthPanel } from '../chunk-VGBMSGYC.js';
11
11
  export { SEOSidebar, SEOSidebarMiddle, SEOSidebarTop, seoManifest } from '../chunk-YIWLA2B6.js';
12
- export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipFeaturePanel, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, WebhookUrlDisplayModal, settingsManifest } from '../chunk-CC4WGHGG.js';
13
- export { ActivityFeedWidget, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DealDetailPage, DealsListPage, MetricsStrip, MyTasksPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, QuickCreateActions, SAVED_VIEW_PRESETS, SavedViewsPanel, TasksDueWidget, crmManifest, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity } from '../chunk-MU5EZV3L.js';
12
+ export { CreateCredentialModal, CredentialList, CredentialSettings, MembershipFeaturePanel, MembershipStatusBadge, OAuthConnectModal, OrganizationMembershipsList, WebhookUrlDisplayModal, settingsManifest } from '../chunk-6FDGVZFL.js';
13
+ export { ActivityFeedWidget, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DealDetailPage, DealsListPage, MetricsStrip, MyTasksPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, QuickCreateActions, SAVED_VIEW_PRESETS, SavedViewsPanel, TasksDueWidget, crmManifest, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity } from '../chunk-HRIJZKFL.js';
14
14
  export { SortableHeader, TableSelectionToolbar } from '../chunk-TUMSNGTX.js';
15
15
  import { PageContainer } from '../chunk-BZZCNLT6.js';
16
16
  import { SubshellNavItem } from '../chunk-27COZ5AH.js';
@@ -18,23 +18,23 @@ import { FilterBar } from '../chunk-PDHTXPSF.js';
18
18
  export { FilterBar } from '../chunk-PDHTXPSF.js';
19
19
  import { CustomModal } from '../chunk-GBMNCNHX.js';
20
20
  export { ConfirmationInputModal, ConfirmationModal, CustomModal } from '../chunk-GBMNCNHX.js';
21
- import { BaseNode, useGraphTheme, BaseEdge, GraphBackground, GraphLegend, GraphFitViewButton } from '../chunk-ZB5PKIX5.js';
22
- export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme } from '../chunk-ZB5PKIX5.js';
21
+ import { BaseNode, useGraphTheme, BaseEdge, GraphBackground, GraphLegend, GraphFitViewButton } from '../chunk-Z5RHDI7T.js';
22
+ export { AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationEdge, AgentIterationNode, BaseEdge, BaseNode, EmptyVisualizer, ExecutionStats, ExecutionStatusBadge, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, VisualizerContainer, WorkflowExecutionTimeline, getGraphBackgroundStyles, useGraphBackgroundStyles, useGraphTheme } from '../chunk-Z5RHDI7T.js';
23
23
  export { ResourceHealthChart, getHealthColor } from '../chunk-LGKLC5MG.js';
24
24
  import '../chunk-KFICYU6S.js';
25
25
  import { AppShellLoader } from '../chunk-YEX4MQSY.js';
26
26
  import '../chunk-VNUOQQNY.js';
27
27
  export { CONTAINER_CONSTANTS, SHARED_VIZ_CONSTANTS } from '../chunk-XA34RETF.js';
28
- import { useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments } from '../chunk-DQJM7T2N.js';
29
- import { useCommandViewLayout, usePaginationState, useDeploymentDocs, useResources, useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule, useDealNotes, useCreateDealNote, useDeals, useSyncDealStage, dealKeys, useMarkAllAsRead, useNotifications, showErrorNotification, showSuccessNotification, showApiErrorNotification } from '../chunk-POFDRPDI.js';
30
- export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-POFDRPDI.js';
28
+ import { useUpdateApiKey, useDeleteApiKey, useCreateApiKey, useListApiKeys, useActivateDeployment, useDeactivateDeployment, useDeleteDeployment, useListDeployments } from '../chunk-TENLM2GN.js';
29
+ import { useCommandViewLayout, usePaginationState, useDeploymentDocs, useResources, useCreateSchedule, useListSchedules, usePauseSchedule, useResumeSchedule, useCancelSchedule, useDeleteSchedule, useDealNotes, useCreateDealNote, useDeals, useSyncDealStage, dealKeys, useMarkAllAsRead, useNotifications, showErrorNotification, showSuccessNotification, showApiErrorNotification } from '../chunk-V6Z2U6ZV.js';
30
+ export { showApiErrorNotification, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification } from '../chunk-V6Z2U6ZV.js';
31
31
  import '../chunk-LXHZYSMQ.js';
32
32
  import { Graph_module_css_default, useDirectedChainHighlighting, useNodeSelection, GRAPH_CONSTANTS } from '../chunk-22UVE3RA.js';
33
33
  export { Graph_module_css_default as graphStyles } from '../chunk-22UVE3RA.js';
34
- import '../chunk-4GZ6VZWO.js';
34
+ import '../chunk-N6GYYWY3.js';
35
35
  import '../chunk-47YILFON.js';
36
36
  import '../chunk-CYXZHBP4.js';
37
- import '../chunk-O4PMRC6J.js';
37
+ import '../chunk-SPMKW4VO.js';
38
38
  import { SubshellContainer, SubshellSidebar, SubshellRightSideContainer, SubshellContentContainer } from '../chunk-RX4UWZZR.js';
39
39
  import { ListSkeleton, EmptyState, PageTitleCaption, StatCard, CenteredErrorState, CardHeader, ActivityTimeline } from '../chunk-Y3D3WFJG.js';
40
40
  export { APIErrorAlert, ActivityTimeline, CardHeader, CenteredErrorState, CollapsibleSection, ContextViewer, CustomSelector, DetailCardSkeleton, ElevasisLoader, EmptyState, FeatureUnavailableState, GlowDot, JsonViewer, ListSkeleton, PageNotFound, PageTitleCaption, ResourceCard, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, TabCountBadge, TimeRangeSelector, TrendIndicator, catalogItemToResourceDefinition } from '../chunk-Y3D3WFJG.js';
@@ -893,19 +893,28 @@ function DocTreeNav({ files, selectedPath, onSelect }) {
893
893
  }
894
894
  );
895
895
  }
896
+
897
+ // src/components/operations/knowledge-base/preferredDocPath.ts
898
+ var PREFERRED_INDEX_PATHS = ["index.mdx", "index.md", "docs/index.mdx", "docs/index.md"];
899
+ function getPreferredDocPath(files, selectedPath) {
900
+ if (selectedPath && files.some((file) => file.path === selectedPath)) {
901
+ return selectedPath;
902
+ }
903
+ if (files.length === 0) {
904
+ return null;
905
+ }
906
+ const preferredIndexFile = files.find(
907
+ (file) => PREFERRED_INDEX_PATHS.includes(file.path)
908
+ );
909
+ return preferredIndexFile?.path ?? files[0].path;
910
+ }
896
911
  function KnowledgeBasePage({ mdxRenderer: MdxRenderer2 }) {
897
912
  const { organizationReady } = useInitialization();
898
913
  const [selectedDeploymentId, setSelectedDeploymentId] = useState(void 0);
899
914
  const [selectedPath, setSelectedPath] = useState(null);
900
915
  const { files, isLoading, error, activeDeployment, activeDeployments } = useDeploymentDocs(selectedDeploymentId);
901
916
  const effectivePath = useMemo(() => {
902
- if (selectedPath && files.some((f) => f.path === selectedPath)) {
903
- return selectedPath;
904
- }
905
- if (files.length === 0) return null;
906
- const indexFile = files.find((f) => f.path === "index.mdx" || f.path === "docs/index.mdx");
907
- if (indexFile) return indexFile.path;
908
- return files[0].path;
917
+ return getPreferredDocPath(files, selectedPath);
909
918
  }, [selectedPath, files]);
910
919
  const selectedFile = useMemo(() => {
911
920
  if (!effectivePath) return null;
@@ -1017,7 +1026,7 @@ function KnowledgeBasePage({ mdxRenderer: MdxRenderer2 }) {
1017
1026
  showNoDocs && /* @__PURE__ */ jsx(Center, { style: { flex: 1 }, children: /* @__PURE__ */ jsxs(Stack, { align: "center", gap: "sm", children: [
1018
1027
  /* @__PURE__ */ jsx(IconFileOff, { size: 48, color: "var(--color-text-subtle)" }),
1019
1028
  /* @__PURE__ */ jsx(Text, { c: "dimmed", size: "lg", children: "No documentation found" }),
1020
- /* @__PURE__ */ jsx(Text, { c: "dimmed", size: "sm", children: "Add MDX files to your project's docs directory and redeploy." })
1029
+ /* @__PURE__ */ jsx(Text, { c: "dimmed", size: "sm", children: "Add Markdown files (`.md` or `.mdx`) to your project's docs directory and redeploy." })
1021
1030
  ] }) }),
1022
1031
  showContent && selectedFile && /* @__PURE__ */ jsxs(Box, { style: { display: "flex", gap: "1rem", alignItems: "flex-start" }, children: [
1023
1032
  /* @__PURE__ */ jsx(Box, { style: { flex: 1, minWidth: 0 }, children: /* @__PURE__ */ jsx(Card, { withBorder: true, children: /* @__PURE__ */ jsx("div", { ref: contentRef, children: MdxRenderer2 ? /* @__PURE__ */ jsx(MdxRenderer2, { compiledSource: selectedFile.compiledSource }) : /* @__PURE__ */ jsx(Text, { c: "dimmed", children: "No MDX renderer provided" }) }) }) }),
@@ -87,11 +87,18 @@ function AdminGuard2({ children, redirectTo, fallback = /* @__PURE__ */ jsx(AppS
87
87
  return /* @__PURE__ */ jsx(AdminGuard, { redirectTo, fallback, children });
88
88
  }
89
89
  var FEATURE_LABELS = {
90
+ crm: "CRM",
91
+ "lead-gen": "Lead Gen",
92
+ projects: "Projects",
90
93
  operations: "Operations",
91
94
  monitoring: "Monitoring",
92
- acquisition: "Acquisition",
95
+ settings: "Settings",
96
+ calibration: "Calibration",
93
97
  seo: "SEO"
94
98
  };
99
+ function getFeatureLabel(featureKey) {
100
+ return FEATURE_LABELS[featureKey] ?? featureKey;
101
+ }
95
102
  function FeatureGuard({ featureKey, children, deniedMessage, useFeatureAccess }) {
96
103
  const { checkFeature, isReady } = useFeatureAccess();
97
104
  const navigate = useNavigate();
@@ -100,7 +107,7 @@ function FeatureGuard({ featureKey, children, deniedMessage, useFeatureAccess })
100
107
  useEffect(() => {
101
108
  if (isReady && !allowed && !hasRedirected.current) {
102
109
  hasRedirected.current = true;
103
- const featureLabel = FEATURE_LABELS[featureKey] || featureKey;
110
+ const featureLabel = getFeatureLabel(featureKey);
104
111
  const message = deniedMessage ?? (restrictedBy === "membership" ? `You do not have access to ${featureLabel}.` : `${featureLabel} is not available for your organization.`);
105
112
  notifications.show({
106
113
  title: "Access Restricted",
@@ -1,17 +1,17 @@
1
- export { ActivityFeedWidget, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DEAL_STAGE_COLORS, DEAL_STAGE_OPTIONS, DealDetailPage, DealsListPage, MetricsStrip, MyTasksPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, QuickCreateActions, SAVED_VIEW_PRESETS, SavedViewsPanel, TasksDueWidget, crmManifest, formatDealStageLabel, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity } from '../../chunk-MU5EZV3L.js';
1
+ export { ActivityFeedWidget, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, DEAL_STAGE_COLORS, DEAL_STAGE_OPTIONS, DealDetailPage, DealsListPage, MetricsStrip, MyTasksPanel, PIPELINE_FUNNEL_ORDER, PipelineFunnelWidget, QuickCreateActions, SAVED_VIEW_PRESETS, SavedViewsPanel, TasksDueWidget, crmManifest, formatDealStageLabel, useCrmPipelineSummary, useCrmQuickMetrics, useRecentCrmActivity } from '../../chunk-HRIJZKFL.js';
2
2
  import '../../chunk-TUMSNGTX.js';
3
3
  import '../../chunk-BZZCNLT6.js';
4
4
  import '../../chunk-27COZ5AH.js';
5
5
  import '../../chunk-PDHTXPSF.js';
6
6
  import '../../chunk-GBMNCNHX.js';
7
- import '../../chunk-DQJM7T2N.js';
8
- import '../../chunk-POFDRPDI.js';
7
+ import '../../chunk-TENLM2GN.js';
8
+ import '../../chunk-V6Z2U6ZV.js';
9
9
  import '../../chunk-LXHZYSMQ.js';
10
10
  import '../../chunk-22UVE3RA.js';
11
- import '../../chunk-4GZ6VZWO.js';
11
+ import '../../chunk-N6GYYWY3.js';
12
12
  import '../../chunk-47YILFON.js';
13
13
  import '../../chunk-CYXZHBP4.js';
14
- import '../../chunk-O4PMRC6J.js';
14
+ import '../../chunk-SPMKW4VO.js';
15
15
  import '../../chunk-RX4UWZZR.js';
16
16
  import '../../chunk-Y3D3WFJG.js';
17
17
  import '../../chunk-3KMDHCAR.js';