@elevasis/core 0.5.0 → 0.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 (66) hide show
  1. package/dist/index.d.ts +428 -42
  2. package/dist/index.js +596 -47
  3. package/dist/organization-model/index.d.ts +428 -42
  4. package/dist/organization-model/index.js +596 -47
  5. package/package.json +4 -3
  6. package/src/__tests__/template-foundations-compatibility.test.ts +2 -2
  7. package/src/_gen/__tests__/__snapshots__/contracts.md.snap +1131 -0
  8. package/src/_gen/__tests__/scaffold-contracts.test.ts +53 -0
  9. package/src/_gen/scaffold-contracts.ts +45 -0
  10. package/src/business/acquisition/types.ts +2 -0
  11. package/src/commands/queue/types/task.ts +3 -3
  12. package/src/execution/engine/index.ts +8 -0
  13. package/src/execution/engine/tools/registry.ts +26 -24
  14. package/src/execution/engine/tools/tool-maps.ts +13 -9
  15. package/src/execution/engine/workflow/types.ts +2 -3
  16. package/src/index.ts +10 -0
  17. package/src/organization-model/README.md +16 -12
  18. package/src/organization-model/__tests__/defaults.test.ts +175 -0
  19. package/src/organization-model/__tests__/domains/customers.test.ts +295 -0
  20. package/src/organization-model/__tests__/domains/goals.test.ts +479 -0
  21. package/src/organization-model/__tests__/domains/identity.test.ts +279 -0
  22. package/src/organization-model/__tests__/domains/navigation.test.ts +212 -0
  23. package/src/organization-model/__tests__/domains/offerings.test.ts +419 -0
  24. package/src/organization-model/__tests__/domains/operations.test.ts +203 -0
  25. package/src/organization-model/__tests__/domains/resource-mappings.test.ts +362 -0
  26. package/src/organization-model/__tests__/domains/roles.test.ts +347 -0
  27. package/src/organization-model/__tests__/domains/statuses.test.ts +243 -0
  28. package/src/organization-model/__tests__/foundation.test.ts +3 -3
  29. package/src/organization-model/__tests__/resolve.test.ts +447 -3
  30. package/src/organization-model/__tests__/schema.test.ts +407 -0
  31. package/src/organization-model/contracts.ts +5 -5
  32. package/src/organization-model/defaults.ts +39 -16
  33. package/src/organization-model/domains/customers.ts +75 -0
  34. package/src/organization-model/domains/goals.ts +80 -0
  35. package/src/organization-model/domains/identity.ts +94 -0
  36. package/src/organization-model/domains/navigation.ts +43 -4
  37. package/src/organization-model/domains/offerings.ts +66 -0
  38. package/src/organization-model/domains/operations.ts +85 -0
  39. package/src/organization-model/domains/{delivery.ts → projects.ts} +6 -6
  40. package/src/organization-model/domains/{lead-gen.ts → prospecting.ts} +5 -5
  41. package/src/organization-model/domains/roles.ts +55 -0
  42. package/src/organization-model/domains/sales.ts +94 -0
  43. package/src/organization-model/domains/shared.ts +30 -1
  44. package/src/organization-model/domains/statuses.ts +130 -0
  45. package/src/organization-model/index.ts +3 -3
  46. package/src/organization-model/organization-graph.mdx +1 -0
  47. package/src/organization-model/organization-model.mdx +84 -19
  48. package/src/organization-model/published.ts +53 -8
  49. package/src/organization-model/schema.ts +67 -7
  50. package/src/organization-model/types.ts +31 -7
  51. package/src/platform/constants/versions.ts +1 -1
  52. package/src/platform/registry/types.ts +1 -1
  53. package/src/projects/api-schemas.ts +1 -0
  54. package/src/reference/_generated/contracts.md +116 -8
  55. package/src/reference/glossary.md +25 -4
  56. package/src/requests/__tests__/api-schemas.test.ts +277 -0
  57. package/src/requests/api-schemas.ts +83 -0
  58. package/src/requests/index.ts +1 -0
  59. package/src/scaffold-registry/__tests__/schema.test.ts +280 -0
  60. package/src/scaffold-registry/index.ts +194 -0
  61. package/src/scaffold-registry/schema.ts +144 -0
  62. package/src/supabase/database.types.ts +158 -6
  63. package/src/organization-model/domains/crm.ts +0 -46
  64. /package/src/business/{delivery → projects}/index.ts +0 -0
  65. /package/src/business/{delivery → projects}/types.ts +0 -0
  66. /package/src/business/{crm → sales}/api-schemas.ts +0 -0
@@ -14,6 +14,25 @@ var DisplayMetadataSchema = z.object({
14
14
  color: ColorTokenSchema.optional(),
15
15
  icon: IconNameSchema.optional()
16
16
  });
17
+ var TechStackEntrySchema = z.object({
18
+ /** Name of the external platform (e.g. "HubSpot", "Stripe", "Notion"). */
19
+ platform: z.string().trim().min(1).max(200),
20
+ /** Free-form description of what this integration is used for. */
21
+ purpose: z.string().trim().min(1).max(500),
22
+ /**
23
+ * Health of the credential backing this integration.
24
+ * - configured: credential present and valid
25
+ * - pending: not yet set up
26
+ * - expired: credential existed but has lapsed
27
+ * - missing: expected but not present
28
+ */
29
+ credentialStatus: z.enum(["configured", "pending", "expired", "missing"]),
30
+ /**
31
+ * Whether this integration is the primary system of record for its domain
32
+ * (e.g. HubSpot is SoR for contacts). Defaults to false.
33
+ */
34
+ isSystemOfRecord: z.boolean().default(false)
35
+ });
17
36
  var ResourceMappingSchema = DisplayMetadataSchema.extend({
18
37
  id: ModelIdSchema,
19
38
  resourceId: z.string().trim().min(1).max(255),
@@ -21,7 +40,9 @@ var ResourceMappingSchema = DisplayMetadataSchema.extend({
21
40
  featureIds: ReferenceIdsSchema,
22
41
  entityIds: ReferenceIdsSchema,
23
42
  surfaceIds: ReferenceIdsSchema,
24
- capabilityIds: ReferenceIdsSchema
43
+ capabilityIds: ReferenceIdsSchema,
44
+ /** Optional tech-stack metadata for external-SaaS integrations. */
45
+ techStack: TechStackEntrySchema.optional()
25
46
  });
26
47
 
27
48
  // src/organization-model/domains/branding.ts
@@ -41,27 +62,27 @@ var DEFAULT_ORGANIZATION_MODEL_BRANDING = {
41
62
  shortName: "Elevasis",
42
63
  logos: {}
43
64
  };
44
- var CrmStageSemanticClassSchema = z.enum(["open", "active", "nurturing", "closed_won", "closed_lost"]);
45
- var CrmStageSchema = DisplayMetadataSchema.extend({
65
+ var SalesStageSemanticClassSchema = z.enum(["open", "active", "nurturing", "closed_won", "closed_lost"]);
66
+ var SalesStageSchema = DisplayMetadataSchema.extend({
46
67
  id: ModelIdSchema,
47
68
  order: z.number().int().min(0),
48
- semanticClass: CrmStageSemanticClassSchema,
69
+ semanticClass: SalesStageSemanticClassSchema,
49
70
  surfaceIds: ReferenceIdsSchema,
50
71
  resourceIds: ReferenceIdsSchema
51
72
  });
52
- var CrmPipelineSchema = z.object({
73
+ var SalesPipelineSchema = z.object({
53
74
  id: ModelIdSchema,
54
75
  label: z.string().trim().min(1).max(120),
55
76
  description: DescriptionSchema.optional(),
56
77
  entityId: ModelIdSchema,
57
- stages: z.array(CrmStageSchema).min(1)
78
+ stages: z.array(SalesStageSchema).min(1)
58
79
  });
59
- var OrganizationModelCrmSchema = z.object({
80
+ var OrganizationModelSalesSchema = z.object({
60
81
  entityId: ModelIdSchema,
61
82
  defaultPipelineId: ModelIdSchema,
62
- pipelines: z.array(CrmPipelineSchema).min(1)
83
+ pipelines: z.array(SalesPipelineSchema).min(1)
63
84
  });
64
- var DEFAULT_ORGANIZATION_MODEL_CRM = {
85
+ var DEFAULT_ORGANIZATION_MODEL_SALES = {
65
86
  entityId: "crm.deal",
66
87
  defaultPipelineId: "default",
67
88
  pipelines: [
@@ -70,29 +91,77 @@ var DEFAULT_ORGANIZATION_MODEL_CRM = {
70
91
  label: "Default Pipeline",
71
92
  entityId: "crm.deal",
72
93
  stages: [
73
- { id: "interested", label: "Interested", color: "blue", order: 1, semanticClass: "open", surfaceIds: ["crm.pipeline"], resourceIds: [] },
74
- { id: "proposal", label: "Proposal", color: "yellow", order: 2, semanticClass: "active", surfaceIds: ["crm.pipeline"], resourceIds: [] },
75
- { id: "closing", label: "Closing", color: "lime", order: 3, semanticClass: "active", surfaceIds: ["crm.pipeline"], resourceIds: [] },
76
- { id: "closed_won", label: "Closed Won", color: "green", order: 4, semanticClass: "closed_won", surfaceIds: ["crm.pipeline"], resourceIds: [] },
77
- { id: "closed_lost", label: "Closed Lost", color: "red", order: 5, semanticClass: "closed_lost", surfaceIds: ["crm.pipeline"], resourceIds: [] },
78
- { id: "nurturing", label: "Nurturing", color: "grape", order: 6, semanticClass: "nurturing", surfaceIds: ["crm.pipeline"], resourceIds: [] }
94
+ {
95
+ id: "interested",
96
+ label: "Interested",
97
+ color: "blue",
98
+ order: 1,
99
+ semanticClass: "open",
100
+ surfaceIds: ["crm.pipeline"],
101
+ resourceIds: []
102
+ },
103
+ {
104
+ id: "proposal",
105
+ label: "Proposal",
106
+ color: "yellow",
107
+ order: 2,
108
+ semanticClass: "active",
109
+ surfaceIds: ["crm.pipeline"],
110
+ resourceIds: []
111
+ },
112
+ {
113
+ id: "closing",
114
+ label: "Closing",
115
+ color: "lime",
116
+ order: 3,
117
+ semanticClass: "active",
118
+ surfaceIds: ["crm.pipeline"],
119
+ resourceIds: []
120
+ },
121
+ {
122
+ id: "closed_won",
123
+ label: "Closed Won",
124
+ color: "green",
125
+ order: 4,
126
+ semanticClass: "closed_won",
127
+ surfaceIds: ["crm.pipeline"],
128
+ resourceIds: []
129
+ },
130
+ {
131
+ id: "closed_lost",
132
+ label: "Closed Lost",
133
+ color: "red",
134
+ order: 5,
135
+ semanticClass: "closed_lost",
136
+ surfaceIds: ["crm.pipeline"],
137
+ resourceIds: []
138
+ },
139
+ {
140
+ id: "nurturing",
141
+ label: "Nurturing",
142
+ color: "grape",
143
+ order: 6,
144
+ semanticClass: "nurturing",
145
+ surfaceIds: ["crm.pipeline"],
146
+ resourceIds: []
147
+ }
79
148
  ]
80
149
  }
81
150
  ]
82
151
  };
83
- var DeliveryStateSchema = DisplayMetadataSchema.extend({
152
+ var ProjectsDomainStateSchema = DisplayMetadataSchema.extend({
84
153
  id: ModelIdSchema,
85
154
  order: z.number().int().min(0)
86
155
  });
87
- var OrganizationModelDeliverySchema = z.object({
156
+ var OrganizationModelProjectsSchema = z.object({
88
157
  projectEntityId: ModelIdSchema,
89
158
  milestoneEntityId: ModelIdSchema,
90
159
  taskEntityId: ModelIdSchema,
91
- projectStatuses: z.array(DeliveryStateSchema).min(1),
92
- milestoneStatuses: z.array(DeliveryStateSchema).min(1),
93
- taskStatuses: z.array(DeliveryStateSchema).min(1)
160
+ projectStatuses: z.array(ProjectsDomainStateSchema).min(1),
161
+ milestoneStatuses: z.array(ProjectsDomainStateSchema).min(1),
162
+ taskStatuses: z.array(ProjectsDomainStateSchema).min(1)
94
163
  });
95
- var DEFAULT_ORGANIZATION_MODEL_DELIVERY = {
164
+ var DEFAULT_ORGANIZATION_MODEL_PROJECTS = {
96
165
  projectEntityId: "delivery.project",
97
166
  milestoneEntityId: "delivery.milestone",
98
167
  taskEntityId: "delivery.task",
@@ -135,19 +204,19 @@ var FeatureSchema = z.object({
135
204
  resourceIds: ReferenceIdsSchema,
136
205
  capabilityIds: ReferenceIdsSchema
137
206
  });
138
- var LeadGenLifecycleStageSchema = DisplayMetadataSchema.extend({
207
+ var ProspectingLifecycleStageSchema = DisplayMetadataSchema.extend({
139
208
  id: ModelIdSchema,
140
209
  order: z.number().int().min(0)
141
210
  });
142
- var OrganizationModelLeadGenSchema = z.object({
211
+ var OrganizationModelProspectingSchema = z.object({
143
212
  listEntityId: ModelIdSchema,
144
213
  companyEntityId: ModelIdSchema,
145
214
  contactEntityId: ModelIdSchema,
146
215
  description: DescriptionSchema.optional(),
147
- companyStages: z.array(LeadGenLifecycleStageSchema).min(1),
148
- contactStages: z.array(LeadGenLifecycleStageSchema).min(1)
216
+ companyStages: z.array(ProspectingLifecycleStageSchema).min(1),
217
+ contactStages: z.array(ProspectingLifecycleStageSchema).min(1)
149
218
  });
150
- var DEFAULT_ORGANIZATION_MODEL_LEAD_GEN = {
219
+ var DEFAULT_ORGANIZATION_MODEL_PROSPECTING = {
151
220
  listEntityId: "leadgen.list",
152
221
  companyEntityId: "leadgen.company",
153
222
  contactEntityId: "leadgen.contact",
@@ -167,15 +236,15 @@ var DEFAULT_ORGANIZATION_MODEL_LEAD_GEN = {
167
236
  // src/organization-model/contracts.ts
168
237
  var PROJECTS_FEATURE_ID = "projects";
169
238
  var PROJECTS_INDEX_SURFACE_ID = "projects.index";
170
- var DELIVERY_PROJECTS_VIEW_CAPABILITY_ID = "delivery.projects.view";
171
- var CRM_FEATURE_ID = "crm";
172
- var LEAD_GEN_FEATURE_ID = "lead-gen";
239
+ var PROJECTS_VIEW_CAPABILITY_ID = "delivery.projects.view";
240
+ var SALES_FEATURE_ID = "crm";
241
+ var PROSPECTING_FEATURE_ID = "lead-gen";
173
242
  var OPERATIONS_FEATURE_ID = "operations";
174
243
  var MONITORING_FEATURE_ID = "monitoring";
175
244
  var SETTINGS_FEATURE_ID = "settings";
176
245
  var SEO_FEATURE_ID = "seo";
177
- var CRM_PIPELINE_SURFACE_ID = "crm.pipeline";
178
- var LEAD_GEN_LISTS_SURFACE_ID = "lead-gen.lists";
246
+ var SALES_PIPELINE_SURFACE_ID = "crm.pipeline";
247
+ var PROSPECTING_LISTS_SURFACE_ID = "lead-gen.lists";
179
248
  var OPERATIONS_ORGANIZATION_GRAPH_SURFACE_ID = "operations.organization-graph";
180
249
 
181
250
  // src/organization-model/domains/navigation.ts
@@ -198,7 +267,7 @@ var SurfaceDefinitionSchema = z.object({
198
267
  var NavigationGroupSchema = z.object({
199
268
  id: ModelIdSchema,
200
269
  label: LabelSchema,
201
- placement: z.enum(["primary", "secondary", "bottom"]),
270
+ placement: z.string().trim().min(1).max(50),
202
271
  surfaceIds: z.array(ModelIdSchema).default([])
203
272
  });
204
273
  var OrganizationModelNavigationSchema = z.object({
@@ -243,7 +312,7 @@ var DEFAULT_ORGANIZATION_MODEL_NAVIGATION = {
243
312
  featureIds: [PROJECTS_FEATURE_ID],
244
313
  entityIds: ["delivery.project"],
245
314
  resourceIds: [],
246
- capabilityIds: [DELIVERY_PROJECTS_VIEW_CAPABILITY_ID]
315
+ capabilityIds: [PROJECTS_VIEW_CAPABILITY_ID]
247
316
  },
248
317
  {
249
318
  id: "operations.organization-graph",
@@ -389,6 +458,30 @@ var DEFAULT_ORGANIZATION_MODEL_NAVIGATION = {
389
458
  resourceIds: [],
390
459
  capabilityIds: []
391
460
  },
461
+ {
462
+ id: "submitted-requests.list",
463
+ label: "Submitted Requests",
464
+ path: "/monitoring/requests",
465
+ surfaceType: "list",
466
+ enabled: true,
467
+ featureId: "submitted-requests",
468
+ featureIds: ["submitted-requests"],
469
+ entityIds: ["reported_request"],
470
+ resourceIds: [],
471
+ capabilityIds: []
472
+ },
473
+ {
474
+ id: "submitted-requests.detail",
475
+ label: "Request Detail",
476
+ path: "/monitoring/requests/:requestId",
477
+ surfaceType: "detail",
478
+ enabled: true,
479
+ featureId: "submitted-requests",
480
+ featureIds: ["submitted-requests"],
481
+ entityIds: ["reported_request"],
482
+ resourceIds: [],
483
+ capabilityIds: []
484
+ },
392
485
  {
393
486
  id: "settings.account",
394
487
  label: "Account",
@@ -504,7 +597,9 @@ var DEFAULT_ORGANIZATION_MODEL_NAVIGATION = {
504
597
  "monitoring.execution-logs",
505
598
  "monitoring.execution-health",
506
599
  "monitoring.cost-analytics",
507
- "monitoring.notifications"
600
+ "monitoring.notifications",
601
+ "submitted-requests.list",
602
+ "submitted-requests.detail"
508
603
  ]
509
604
  },
510
605
  {
@@ -523,6 +618,399 @@ var DEFAULT_ORGANIZATION_MODEL_NAVIGATION = {
523
618
  }
524
619
  ]
525
620
  };
621
+ var BusinessHoursDaySchema = z.object({
622
+ open: z.string().trim().regex(/^\d{2}:\d{2}$/, "Expected HH:MM format"),
623
+ close: z.string().trim().regex(/^\d{2}:\d{2}$/, "Expected HH:MM format")
624
+ });
625
+ var BusinessHoursSchema = z.object({
626
+ monday: BusinessHoursDaySchema.optional(),
627
+ tuesday: BusinessHoursDaySchema.optional(),
628
+ wednesday: BusinessHoursDaySchema.optional(),
629
+ thursday: BusinessHoursDaySchema.optional(),
630
+ friday: BusinessHoursDaySchema.optional(),
631
+ saturday: BusinessHoursDaySchema.optional(),
632
+ sunday: BusinessHoursDaySchema.optional()
633
+ }).default({});
634
+ var IdentityDomainSchema = z.object({
635
+ /** Why the organization exists — one or two plain-language sentences. */
636
+ mission: z.string().trim().max(1e3).default(""),
637
+ /** Long-term direction the organization is moving toward. */
638
+ vision: z.string().trim().max(1e3).default(""),
639
+ /** Legal registered name of the entity. */
640
+ legalName: z.string().trim().max(200).default(""),
641
+ /**
642
+ * Type of legal entity (e.g. "LLC", "Corporation", "Sole Proprietor",
643
+ * "Non-profit"). Free-form string so it covers any jurisdiction.
644
+ */
645
+ entityType: z.string().trim().max(100).default(""),
646
+ /**
647
+ * Primary jurisdiction of registration or operation
648
+ * (e.g. "United States – Delaware", "Canada – Ontario").
649
+ */
650
+ jurisdiction: z.string().trim().max(200).default(""),
651
+ /**
652
+ * Industry category — broad classification (e.g. "Marketing Agency",
653
+ * "Software / SaaS", "Professional Services").
654
+ */
655
+ industryCategory: z.string().trim().max(200).default(""),
656
+ /**
657
+ * Geographic focus — where the organization primarily operates or serves
658
+ * (e.g. "North America", "Global", "Southeast Asia").
659
+ */
660
+ geographicFocus: z.string().trim().max(200).default(""),
661
+ /**
662
+ * IANA timezone identifier for the organization's primary operating timezone
663
+ * (e.g. "America/Los_Angeles", "Europe/London", "UTC").
664
+ */
665
+ timeZone: z.string().trim().max(100).default("UTC"),
666
+ /** Typical operating hours per day of week. Empty object means not configured. */
667
+ businessHours: BusinessHoursSchema,
668
+ /**
669
+ * Long-form markdown capturing client context, problem narrative, and domain
670
+ * background. Populated by /setup; surfaced to agents as organizational context.
671
+ * Optional — many projects have no external client.
672
+ */
673
+ clientBrief: z.string().trim().default("")
674
+ });
675
+ var DEFAULT_ORGANIZATION_MODEL_IDENTITY = {
676
+ mission: "",
677
+ vision: "",
678
+ legalName: "",
679
+ entityType: "",
680
+ jurisdiction: "",
681
+ industryCategory: "",
682
+ geographicFocus: "",
683
+ timeZone: "UTC",
684
+ businessHours: {},
685
+ clientBrief: ""
686
+ };
687
+ var FirmographicsSchema = z.object({
688
+ /** Industry vertical (e.g. "Marketing Agency", "Legal", "Real Estate"). */
689
+ industry: z.string().trim().max(200).optional(),
690
+ /**
691
+ * Company headcount band (e.g. "1–10", "11–50", "51–200", "200+").
692
+ * Free-form string to accommodate any band notation.
693
+ */
694
+ companySize: z.string().trim().max(100).optional(),
695
+ /**
696
+ * Primary geographic region the segment operates in or is targeted from
697
+ * (e.g. "North America", "Europe", "Global").
698
+ */
699
+ region: z.string().trim().max(200).optional()
700
+ });
701
+ var CustomerSegmentSchema = z.object({
702
+ /** Stable unique identifier for the segment (e.g. "segment-smb-agencies"). */
703
+ id: z.string().trim().min(1).max(100),
704
+ /** Human-readable name shown to agents and in UI (e.g. "SMB Marketing Agencies"). */
705
+ name: z.string().trim().max(200).default(""),
706
+ /** One or two sentences describing who this segment is. */
707
+ description: z.string().trim().max(2e3).default(""),
708
+ /**
709
+ * The primary job(s) this segment is trying to get done — the goal they hire
710
+ * a product/service to accomplish. Plain-language narrative or bullet list.
711
+ */
712
+ jobsToBeDone: z.string().trim().max(2e3).default(""),
713
+ /**
714
+ * Pains — frustrations, obstacles, and risks the segment experiences
715
+ * when trying to accomplish their jobs-to-be-done.
716
+ */
717
+ pains: z.array(z.string().trim().max(500)).default([]),
718
+ /**
719
+ * Gains — outcomes and benefits the segment desires; positive motivators
720
+ * beyond merely resolving pains.
721
+ */
722
+ gains: z.array(z.string().trim().max(500)).default([]),
723
+ /** Firmographic profile for targeting and filtering. */
724
+ firmographics: FirmographicsSchema.default({}),
725
+ /**
726
+ * Value proposition — one or two sentences stating why this organization's
727
+ * offering is uniquely suited for this segment's needs.
728
+ */
729
+ valueProp: z.string().trim().max(2e3).default("")
730
+ });
731
+ var CustomersDomainSchema = z.object({
732
+ segments: z.array(CustomerSegmentSchema).default([])
733
+ });
734
+ var DEFAULT_ORGANIZATION_MODEL_CUSTOMERS = {
735
+ segments: []
736
+ };
737
+ var PricingModelSchema = z.enum(["one-time", "subscription", "usage-based", "custom"]);
738
+ var ProductSchema = z.object({
739
+ /** Stable unique identifier for the product (e.g. "product-starter-plan"). */
740
+ id: z.string().trim().min(1).max(100),
741
+ /** Human-readable name shown to agents and in UI (e.g. "Starter Plan"). */
742
+ name: z.string().trim().max(200).default(""),
743
+ /** One or two sentences describing what this product/service delivers. */
744
+ description: z.string().trim().max(2e3).default(""),
745
+ /**
746
+ * How this product is priced:
747
+ * - "one-time" — single purchase (setup fee, project fee)
748
+ * - "subscription" — recurring (monthly/annual SaaS, retainer)
749
+ * - "usage-based" — metered by consumption (API calls, seats)
750
+ * - "custom" — negotiated or bespoke pricing
751
+ */
752
+ pricingModel: PricingModelSchema.default("custom"),
753
+ /** Base price amount (≥ 0). Currency unit defined by `currency`. */
754
+ price: z.number().min(0).default(0),
755
+ /**
756
+ * ISO 4217 currency code (e.g. "USD", "EUR", "GBP").
757
+ * Free-form string to accommodate any currency; defaults to "USD".
758
+ */
759
+ currency: z.string().trim().max(10).default("USD"),
760
+ /**
761
+ * IDs of customer segments this product targets.
762
+ * Each id must reference a declared `customers.segments[].id`.
763
+ * Cross-reference enforced in `OrganizationModelSchema.superRefine()`.
764
+ */
765
+ targetSegmentIds: z.array(z.string().trim().min(1)).default([]),
766
+ /**
767
+ * Optional: ID of the platform feature responsible for delivering this product.
768
+ * When present, must reference a declared `features[].id`.
769
+ * Cross-reference enforced in `OrganizationModelSchema.superRefine()`.
770
+ */
771
+ deliveryFeatureId: z.string().trim().min(1).optional()
772
+ });
773
+ var OfferingsDomainSchema = z.object({
774
+ products: z.array(ProductSchema).default([])
775
+ });
776
+ var DEFAULT_ORGANIZATION_MODEL_OFFERINGS = {
777
+ products: []
778
+ };
779
+ var RoleSchema = z.object({
780
+ /** Stable unique identifier for the role (e.g. "role-ceo", "role-head-of-sales"). */
781
+ id: z.string().trim().min(1).max(100),
782
+ /** Human-readable title shown to agents and in UI (e.g. "CEO", "Head of Sales"). */
783
+ title: z.string().trim().min(1).max(200),
784
+ /**
785
+ * List of responsibilities this role owns — plain-language descriptions of
786
+ * what the person in this role is accountable for delivering.
787
+ * Defaults to empty array so minimal role definitions stay concise.
788
+ */
789
+ responsibilities: z.array(z.string().trim().max(500)).default([]),
790
+ /**
791
+ * Optional: ID of another role this role reports to.
792
+ * When present, must reference another `roles[].id` in the same organization.
793
+ * Cross-reference enforced in `OrganizationModelSchema.superRefine()`.
794
+ * Absence indicates a top-level role (no reporting line).
795
+ */
796
+ reportsToId: z.string().trim().min(1).max(100).optional(),
797
+ /**
798
+ * Optional: name or email of the person currently holding this role.
799
+ * Free-form string — supports "Alice Johnson", "alice@example.com", or
800
+ * any human-readable identifier. Not validated against any user registry.
801
+ */
802
+ heldBy: z.string().trim().max(200).optional()
803
+ });
804
+ var RolesDomainSchema = z.object({
805
+ roles: z.array(RoleSchema).default([])
806
+ });
807
+ var DEFAULT_ORGANIZATION_MODEL_ROLES = {
808
+ roles: []
809
+ };
810
+ var KeyResultSchema = z.object({
811
+ /** Stable unique identifier for the measurable outcome (e.g. "kr-revenue-q1"). */
812
+ id: z.string().trim().min(1).max(100),
813
+ /** Plain-language description of this measurable outcome (e.g. "Increase trial-to-paid conversion"). */
814
+ description: z.string().trim().min(1).max(500),
815
+ /**
816
+ * What is being measured — the metric name (e.g. "monthly revenue", "NPS score",
817
+ * "trial-to-paid conversion rate"). Free-form string.
818
+ */
819
+ targetMetric: z.string().trim().min(1).max(200),
820
+ /** Current measured value. Defaults to 0 when not yet tracked. */
821
+ currentValue: z.number().default(0),
822
+ /**
823
+ * Target value to reach for this measurable outcome to be considered achieved.
824
+ * Optional — omit if the outcome is directional (e.g. "reduce churn") without
825
+ * a hard numeric target.
826
+ */
827
+ targetValue: z.number().optional()
828
+ });
829
+ var ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
830
+ var ObjectiveSchema = z.object({
831
+ /** Stable unique identifier for the goal (e.g. "goal-grow-arr-q1-2026"). */
832
+ id: z.string().trim().min(1).max(100),
833
+ /** Plain-language description of what the organization wants to achieve. */
834
+ description: z.string().trim().min(1).max(1e3),
835
+ /**
836
+ * Start of the period this goal is active for — ISO 8601 date string (YYYY-MM-DD).
837
+ * Must be strictly before `periodEnd`.
838
+ */
839
+ periodStart: z.string().regex(ISO_DATE_REGEX, "periodStart must be an ISO date string (YYYY-MM-DD)"),
840
+ /**
841
+ * End of the period this goal is active for — ISO 8601 date string (YYYY-MM-DD).
842
+ * Must be strictly after `periodStart`.
843
+ * Enforced via `OrganizationModelSchema.superRefine()`.
844
+ */
845
+ periodEnd: z.string().regex(ISO_DATE_REGEX, "periodEnd must be an ISO date string (YYYY-MM-DD)"),
846
+ /**
847
+ * List of measurable outcomes that define success for this goal.
848
+ * Defaults to empty array so goals can be declared before outcomes are defined.
849
+ */
850
+ keyResults: z.array(KeyResultSchema).default([])
851
+ });
852
+ var GoalsDomainSchema = z.object({
853
+ objectives: z.array(ObjectiveSchema).default([])
854
+ });
855
+ var DEFAULT_ORGANIZATION_MODEL_GOALS = {
856
+ objectives: []
857
+ };
858
+ var OperationSemanticClassSchema = z.enum(["queue", "executions", "sessions", "notifications", "schedules"]);
859
+ var OperationEntrySchema = z.object({
860
+ id: z.string().trim().min(1).max(100),
861
+ label: z.string().trim().min(1).max(120),
862
+ semanticClass: OperationSemanticClassSchema,
863
+ /** Optional reference to the feature that owns this runtime entity. */
864
+ featureId: z.string().trim().min(1).max(100).optional(),
865
+ /**
866
+ * Optional pointer to the status semanticClass values that apply to this
867
+ * entity — ties operations back to the statuses domain for vibe rendering.
868
+ */
869
+ supportedStatusSemanticClass: z.array(z.string().trim().min(1).max(80)).optional()
870
+ });
871
+ var OperationsDomainSchema = z.object({
872
+ entries: z.array(OperationEntrySchema).default([])
873
+ });
874
+ var DEFAULT_ORGANIZATION_MODEL_OPERATIONS = {
875
+ entries: [
876
+ // --- queue (HITL command queue) ---
877
+ {
878
+ id: "operations.queue",
879
+ label: "HITL Queue",
880
+ semanticClass: "queue",
881
+ featureId: "operations",
882
+ supportedStatusSemanticClass: ["queue"]
883
+ },
884
+ // --- executions (workflow / agent executions) ---
885
+ {
886
+ id: "operations.executions",
887
+ label: "Executions",
888
+ semanticClass: "executions",
889
+ featureId: "operations",
890
+ supportedStatusSemanticClass: ["execution"]
891
+ },
892
+ // --- sessions (agent conversation sessions) ---
893
+ {
894
+ id: "operations.sessions",
895
+ label: "Sessions",
896
+ semanticClass: "sessions",
897
+ featureId: "operations"
898
+ },
899
+ // --- notifications (platform in-app notifications) ---
900
+ {
901
+ id: "operations.notifications",
902
+ label: "Notifications",
903
+ semanticClass: "notifications",
904
+ featureId: "monitoring"
905
+ },
906
+ // --- schedules (task scheduler) ---
907
+ {
908
+ id: "operations.schedules",
909
+ label: "Schedules",
910
+ semanticClass: "schedules",
911
+ featureId: "operations",
912
+ supportedStatusSemanticClass: ["schedule", "schedule.run"]
913
+ }
914
+ ]
915
+ };
916
+ var StatusSemanticClassSchema = z.enum([
917
+ "delivery.task",
918
+ "delivery.project",
919
+ "delivery.milestone",
920
+ "queue",
921
+ "execution",
922
+ "schedule",
923
+ "schedule.run",
924
+ "request"
925
+ ]);
926
+ var StatusEntrySchema = z.object({
927
+ id: z.string().trim().min(1).max(100),
928
+ label: z.string().trim().min(1).max(120),
929
+ semanticClass: StatusSemanticClassSchema,
930
+ category: z.string().trim().min(1).max(80).optional()
931
+ });
932
+ var StatusesDomainSchema = z.object({
933
+ entries: z.array(StatusEntrySchema).default([])
934
+ });
935
+ var DEFAULT_ORGANIZATION_MODEL_STATUSES = {
936
+ entries: [
937
+ // --- delivery.task (TaskStatus — 9 values) ---
938
+ { id: "delivery.task.planned", label: "Planned", semanticClass: "delivery.task", category: "delivery" },
939
+ { id: "delivery.task.in_progress", label: "In Progress", semanticClass: "delivery.task", category: "delivery" },
940
+ { id: "delivery.task.blocked", label: "Blocked", semanticClass: "delivery.task", category: "delivery" },
941
+ { id: "delivery.task.submitted", label: "Submitted", semanticClass: "delivery.task", category: "delivery" },
942
+ { id: "delivery.task.approved", label: "Approved", semanticClass: "delivery.task", category: "delivery" },
943
+ {
944
+ id: "delivery.task.revision_requested",
945
+ label: "Revision Requested",
946
+ semanticClass: "delivery.task",
947
+ category: "delivery"
948
+ },
949
+ { id: "delivery.task.rejected", label: "Rejected", semanticClass: "delivery.task", category: "delivery" },
950
+ { id: "delivery.task.cancelled", label: "Cancelled", semanticClass: "delivery.task", category: "delivery" },
951
+ { id: "delivery.task.completed", label: "Completed", semanticClass: "delivery.task", category: "delivery" },
952
+ // --- delivery.project (ProjectStatus — 6 values) ---
953
+ { id: "delivery.project.active", label: "Active", semanticClass: "delivery.project", category: "delivery" },
954
+ { id: "delivery.project.on_track", label: "On Track", semanticClass: "delivery.project", category: "delivery" },
955
+ { id: "delivery.project.at_risk", label: "At Risk", semanticClass: "delivery.project", category: "delivery" },
956
+ { id: "delivery.project.blocked", label: "Blocked", semanticClass: "delivery.project", category: "delivery" },
957
+ { id: "delivery.project.paused", label: "Paused", semanticClass: "delivery.project", category: "delivery" },
958
+ { id: "delivery.project.completed", label: "Completed", semanticClass: "delivery.project", category: "delivery" },
959
+ // --- delivery.milestone (MilestoneStatus — 5 values) ---
960
+ {
961
+ id: "delivery.milestone.upcoming",
962
+ label: "Upcoming",
963
+ semanticClass: "delivery.milestone",
964
+ category: "delivery"
965
+ },
966
+ {
967
+ id: "delivery.milestone.in_progress",
968
+ label: "In Progress",
969
+ semanticClass: "delivery.milestone",
970
+ category: "delivery"
971
+ },
972
+ {
973
+ id: "delivery.milestone.blocked",
974
+ label: "Blocked",
975
+ semanticClass: "delivery.milestone",
976
+ category: "delivery"
977
+ },
978
+ { id: "delivery.milestone.overdue", label: "Overdue", semanticClass: "delivery.milestone", category: "delivery" },
979
+ {
980
+ id: "delivery.milestone.completed",
981
+ label: "Completed",
982
+ semanticClass: "delivery.milestone",
983
+ category: "delivery"
984
+ },
985
+ // --- queue (QueueTaskStatus — 5 values, maps hitl/command-queue tasks) ---
986
+ { id: "queue.pending", label: "Pending", semanticClass: "queue", category: "queue" },
987
+ { id: "queue.processing", label: "Processing", semanticClass: "queue", category: "queue" },
988
+ { id: "queue.completed", label: "Completed", semanticClass: "queue", category: "queue" },
989
+ { id: "queue.failed", label: "Failed", semanticClass: "queue", category: "queue" },
990
+ { id: "queue.expired", label: "Expired", semanticClass: "queue", category: "queue" },
991
+ // --- execution (ExecutionStatus — 5 values) ---
992
+ { id: "execution.pending", label: "Pending", semanticClass: "execution", category: "execution" },
993
+ { id: "execution.running", label: "Running", semanticClass: "execution", category: "execution" },
994
+ { id: "execution.completed", label: "Completed", semanticClass: "execution", category: "execution" },
995
+ { id: "execution.failed", label: "Failed", semanticClass: "execution", category: "execution" },
996
+ { id: "execution.warning", label: "Warning", semanticClass: "execution", category: "execution" },
997
+ // --- schedule (schedule status — 4 values) ---
998
+ { id: "schedule.active", label: "Active", semanticClass: "schedule", category: "schedule" },
999
+ { id: "schedule.paused", label: "Paused", semanticClass: "schedule", category: "schedule" },
1000
+ { id: "schedule.completed", label: "Completed", semanticClass: "schedule", category: "schedule" },
1001
+ { id: "schedule.cancelled", label: "Cancelled", semanticClass: "schedule", category: "schedule" },
1002
+ // --- schedule.run (schedule run status — 4 values) ---
1003
+ { id: "schedule.run.running", label: "Running", semanticClass: "schedule.run", category: "schedule" },
1004
+ { id: "schedule.run.completed", label: "Completed", semanticClass: "schedule.run", category: "schedule" },
1005
+ { id: "schedule.run.failed", label: "Failed", semanticClass: "schedule.run", category: "schedule" },
1006
+ { id: "schedule.run.cancelled", label: "Cancelled", semanticClass: "schedule.run", category: "schedule" },
1007
+ // --- request (RequestStatus — 4 values, maps reported_requests) ---
1008
+ { id: "request.open", label: "Open", semanticClass: "request", category: "request" },
1009
+ { id: "request.investigating", label: "Investigating", semanticClass: "request", category: "request" },
1010
+ { id: "request.resolved", label: "Resolved", semanticClass: "request", category: "request" },
1011
+ { id: "request.wont_fix", label: "Won't Fix", semanticClass: "request", category: "request" }
1012
+ ]
1013
+ };
526
1014
 
527
1015
  // src/organization-model/schema.ts
528
1016
  var OrganizationModelSchemaBase = z.object({
@@ -530,9 +1018,16 @@ var OrganizationModelSchemaBase = z.object({
530
1018
  features: z.array(FeatureSchema).default([]),
531
1019
  branding: OrganizationModelBrandingSchema,
532
1020
  navigation: OrganizationModelNavigationSchema,
533
- crm: OrganizationModelCrmSchema,
534
- leadGen: OrganizationModelLeadGenSchema,
535
- delivery: OrganizationModelDeliverySchema,
1021
+ sales: OrganizationModelSalesSchema,
1022
+ prospecting: OrganizationModelProspectingSchema,
1023
+ projects: OrganizationModelProjectsSchema,
1024
+ identity: IdentityDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_IDENTITY),
1025
+ customers: CustomersDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_CUSTOMERS),
1026
+ offerings: OfferingsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_OFFERINGS),
1027
+ roles: RolesDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_ROLES),
1028
+ goals: GoalsDomainSchema.default(DEFAULT_ORGANIZATION_MODEL_GOALS),
1029
+ statuses: StatusesDomainSchema.default({ entries: [] }),
1030
+ operations: OperationsDomainSchema.default({ entries: [] }),
536
1031
  resourceMappings: z.array(ResourceMappingSchema).default([])
537
1032
  });
538
1033
  function addIssue(ctx, path, message) {
@@ -666,10 +1161,48 @@ var OrganizationModelSchema = OrganizationModelSchemaBase.superRefine((model, ct
666
1161
  addIssue(
667
1162
  ctx,
668
1163
  ["navigation", "surfaces", surfaceIndex, "resourceIds", resourceIndex],
669
- `Surface "${surface.id}" references resource "${resourceId}" but that resource mapping does not include surface "${surface.id}"`
1164
+ `Surface "${surface.id}" references resource "${resourceId}" but that surface does not include resource "${surface.id}"`
1165
+ );
1166
+ }
1167
+ });
1168
+ });
1169
+ const segmentsById = new Map(model.customers.segments.map((seg) => [seg.id, seg]));
1170
+ model.offerings.products.forEach((product, productIndex) => {
1171
+ product.targetSegmentIds.forEach((segmentId, segmentIndex) => {
1172
+ if (!segmentsById.has(segmentId)) {
1173
+ addIssue(
1174
+ ctx,
1175
+ ["offerings", "products", productIndex, "targetSegmentIds", segmentIndex],
1176
+ `Product "${product.id}" references unknown customer segment "${segmentId}"`
670
1177
  );
671
1178
  }
672
1179
  });
1180
+ if (product.deliveryFeatureId !== void 0 && !featuresById.has(product.deliveryFeatureId)) {
1181
+ addIssue(
1182
+ ctx,
1183
+ ["offerings", "products", productIndex, "deliveryFeatureId"],
1184
+ `Product "${product.id}" references unknown delivery feature "${product.deliveryFeatureId}"`
1185
+ );
1186
+ }
1187
+ });
1188
+ model.goals.objectives.forEach((objective, index) => {
1189
+ if (objective.periodEnd <= objective.periodStart) {
1190
+ addIssue(
1191
+ ctx,
1192
+ ["goals", "objectives", index, "periodEnd"],
1193
+ `Goal "${objective.id}" has periodEnd "${objective.periodEnd}" which must be strictly after periodStart "${objective.periodStart}"`
1194
+ );
1195
+ }
1196
+ });
1197
+ const rolesById = new Map(model.roles.roles.map((role) => [role.id, role]));
1198
+ model.roles.roles.forEach((role, roleIndex) => {
1199
+ if (role.reportsToId !== void 0 && !rolesById.has(role.reportsToId)) {
1200
+ addIssue(
1201
+ ctx,
1202
+ ["roles", "roles", roleIndex, "reportsToId"],
1203
+ `Role "${role.id}" references unknown reportsToId "${role.reportsToId}"`
1204
+ );
1205
+ }
673
1206
  });
674
1207
  model.resourceMappings.forEach((resourceMapping, resourceIndex) => {
675
1208
  resourceMapping.featureIds.forEach((featureId, featureIndex) => {
@@ -716,24 +1249,24 @@ var DEFAULT_ORGANIZATION_MODEL = {
716
1249
  version: 1,
717
1250
  features: [
718
1251
  {
719
- id: CRM_FEATURE_ID,
1252
+ id: SALES_FEATURE_ID,
720
1253
  label: "CRM",
721
1254
  description: "Relationship pipeline and deal management",
722
1255
  enabled: true,
723
1256
  color: "blue",
724
1257
  entityIds: ["crm.deal"],
725
- surfaceIds: [CRM_PIPELINE_SURFACE_ID],
1258
+ surfaceIds: [SALES_PIPELINE_SURFACE_ID],
726
1259
  resourceIds: [],
727
1260
  capabilityIds: ["crm.pipeline.manage"]
728
1261
  },
729
1262
  {
730
- id: LEAD_GEN_FEATURE_ID,
1263
+ id: PROSPECTING_FEATURE_ID,
731
1264
  label: "Lead Gen",
732
1265
  description: "Prospecting, qualification, and outreach preparation",
733
1266
  enabled: true,
734
1267
  color: "cyan",
735
1268
  entityIds: ["leadgen.list", "leadgen.company", "leadgen.contact"],
736
- surfaceIds: [LEAD_GEN_LISTS_SURFACE_ID],
1269
+ surfaceIds: [PROSPECTING_LISTS_SURFACE_ID],
737
1270
  resourceIds: [],
738
1271
  capabilityIds: ["leadgen.lists.manage"]
739
1272
  },
@@ -746,7 +1279,7 @@ var DEFAULT_ORGANIZATION_MODEL = {
746
1279
  entityIds: ["delivery.project", "delivery.milestone", "delivery.task"],
747
1280
  surfaceIds: [PROJECTS_INDEX_SURFACE_ID],
748
1281
  resourceIds: [],
749
- capabilityIds: [DELIVERY_PROJECTS_VIEW_CAPABILITY_ID]
1282
+ capabilityIds: [PROJECTS_VIEW_CAPABILITY_ID]
750
1283
  },
751
1284
  {
752
1285
  id: OPERATIONS_FEATURE_ID,
@@ -799,6 +1332,15 @@ var DEFAULT_ORGANIZATION_MODEL = {
799
1332
  resourceIds: [],
800
1333
  capabilityIds: []
801
1334
  },
1335
+ {
1336
+ id: "submitted-requests",
1337
+ label: "Submitted Requests",
1338
+ enabled: true,
1339
+ entityIds: ["reported_request"],
1340
+ surfaceIds: ["submitted-requests.list", "submitted-requests.detail"],
1341
+ resourceIds: [],
1342
+ capabilityIds: []
1343
+ },
802
1344
  {
803
1345
  id: SEO_FEATURE_ID,
804
1346
  label: "SEO",
@@ -811,9 +1353,16 @@ var DEFAULT_ORGANIZATION_MODEL = {
811
1353
  ],
812
1354
  branding: DEFAULT_ORGANIZATION_MODEL_BRANDING,
813
1355
  navigation: DEFAULT_ORGANIZATION_MODEL_NAVIGATION,
814
- crm: DEFAULT_ORGANIZATION_MODEL_CRM,
815
- leadGen: DEFAULT_ORGANIZATION_MODEL_LEAD_GEN,
816
- delivery: DEFAULT_ORGANIZATION_MODEL_DELIVERY,
1356
+ sales: DEFAULT_ORGANIZATION_MODEL_SALES,
1357
+ prospecting: DEFAULT_ORGANIZATION_MODEL_PROSPECTING,
1358
+ projects: DEFAULT_ORGANIZATION_MODEL_PROJECTS,
1359
+ identity: DEFAULT_ORGANIZATION_MODEL_IDENTITY,
1360
+ customers: DEFAULT_ORGANIZATION_MODEL_CUSTOMERS,
1361
+ offerings: DEFAULT_ORGANIZATION_MODEL_OFFERINGS,
1362
+ roles: DEFAULT_ORGANIZATION_MODEL_ROLES,
1363
+ goals: DEFAULT_ORGANIZATION_MODEL_GOALS,
1364
+ statuses: DEFAULT_ORGANIZATION_MODEL_STATUSES,
1365
+ operations: DEFAULT_ORGANIZATION_MODEL_OPERATIONS,
817
1366
  resourceMappings: []
818
1367
  };
819
1368
 
@@ -921,4 +1470,4 @@ function createFoundationOrganizationModel(override) {
921
1470
  };
922
1471
  }
923
1472
 
924
- export { CRM_FEATURE_ID, CRM_PIPELINE_SURFACE_ID, DEFAULT_ORGANIZATION_MODEL, DELIVERY_PROJECTS_VIEW_CAPABILITY_ID, FeatureSchema, LEAD_GEN_FEATURE_ID, LEAD_GEN_LISTS_SURFACE_ID, MONITORING_FEATURE_ID, OPERATIONS_FEATURE_ID, OPERATIONS_ORGANIZATION_GRAPH_SURFACE_ID, OrganizationModelSchema, PROJECTS_FEATURE_ID, PROJECTS_INDEX_SURFACE_ID, SEO_FEATURE_ID, SETTINGS_FEATURE_ID, createFoundationOrganizationModel, defineOrganizationModel, resolveOrganizationModel };
1473
+ export { CustomerSegmentSchema, CustomersDomainSchema, DEFAULT_ORGANIZATION_MODEL, DEFAULT_ORGANIZATION_MODEL_CUSTOMERS, DEFAULT_ORGANIZATION_MODEL_GOALS, DEFAULT_ORGANIZATION_MODEL_OFFERINGS, DEFAULT_ORGANIZATION_MODEL_OPERATIONS, DEFAULT_ORGANIZATION_MODEL_ROLES, DEFAULT_ORGANIZATION_MODEL_STATUSES, FeatureSchema, FirmographicsSchema, GoalsDomainSchema, KeyResultSchema, MONITORING_FEATURE_ID, OPERATIONS_FEATURE_ID, OPERATIONS_ORGANIZATION_GRAPH_SURFACE_ID, ObjectiveSchema, OfferingsDomainSchema, OperationEntrySchema, OperationSemanticClassSchema, OperationsDomainSchema, OrganizationModelSchema, PROJECTS_FEATURE_ID, PROJECTS_INDEX_SURFACE_ID, PROJECTS_VIEW_CAPABILITY_ID, PROSPECTING_FEATURE_ID, PROSPECTING_LISTS_SURFACE_ID, PricingModelSchema, ProductSchema, RoleSchema, RolesDomainSchema, SALES_FEATURE_ID, SALES_PIPELINE_SURFACE_ID, SEO_FEATURE_ID, SETTINGS_FEATURE_ID, StatusEntrySchema, StatusSemanticClassSchema, StatusesDomainSchema, TechStackEntrySchema, createFoundationOrganizationModel, defineOrganizationModel, resolveOrganizationModel };