@elevasis/ui 2.29.0 → 2.30.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 (73) hide show
  1. package/dist/app/index.d.ts +54 -0
  2. package/dist/app/index.js +8 -8
  3. package/dist/auth/index.js +4 -4
  4. package/dist/charts/index.d.ts +2 -1
  5. package/dist/charts/index.js +6 -6
  6. package/dist/{chunk-SZWXQHKO.js → chunk-2DIYILF7.js} +7 -6
  7. package/dist/{chunk-XTVZFT7U.js → chunk-2Q2JQSQO.js} +1 -1
  8. package/dist/{chunk-65RQE3XF.js → chunk-3GV5NHSS.js} +1051 -208
  9. package/dist/{chunk-3DUOPXOJ.js → chunk-3MDNBHVB.js} +4 -4
  10. package/dist/{chunk-QNL7UI5G.js → chunk-4FZYEEPK.js} +4 -4
  11. package/dist/{chunk-Y3YJKKEB.js → chunk-4SY6BTVZ.js} +1 -1
  12. package/dist/{chunk-HLFFKKT3.js → chunk-4VQ2PXMI.js} +14 -14
  13. package/dist/{chunk-WKJ47GIW.js → chunk-533DUEQY.js} +1 -1
  14. package/dist/{chunk-HNFQCOD2.js → chunk-6EFVZV6X.js} +392 -309
  15. package/dist/{chunk-V3HUIZJX.js → chunk-6IXOKUBC.js} +1 -1
  16. package/dist/{chunk-VKMNWHTL.js → chunk-6YT4IKJ7.js} +3 -3
  17. package/dist/{chunk-AK5E6ILJ.js → chunk-A7B7HLDF.js} +8 -8
  18. package/dist/{chunk-OWESKPTJ.js → chunk-AKOD52HS.js} +26 -8
  19. package/dist/{chunk-ROSMICXG.js → chunk-CXY7FMUM.js} +35 -20
  20. package/dist/{chunk-HOIT677G.js → chunk-HUJCU55S.js} +1 -1
  21. package/dist/{chunk-A7R2URMV.js → chunk-HYLERWRO.js} +41 -7
  22. package/dist/{chunk-XBMCDGHA.js → chunk-IKQ42WHU.js} +1 -1
  23. package/dist/{chunk-GESXCQWY.js → chunk-JA5ECJJB.js} +1 -1
  24. package/dist/{chunk-KU7ZDWQ7.js → chunk-JBWJ6WHZ.js} +1 -1
  25. package/dist/{chunk-FGDUK74A.js → chunk-JKTPRYGV.js} +3 -3
  26. package/dist/{chunk-5WWZXCS5.js → chunk-KJ3QUBNU.js} +9 -2
  27. package/dist/{chunk-OHGNCWJP.js → chunk-LRZFLK2F.js} +1 -1
  28. package/dist/{chunk-FFDAE2QI.js → chunk-NITGGYH2.js} +172 -26
  29. package/dist/{chunk-VMJVQAFZ.js → chunk-OAVTMITG.js} +1 -1
  30. package/dist/{chunk-6NHCE7JM.js → chunk-P5WYW2GI.js} +12 -12
  31. package/dist/{chunk-5CW2HXQA.js → chunk-SBCIB5TZ.js} +4 -25
  32. package/dist/{chunk-OIMPGKDB.js → chunk-SKXXT3E2.js} +3 -3
  33. package/dist/{chunk-CEHUFNAL.js → chunk-T2PAD63Y.js} +11 -11
  34. package/dist/{chunk-LH4GPYDX.js → chunk-T5Z7G2J2.js} +19 -3
  35. package/dist/{chunk-WFTNY755.js → chunk-VKIZUUPM.js} +1 -1
  36. package/dist/{chunk-S66IQSSR.js → chunk-WF227UBV.js} +1 -1
  37. package/dist/components/chat/index.d.ts +2 -1
  38. package/dist/components/chat/index.js +1 -1
  39. package/dist/components/index.js +37 -37
  40. package/dist/components/navigation/index.js +8 -8
  41. package/dist/features/auth/index.js +5 -5
  42. package/dist/features/crm/index.js +18 -18
  43. package/dist/features/dashboard/index.js +19 -19
  44. package/dist/features/delivery/index.js +18 -18
  45. package/dist/features/knowledge/index.js +19 -19
  46. package/dist/features/lead-gen/index.d.ts +99 -1
  47. package/dist/features/lead-gen/index.js +19 -19
  48. package/dist/features/monitoring/index.js +20 -20
  49. package/dist/features/monitoring/requests/index.js +17 -17
  50. package/dist/features/operations/index.js +24 -24
  51. package/dist/features/settings/index.js +19 -19
  52. package/dist/hooks/delivery/index.js +2 -2
  53. package/dist/hooks/index.d.ts +263 -4
  54. package/dist/hooks/index.js +17 -17
  55. package/dist/hooks/published.d.ts +263 -4
  56. package/dist/hooks/published.js +17 -17
  57. package/dist/index.d.ts +378 -8
  58. package/dist/index.js +18 -18
  59. package/dist/initialization/index.js +4 -4
  60. package/dist/knowledge/index.d.ts +54 -0
  61. package/dist/organization/index.js +4 -4
  62. package/dist/profile/index.js +2 -2
  63. package/dist/provider/ElevasisServiceContext.d.ts +11 -5
  64. package/dist/provider/ElevasisServiceContext.js +1 -1
  65. package/dist/provider/index.d.ts +119 -5
  66. package/dist/provider/index.js +14 -14
  67. package/dist/provider/published.d.ts +119 -5
  68. package/dist/provider/published.js +10 -10
  69. package/dist/test-utils/index.d.ts +3 -0
  70. package/dist/test-utils/index.js +28 -4
  71. package/dist/theme/index.js +3 -3
  72. package/dist/theme/presets/index.js +1 -1
  73. package/package.json +5 -5
@@ -1,20 +1,49 @@
1
- import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-OWESKPTJ.js';
1
+ import { DisplayMetadataSchema, ModelIdSchema, DescriptionSchema, LEAD_GEN_STAGE_CATALOG } from './chunk-AKOD52HS.js';
2
2
  import { z } from 'zod';
3
3
 
4
4
  var ProspectingLifecycleStageSchema = DisplayMetadataSchema.extend({
5
5
  id: ModelIdSchema,
6
- order: z.number().int().min(0)
6
+ order: z.number().min(0)
7
+ });
8
+ var RecordColumnConfigSchema = z.object({
9
+ key: ModelIdSchema,
10
+ label: z.string().trim().min(1).max(120),
11
+ path: z.string().trim().min(1).max(500),
12
+ width: z.union([z.number().positive(), z.string().trim().min(1).max(100)]).optional(),
13
+ renderType: z.enum(["text", "badge", "datetime", "count", "json"]).optional(),
14
+ badgeColor: z.string().trim().min(1).max(40).optional()
15
+ });
16
+ var RecordColumnsConfigSchema = z.object({
17
+ company: z.array(RecordColumnConfigSchema).optional(),
18
+ contact: z.array(RecordColumnConfigSchema).optional()
19
+ }).refine((columns) => Boolean(columns.company?.length || columns.contact?.length), {
20
+ message: "recordColumns must include at least one entity column set"
21
+ });
22
+ var CredentialRequirementSchema = z.object({
23
+ key: ModelIdSchema,
24
+ provider: ModelIdSchema,
25
+ credentialType: z.enum(["api-key", "api-key-secret", "oauth", "webhook-secret"]),
26
+ label: z.string().trim().min(1).max(120),
27
+ required: z.boolean(),
28
+ selectionMode: z.enum(["single", "multiple"]).optional(),
29
+ inputPath: z.string().trim().min(1).max(500),
30
+ verifyOnRun: z.boolean().optional()
7
31
  });
8
32
  var ProspectingBuildTemplateStepSchema = DisplayMetadataSchema.extend({
9
33
  id: ModelIdSchema,
10
34
  primaryEntity: z.enum(["company", "contact"]),
11
35
  outputs: z.array(z.enum(["company", "contact", "export"])).min(1),
12
36
  stageKey: ModelIdSchema,
37
+ recordEntity: z.enum(["company", "contact"]).optional(),
38
+ recordsStageKey: ModelIdSchema.optional(),
39
+ recordSourceStageKey: ModelIdSchema.optional(),
13
40
  dependsOn: z.array(ModelIdSchema).optional(),
14
41
  dependencyMode: z.literal("per-record-eligibility"),
15
42
  capabilityKey: ModelIdSchema,
16
43
  defaultBatchSize: z.number().int().positive(),
17
- maxBatchSize: z.number().int().positive()
44
+ maxBatchSize: z.number().int().positive(),
45
+ recordColumns: RecordColumnsConfigSchema.optional(),
46
+ credentialRequirements: z.array(CredentialRequirementSchema).optional()
18
47
  }).refine((step) => step.defaultBatchSize <= step.maxBatchSize, {
19
48
  message: "defaultBatchSize must be less than or equal to maxBatchSize",
20
49
  path: ["defaultBatchSize"]
@@ -23,6 +52,62 @@ var ProspectingBuildTemplateSchema = DisplayMetadataSchema.extend({
23
52
  id: ModelIdSchema,
24
53
  steps: z.array(ProspectingBuildTemplateStepSchema).min(1)
25
54
  });
55
+ var DTC_RECORD_COLUMNS = {
56
+ populated: {
57
+ company: [
58
+ { key: "name", label: "Company", path: "company.name" },
59
+ { key: "domain", label: "Domain", path: "company.domain" },
60
+ { key: "employee-count", label: "Employees", path: "company.numEmployees", renderType: "count" },
61
+ { key: "apollo-industry", label: "Apollo industry", path: "company.category" },
62
+ { key: "location", label: "Location", path: "company.locationState" }
63
+ ]
64
+ },
65
+ crawled: {
66
+ company: [
67
+ { key: "name", label: "Company", path: "company.name" },
68
+ { key: "domain", label: "Domain", path: "company.domain" },
69
+ { key: "page-count", label: "Pages", path: "company.enrichmentData.websiteCrawl.pageCount", renderType: "count" },
70
+ { key: "crawl-status", label: "Crawl status", path: "processingState.crawled.status", renderType: "badge" }
71
+ ]
72
+ },
73
+ extracted: {
74
+ company: [
75
+ { key: "name", label: "Company", path: "company.name" },
76
+ { key: "domain", label: "Domain", path: "company.domain" },
77
+ { key: "description", label: "Description", path: "company.enrichmentData.websiteCrawl.companyDescription" },
78
+ { key: "services", label: "Services", path: "company.enrichmentData.websiteCrawl.services", renderType: "json" },
79
+ { key: "automation-gaps", label: "Automation gaps", path: "company.enrichmentData.websiteCrawl.automationGaps", renderType: "json" },
80
+ { key: "contact-count", label: "Contacts", path: "company.enrichmentData.websiteCrawl.emailCount", renderType: "count" }
81
+ ]
82
+ },
83
+ qualified: {
84
+ company: [
85
+ { key: "name", label: "Company", path: "company.name" },
86
+ { key: "domain", label: "Domain", path: "company.domain" },
87
+ { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
88
+ { key: "signals", label: "Signals", path: "company.qualificationSignals", renderType: "json" },
89
+ { key: "disqualified-reason", label: "Disqualified reason", path: "processingState.qualified.data.disqualifiedReason" }
90
+ ]
91
+ },
92
+ decisionMakers: {
93
+ contact: [
94
+ { key: "name", label: "Name", path: "contact.name" },
95
+ { key: "title", label: "Title", path: "contact.title" },
96
+ { key: "email", label: "Email", path: "contact.email" },
97
+ { key: "linkedin", label: "LinkedIn", path: "contact.linkedinUrl" },
98
+ { key: "priority-score", label: "Priority", path: "contact.enrichmentData.apollo.priorityScore", renderType: "badge" }
99
+ ]
100
+ },
101
+ uploaded: {
102
+ company: [
103
+ { key: "name", label: "Company", path: "company.name" },
104
+ { key: "domain", label: "Domain", path: "company.domain" },
105
+ { key: "contacts", label: "Contacts", path: "company.enrichmentData.approvedLeadListExport.contacts", renderType: "json" },
106
+ { key: "score", label: "Score", path: "company.qualificationScore", renderType: "badge", badgeColor: "green" },
107
+ { key: "approval", label: "Approval", path: "company.enrichmentData.approvedLeadListExport.approvalStatus", renderType: "badge" }
108
+ ]
109
+ }
110
+ };
26
111
  z.object({
27
112
  id: ModelIdSchema,
28
113
  label: z.string(),
@@ -54,6 +139,12 @@ var CAPABILITY_REGISTRY = [
54
139
  description: "Check email deliverability before outreach.",
55
140
  resourceId: "lgn-05-email-verification-workflow"
56
141
  },
142
+ {
143
+ id: "lead-gen.company.apify-crawl",
144
+ label: "Crawl websites",
145
+ description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis.",
146
+ resourceId: "lgn-02a-apify-website-crawl-workflow"
147
+ },
57
148
  {
58
149
  id: "lead-gen.company.website-extract",
59
150
  label: "Extract website signals",
@@ -200,7 +291,45 @@ var PROSPECTING_STEPS = {
200
291
  dependencyMode: "per-record-eligibility",
201
292
  capabilityKey: "lead-gen.company.apollo-import",
202
293
  defaultBatchSize: 250,
203
- maxBatchSize: 1e3
294
+ maxBatchSize: 1e3,
295
+ recordColumns: DTC_RECORD_COLUMNS.populated,
296
+ credentialRequirements: [
297
+ {
298
+ key: "apollo",
299
+ provider: "apollo",
300
+ credentialType: "api-key-secret",
301
+ label: "Apollo API key",
302
+ required: true,
303
+ selectionMode: "single",
304
+ inputPath: "credential"
305
+ }
306
+ ]
307
+ },
308
+ apifyCrawl: {
309
+ id: "apify-crawl",
310
+ label: "Websites crawled",
311
+ description: "Crawl company websites via Apify and store raw page markdown in enrichmentData.websiteCrawl.pages for downstream LLM analysis. Overwrites the synthetic seed Apollo Import wrote with real page content.",
312
+ primaryEntity: "company",
313
+ outputs: ["company"],
314
+ stageKey: "crawled",
315
+ dependsOn: ["import-apollo-search"],
316
+ dependencyMode: "per-record-eligibility",
317
+ capabilityKey: "lead-gen.company.apify-crawl",
318
+ defaultBatchSize: 50,
319
+ maxBatchSize: 100,
320
+ recordColumns: DTC_RECORD_COLUMNS.crawled,
321
+ credentialRequirements: [
322
+ {
323
+ key: "apify",
324
+ provider: "apify",
325
+ credentialType: "api-key-secret",
326
+ label: "Apify API token",
327
+ required: true,
328
+ selectionMode: "single",
329
+ inputPath: "credential",
330
+ verifyOnRun: true
331
+ }
332
+ ]
204
333
  },
205
334
  analyzeWebsites: {
206
335
  id: "analyze-websites",
@@ -209,11 +338,12 @@ var PROSPECTING_STEPS = {
209
338
  primaryEntity: "company",
210
339
  outputs: ["company"],
211
340
  stageKey: "extracted",
212
- dependsOn: ["import-apollo-search"],
341
+ dependsOn: ["apify-crawl"],
213
342
  dependencyMode: "per-record-eligibility",
214
343
  capabilityKey: "lead-gen.company.website-extract",
215
344
  defaultBatchSize: 50,
216
- maxBatchSize: 100
345
+ maxBatchSize: 100,
346
+ recordColumns: DTC_RECORD_COLUMNS.extracted
217
347
  },
218
348
  scoreDtcFit: {
219
349
  id: "score-dtc-fit",
@@ -226,7 +356,8 @@ var PROSPECTING_STEPS = {
226
356
  dependencyMode: "per-record-eligibility",
227
357
  capabilityKey: "lead-gen.company.dtc-subscription-qualify",
228
358
  defaultBatchSize: 100,
229
- maxBatchSize: 250
359
+ maxBatchSize: 250,
360
+ recordColumns: DTC_RECORD_COLUMNS.qualified
230
361
  },
231
362
  enrichDecisionMakers: {
232
363
  id: "enrich-decision-makers",
@@ -235,37 +366,52 @@ var PROSPECTING_STEPS = {
235
366
  primaryEntity: "company",
236
367
  outputs: ["contact"],
237
368
  stageKey: "decision-makers-enriched",
369
+ recordEntity: "contact",
238
370
  dependsOn: ["score-dtc-fit"],
239
371
  dependencyMode: "per-record-eligibility",
240
372
  capabilityKey: "lead-gen.contact.apollo-decision-maker-enrich",
241
373
  defaultBatchSize: 100,
242
- maxBatchSize: 250
243
- },
244
- verifyEmails: {
245
- id: "verify-emails",
246
- label: "Emails verified",
247
- description: "Verify deliverability before the QC and handoff step.",
248
- primaryEntity: "contact",
249
- outputs: ["contact"],
250
- stageKey: "verified",
251
- dependsOn: ["enrich-decision-makers"],
252
- dependencyMode: "per-record-eligibility",
253
- capabilityKey: "lead-gen.contact.verify-email",
254
- defaultBatchSize: 250,
255
- maxBatchSize: 500
374
+ maxBatchSize: 250,
375
+ recordColumns: DTC_RECORD_COLUMNS.decisionMakers,
376
+ credentialRequirements: [
377
+ {
378
+ key: "apollo",
379
+ provider: "apollo",
380
+ credentialType: "api-key-secret",
381
+ label: "Apollo API key",
382
+ required: true,
383
+ selectionMode: "single",
384
+ inputPath: "credential"
385
+ }
386
+ ]
256
387
  },
257
388
  reviewAndExport: {
258
389
  id: "review-and-export",
259
390
  label: "Reviewed and exported",
260
- description: "Operator QC approves or rejects leads, then approved records are exported as a lead list.",
391
+ description: "Operator QC approves or rejects qualified companies, then approved records are exported as a lead list with unverified emails.",
261
392
  primaryEntity: "company",
262
393
  outputs: ["export"],
263
394
  stageKey: "uploaded",
264
- dependsOn: ["verify-emails"],
395
+ recordsStageKey: "uploaded",
396
+ recordSourceStageKey: "qualified",
397
+ dependsOn: ["enrich-decision-makers"],
265
398
  dependencyMode: "per-record-eligibility",
266
399
  capabilityKey: "lead-gen.export.list",
267
400
  defaultBatchSize: 100,
268
- maxBatchSize: 250
401
+ maxBatchSize: 250,
402
+ recordColumns: DTC_RECORD_COLUMNS.uploaded,
403
+ credentialRequirements: [
404
+ {
405
+ key: "clickup",
406
+ provider: "clickup",
407
+ credentialType: "api-key-secret",
408
+ label: "ClickUp API token",
409
+ required: true,
410
+ selectionMode: "single",
411
+ inputPath: "clickupCredential",
412
+ verifyOnRun: true
413
+ }
414
+ ]
269
415
  }
270
416
  }
271
417
  };
@@ -287,7 +433,7 @@ function toProspectingLifecycleStage(stage) {
287
433
  };
288
434
  }
289
435
  function leadGenStagesForEntity(entity) {
290
- return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
436
+ return Object.values(LEAD_GEN_STAGE_CATALOG).filter((stage) => stage.entity === entity || stage.additionalEntities?.includes(entity)).sort((a, b) => a.order - b.order).map(toProspectingLifecycleStage);
291
437
  }
292
438
  var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
293
439
  listEntityId: "leadgen.list",
@@ -317,10 +463,10 @@ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
317
463
  description: "Prospecting pipeline for DTC subscription or subscription-ready brands where Apollo is the source and contact-enrichment layer, Elevasis handles company research and fit scoring, and approved leads export as an approved lead list.",
318
464
  steps: [
319
465
  PROSPECTING_STEPS.dtcApolloClickup.importApolloSearch,
466
+ PROSPECTING_STEPS.dtcApolloClickup.apifyCrawl,
320
467
  PROSPECTING_STEPS.dtcApolloClickup.analyzeWebsites,
321
468
  PROSPECTING_STEPS.dtcApolloClickup.scoreDtcFit,
322
469
  PROSPECTING_STEPS.dtcApolloClickup.enrichDecisionMakers,
323
- PROSPECTING_STEPS.dtcApolloClickup.verifyEmails,
324
470
  PROSPECTING_STEPS.dtcApolloClickup.reviewAndExport
325
471
  ]
326
472
  }
@@ -1,4 +1,4 @@
1
- import { ElevasisFeaturesProvider } from './chunk-V3HUIZJX.js';
1
+ import { ElevasisFeaturesProvider } from './chunk-6IXOKUBC.js';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
 
4
4
  function createTestFeaturesProvider({
@@ -4,14 +4,14 @@ import { SubshellNavItem } from './chunk-X4WBGKJQ.js';
4
4
  import { SubshellSidebarSection } from './chunk-IIMU5YAJ.js';
5
5
  import { FilterBar } from './chunk-PDHTXPSF.js';
6
6
  import { CustomModal } from './chunk-KVJ3LFH2.js';
7
- import { useDealTasksDue, useDealsLookup, useCreateDealTask, useDealsSummary, useDeleteDeal, usePaginationState, useDeals, useTableSort, sortData, useTableSelection, useDealDetail, useCompany, dealKeys, useExecuteAction } from './chunk-HNFQCOD2.js';
8
- import { showApiErrorNotification, showSuccessNotification } from './chunk-CEHUFNAL.js';
7
+ import { useDealTasksDue, useDealsLookup, useCreateDealTask, useDealsSummary, useDeleteDeal, usePaginationState, useDeals, useTableSort, sortData, useTableSelection, useDealDetail, useCompany, dealKeys, useExecuteAction } from './chunk-6EFVZV6X.js';
8
+ import { showApiErrorNotification, showSuccessNotification } from './chunk-T2PAD63Y.js';
9
9
  import { CenteredErrorState, CardHeader, StatCard, PageTitleCaption, EmptyState, ActivityTimeline } from './chunk-6WXDE5LZ.js';
10
- import { CRM_PIPELINE_DEFINITION, useCrmActions, DEFAULT_CRM_PRIORITY_RULE_CONFIG, deriveActions, CRM_PRIORITY_BUCKETS } from './chunk-OWESKPTJ.js';
10
+ import { CRM_PIPELINE_DEFINITION, useCrmActions, DEFAULT_CRM_PRIORITY_RULE_CONFIG, deriveActions, CRM_PRIORITY_BUCKETS } from './chunk-AKOD52HS.js';
11
11
  import { SubshellContentContainer } from './chunk-TKAYX2SP.js';
12
12
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
13
13
  import { PAGE_SIZE_DEFAULT, formatTimeAgo } from './chunk-HXZQWMKE.js';
14
- import { useElevasisServices } from './chunk-5WWZXCS5.js';
14
+ import { useElevasisServices } from './chunk-KJ3QUBNU.js';
15
15
  import { Box, Stack, Group, Text, Badge, Center, Loader, UnstyledButton, Button, Modal, Title, Select, TextInput, Textarea, Paper, Alert, Table, SimpleGrid, Tabs, Checkbox, Tooltip, Pagination, Code, Card, Switch, NumberInput, ColorSwatch, Popover, ActionIcon, CopyButton, Divider } from '@mantine/core';
16
16
  import { IconLayoutGrid, IconColumns, IconFileInvoice, IconAddressBook, IconTrophy, IconClockExclamation, IconUser, IconPlus, IconChecklist, IconHistory, IconAlertCircle, IconCurrencyDollar, IconChartBar, IconBriefcase, IconSearch, IconTargetArrow, IconAlertTriangle, IconMessages, IconArrowLeft, IconFileText, IconInbox, IconBolt, IconBuilding, IconSettings, IconRestore, IconInfoCircle, IconMailForward, IconCheckbox, IconCalendar, IconMail, IconPhone, IconArrowRight, IconNote, IconCheck, IconCopy } from '@tabler/icons-react';
17
17
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -478,10 +478,10 @@ function useCrmQuickMetrics() {
478
478
  return { data, isLoading, error };
479
479
  }
480
480
  function useRecentCrmActivity(opts) {
481
- const { apiRequest, isReady, organizationId } = useElevasisServices();
481
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
482
482
  const limit = opts?.limit ?? 20;
483
483
  const query = useQuery({
484
- queryKey: ["recent-crm-activity", organizationId, limit],
484
+ queryKey: ["recent-crm-activity", workOSOrganizationId, limit],
485
485
  queryFn: () => apiRequest(`/crm/recent-activity?limit=${limit}`),
486
486
  enabled: isReady
487
487
  });
@@ -1711,15 +1711,15 @@ var crmPrioritySettingsKeys = {
1711
1711
  detail: (organizationId) => [...crmPrioritySettingsKeys.all, organizationId]
1712
1712
  };
1713
1713
  function useCrmPrioritySettings() {
1714
- const { apiRequest, isReady, organizationId } = useElevasisServices();
1714
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
1715
1715
  return useQuery({
1716
- queryKey: crmPrioritySettingsKeys.detail(organizationId),
1716
+ queryKey: crmPrioritySettingsKeys.detail(workOSOrganizationId),
1717
1717
  queryFn: () => apiRequest("/crm/settings/priority"),
1718
1718
  enabled: isReady
1719
1719
  });
1720
1720
  }
1721
1721
  function useUpdateCrmPrioritySettings() {
1722
- const { apiRequest, organizationId } = useElevasisServices();
1722
+ const { apiRequest, workOSOrganizationId } = useElevasisServices();
1723
1723
  const queryClient = useQueryClient();
1724
1724
  return useMutation({
1725
1725
  mutationFn: (override) => apiRequest("/crm/settings/priority", {
@@ -1727,7 +1727,7 @@ function useUpdateCrmPrioritySettings() {
1727
1727
  body: JSON.stringify(override)
1728
1728
  }),
1729
1729
  onSuccess: () => {
1730
- queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(organizationId) });
1730
+ queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(workOSOrganizationId) });
1731
1731
  queryClient.invalidateQueries({ queryKey: dealKeys.lists() });
1732
1732
  queryClient.invalidateQueries({ queryKey: dealKeys.details() });
1733
1733
  showSuccessNotification("CRM priority settings saved.");
@@ -1738,14 +1738,14 @@ function useUpdateCrmPrioritySettings() {
1738
1738
  });
1739
1739
  }
1740
1740
  function useResetCrmPrioritySettings() {
1741
- const { apiRequest, organizationId } = useElevasisServices();
1741
+ const { apiRequest, workOSOrganizationId } = useElevasisServices();
1742
1742
  const queryClient = useQueryClient();
1743
1743
  return useMutation({
1744
1744
  mutationFn: () => apiRequest("/crm/settings/priority", {
1745
1745
  method: "DELETE"
1746
1746
  }),
1747
1747
  onSuccess: () => {
1748
- queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(organizationId) });
1748
+ queryClient.invalidateQueries({ queryKey: crmPrioritySettingsKeys.detail(workOSOrganizationId) });
1749
1749
  queryClient.invalidateQueries({ queryKey: dealKeys.lists() });
1750
1750
  queryClient.invalidateQueries({ queryKey: dealKeys.details() });
1751
1751
  showSuccessNotification("CRM priority settings reset to Org-OS defaults.");
@@ -1,16 +1,16 @@
1
- import { CostTrendChart, ActivityTrendChart } from './chunk-SZWXQHKO.js';
1
+ import { CostTrendChart, ActivityTrendChart } from './chunk-2DIYILF7.js';
2
2
  import { CyberAreaChart } from './chunk-CW3UNAF2.js';
3
3
  import { AppShellLoader } from './chunk-RYTEQBAO.js';
4
4
  import { FilterBar } from './chunk-PDHTXPSF.js';
5
5
  import { CustomModal } from './chunk-KVJ3LFH2.js';
6
6
  import { formatDuration } from './chunk-E4WQGJNS.js';
7
- import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogsFilters, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useTimeRangeDates, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityFilters, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead, useTestNotification } from './chunk-HNFQCOD2.js';
7
+ import { useResolveError, useResolveAllErrors, usePaginationState, useErrorDetails, useMarkAsRead, useExecutionLogsFilters, useExecutionLogs, useExecutionHealth, useErrorAnalysis, useTimeRangeDates, useErrorDetail, useResolveErrorsByExecution, useResources, useCostTrends, useCostSummary, useCostByModel, useCostBreakdown, useActivityFilters, useActivityTrend, useActivities, useNotifications, useMarkAllAsRead } from './chunk-6EFVZV6X.js';
8
8
  import { CenteredErrorState, CardHeader, StatsCardSkeleton, TrendIndicator, DetailCardSkeleton, EmptyState, PageTitleCaption, JsonViewer } from './chunk-6WXDE5LZ.js';
9
9
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
10
10
  import { formatBucketTime, PAGE_SIZE_DEFAULT, getTimeRangeDates } from './chunk-HXZQWMKE.js';
11
11
  import { useState, useMemo, useCallback } from 'react';
12
12
  import { Table, Text, Badge, Tooltip, Card, Group, Select, SegmentedControl, Button, TextInput, Stack, Paper, Center, Loader, ActionIcon, NumberFormatter, Box, Alert, Switch, Pagination, UnstyledButton, Title, Divider, Code, CopyButton, Accordion } from '@mantine/core';
13
- import { IconActivity, IconFilterOff, IconCircleCheck, IconThumbDown, IconThumbUp, IconClock, IconCircleX, IconSearch, IconArrowUpRight, IconAlertTriangle, IconAlertCircle, IconExternalLink, IconChartPie, IconHeartbeat, IconDownload, IconCpu, IconTrendingUp, IconChartBar, IconCash, IconInfoCircle, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconCheck, IconCopy, IconCircleDashed, IconPlus, IconArrowUp, IconArrowDown, IconFileOff, IconRobot, IconKey, IconUser } from '@tabler/icons-react';
13
+ import { IconActivity, IconFilterOff, IconCircleCheck, IconThumbDown, IconThumbUp, IconClock, IconCircleX, IconSearch, IconArrowUpRight, IconAlertTriangle, IconAlertCircle, IconExternalLink, IconChartPie, IconHeartbeat, IconDownload, IconCpu, IconTrendingUp, IconChartBar, IconCash, IconInfoCircle, IconExclamationCircle, IconBug, IconChecks, IconCircle, IconCircleFilled, IconCheck, IconCopy, IconCircleDashed, IconArrowUp, IconArrowDown, IconFileOff, IconRobot, IconKey, IconUser } from '@tabler/icons-react';
14
14
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
15
15
  import { formatDistanceToNow } from 'date-fns';
16
16
 
@@ -1760,33 +1760,12 @@ function NotificationCenter({ pageSize = 20 }) {
1760
1760
  const { data, isLoading } = useNotifications({ limit: pageSize, offset });
1761
1761
  const notifications = data?.notifications ?? [];
1762
1762
  const markAllAsRead = useMarkAllAsRead();
1763
- const testNotification = useTestNotification();
1764
1763
  const hasUnread = notifications.some((n) => !n.read);
1765
1764
  const handleMarkAllAsRead = async () => {
1766
1765
  await markAllAsRead.mutateAsync();
1767
1766
  };
1768
- const handleCreateTest = async () => {
1769
- await testNotification.mutateAsync();
1770
- };
1771
- const isDevelopment = process.env.NODE_ENV === "development";
1772
1767
  return /* @__PURE__ */ jsxs(Fragment, { children: [
1773
- /* @__PURE__ */ jsxs(Group, { justify: "space-between", children: [
1774
- /* @__PURE__ */ jsx(Title, { order: 1, children: "Notifications" }),
1775
- /* @__PURE__ */ jsxs(Group, { gap: "sm", children: [
1776
- isDevelopment && /* @__PURE__ */ jsx(
1777
- Button,
1778
- {
1779
- variant: "light",
1780
- size: "sm",
1781
- leftSection: /* @__PURE__ */ jsx(IconPlus, { size: 16 }),
1782
- onClick: handleCreateTest,
1783
- loading: testNotification.isPending,
1784
- children: "Create Test Notification"
1785
- }
1786
- ),
1787
- hasUnread && /* @__PURE__ */ jsx(Button, { variant: "light", size: "sm", onClick: handleMarkAllAsRead, loading: markAllAsRead.isPending, children: "Mark all as read" })
1788
- ] })
1789
- ] }),
1768
+ hasUnread && /* @__PURE__ */ jsx(Group, { justify: "flex-end", children: /* @__PURE__ */ jsx(Button, { variant: "light", size: "sm", onClick: handleMarkAllAsRead, loading: markAllAsRead.isPending, children: "Mark all as read" }) }),
1790
1769
  /* @__PURE__ */ jsx(Paper, { children: /* @__PURE__ */ jsx(NotificationList, { notifications, isLoading }) }),
1791
1770
  totalPages(data?.total ?? 0) > 1 && /* @__PURE__ */ jsx(Group, { justify: "flex-start", children: /* @__PURE__ */ jsx(Pagination, { value: page, onChange: setPage, total: totalPages(data?.total ?? 0), size: "sm", boundaries: 1 }) })
1792
1771
  ] });
@@ -1,7 +1,7 @@
1
- import { mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-LH4GPYDX.js';
2
- import { PRESETS, getPreset, generateShades } from './chunk-HLFFKKT3.js';
1
+ import { mantineThemeOverride, createCssVariablesResolver, PresetsProvider } from './chunk-T5Z7G2J2.js';
2
+ import { PRESETS, getPreset, generateShades } from './chunk-4VQ2PXMI.js';
3
3
  import { AppBackground } from './chunk-WLOQ4IBG.js';
4
- import { ElevasisCoreProvider } from './chunk-OWESKPTJ.js';
4
+ import { ElevasisCoreProvider } from './chunk-AKOD52HS.js';
5
5
  import { ElevasisLoader } from './chunk-SZHARWKU.js';
6
6
  import { AppearanceProvider } from './chunk-E565XMTQ.js';
7
7
  import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-HXZQWMKE.js';
@@ -1,5 +1,5 @@
1
1
  import { getErrorInfo, formatErrorMessage, getErrorTitle } from './chunk-HXZQWMKE.js';
2
- import { useElevasisServices } from './chunk-5WWZXCS5.js';
2
+ import { useElevasisServices } from './chunk-KJ3QUBNU.js';
3
3
  import { useQuery, useQueryClient, useMutation } from '@tanstack/react-query';
4
4
  import { notifications } from '@mantine/notifications';
5
5
 
@@ -60,9 +60,9 @@ var milestoneKeys = {
60
60
  detail: (id) => [...milestoneKeys.all, "detail", id]
61
61
  };
62
62
  function useMilestones(filters = {}) {
63
- const { apiRequest, isReady, organizationId } = useElevasisServices();
63
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
64
64
  return useQuery({
65
- queryKey: milestoneKeys.list(organizationId, filters),
65
+ queryKey: milestoneKeys.list(workOSOrganizationId, filters),
66
66
  queryFn: async () => {
67
67
  const res = await apiRequest(`/projects/${filters.projectId}/milestones`);
68
68
  return res.milestones;
@@ -141,9 +141,9 @@ var taskKeys = {
141
141
  detail: (id) => [...taskKeys.all, "detail", id]
142
142
  };
143
143
  function useTasks(filters = {}) {
144
- const { apiRequest, isReady, organizationId } = useElevasisServices();
144
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
145
145
  return useQuery({
146
- queryKey: taskKeys.list(organizationId, filters),
146
+ queryKey: taskKeys.list(workOSOrganizationId, filters),
147
147
  queryFn: async () => {
148
148
  const params = new URLSearchParams();
149
149
  if (filters.status) params.set("status", filters.status);
@@ -226,9 +226,9 @@ var noteKeys = {
226
226
  detail: (id) => [...noteKeys.all, "detail", id]
227
227
  };
228
228
  function useProjectNotes(filters = {}) {
229
- const { apiRequest, isReady, organizationId } = useElevasisServices();
229
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
230
230
  return useQuery({
231
- queryKey: noteKeys.list(organizationId, filters),
231
+ queryKey: noteKeys.list(workOSOrganizationId, filters),
232
232
  queryFn: async () => {
233
233
  const res = await apiRequest(`/projects/${filters.projectId}/notes`);
234
234
  return res.notes;
@@ -269,9 +269,9 @@ var projectKeys = {
269
269
  tasks: (id) => [...projectKeys.all, id, "tasks"]
270
270
  };
271
271
  function useProjects(filters = {}) {
272
- const { apiRequest, isReady, organizationId } = useElevasisServices();
272
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
273
273
  return useQuery({
274
- queryKey: projectKeys.list(organizationId, filters),
274
+ queryKey: projectKeys.list(workOSOrganizationId, filters),
275
275
  queryFn: async () => {
276
276
  const params = new URLSearchParams();
277
277
  if (filters.kind) params.set("kind", filters.kind);
@@ -284,9 +284,9 @@ function useProjects(filters = {}) {
284
284
  });
285
285
  }
286
286
  function useProject(id) {
287
- const { apiRequest, isReady, organizationId } = useElevasisServices();
287
+ const { apiRequest, isReady, workOSOrganizationId } = useElevasisServices();
288
288
  return useQuery({
289
- queryKey: [...projectKeys.detail(id), organizationId],
289
+ queryKey: [...projectKeys.detail(id), workOSOrganizationId],
290
290
  queryFn: async () => {
291
291
  try {
292
292
  const res = await apiRequest(`/projects/${id}`);
@@ -1,4 +1,4 @@
1
- import { PRESETS, getPreset, generateShades } from './chunk-HLFFKKT3.js';
1
+ import { PRESETS, getPreset, generateShades } from './chunk-4VQ2PXMI.js';
2
2
  import { Tooltip, Tree, Text, TagsInput, Tabs, Table, Stack, SimpleGrid, Select, Combobox, SegmentedControl, ScrollArea, Paper, Popover, Notification, MultiSelect, Modal, Menu, Input, HoverCard, Group, Grid, Flex, Drawer, Code, Divider, Card, Button, Accordion, createTheme } from '@mantine/core';
3
3
  import { createContext, useContext } from 'react';
4
4
 
@@ -54,6 +54,10 @@ var FRAMEWORK_BRIDGE = {
54
54
  "--input-value-background": "var(--surface-primary-strong)",
55
55
  "--input-value-border": "1px solid var(--border-primary-muted)"
56
56
  };
57
+ var RIGHT_PANEL_BACKGROUND = {
58
+ light: "color-mix(in srgb, var(--color-elevated) 88%, var(--color-background))",
59
+ dark: "color-mix(in srgb, color-mix(in srgb, var(--color-elevated) 82%, var(--glass-background)) 78%, rgba(8, 9, 11, 0.96))"
60
+ };
57
61
  function shadesToVars(shades) {
58
62
  const vars = {};
59
63
  for (let i = 0; i < shades.length; i++) {
@@ -91,8 +95,20 @@ function createCssVariablesResolver(tokens, preset, presetsMap) {
91
95
  const darkShades = shadesToVars(generateShades(darkPrimary));
92
96
  return () => ({
93
97
  variables: { ...FRAMEWORK_BRIDGE },
94
- light: { ...lightShades, ...lightDefaults, ...flat, ...light },
95
- dark: { ...darkShades, ...darkDefaults, ...flat, ...dark }
98
+ light: {
99
+ ...lightShades,
100
+ ...lightDefaults,
101
+ ...flat,
102
+ ...light,
103
+ "--right-panel-background": RIGHT_PANEL_BACKGROUND.light
104
+ },
105
+ dark: {
106
+ ...darkShades,
107
+ ...darkDefaults,
108
+ ...flat,
109
+ ...dark,
110
+ "--right-panel-background": RIGHT_PANEL_BACKGROUND.dark
111
+ }
96
112
  });
97
113
  }
98
114
  var DEFAULT_SIZE = "sm";
@@ -1,4 +1,4 @@
1
- import { useInitialization } from './chunk-WKJ47GIW.js';
1
+ import { useInitialization } from './chunk-533DUEQY.js';
2
2
  import { useAuthContext } from './chunk-BRJ3QZ4E.js';
3
3
  import { useRef, useCallback, useEffect } from 'react';
4
4
  import { useQueryClient } from '@tanstack/react-query';
@@ -1,4 +1,4 @@
1
- import { useOptionalElevasisFeatures } from './chunk-V3HUIZJX.js';
1
+ import { useOptionalElevasisFeatures } from './chunk-6IXOKUBC.js';
2
2
  import { useRouterContext } from './chunk-Q7DJKLEN.js';
3
3
  import { useMemo } from 'react';
4
4
 
@@ -173,13 +173,14 @@ interface ChatInterfaceProps {
173
173
  emptyStateText?: string;
174
174
  emptyStateSubtext?: string;
175
175
  placeholder?: string;
176
+ messageAreaVariant?: 'grid' | 'plain';
176
177
  }
177
178
  /**
178
179
  * Shared chat interface component
179
180
  * Used across ai studio sessions and production agent chat
180
181
  * Handles message display, auto-scroll, and input area
181
182
  */
182
- declare function ChatInterface({ messages, input, onInputChange, onSendMessage, isProcessing, isConnected, error, onClearError, emptyStateText, emptyStateSubtext, placeholder }: ChatInterfaceProps): react_jsx_runtime.JSX.Element;
183
+ declare function ChatInterface({ messages, input, onInputChange, onSendMessage, isProcessing, isConnected, error, onClearError, emptyStateText, emptyStateSubtext, placeholder, messageAreaVariant }: ChatInterfaceProps): react_jsx_runtime.JSX.Element;
183
184
 
184
185
  interface MessageBubbleProps {
185
186
  message: ChatMessage;
@@ -1,3 +1,3 @@
1
- export { ChatHeader, ChatInputArea, ChatInterface, ChatSidebar, MessageBubble, ProcessingIndicator } from '../../chunk-ROSMICXG.js';
1
+ export { ChatHeader, ChatInputArea, ChatInterface, ChatSidebar, MessageBubble, ProcessingIndicator } from '../../chunk-CXY7FMUM.js';
2
2
  import '../../chunk-3KMDHCAR.js';
3
3
  import '../../chunk-I2KLQ2HA.js';