@elevasis/ui 2.73.0 → 2.74.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 (97) hide show
  1. package/dist/api/index.js +3 -3
  2. package/dist/app/index.d.ts +58 -0
  3. package/dist/app/index.js +9 -10
  4. package/dist/auth/index.js +5 -6
  5. package/dist/charts/index.js +5 -6
  6. package/dist/chunk-2GIJBHZT.js +60 -0
  7. package/dist/{chunk-ETN3TTRT.js → chunk-2MRRDF32.js} +115 -8
  8. package/dist/chunk-3LOKYZJC.js +231 -0
  9. package/dist/chunk-3QHX4ZKV.js +224 -0
  10. package/dist/chunk-43LC6XAX.js +69 -0
  11. package/dist/chunk-4M2BSHVT.js +116 -0
  12. package/dist/{chunk-SWKAH2YM.js → chunk-4MXNHJTA.js} +63 -30
  13. package/dist/{chunk-LZT2H2MA.js → chunk-5A6KCFS5.js} +36 -43
  14. package/dist/{chunk-OCVSPAKM.js → chunk-6JN2TLV2.js} +1150 -4346
  15. package/dist/{chunk-JYBJMVNY.js → chunk-7ARBBELS.js} +1 -1
  16. package/dist/{chunk-AJOVWB47.js → chunk-7RJ7P6S6.js} +6 -3
  17. package/dist/chunk-ARAFQBNI.js +515 -0
  18. package/dist/{chunk-Z4ICFQXG.js → chunk-BA3AZJUR.js} +1 -1
  19. package/dist/chunk-BRTGCFBH.js +305 -0
  20. package/dist/{chunk-IGBPWD6S.js → chunk-CQPULKKL.js} +5 -3
  21. package/dist/chunk-CRA7WQZH.js +49 -0
  22. package/dist/{chunk-U2H3TIHD.js → chunk-DCQKTDIG.js} +2 -52
  23. package/dist/{chunk-3TS5U5BL.js → chunk-E6YGA5WH.js} +1 -1
  24. package/dist/chunk-FA7LMNQO.js +439 -0
  25. package/dist/chunk-FZSG6M6W.js +45 -0
  26. package/dist/chunk-GDOR57D7.js +165 -0
  27. package/dist/{chunk-CJ2232PQ.js → chunk-GO4XJ5D4.js} +1 -1
  28. package/dist/chunk-GPQQGQGT.js +645 -0
  29. package/dist/chunk-HYQOGRWG.js +54 -0
  30. package/dist/{chunk-LEPYXLJ2.js → chunk-LN4UW6S4.js} +1 -1
  31. package/dist/chunk-N6K2Q5BM.js +393 -0
  32. package/dist/{chunk-NHNTX6ZL.js → chunk-O32UQ26A.js} +3 -2
  33. package/dist/{chunk-M7WWRZ5Z.js → chunk-QFGNRKIE.js} +1 -78
  34. package/dist/{chunk-IBCEAVB2.js → chunk-R5UGIFYU.js} +41 -5
  35. package/dist/{chunk-5B2ZFO44.js → chunk-RFNJ2PTO.js} +1 -1
  36. package/dist/chunk-VM2OWOXL.js +24 -0
  37. package/dist/{chunk-ZDKPHFTH.js → chunk-W2QRBQQA.js} +5 -3
  38. package/dist/chunk-WDBNW44Z.js +49 -0
  39. package/dist/{chunk-4CW2C5BD.js → chunk-WZU3MCKI.js} +1 -1
  40. package/dist/chunk-YQQ5GRUR.js +21 -0
  41. package/dist/{chunk-PQ4B62HH.js → chunk-ZFA56VSR.js} +2 -2
  42. package/dist/{chunk-NI37YNRP.js → chunk-ZWI62BQ6.js} +7 -4
  43. package/dist/chunk-ZYNVCWDZ.js +286 -0
  44. package/dist/components/index.d.ts +187 -2
  45. package/dist/components/index.js +44 -34
  46. package/dist/components/navigation/index.js +6 -7
  47. package/dist/features/auth/index.d.ts +78 -2
  48. package/dist/features/auth/index.js +18 -9
  49. package/dist/features/clients/index.js +7 -7
  50. package/dist/features/content/index.d.ts +226 -5
  51. package/dist/features/content/index.js +263 -15
  52. package/dist/features/crm/index.d.ts +58 -0
  53. package/dist/features/crm/index.js +10 -8
  54. package/dist/features/dashboard/index.js +9 -8
  55. package/dist/features/delivery/index.d.ts +58 -0
  56. package/dist/features/delivery/index.js +23 -7
  57. package/dist/features/knowledge/index.js +5 -6
  58. package/dist/features/lead-gen/index.d.ts +9 -15
  59. package/dist/features/lead-gen/index.js +12 -8
  60. package/dist/features/monitoring/index.js +11 -9
  61. package/dist/features/monitoring/requests/index.js +8 -7
  62. package/dist/features/operations/index.js +15 -11
  63. package/dist/features/public-agent-chat/index.js +3 -1
  64. package/dist/features/settings/index.d.ts +58 -0
  65. package/dist/features/settings/index.js +9 -8
  66. package/dist/hooks/access/index.js +5 -6
  67. package/dist/hooks/delivery/index.d.ts +58 -0
  68. package/dist/hooks/delivery/index.js +3 -2
  69. package/dist/hooks/operations/command-view/utils/transformCommandViewData.d.ts +1 -1
  70. package/dist/hooks/published.d.ts +175 -3
  71. package/dist/hooks/published.js +22 -6
  72. package/dist/initialization/index.d.ts +58 -0
  73. package/dist/knowledge/index.js +167 -11
  74. package/dist/{knowledge-search-index-RZLIVWPJ.js → knowledge-search-index-6GQK55IQ.js} +1 -1
  75. package/dist/layout/index.js +8 -9
  76. package/dist/profile/index.d.ts +58 -0
  77. package/dist/provider/index.d.ts +77 -1
  78. package/dist/provider/index.js +5 -6
  79. package/dist/provider/published.d.ts +105 -1
  80. package/dist/provider/published.js +5 -6
  81. package/dist/test-utils/index.d.ts +16 -5
  82. package/dist/test-utils/index.js +17 -18
  83. package/dist/types/index.d.ts +59 -1
  84. package/dist/utils/index.d.ts +83 -3
  85. package/dist/utils/index.js +1 -1
  86. package/package.json +6 -5
  87. package/dist/chunk-6M6OLGQY.js +0 -36
  88. package/dist/chunk-MKH2KOAO.js +0 -39
  89. package/dist/hooks/index.css +0 -659
  90. package/dist/hooks/index.d.ts +0 -14073
  91. package/dist/hooks/index.js +0 -27
  92. package/dist/supabase/index.d.ts +0 -7118
  93. package/dist/supabase/index.js +0 -3
  94. package/dist/typeform/index.d.ts +0 -462
  95. package/dist/typeform/index.js +0 -2051
  96. package/dist/typeform/schemas.d.ts +0 -67
  97. package/dist/typeform/schemas.js +0 -2
@@ -0,0 +1,49 @@
1
+ import { useState, useMemo, useEffect, useCallback } from 'react';
2
+
3
+ // src/hooks/table/useTableSelection.ts
4
+ function useTableSelection(items, allItems) {
5
+ const [selectedIds, setSelectedIds] = useState(/* @__PURE__ */ new Set());
6
+ const pageIds = useMemo(() => new Set(items.map((i) => i.id)), [items]);
7
+ useEffect(() => {
8
+ setSelectedIds((prev) => {
9
+ const validIds = allItems ? new Set(allItems.map((i) => i.id)) : pageIds;
10
+ const next = new Set([...prev].filter((id) => validIds.has(id)));
11
+ return next.size === prev.size ? prev : next;
12
+ });
13
+ }, [allItems, pageIds]);
14
+ const toggle = useCallback((id) => {
15
+ setSelectedIds((prev) => {
16
+ const next = new Set(prev);
17
+ if (next.has(id)) next.delete(id);
18
+ else next.add(id);
19
+ return next;
20
+ });
21
+ }, []);
22
+ const togglePage = useCallback(() => {
23
+ setSelectedIds((prev) => {
24
+ const allPageSelected = items.every((i) => prev.has(i.id));
25
+ const next = new Set(prev);
26
+ if (allPageSelected) {
27
+ for (const item of items) next.delete(item.id);
28
+ } else {
29
+ for (const item of items) next.add(item.id);
30
+ }
31
+ return next;
32
+ });
33
+ }, [items]);
34
+ const clear = useCallback(() => setSelectedIds(/* @__PURE__ */ new Set()), []);
35
+ const isPageAllSelected = items.length > 0 && items.every((i) => selectedIds.has(i.id));
36
+ const isPagePartiallySelected = !isPageAllSelected && items.some((i) => selectedIds.has(i.id));
37
+ return {
38
+ selectedIds,
39
+ toggle,
40
+ togglePage,
41
+ clear,
42
+ isPageAllSelected,
43
+ isPagePartiallySelected,
44
+ selectedCount: selectedIds.size,
45
+ isSelected: (id) => selectedIds.has(id)
46
+ };
47
+ }
48
+
49
+ export { useTableSelection };
@@ -1,4 +1,4 @@
1
- import { useCyberColors, useResourcesHealth, EmptyState, CyberLegendItem, CyberAreaChart } from './chunk-OCVSPAKM.js';
1
+ import { useCyberColors, useResourcesHealth, EmptyState, CyberLegendItem, CyberAreaChart } from './chunk-6JN2TLV2.js';
2
2
  import { CardHeader } from './chunk-62GVNH5U.js';
3
3
  import { getTimeRangeDates, formatBucketTime } from './chunk-Y6I3IC45.js';
4
4
  import { Paper, Center, Loader, Group } from '@mantine/core';
@@ -0,0 +1,21 @@
1
+ import { useMemo } from 'react';
2
+
3
+ // src/hooks/useTimeRangeDates.ts
4
+ var RANGE_MS = {
5
+ "1h": 60 * 60 * 1e3,
6
+ "24h": 24 * 60 * 60 * 1e3,
7
+ "7d": 7 * 24 * 60 * 60 * 1e3,
8
+ "30d": 30 * 24 * 60 * 60 * 1e3
9
+ };
10
+ function useTimeRangeDates(timeRange) {
11
+ return useMemo(() => {
12
+ const now = /* @__PURE__ */ new Date();
13
+ const start = new Date(now.getTime() - RANGE_MS[timeRange]);
14
+ return {
15
+ startDate: start.toISOString(),
16
+ endDate: now.toISOString()
17
+ };
18
+ }, [timeRange]);
19
+ }
20
+
21
+ export { useTimeRangeDates };
@@ -1,5 +1,5 @@
1
- import { getLeadGenStageCatalog } from './chunk-OCVSPAKM.js';
2
- import { SYSTEM_INTERFACE_PROFILES, formatOntologyId, registerBuiltInReadinessProfile, registerReadinessInterfaceMarker, requireContractReadiness, computeInterfaceReadiness, addReadinessIssue, formatInterfaceIdentity, resourceBindingIds, requireCatalogReadiness, requireScopedBinding } from './chunk-IBCEAVB2.js';
1
+ import { getLeadGenStageCatalog } from './chunk-6JN2TLV2.js';
2
+ import { SYSTEM_INTERFACE_PROFILES, formatOntologyId, registerBuiltInReadinessProfile, registerReadinessInterfaceMarker, requireContractReadiness, computeInterfaceReadiness, addReadinessIssue, formatInterfaceIdentity, resourceBindingIds, requireCatalogReadiness, requireScopedBinding } from './chunk-R5UGIFYU.js';
3
3
 
4
4
  // ../core/src/business/acquisition/ontology-validation.ts
5
5
  var LEAD_GEN_API_INTERFACE = SYSTEM_INTERFACE_PROFILES[0];
@@ -1,12 +1,15 @@
1
- import { CRM_API_INTERFACE } from './chunk-PQ4B62HH.js';
1
+ import { useDealDetail, useExecuteAction } from './chunk-FZSG6M6W.js';
2
+ import { CRM_API_INTERFACE } from './chunk-ZFA56VSR.js';
3
+ import { useTableSort, sortData, useCompany, useContact, deriveActions } from './chunk-ZYNVCWDZ.js';
4
+ import { useTableSelection } from './chunk-WDBNW44Z.js';
2
5
  import { PageContainer } from './chunk-BZZCNLT6.js';
3
6
  import { TableSelectionToolbar, SortableHeader } from './chunk-TUMSNGTX.js';
4
7
  import { FilterBar } from './chunk-PDHTXPSF.js';
5
- import { CrmSidebarMiddle, useDealsSummary, useOptionalElevasisSystems, getCrmPipelineCatalog, CenteredErrorState, StatCard, PageTitleCaption, useDeleteDeal, usePaginationState, useDeals, useTableSort, sortData, useTableSelection, SubshellContentContainer, EmptyState, CustomModal, useDealDetail, useCrmActions, ActivityTimeline, useCompany, ContextViewer, JsonViewer, dealKeys, useContact, deriveActions, useExecuteAction } from './chunk-OCVSPAKM.js';
6
- import { showApiErrorNotification, showSuccessNotification } from './chunk-U2H3TIHD.js';
8
+ import { CrmSidebarMiddle, useDealsSummary, useOptionalElevasisSystems, getCrmPipelineCatalog, CenteredErrorState, StatCard, PageTitleCaption, useDeleteDeal, usePaginationState, useDeals, SubshellContentContainer, EmptyState, CustomModal, useCrmActions, ActivityTimeline, ContextViewer, JsonViewer, dealKeys } from './chunk-6JN2TLV2.js';
9
+ import { showApiErrorNotification, showSuccessNotification } from './chunk-HYQOGRWG.js';
7
10
  import { SubshellSidebarSection } from './chunk-MISHPEJX.js';
8
11
  import { CardHeader } from './chunk-62GVNH5U.js';
9
- import { computeInterfaceReadiness, getSystem, PAGE_SIZE_DEFAULT, formatTimeAgo } from './chunk-IBCEAVB2.js';
12
+ import { computeInterfaceReadiness, getSystem, PAGE_SIZE_DEFAULT, formatTimeAgo } from './chunk-R5UGIFYU.js';
10
13
  import { useElevasisServices } from './chunk-BI5VDO2K.js';
11
14
  import { Stack, Paper, Center, Loader, Group, Box, Text, Alert, Table, SimpleGrid, Button, Select, TextInput, Tabs, Checkbox, Badge, Tooltip, Pagination, Title, Code, Card, SegmentedControl, Switch, NumberInput, ColorSwatch, Popover, ActionIcon, Anchor, CopyButton, Divider, Textarea } from '@mantine/core';
12
15
  import { IconAddressBook, IconColumns, IconHistory, IconAlertCircle, IconCurrencyDollar, IconChartBar, IconBriefcase, IconTrophy, IconSearch, IconTargetArrow, IconAlertTriangle, IconMessages, IconArrowLeft, IconFileText, IconInbox, IconUser, IconBolt, IconBuilding, IconSettings, IconRestore, IconInfoCircle, IconMailForward, IconPlus, IconArrowRight, IconNote, IconCheck, IconCopy } from '@tabler/icons-react';
@@ -0,0 +1,286 @@
1
+ import { acquisitionListKeys } from './chunk-6JN2TLV2.js';
2
+ import { showApiErrorNotification, showSuccessNotification } from './chunk-HYQOGRWG.js';
3
+ import { APIClientError } from './chunk-R5UGIFYU.js';
4
+ import { useElevasisServices } from './chunk-BI5VDO2K.js';
5
+ import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
6
+ import { z } from 'zod';
7
+ import { useState, useCallback, useMemo } from 'react';
8
+
9
+ z.object({
10
+ replyBody: z.string().trim().min(1).max(1e4)
11
+ }).strict();
12
+ function deriveActions(deal, actions = []) {
13
+ return actions.filter((a) => a.isAvailableFor(deal)).map(({ key, label, payloadSchema }) => ({ key, label, payloadSchema }));
14
+ }
15
+ function useTableSort(defaultColumn, defaultDirection = "desc") {
16
+ const [sort, setSort] = useState({ column: defaultColumn, direction: defaultDirection });
17
+ const toggleSort = useCallback((column) => {
18
+ setSort((prev) => {
19
+ if (prev.column === column) {
20
+ return { column, direction: prev.direction === "asc" ? "desc" : "asc" };
21
+ }
22
+ return { column, direction: "desc" };
23
+ });
24
+ }, []);
25
+ return { sort, toggleSort };
26
+ }
27
+ function sortData(data, sort, accessors) {
28
+ const accessor = accessors[sort.column];
29
+ if (!accessor) return data;
30
+ return [...data].sort((a, b) => {
31
+ const aVal = accessor(a);
32
+ const bVal = accessor(b);
33
+ if (aVal == null && bVal == null) return 0;
34
+ if (aVal == null) return 1;
35
+ if (bVal == null) return -1;
36
+ let comparison = 0;
37
+ if (typeof aVal === "string" && typeof bVal === "string") {
38
+ comparison = aVal.localeCompare(bVal);
39
+ } else if (typeof aVal === "number" && typeof bVal === "number") {
40
+ comparison = aVal - bVal;
41
+ } else {
42
+ comparison = String(aVal).localeCompare(String(bVal));
43
+ }
44
+ return sort.direction === "asc" ? comparison : -comparison;
45
+ });
46
+ }
47
+ function useSortedData(data, defaultColumn, accessors, defaultDirection = "desc") {
48
+ const { sort, toggleSort } = useTableSort(defaultColumn, defaultDirection);
49
+ const sorted = useMemo(() => sortData(data, sort, accessors), [data, sort, accessors]);
50
+ return { sorted, sort, toggleSort };
51
+ }
52
+ var contactKeys = {
53
+ all: ["acquisition-contacts"],
54
+ list: (organizationId, filters) => [...contactKeys.all, "list", organizationId, filters],
55
+ detail: (organizationId, contactId) => [...contactKeys.all, "detail", organizationId, contactId]
56
+ };
57
+ function buildQueryString(params) {
58
+ const searchParams = new URLSearchParams();
59
+ for (const [key, value] of Object.entries(params)) {
60
+ if (value === void 0) continue;
61
+ searchParams.set(key, String(value));
62
+ }
63
+ const queryString = searchParams.toString();
64
+ return queryString ? `?${queryString}` : "";
65
+ }
66
+ function useContacts(filters = {}) {
67
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
68
+ return useQuery({
69
+ queryKey: contactKeys.list(workOSOrganizationId, filters),
70
+ queryFn: async () => {
71
+ const queryString = buildQueryString({
72
+ listId: filters.listId,
73
+ search: filters.search,
74
+ openingLineIsNull: filters.openingLineIsNull,
75
+ batchId: filters.batchId,
76
+ contactStatus: filters.contactStatus,
77
+ limit: filters.limit,
78
+ offset: filters.offset
79
+ });
80
+ return apiRequest(`/acquisition/contacts${queryString}`);
81
+ },
82
+ enabled: isReady && !!workOSOrganizationId,
83
+ retry: (_failureCount, error) => !(error instanceof APIClientError && error.statusCode === 401)
84
+ });
85
+ }
86
+ function useContact(contactId) {
87
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
88
+ return useQuery({
89
+ queryKey: contactKeys.detail(workOSOrganizationId, contactId),
90
+ queryFn: async () => {
91
+ if (!contactId) return null;
92
+ return apiRequest(`/acquisition/contacts/${contactId}`);
93
+ },
94
+ enabled: isReady && !!workOSOrganizationId && !!contactId
95
+ });
96
+ }
97
+ function useCreateContact() {
98
+ const { apiRequest } = useElevasisServices();
99
+ const queryClient = useQueryClient();
100
+ return useMutation({
101
+ mutationFn: (body) => apiRequest("/acquisition/contacts", {
102
+ method: "POST",
103
+ body: JSON.stringify(body)
104
+ }),
105
+ onSuccess: () => {
106
+ queryClient.invalidateQueries({ queryKey: contactKeys.all });
107
+ queryClient.invalidateQueries({ queryKey: ["acquisition-companies"] });
108
+ queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
109
+ showSuccessNotification("Contact created");
110
+ },
111
+ onError: (error) => {
112
+ showApiErrorNotification(error);
113
+ }
114
+ });
115
+ }
116
+ function useUpdateContact(contactId) {
117
+ const { apiRequest } = useElevasisServices();
118
+ const queryClient = useQueryClient();
119
+ return useMutation({
120
+ mutationFn: (body) => apiRequest(`/acquisition/contacts/${contactId}`, {
121
+ method: "PATCH",
122
+ body: JSON.stringify(body)
123
+ }),
124
+ onSuccess: () => {
125
+ queryClient.invalidateQueries({ queryKey: contactKeys.all });
126
+ queryClient.invalidateQueries({ queryKey: ["acquisition-companies"] });
127
+ queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
128
+ showSuccessNotification("Contact updated");
129
+ },
130
+ onError: (error) => {
131
+ showApiErrorNotification(error);
132
+ }
133
+ });
134
+ }
135
+ function useDeleteContacts() {
136
+ const { apiRequest } = useElevasisServices();
137
+ const queryClient = useQueryClient();
138
+ return useMutation({
139
+ mutationFn: async (contactIds) => {
140
+ const uniqueIds = [...new Set(contactIds)].filter(Boolean);
141
+ if (uniqueIds.length === 0) return;
142
+ await Promise.all(
143
+ uniqueIds.map(
144
+ (contactId) => apiRequest(`/acquisition/contacts/${contactId}`, {
145
+ method: "DELETE"
146
+ })
147
+ )
148
+ );
149
+ },
150
+ onSuccess: () => {
151
+ queryClient.invalidateQueries({ queryKey: contactKeys.all });
152
+ queryClient.invalidateQueries({ queryKey: ["acquisition-companies"] });
153
+ queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
154
+ showSuccessNotification("Contacts deleted");
155
+ },
156
+ onError: (error) => {
157
+ showApiErrorNotification(error);
158
+ }
159
+ });
160
+ }
161
+
162
+ // src/hooks/acquisition/useCompanies.ts
163
+ var companyKeys = {
164
+ all: ["acquisition-companies"],
165
+ list: (organizationId, filters) => [...companyKeys.all, "list", organizationId, filters],
166
+ facets: (organizationId) => [...companyKeys.all, "facets", organizationId],
167
+ detail: (organizationId, companyId) => [...companyKeys.all, "detail", organizationId, companyId]
168
+ };
169
+ function buildQueryString2(params) {
170
+ const searchParams = new URLSearchParams();
171
+ for (const [key, value] of Object.entries(params)) {
172
+ if (value === void 0) continue;
173
+ searchParams.set(key, String(value));
174
+ }
175
+ const queryString = searchParams.toString();
176
+ return queryString ? `?${queryString}` : "";
177
+ }
178
+ function useCompanies(filters = {}) {
179
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
180
+ return useQuery({
181
+ queryKey: companyKeys.list(workOSOrganizationId, filters),
182
+ queryFn: async () => {
183
+ const queryString = buildQueryString2({
184
+ listId: filters.listId,
185
+ search: filters.search,
186
+ domain: filters.domain,
187
+ website: filters.website,
188
+ segment: filters.segment,
189
+ category: filters.category,
190
+ batchId: filters.batchId,
191
+ status: filters.status,
192
+ includeAll: filters.includeAll,
193
+ limit: filters.limit,
194
+ offset: filters.offset
195
+ });
196
+ return apiRequest(`/acquisition/companies${queryString}`);
197
+ },
198
+ enabled: isReady && !!workOSOrganizationId,
199
+ retry: (_failureCount, error) => !(error instanceof APIClientError && error.statusCode === 401)
200
+ });
201
+ }
202
+ function useCompanyFacets() {
203
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
204
+ return useQuery({
205
+ queryKey: companyKeys.facets(workOSOrganizationId),
206
+ queryFn: () => apiRequest("/acquisition/companies/facets"),
207
+ enabled: isReady && !!workOSOrganizationId
208
+ });
209
+ }
210
+ function useCompany(companyId) {
211
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
212
+ return useQuery({
213
+ queryKey: companyKeys.detail(workOSOrganizationId, companyId),
214
+ queryFn: async () => {
215
+ if (!companyId) return null;
216
+ return apiRequest(`/acquisition/companies/${companyId}`);
217
+ },
218
+ enabled: isReady && !!workOSOrganizationId && !!companyId
219
+ });
220
+ }
221
+ function useCreateCompany() {
222
+ const { apiRequest } = useElevasisServices();
223
+ const queryClient = useQueryClient();
224
+ return useMutation({
225
+ mutationFn: (body) => apiRequest("/acquisition/companies", {
226
+ method: "POST",
227
+ body: JSON.stringify(body)
228
+ }),
229
+ onSuccess: () => {
230
+ queryClient.invalidateQueries({ queryKey: companyKeys.all });
231
+ queryClient.invalidateQueries({ queryKey: ["acquisition-contacts"] });
232
+ queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
233
+ showSuccessNotification("Company created");
234
+ },
235
+ onError: (error) => {
236
+ showApiErrorNotification(error);
237
+ }
238
+ });
239
+ }
240
+ function useUpdateCompany(companyId) {
241
+ const { apiRequest } = useElevasisServices();
242
+ const queryClient = useQueryClient();
243
+ return useMutation({
244
+ mutationFn: (body) => apiRequest(`/acquisition/companies/${companyId}`, {
245
+ method: "PATCH",
246
+ body: JSON.stringify(body)
247
+ }),
248
+ onSuccess: () => {
249
+ queryClient.invalidateQueries({ queryKey: companyKeys.all });
250
+ queryClient.invalidateQueries({ queryKey: ["acquisition-contacts"] });
251
+ queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
252
+ showSuccessNotification("Company updated");
253
+ },
254
+ onError: (error) => {
255
+ showApiErrorNotification(error);
256
+ }
257
+ });
258
+ }
259
+ function useDeleteCompanies() {
260
+ const { apiRequest } = useElevasisServices();
261
+ const queryClient = useQueryClient();
262
+ return useMutation({
263
+ mutationFn: async (companyIds) => {
264
+ const uniqueIds = [...new Set(companyIds)].filter(Boolean);
265
+ if (uniqueIds.length === 0) return;
266
+ await Promise.all(
267
+ uniqueIds.map(
268
+ (companyId) => apiRequest(`/acquisition/companies/${companyId}`, {
269
+ method: "DELETE"
270
+ })
271
+ )
272
+ );
273
+ },
274
+ onSuccess: () => {
275
+ queryClient.invalidateQueries({ queryKey: companyKeys.all });
276
+ queryClient.invalidateQueries({ queryKey: ["acquisition-contacts"] });
277
+ queryClient.invalidateQueries({ queryKey: acquisitionListKeys.all });
278
+ showSuccessNotification("Companies deleted");
279
+ },
280
+ onError: (error) => {
281
+ showApiErrorNotification(error);
282
+ }
283
+ });
284
+ }
285
+
286
+ export { companyKeys, contactKeys, deriveActions, sortData, useCompanies, useCompany, useCompanyFacets, useContact, useContacts, useCreateCompany, useCreateContact, useDeleteCompanies, useDeleteContacts, useSortedData, useTableSort, useUpdateCompany, useUpdateContact };
@@ -1895,6 +1895,64 @@ type Database = {
1895
1895
  }
1896
1896
  ];
1897
1897
  };
1898
+ content_distribution_metrics: {
1899
+ Row: {
1900
+ captured_at: string;
1901
+ created_at: string;
1902
+ distribution_id: string;
1903
+ id: string;
1904
+ metrics: Json;
1905
+ organization_id: string;
1906
+ raw: Json;
1907
+ source: string;
1908
+ source_execution_id: string | null;
1909
+ };
1910
+ Insert: {
1911
+ captured_at?: string;
1912
+ created_at?: string;
1913
+ distribution_id: string;
1914
+ id?: string;
1915
+ metrics?: Json;
1916
+ organization_id: string;
1917
+ raw?: Json;
1918
+ source: string;
1919
+ source_execution_id?: string | null;
1920
+ };
1921
+ Update: {
1922
+ captured_at?: string;
1923
+ created_at?: string;
1924
+ distribution_id?: string;
1925
+ id?: string;
1926
+ metrics?: Json;
1927
+ organization_id?: string;
1928
+ raw?: Json;
1929
+ source?: string;
1930
+ source_execution_id?: string | null;
1931
+ };
1932
+ Relationships: [
1933
+ {
1934
+ foreignKeyName: "content_distribution_metrics_distribution_fkey";
1935
+ columns: ["distribution_id", "organization_id"];
1936
+ isOneToOne: false;
1937
+ referencedRelation: "content_distributions";
1938
+ referencedColumns: ["id", "organization_id"];
1939
+ },
1940
+ {
1941
+ foreignKeyName: "content_distribution_metrics_organization_id_fkey";
1942
+ columns: ["organization_id"];
1943
+ isOneToOne: false;
1944
+ referencedRelation: "organizations";
1945
+ referencedColumns: ["id"];
1946
+ },
1947
+ {
1948
+ foreignKeyName: "content_distribution_metrics_source_execution_id_fkey";
1949
+ columns: ["source_execution_id"];
1950
+ isOneToOne: false;
1951
+ referencedRelation: "execution_logs";
1952
+ referencedColumns: ["execution_id"];
1953
+ }
1954
+ ];
1955
+ };
1898
1956
  content_distributions: {
1899
1957
  Row: {
1900
1958
  adapted_body: string | null;
@@ -4709,6 +4767,45 @@ declare const LinkSchema: z.ZodObject<{
4709
4767
  }, z.core.$strip>;
4710
4768
  type Link = z.infer<typeof LinkSchema>;
4711
4769
 
4770
+ /**
4771
+ * Registration surface for the generic readiness engine (`./engine`).
4772
+ *
4773
+ * This module owns two independent extension points so `./engine` never has
4774
+ * to import anything from `business/**`:
4775
+ *
4776
+ * - `registerBuiltInReadinessProfile` — a profile id (e.g. `sales.lead-gen.api`)
4777
+ * maps to structural validation logic plus an optional model-preparation
4778
+ * hook run before ontology compilation (e.g. injecting a derived catalog).
4779
+ * This is the ONE readiness-profile registry (`_builtInProfileValidators`
4780
+ * below) — `../domains/systems`'s `isBuiltInReadinessProfile` /
4781
+ * `lookupReadinessProfile` read it directly via `getBuiltInReadinessProfile`
4782
+ * rather than mirroring registrations into a second map, so a profile id
4783
+ * can never read as built-in without an actual registered validator.
4784
+ * - `registerReadinessInterfaceMarker` — a `(systemPath, interfaceKey)` pair
4785
+ * maps to a synthesized interface marker for interfaces that are not
4786
+ * authored on `system.apiInterface` (e.g. the lead-gen/CRM handoff bridge,
4787
+ * which is derived from scoped resources rather than declared directly).
4788
+ *
4789
+ * `business/acquisition/ontology-validation.ts` calls both at module load to
4790
+ * register its three built-in profiles. Both registries are module-level
4791
+ * mutable maps with no reset function. Reachable by a tenant via the
4792
+ * `./organization-model/readiness` subpath (see `./index`).
4793
+ */
4794
+
4795
+ type SystemInterfaceReadinessIssueFamily = 'SYSTEM_INTERFACE_MISSING' | 'SYSTEM_INTERFACE_DISABLED' | 'SYSTEM_INTERFACE_INVALID' | 'SYSTEM_INTERFACE_NOT_READY' | 'SYSTEM_BRIDGE_NOT_READY'
4796
+ /**
4797
+ * The deployed OM snapshot hash does not match the canonical source hash.
4798
+ * Redeploy with `pnpm operations:deploy` to refresh the snapshot.
4799
+ */
4800
+ | 'STALE_OM_SNAPSHOT';
4801
+ interface SystemInterfaceReadinessIssue {
4802
+ family: SystemInterfaceReadinessIssueFamily;
4803
+ code: string;
4804
+ path?: string;
4805
+ ref?: string;
4806
+ message: string;
4807
+ }
4808
+
4712
4809
  declare const OrganizationModelSchema: z.ZodObject<{
4713
4810
  version: z.ZodDefault<z.ZodLiteral<1>>;
4714
4811
  snapshotHash: z.ZodOptional<z.ZodString>;
@@ -6335,6 +6432,17 @@ interface PermissionDescriptor {
6335
6432
  isOrgGrantable: boolean;
6336
6433
  }
6337
6434
 
6435
+ declare const AccessKeyInputSchema: z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
6436
+ systemPath: z.ZodString;
6437
+ action: z.ZodDefault<z.ZodEnum<{
6438
+ view: "view";
6439
+ manage: "manage";
6440
+ }>>;
6441
+ }, z.core.$strict>]>;
6442
+ type AccessKeyInput = z.input<typeof AccessKeyInputSchema>;
6443
+
6444
+ type AccessReason = 'allowed' | 'platform-admin-bypass' | 'invalid-access-key' | 'unknown-access-key' | 'organization-mismatch' | 'missing-membership' | 'system-not-active' | 'role-permission-denied' | 'diagnostic-key-not-allowed';
6445
+
6338
6446
  /**
6339
6447
  * Deployment types — browser-safe
6340
6448
  *
@@ -6861,6 +6969,26 @@ interface FeatureUnavailableStateProps {
6861
6969
  }
6862
6970
  declare function FeatureUnavailableState({ path }: FeatureUnavailableStateProps): react_jsx_runtime.JSX.Element;
6863
6971
 
6972
+ interface SystemUnavailableStateProps {
6973
+ /** The access key the guard evaluated -- used to resolve the System's id, label, and lifecycle. */
6974
+ accessKey: AccessKeyInput;
6975
+ /** The denial reason returned by `checkAccess` / `useAccess`. */
6976
+ reason: AccessReason;
6977
+ }
6978
+ /**
6979
+ * Route-level denial state for a System `AccessGuard`. Unlike the guard's own
6980
+ * `fallback = null` default (never changed -- see access-model.ts), this
6981
+ * component turns the specific {@link AccessReason} `checkAccess` already
6982
+ * computed into a message that names the System instead of rendering a blank
6983
+ * pane. `unknown-access-key` and `system-not-active` get a dedicated message
6984
+ * because they are configuration problems (the System isn't declared, or
6985
+ * isn't in an accessible lifecycle state) rather than a per-user permission
6986
+ * gap; every other denial reason falls through to the shared
6987
+ * {@link NoAccessState}, which already covers "you personally can't see
6988
+ * this."
6989
+ */
6990
+ declare function SystemUnavailableState({ accessKey, reason }: SystemUnavailableStateProps): react_jsx_runtime.JSX.Element;
6991
+
6864
6992
  interface ResourceCardProps {
6865
6993
  resource: ResourceDefinition;
6866
6994
  onClick: (resource: ResourceDefinition) => void;
@@ -6930,6 +7058,63 @@ interface ActivityTimelineProps {
6930
7058
  }
6931
7059
  declare function ActivityTimeline({ activities }: ActivityTimelineProps): react_jsx_runtime.JSX.Element;
6932
7060
 
7061
+ /**
7062
+ * The structured 503 payload a System Interface readiness failure carries
7063
+ * (`APIErrorResponse.details` shape produced by `createInterfaceReadinessApiError`
7064
+ * in `apps/api/src/platform/organization-model/interface-readiness.ts`). Pass
7065
+ * this when a caller catches a server-side readiness failure rather than
7066
+ * computing readiness from the local Organization Model.
7067
+ *
7068
+ * `readinessCode: 'STALE_OM_SNAPSHOT'` is the one family the server already
7069
+ * turns into an actionable redeploy message; this alert renders that same
7070
+ * hint from the structured field rather than depending on parsed message text.
7071
+ */
7072
+ interface SystemReadinessServerErrorDetails {
7073
+ systemPath: string;
7074
+ interfaceKey: string;
7075
+ readinessProfile?: string;
7076
+ readinessCode: SystemInterfaceReadinessIssueFamily;
7077
+ issues: SystemInterfaceReadinessIssue[];
7078
+ }
7079
+ interface SystemReadinessAlertProps {
7080
+ /**
7081
+ * Whether the System's API interface readiness check has passed. Renders
7082
+ * nothing when `true` and no `serverError` is supplied.
7083
+ */
7084
+ ready: boolean;
7085
+ /**
7086
+ * Label for what is disabled while readiness has not passed, e.g.
7087
+ * "Lead-gen API actions". Used to build the default message.
7088
+ */
7089
+ actionLabel: string;
7090
+ /**
7091
+ * Optional note appended after the disabled-actions message describing
7092
+ * what still works, e.g. "Read-only list detail can still render when
7093
+ * data is available."
7094
+ */
7095
+ fallbackNote?: string;
7096
+ /**
7097
+ * Reason string from a local (client-side) readiness computation, e.g.
7098
+ * `useLeadGenConfig().leadGenApiInterface.reason`.
7099
+ */
7100
+ reason?: string;
7101
+ /**
7102
+ * Structured 503 payload from a server-side readiness failure. When
7103
+ * provided, its `issues[]` render as a list and its redeploy hint (for
7104
+ * `STALE_OM_SNAPSHOT`) renders below them.
7105
+ */
7106
+ serverError?: SystemReadinessServerErrorDetails;
7107
+ }
7108
+ /**
7109
+ * Displays a warning alert when a System's API interface readiness check has
7110
+ * not passed. Generalized from the lead-gen-only `LeadGenReadinessAlert` so
7111
+ * any System can reuse the same rendering for both a local-model readiness
7112
+ * failure (`reason`) and a structured server 503 (`serverError`).
7113
+ *
7114
+ * Renders nothing when `ready` is `true` and no `serverError` is supplied.
7115
+ */
7116
+ declare function SystemReadinessAlert({ ready, actionLabel, fallbackNote, reason, serverError }: SystemReadinessAlertProps): react_jsx_runtime.JSX.Element | null;
7117
+
6933
7118
  interface ICustomModalProps {
6934
7119
  opened: boolean;
6935
7120
  onClose: () => void;
@@ -9134,5 +9319,5 @@ declare const OperationsSidebarMiddle: () => react_jsx_runtime.JSX.Element;
9134
9319
 
9135
9320
  declare const operationsManifest: SystemModule;
9136
9321
 
9137
- export { APIErrorAlert, AbsoluteScheduleForm, ActionModal, ActivityCard, ActivityFeedWidget, ActivityFilters as ActivityFiltersBar, ActivityTable, ActivityTimeline, AgentDefinitionDisplay, AgentExecutionLogs, AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationDetailPanel, AgentIterationEdge, AgentIterationNode, AllTasksPage, ApiKeyDisplayModal, ApiKeyList, ApiKeySettings, AppErrorBoundary, BaseEdge, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, BaseNode, Breadcrumbs, BusinessImpactCard, CONTAINER_CONSTANTS, CardHeader, CenteredErrorState, CheckpointGroup, CloudStorageBrowser, CloudStorageFileCard, CloudStorageFileGrid, CloudStorageFolderTree, CollapsibleJsonSection, CollapsibleSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, CompanyDetailPage, ConfigCard, ConfirmationInputModal, ConfirmationModal, ContactDetailPage, ContentSections, ContextUsageBadge, ContextViewer, ContractDisplay, CostBreakdownCard, CostByModelTable, CostMetricsCard, CrashErrorFallback, CreateApiKeyModal, CreateCredentialModal, CreateRoleModal, CreateScheduleModal, CredentialList, CredentialSettings, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, CustomModal, CustomSelector, DEAL_STAGES, DEFAULT_KANBAN_CONFIG, DealDetailPage, DealKanbanCard, DealsListPage, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentSettings, DeploymentStatusBadge, DetailCardSkeleton, EditApiKeyModal, ElevasisLoader, EmptyState, EmptyVisualizer, ErrorAnalysisCard, ErrorBreakdownTable, ErrorReportCard, ExecutionBreakdownTable, ExecutionErrorSection, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, ExecutionStats, ExecutionStatusBadge, FeatureUnavailableState, FilterBar, GlowDot, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, HealthStatusCard, JsonViewer, KanbanBoard, LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, ListSkeleton, LogEntry, LogGroup, MdxRenderer, MembershipStatusBadge, MetricsStrip, MilestoneTimeline, MyTasksPanel, NavigationButton, NoAccessState, NotificationBell, NotificationItem, NotificationList, NotificationPanel, OAuthConnectModal, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrganizationMembershipsList, OrganizationModelDriftActionIcon, PIPELINE_FUNNEL_ORDER, PageNotFound, PageTitleCaption, PermissionMatrix, PipelineFunnelWidget, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, ProvisioningStateBadge, QuickCreateActions, RecurringScheduleForm, RelativeScheduleForm, ResourceCard, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceHealthChart, ResourceHealthPanel, ResourceNotFoundState, RichTextEditor, RoleBadge, RunResourceButton, SAVED_VIEW_PRESETS, SEOSidebar, SEOSidebarMiddle, SEOSidebarTop, SHARED_VIZ_CONSTANTS, SavedViewsPanel, ScheduleCard, ScheduleDetailModal, ScheduleTypeSelector, SessionMemory, SortableHeader, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, StepConfigForm, StyledMarkdown, TabCountBadge, TabSection, TableSelectionToolbar, TaskCard, TaskScheduler, TimeRangeSelector, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, ToolsListDisplay, TrendIndicator, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UpcomingMilestonesPage, VisualizerContainer, WebhookUrlDisplayModal, WorkflowDefinitionDisplay, WorkflowExecutionLogs, WorkflowExecutionTimeline, ZodFormRenderer, buildErrorReport, calculateProgress, crmManifest, deliveryManifest, formatStatusLabel, getEnrichmentColor, getExecutionStatusConfig, getGraphBackgroundStyles, getHealthColor, getIcon, getLogLevelConfig, getStatusColor, iconMap, leadGenManifest, mdxComponents, milestoneStatusColors, monitoringManifest, noteTypeColors, operationsManifest, projectStatusColors, seoManifest, settingsManifest, showApiErrorNotification, showAuthError, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification, taskStatusColors, taskTypeColors, useCrmPipelineSummary, useCrmQuickMetrics, useDeleteLists, useGraphBackgroundStyles, useGraphTheme, useRecentCrmActivity };
9138
- export type { ActivityEntry, ActivityFiltersProps, ActivityTableProps, AgentIterationTotals, AppErrorBoundaryProps, BaseEdgeProps, BaseExecutionLogsProps, BreadcrumbsProps, CloudStorageBrowserProps, CloudStorageFileCardProps, CloudStorageFileGridProps, CloudStorageFolderNode, CloudStorageFolderTreeProps, CloudStorageGridItem, CloudStorageItemDecoration, CompanyDetailPageProps, ContactDetailPageProps, ContextViewerProps, CostByModelTableProps, CrashErrorFallbackProps, CreateRoleModalProps, CrmOverviewProps, DealKanbanCardProps, ErrorAnalysisCardProps, ErrorReportCardProps, ExecutionBreakdownTableProps, ExecutionHealthCardProps, ExecutionLogEntry, ExecutionLogsFiltersProps, ExecutionLogsTableProps, FeatureUnavailableStateProps, FieldPath, FitViewButtonVariant, GraphFitViewHandlerProps, JsonViewerProps, KanbanBoardProps, LogLevel, MdxRendererProps, NavigationButtonProps, PermissionRow, ProjectsSidebarMiddleProps, ResourceHealthPanelProps, RichTextEditorProps, RunResourceButtonProps, RunResourceInputResolver, SavedViewPreset, ScheduleType, StatCardProps, StepConfigComponent, StepConfigFieldHint, StepConfigFormProps, StepConfigLayout, StepConfigSection, StyledMarkdownProps, TabSectionProps, TaskFilterStatus, TrendIndicatorProps, ZodFormRendererProps };
9322
+ export { APIErrorAlert, AbsoluteScheduleForm, ActionModal, ActivityCard, ActivityFeedWidget, ActivityFilters as ActivityFiltersBar, ActivityTable, ActivityTimeline, AgentDefinitionDisplay, AgentExecutionLogs, AgentExecutionTimeline, AgentExecutionVisualizer, AgentIterationDetailPanel, AgentIterationEdge, AgentIterationNode, AllTasksPage, ApiKeyDisplayModal, ApiKeyList, ApiKeySettings, AppErrorBoundary, BaseEdge, BaseExecutionLogs, BaseExecutionLogsHeader, BaseExecutionLogsStates, BaseNode, Breadcrumbs, BusinessImpactCard, CONTAINER_CONSTANTS, CardHeader, CenteredErrorState, CheckpointGroup, CloudStorageBrowser, CloudStorageFileCard, CloudStorageFileGrid, CloudStorageFolderTree, CollapsibleJsonSection, CollapsibleSection, CommandQueueSidebar, CommandQueueSidebarMiddle, CommandQueueSidebarTop, CommandQueueTaskRow, CompanyDetailPage, ConfigCard, ConfirmationInputModal, ConfirmationModal, ContactDetailPage, ContentSections, ContextUsageBadge, ContextViewer, ContractDisplay, CostBreakdownCard, CostByModelTable, CostMetricsCard, CrashErrorFallback, CreateApiKeyModal, CreateCredentialModal, CreateRoleModal, CreateScheduleModal, CredentialList, CredentialSettings, CrmOverview, CrmSidebar, CrmSidebarMiddle, CrmSidebarTop, CustomModal, CustomSelector, DEAL_STAGES, DEFAULT_KANBAN_CONFIG, DealDetailPage, DealKanbanCard, DealsListPage, DeleteScheduleModal, DeploymentDetailModal, DeploymentList, DeploymentSettings, DeploymentStatusBadge, DetailCardSkeleton, EditApiKeyModal, ElevasisLoader, EmptyState, EmptyVisualizer, ErrorAnalysisCard, ErrorBreakdownTable, ErrorReportCard, ExecutionBreakdownTable, ExecutionErrorSection, ExecutionHealthCard, ExecutionLogsFilters as ExecutionLogsFilterBar, ExecutionLogsTable, ExecutionStats, ExecutionStatusBadge, FeatureUnavailableState, FilterBar, GlowDot, GraphBackground, GraphContainer, GraphFitViewButton, GraphFitViewHandler, GraphLegend, HealthStatusCard, JsonViewer, KanbanBoard, LEAD_GEN_ROUTE_LINKS, LeadGenCompaniesPage, LeadGenContactsPage, LeadGenListDetailPage, LeadGenListsPage, LeadGenOverviewPage, LeadGenRouteShell, LeadGenSidebar, LeadGenSidebarMiddle, LeadGenSidebarTop, ListSkeleton, LogEntry, LogGroup, MdxRenderer, MembershipStatusBadge, MetricsStrip, MilestoneTimeline, MyTasksPanel, NavigationButton, NoAccessState, NotificationBell, NotificationItem, NotificationList, NotificationPanel, OAuthConnectModal, OperationsSidebar, OperationsSidebarMiddle, OperationsSidebarTop, OrganizationMembershipsList, OrganizationModelDriftActionIcon, PIPELINE_FUNNEL_ORDER, PageNotFound, PageTitleCaption, PermissionMatrix, PipelineFunnelWidget, ProjectDetailPage, ProjectsListPage, ProjectsSidebar, ProjectsSidebarMiddle, ProjectsSidebarTop, ProvisioningStateBadge, QuickCreateActions, RecurringScheduleForm, RelativeScheduleForm, ResourceCard, ResourceDefinitionSection, ResourceErrorState, ResourceFilter, ResourceHeader, ResourceHealthChart, ResourceHealthPanel, ResourceNotFoundState, RichTextEditor, RoleBadge, RunResourceButton, SAVED_VIEW_PRESETS, SEOSidebar, SEOSidebarMiddle, SEOSidebarTop, SHARED_VIZ_CONSTANTS, SavedViewsPanel, ScheduleCard, ScheduleDetailModal, ScheduleTypeSelector, SessionMemory, SortableHeader, StatCard, StatCardSkeleton, StatsCardSkeleton, StatusBadge, StepConfigForm, StyledMarkdown, SystemReadinessAlert, SystemUnavailableState, TabCountBadge, TabSection, TableSelectionToolbar, TaskCard, TaskScheduler, TimeRangeSelector, TimelineAxis, TimelineBar, TimelineContainer, TimelineRow, ToolsListDisplay, TrendIndicator, UnifiedWorkflowEdge, UnifiedWorkflowGraph, UnifiedWorkflowNode, UpcomingMilestonesPage, VisualizerContainer, WebhookUrlDisplayModal, WorkflowDefinitionDisplay, WorkflowExecutionLogs, WorkflowExecutionTimeline, ZodFormRenderer, buildErrorReport, calculateProgress, crmManifest, deliveryManifest, formatStatusLabel, getEnrichmentColor, getExecutionStatusConfig, getGraphBackgroundStyles, getHealthColor, getIcon, getLogLevelConfig, getStatusColor, iconMap, leadGenManifest, mdxComponents, milestoneStatusColors, monitoringManifest, noteTypeColors, operationsManifest, projectStatusColors, seoManifest, settingsManifest, showApiErrorNotification, showAuthError, showErrorNotification, showInfoNotification, showSuccessNotification, showWarningNotification, taskStatusColors, taskTypeColors, useCrmPipelineSummary, useCrmQuickMetrics, useDeleteLists, useGraphBackgroundStyles, useGraphTheme, useRecentCrmActivity };
9323
+ export type { ActivityEntry, ActivityFiltersProps, ActivityTableProps, AgentIterationTotals, AppErrorBoundaryProps, BaseEdgeProps, BaseExecutionLogsProps, BreadcrumbsProps, CloudStorageBrowserProps, CloudStorageFileCardProps, CloudStorageFileGridProps, CloudStorageFolderNode, CloudStorageFolderTreeProps, CloudStorageGridItem, CloudStorageItemDecoration, CompanyDetailPageProps, ContactDetailPageProps, ContextViewerProps, CostByModelTableProps, CrashErrorFallbackProps, CreateRoleModalProps, CrmOverviewProps, DealKanbanCardProps, ErrorAnalysisCardProps, ErrorReportCardProps, ExecutionBreakdownTableProps, ExecutionHealthCardProps, ExecutionLogEntry, ExecutionLogsFiltersProps, ExecutionLogsTableProps, FeatureUnavailableStateProps, FieldPath, FitViewButtonVariant, GraphFitViewHandlerProps, JsonViewerProps, KanbanBoardProps, LogLevel, MdxRendererProps, NavigationButtonProps, PermissionRow, ProjectsSidebarMiddleProps, ResourceHealthPanelProps, RichTextEditorProps, RunResourceButtonProps, RunResourceInputResolver, SavedViewPreset, ScheduleType, StatCardProps, StepConfigComponent, StepConfigFieldHint, StepConfigFormProps, StepConfigLayout, StepConfigSection, StyledMarkdownProps, SystemReadinessAlertProps, SystemReadinessServerErrorDetails, SystemUnavailableStateProps, TabSectionProps, TaskFilterStatus, TrendIndicatorProps, ZodFormRendererProps };