@elevasis/sdk 1.36.5 → 1.37.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.
package/dist/cli.cjs CHANGED
@@ -38577,17 +38577,48 @@ var SYSTEM_INTERFACE_PROFILES = [
38577
38577
  var SYSTEM_INTERFACE_READINESS_PROFILES = SYSTEM_INTERFACE_PROFILES.map(
38578
38578
  (profile) => profile.readinessProfile
38579
38579
  );
38580
- var SystemInterfaceReadinessProfileSchema = external_exports.enum(SYSTEM_INTERFACE_READINESS_PROFILES);
38580
+ var SystemInterfaceReadinessProfileSchema = external_exports.string().trim().min(1);
38581
38581
  var SystemInterfaceResourceScopeSchema = external_exports.array(ModelIdSchema).default([]);
38582
+ var SystemApiInterfaceReadinessContractSchema = external_exports.object({
38583
+ /** Ontology IDs of object types the interface depends on. */
38584
+ requiredObjects: external_exports.array(external_exports.string().trim().min(1)).default([]),
38585
+ /** Ontology IDs of catalog types the interface requires (must be non-empty). */
38586
+ requiredCatalogs: external_exports.array(external_exports.string().trim().min(1)).default([]),
38587
+ /** Optional ontology kind filters (reserved for future profile extensions). */
38588
+ requiredKinds: external_exports.array(external_exports.string().trim().min(1)).optional()
38589
+ }).strict();
38582
38590
  var SystemApiInterfaceSchema = external_exports.object({
38583
38591
  lifecycle: SystemInterfaceLifecycleSchema.default("active"),
38592
+ /**
38593
+ * Open-string profile id. Built-in platform presets are looked up through
38594
+ * the profile registry; custom ids are validated structurally via
38595
+ * `readinessContract`. Optional — `profileForInterface` provides a default.
38596
+ */
38584
38597
  readinessProfile: SystemInterfaceReadinessProfileSchema.optional(),
38585
38598
  /**
38586
38599
  * Resource ids that participate in this API interface. This scopes readiness
38587
38600
  * derivation without duplicating authored required/provided contract refs.
38588
38601
  */
38589
- resourceIds: SystemInterfaceResourceScopeSchema.optional()
38602
+ resourceIds: SystemInterfaceResourceScopeSchema.optional(),
38603
+ /**
38604
+ * Tenant-authorable readiness declaration. Required for custom
38605
+ * (non-built-in) profile ids so structural validation can proceed. Built-in
38606
+ * profiles ignore this field (requirements are derived from platform code).
38607
+ */
38608
+ readinessContract: SystemApiInterfaceReadinessContractSchema.optional()
38590
38609
  }).strict();
38610
+ var _profileRegistry = new Map(
38611
+ SYSTEM_INTERFACE_READINESS_PROFILES.map((profileId) => [
38612
+ profileId,
38613
+ { profileId, kind: "built-in" }
38614
+ ])
38615
+ );
38616
+ function profileForInterface(systemPath, interfaceKey, readinessProfile) {
38617
+ return readinessProfile ?? `${systemPath}.${interfaceKey}`;
38618
+ }
38619
+ function isBuiltInReadinessProfile(profileId) {
38620
+ return _profileRegistry.get(profileId)?.kind === "built-in";
38621
+ }
38591
38622
  var SystemInterfaceRefSchema = external_exports.object({
38592
38623
  systemPath: SystemPathSchema,
38593
38624
  interfaceKey: SystemInterfaceKeySchema
@@ -41491,14 +41522,11 @@ function addReadinessIssue(issues, family, code, message, details = {}) {
41491
41522
  function formatInterfaceIdentity(systemPath, interfaceKey) {
41492
41523
  return `${systemPath}/${interfaceKey}`;
41493
41524
  }
41494
- function profileForInterface(systemPath, interfaceKey, readinessProfile) {
41495
- return readinessProfile ?? `${systemPath}.${interfaceKey}`;
41496
- }
41497
41525
  function readinessMarkerPath(context) {
41498
41526
  return context.interfaceKey === "api" ? `systems.${context.systemPath}.apiInterface` : `systems.${context.systemPath}.derivedCrmHandoffReadiness`;
41499
41527
  }
41500
41528
  function formatSupportedReadinessProfiles() {
41501
- return SYSTEM_INTERFACE_READINESS_PROFILES.map((profile) => `"${profile}"`).join(", ");
41529
+ return SYSTEM_INTERFACE_PROFILES.map((p) => `"${p.readinessProfile}"`).join(", ");
41502
41530
  }
41503
41531
  function getActiveScopedResources(model, resourceIds, issues, context) {
41504
41532
  const resources = [];
@@ -41690,9 +41718,6 @@ function getLeadGenCrmHandoffResourceIds(model) {
41690
41718
  function getSystemInterfaceReadinessMarker(model, request) {
41691
41719
  const system = getSystem(model, request.systemPath);
41692
41720
  if (system === void 0) return void 0;
41693
- if (request.interfaceKey === LEAD_GEN_API_INTERFACE.interfaceKey) {
41694
- return system.apiInterface;
41695
- }
41696
41721
  if (request.systemPath === LEAD_GEN_CRM_HANDOFF_INTERFACE.systemPath && request.interfaceKey === LEAD_GEN_CRM_HANDOFF_INTERFACE.interfaceKey) {
41697
41722
  return {
41698
41723
  lifecycle: "active",
@@ -41700,6 +41725,9 @@ function getSystemInterfaceReadinessMarker(model, request) {
41700
41725
  resourceIds: getLeadGenCrmHandoffResourceIds(model)
41701
41726
  };
41702
41727
  }
41728
+ if (request.interfaceKey === "api" && system.apiInterface !== void 0) {
41729
+ return system.apiInterface;
41730
+ }
41703
41731
  return void 0;
41704
41732
  }
41705
41733
  function mergeLeadGenDerivedCatalogs(model) {
@@ -41744,6 +41772,18 @@ function tryCompileBusinessOntology(model, readinessProfile, issues) {
41744
41772
  return void 0;
41745
41773
  }
41746
41774
  }
41775
+ function requireContractReadiness(issues, index, resources, contract, context) {
41776
+ const reads = resourceBindingIds(resources, "reads");
41777
+ const catalogs = resourceBindingIds(resources, "usesCatalogs");
41778
+ for (const objectId of contract.requiredObjects) {
41779
+ requireObjectReadiness(issues, index, objectId, context);
41780
+ requireScopedBinding(issues, reads, "reads", objectId, context);
41781
+ }
41782
+ for (const catalogId of contract.requiredCatalogs) {
41783
+ requireCatalogReadiness(issues, index, catalogId, context);
41784
+ requireScopedBinding(issues, catalogs, "usesCatalogs", catalogId, context);
41785
+ }
41786
+ }
41747
41787
  function computeInterfaceReadiness(model, request) {
41748
41788
  const issues = [];
41749
41789
  const system = getSystem(model, request.systemPath);
@@ -41791,20 +41831,22 @@ function computeInterfaceReadiness(model, request) {
41791
41831
  { path: `${readinessMarkerPath(request)}.lifecycle` }
41792
41832
  );
41793
41833
  }
41794
- const supportedProfile = readinessProfile !== void 0 && SYSTEM_INTERFACE_PROFILES.some((profile) => profile.readinessProfile === readinessProfile);
41795
- if (!supportedProfile) {
41834
+ const checkedReadinessProfile = readinessProfile ?? profileForInterface(request.systemPath, request.interfaceKey);
41835
+ const isBuiltIn = isBuiltInReadinessProfile(checkedReadinessProfile);
41836
+ const readinessContract = systemInterface.readinessContract;
41837
+ if (!isBuiltIn && readinessContract === void 0) {
41796
41838
  addReadinessIssue(
41797
41839
  issues,
41798
41840
  "SYSTEM_INTERFACE_INVALID",
41799
- "unknown-readiness-profile",
41800
- `System Interface "${formatInterfaceIdentity(request.systemPath, request.interfaceKey)}" references unknown readiness profile "${readinessProfile}". Supported profiles: ${formatSupportedReadinessProfiles()}. Custom Systems should not declare apiInterface; route custom behavior through workflows/operations plus ontology, resources, and topology.`,
41801
- { path: `${readinessMarkerPath(request)}.readinessProfile`, ref: readinessProfile }
41841
+ "missing-readiness-contract",
41842
+ `System Interface "${formatInterfaceIdentity(request.systemPath, request.interfaceKey)}" uses custom readiness profile "${checkedReadinessProfile}" but declares no readinessContract. Built-in profiles: ${formatSupportedReadinessProfiles()}.`,
41843
+ { path: `${readinessMarkerPath(request)}.readinessContract`, ref: checkedReadinessProfile }
41802
41844
  );
41803
41845
  return {
41804
41846
  ready: false,
41805
41847
  systemPath: request.systemPath,
41806
41848
  interfaceKey: request.interfaceKey,
41807
- readinessProfile,
41849
+ readinessProfile: checkedReadinessProfile,
41808
41850
  scopedResourceIds,
41809
41851
  issues
41810
41852
  };
@@ -41818,10 +41860,6 @@ function computeInterfaceReadiness(model, request) {
41818
41860
  { path: `${readinessMarkerPath(request)}.resourceIds` }
41819
41861
  );
41820
41862
  }
41821
- const checkedReadinessProfile = readinessProfile;
41822
- if (checkedReadinessProfile === void 0) {
41823
- throw new Error("Supported readiness profile unexpectedly resolved to undefined");
41824
- }
41825
41863
  const resources = getActiveScopedResources(model, scopedResourceIds, issues, request);
41826
41864
  const index = tryCompileBusinessOntology(model, checkedReadinessProfile, issues);
41827
41865
  if (index !== void 0) {
@@ -41833,13 +41871,15 @@ function computeInterfaceReadiness(model, request) {
41833
41871
  requireLeadGenInterfaceReadiness(issues, index, resources, request);
41834
41872
  requireCrmInterfaceReadiness(issues, index, resources, { ...request, allowForeignOwner: true });
41835
41873
  requireHandoffBridgeReadiness(issues, model, request);
41874
+ } else if (readinessContract !== void 0) {
41875
+ requireContractReadiness(issues, index, resources, readinessContract, request);
41836
41876
  }
41837
41877
  }
41838
41878
  return {
41839
41879
  ready: issues.length === 0,
41840
41880
  systemPath: request.systemPath,
41841
41881
  interfaceKey: request.interfaceKey,
41842
- readinessProfile,
41882
+ readinessProfile: checkedReadinessProfile,
41843
41883
  scopedResourceIds,
41844
41884
  issues
41845
41885
  };
@@ -45808,7 +45848,7 @@ function wrapAction(commandName, fn) {
45808
45848
  // package.json
45809
45849
  var package_default = {
45810
45850
  name: "@elevasis/sdk",
45811
- version: "1.36.5",
45851
+ version: "1.37.0",
45812
45852
  description: "SDK for building Elevasis organization resources",
45813
45853
  type: "module",
45814
45854
  bin: {
package/dist/index.d.ts CHANGED
@@ -6750,12 +6750,13 @@ declare const SystemApiInterfaceSchema: z.ZodObject<{
6750
6750
  archived: "archived";
6751
6751
  disabled: "disabled";
6752
6752
  }>>;
6753
- readinessProfile: z.ZodOptional<z.ZodEnum<{
6754
- "sales.lead-gen.api": "sales.lead-gen.api";
6755
- "sales.crm.api": "sales.crm.api";
6756
- "sales.lead-gen.crm-handoff": "sales.lead-gen.crm-handoff";
6757
- }>>;
6753
+ readinessProfile: z.ZodOptional<z.ZodString>;
6758
6754
  resourceIds: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
6755
+ readinessContract: z.ZodOptional<z.ZodObject<{
6756
+ requiredObjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
6757
+ requiredCatalogs: z.ZodDefault<z.ZodArray<z.ZodString>>;
6758
+ requiredKinds: z.ZodOptional<z.ZodArray<z.ZodString>>;
6759
+ }, z.core.$strict>>;
6759
6760
  }, z.core.$strict>;
6760
6761
  type JsonPrimitive = string | number | boolean | null;
6761
6762
  type JsonValue = JsonPrimitive | JsonValue[] | {
@@ -12274,6 +12275,91 @@ declare class ToolingError extends ExecutionError {
12274
12275
  constructor(errorType: string, message: string, details?: unknown);
12275
12276
  }
12276
12277
 
12278
+ /**
12279
+ * Tenant-authorable readiness requirements for a system's API interface.
12280
+ *
12281
+ * Built-in profiles (`sales.lead-gen.api`, `sales.crm.api`,
12282
+ * `sales.lead-gen.crm-handoff`) derive their requirements from platform code
12283
+ * and do not need a `readinessContract`. Custom systems (any profile id not in
12284
+ * the built-in registry) MUST declare a contract so structural readiness
12285
+ * validation can proceed without platform hardcoding.
12286
+ *
12287
+ * Each field is an array of ontology IDs that this system must satisfy:
12288
+ * - `requiredObjects` – ontology object types the interface depends on
12289
+ * - `requiredCatalogs` – catalog types the interface requires (non-empty)
12290
+ * - `requiredKinds` – (optional) ontology kind filters for future use
12291
+ */
12292
+ declare const SystemApiInterfaceReadinessContractSchema = z
12293
+ .object({
12294
+ /** Ontology IDs of object types the interface depends on. */
12295
+ requiredObjects: z.array(z.string().trim().min(1)).default([]),
12296
+ /** Ontology IDs of catalog types the interface requires (must be non-empty). */
12297
+ requiredCatalogs: z.array(z.string().trim().min(1)).default([]),
12298
+ /** Optional ontology kind filters (reserved for future profile extensions). */
12299
+ requiredKinds: z.array(z.string().trim().min(1)).optional()
12300
+ })
12301
+ .strict()
12302
+
12303
+ // ---------------------------------------------------------------------------
12304
+ // Profile registry
12305
+ //
12306
+ // Maps a readiness profile id to a lookup result. Built-in presets are
12307
+ // registered at module load; callers may register additional presets via
12308
+ // `registerReadinessProfile`. Unknown ids resolve to `undefined` — validated
12309
+ // structurally through the system's declared `readinessContract`.
12310
+ // ---------------------------------------------------------------------------
12311
+
12312
+ type ReadinessProfileKind = 'built-in' | 'custom'
12313
+
12314
+ interface ReadinessProfileEntry {
12315
+ readonly profileId: string
12316
+ readonly kind: ReadinessProfileKind
12317
+ }
12318
+
12319
+ /**
12320
+ * Look up a readiness profile entry by id.
12321
+ *
12322
+ * Returns `undefined` for unknown ids (not in the built-in list and not
12323
+ * registered via `registerReadinessProfile`). Unknown profiles are validated
12324
+ * structurally through the system's `readinessContract` — unknown-profile is
12325
+ * NOT a schema-layer rejection.
12326
+ */
12327
+ declare function lookupReadinessProfile(profileId: string): ReadinessProfileEntry | undefined {
12328
+ return _profileRegistry.get(profileId)
12329
+ }
12330
+
12331
+ /**
12332
+ * Register a custom readiness profile preset.
12333
+ *
12334
+ * Tenant tooling or SDK extensions may call this during startup to register
12335
+ * named presets. Registered presets are then resolvable via `lookupReadinessProfile`.
12336
+ * Built-in profile ids cannot be overwritten.
12337
+ */
12338
+ declare function registerReadinessProfile(profileId: string): ReadinessProfileEntry {
12339
+ const existing = _profileRegistry.get(profileId)
12340
+ if (existing !== undefined) return existing
12341
+ const entry: ReadinessProfileEntry = { profileId, kind: 'custom' }
12342
+ _profileRegistry.set(profileId, entry)
12343
+ return entry
12344
+ }
12345
+
12346
+ /**
12347
+ * Return the effective readiness profile id for a system interface.
12348
+ * Falls back to `systemPath.interfaceKey` when `readinessProfile` is omitted.
12349
+ * This is the canonical profile-resolution function used by validation code.
12350
+ */
12351
+ declare function profileForInterface(systemPath: string, interfaceKey: string, readinessProfile?: string): string {
12352
+ return readinessProfile ?? `${systemPath}.${interfaceKey}`
12353
+ }
12354
+
12355
+ /**
12356
+ * Return true if the given profile id is a built-in platform preset.
12357
+ */
12358
+ declare function isBuiltInReadinessProfile(profileId: string): boolean {
12359
+ return _profileRegistry.get(profileId)?.kind === 'built-in'
12360
+ }
12361
+ type SystemApiInterfaceReadinessContract = z.infer<typeof SystemApiInterfaceReadinessContractSchema>
12362
+
12277
12363
  declare const ResourceOntologyBindingSchema = z
12278
12364
  .object({
12279
12365
  actions: z.array(OntologyIdSchema).optional(),
@@ -12625,5 +12711,5 @@ declare function defineWorkflowConfig<const TResourceId extends string>(resource
12625
12711
  declare const ListBuilderStageKeySchema: z.ZodString;
12626
12712
  type ListBuilderStageKey = z.infer<typeof ListBuilderStageKeySchema>;
12627
12713
 
12628
- export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isZodType, parseTopologyNodeRef, projectDeploymentSpec, projectTopologyRelationships, resolveContractRef, runDiagnostic, splitName, toSdkResourceDescriptor, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors };
12629
- export type { AbsoluteScheduleConfig, AcqCompany, AcqContact, AcqDeal, AcqDealRow, AcqList, Action$1 as Action, ActionDef, ActivityEvent, AddToCampaignLead, AddToCampaignParams, AddToCampaignResult, AgentConfig, AgentConstraints, AgentDefinition, AgentMemory, AgentResourceDescriptorResolver, FindCompanyEmailParams as AnymailfinderFindCompanyEmailParams, FindCompanyEmailResult as AnymailfinderFindCompanyEmailResult, FindDecisionMakerEmailParams as AnymailfinderFindDecisionMakerEmailParams, FindDecisionMakerEmailResult as AnymailfinderFindDecisionMakerEmailResult, FindPersonEmailParams as AnymailfinderFindPersonEmailParams, FindPersonEmailResult as AnymailfinderFindPersonEmailResult, AnymailfinderToolMap, VerifyEmailParams as AnymailfinderVerifyEmailParams, VerifyEmailResult as AnymailfinderVerifyEmailResult, ApifyToolMap, ApifyWebhookConfig, AppendRowsParams, AppendRowsResult, ApprovalToolMap, AttioToolMap, BatchUpdateParams, BatchUpdateResult, BuildPlanSnapshotStep, BulkDeleteLeadsParams, BulkDeleteLeadsResult, BulkImportParams, BulkImportResult, BusinessOntologyValidationIndex, CancelHitlByDealIdParams, CancelSchedulesAndHitlByEmailParams, ClearDealFieldsParams, ClearRangeParams, ClearRangeResult, ClickUpToolMap, CompanyFilters, ConcurrentPoolOptions, ConcurrentPoolResult, ConditionalNext, ContactFilters, Contract, ContractRefResolutionErrorCode, ContractRegistry, CreateAttributeParams, CreateAttributeResult, CreateAutoPaymentLinkParams, CreateAutoPaymentLinkResult, CreateCheckoutSessionParams, CreateCheckoutSessionResult, CreateCompanyParams, CreateContactParams, CreateEnvelopeParams, CreateEnvelopeResult, CreateFolderParams, CreateFolderResult, CreateListParams, CreateNoteParams, CreateNoteResult, CreatePaymentLinkParams, CreatePaymentLinkResult, CreateRecordParams, CreateRecordResult, CreateScheduleInput, CrmStageKey, CrmStateKey, CrmToolMap, DeleteDealParams, DeleteNoteParams, DeleteNoteResult, DeleteRecordParams, DeleteRecordResult, DeleteRowByValueParams, DeleteRowByValueResult, DeploymentSpec, DiagnosticOutput, DownloadDocumentParams, DownloadDocumentResult, DropboxToolMap, ElevasConfig, EmailToolMap, EnvelopeDocument, EventTriggerConfig, ExecutionContext, ExecutionInterface, ExecutionMetadata, ExecutionToolMap, FilterExpression, FilterRowsParams, FilterRowsResult, FormField, FormFieldType, FormSchema, GetDailyCampaignAnalyticsParams, GetDailyCampaignAnalyticsResult, GetEmailsParams, GetEmailsResult, GetEnvelopeParams, GetEnvelopeResult, GetHeadersParams, GetHeadersResult, GetLastRowParams, GetLastRowResult, GetPaymentLinkParams, GetPaymentLinkResult, GetRecordParams, GetRecordResult, GetRowByValueParams, GetRowByValueResult, GetSpreadsheetMetadataParams, GetSpreadsheetMetadataResult, GmailSendEmailParams, GmailSendEmailResult, GmailToolMap, GoogleSheetsToolMap, HumanCheckpointDefinition, InstantlyToolMap, IntegrationDefinition, IntegrationResourceDescriptorResolver, LLMAdapterFactory, LLMGenerateRequest, LLMGenerateResponse, LLMMessage, LLMModel, LeadGenStageValidators, LeadToolMap, LinearNext, ListAttributesParams, ListAttributesResult, ListBuilderStageKey, ListBuilderStep, ListLeadsParams, ListLeadsResult, ListNotesParams, ListNotesResult, ListObjectsResult, ListPaymentLinksParams, ListPaymentLinksResult, ListToolMap, MarkProposalReviewedParams, MarkProposalSentParams, MethodEntry, MillionVerifierToolMap, ModelConfig, NextConfig, NotificationSDKInput, NotificationToolMap, OrganizationModelAgentResourceEntry, OrganizationModelIntegrationResourceEntry, OrganizationModelResourceEntry, OrganizationModelResourceOntologyBinding, OrganizationModelTopology, OrganizationModelTopologyNodeRef, OrganizationModelTopologyRelationship, OrganizationModelWorkflowResourceEntry, PaginatedResult, PaginationParams, PdfToolMap, ProcessingStageStatus, ProjectDeploymentSpecOptions, ProjectsToolMap, QueryRecordsParams, QueryRecordsResult, ReadSheetParams, ReadSheetResult, Recipient, RecurringScheduleConfig, RelationshipDeclaration, RelativeScheduleConfig, RemoveFromSubsequenceParams, RemoveFromSubsequenceResult, ResendGetEmailParams, ResendGetEmailResult, ResendSendEmailParams, ResendSendEmailResult, ResendToolMap, ResolvedContractRef, ResourceCategory, ResourceDefinition, ResourceLink, ResourceMetricsConfig, ResourceOntologyBindingResolver, ResourceRelationships, ResourceStatus$1 as ResourceStatus, ResourceType, RunActorParams, RunActorResult, SDKLLMGenerateParams, ScheduleOriginTracking, ScheduleTarget, ScheduleTriggerConfig, SchedulerToolMap, SendReplyParams, SendReplyResult, SetContactNurtureParams, SheetInfo, SignatureApiFieldType, SignatureApiToolMap, SigningPlace, SortCriteria, StartActorParams, StartActorResult, StepHandler, StorageDeleteInput, StorageDeleteOutput, StorageDownloadInput, StorageDownloadOutput, StorageListInput, StorageListOutput, StorageSignedUrlInput, StorageSignedUrlOutput, StorageToolMap, StorageUploadInput, StorageUploadOutput, StripeToolMap, TaskSchedule, TaskScheduleConfig, TombaToolMap, Tool, ToolExecutionOptions, ToolMethodMap, ToolingErrorType, TransitionItemParams, TriggerConfig, TriggerDefinition, UpdateAttributeParams, UpdateAttributeResult, UpdateCloseLostReasonParams, UpdateCompanyParams, UpdateContactParams, UpdateDiscoveryDataParams, UpdateFeesParams, UpdateInterestStatusParams, UpdateInterestStatusResult, UpdateListParams, UpdatePaymentLinkParams, UpdatePaymentLinkResult, UpdateProposalDataParams, UpdateRecordParams, UpdateRecordResult, UpdateRowByValueParams, UpdateRowByValueResult, UploadFileParams, UploadFileResult, UpsertCompanyParams, UpsertContactParams, UpsertDealParams, UpsertRowParams, UpsertRowResult, VoidEnvelopeParams, VoidEnvelopeResult, WebhookProviderType, WebhookTriggerConfig, WorkflowConfig, WorkflowConfigActionRegistry, WorkflowDefinition, WorkflowLogger, WorkflowResourceDescriptorMap, WorkflowResourceDescriptorResolver, WorkflowStep, WriteSheetParams, WriteSheetResult };
12714
+ export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isBuiltInReadinessProfile, isZodType, lookupReadinessProfile, parseTopologyNodeRef, profileForInterface, projectDeploymentSpec, projectTopologyRelationships, registerReadinessProfile, resolveContractRef, runDiagnostic, splitName, toSdkResourceDescriptor, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors };
12715
+ export type { AbsoluteScheduleConfig, AcqCompany, AcqContact, AcqDeal, AcqDealRow, AcqList, Action$1 as Action, ActionDef, ActivityEvent, AddToCampaignLead, AddToCampaignParams, AddToCampaignResult, AgentConfig, AgentConstraints, AgentDefinition, AgentMemory, AgentResourceDescriptorResolver, FindCompanyEmailParams as AnymailfinderFindCompanyEmailParams, FindCompanyEmailResult as AnymailfinderFindCompanyEmailResult, FindDecisionMakerEmailParams as AnymailfinderFindDecisionMakerEmailParams, FindDecisionMakerEmailResult as AnymailfinderFindDecisionMakerEmailResult, FindPersonEmailParams as AnymailfinderFindPersonEmailParams, FindPersonEmailResult as AnymailfinderFindPersonEmailResult, AnymailfinderToolMap, VerifyEmailParams as AnymailfinderVerifyEmailParams, VerifyEmailResult as AnymailfinderVerifyEmailResult, ApifyToolMap, ApifyWebhookConfig, AppendRowsParams, AppendRowsResult, ApprovalToolMap, AttioToolMap, BatchUpdateParams, BatchUpdateResult, BuildPlanSnapshotStep, BulkDeleteLeadsParams, BulkDeleteLeadsResult, BulkImportParams, BulkImportResult, BusinessOntologyValidationIndex, CancelHitlByDealIdParams, CancelSchedulesAndHitlByEmailParams, ClearDealFieldsParams, ClearRangeParams, ClearRangeResult, ClickUpToolMap, CompanyFilters, ConcurrentPoolOptions, ConcurrentPoolResult, ConditionalNext, ContactFilters, Contract, ContractRefResolutionErrorCode, ContractRegistry, CreateAttributeParams, CreateAttributeResult, CreateAutoPaymentLinkParams, CreateAutoPaymentLinkResult, CreateCheckoutSessionParams, CreateCheckoutSessionResult, CreateCompanyParams, CreateContactParams, CreateEnvelopeParams, CreateEnvelopeResult, CreateFolderParams, CreateFolderResult, CreateListParams, CreateNoteParams, CreateNoteResult, CreatePaymentLinkParams, CreatePaymentLinkResult, CreateRecordParams, CreateRecordResult, CreateScheduleInput, CrmStageKey, CrmStateKey, CrmToolMap, DeleteDealParams, DeleteNoteParams, DeleteNoteResult, DeleteRecordParams, DeleteRecordResult, DeleteRowByValueParams, DeleteRowByValueResult, DeploymentSpec, DiagnosticOutput, DownloadDocumentParams, DownloadDocumentResult, DropboxToolMap, ElevasConfig, EmailToolMap, EnvelopeDocument, EventTriggerConfig, ExecutionContext, ExecutionInterface, ExecutionMetadata, ExecutionToolMap, FilterExpression, FilterRowsParams, FilterRowsResult, FormField, FormFieldType, FormSchema, GetDailyCampaignAnalyticsParams, GetDailyCampaignAnalyticsResult, GetEmailsParams, GetEmailsResult, GetEnvelopeParams, GetEnvelopeResult, GetHeadersParams, GetHeadersResult, GetLastRowParams, GetLastRowResult, GetPaymentLinkParams, GetPaymentLinkResult, GetRecordParams, GetRecordResult, GetRowByValueParams, GetRowByValueResult, GetSpreadsheetMetadataParams, GetSpreadsheetMetadataResult, GmailSendEmailParams, GmailSendEmailResult, GmailToolMap, GoogleSheetsToolMap, HumanCheckpointDefinition, InstantlyToolMap, IntegrationDefinition, IntegrationResourceDescriptorResolver, LLMAdapterFactory, LLMGenerateRequest, LLMGenerateResponse, LLMMessage, LLMModel, LeadGenStageValidators, LeadToolMap, LinearNext, ListAttributesParams, ListAttributesResult, ListBuilderStageKey, ListBuilderStep, ListLeadsParams, ListLeadsResult, ListNotesParams, ListNotesResult, ListObjectsResult, ListPaymentLinksParams, ListPaymentLinksResult, ListToolMap, MarkProposalReviewedParams, MarkProposalSentParams, MethodEntry, MillionVerifierToolMap, ModelConfig, NextConfig, NotificationSDKInput, NotificationToolMap, OrganizationModelAgentResourceEntry, OrganizationModelIntegrationResourceEntry, OrganizationModelResourceEntry, OrganizationModelResourceOntologyBinding, OrganizationModelTopology, OrganizationModelTopologyNodeRef, OrganizationModelTopologyRelationship, OrganizationModelWorkflowResourceEntry, PaginatedResult, PaginationParams, PdfToolMap, ProcessingStageStatus, ProjectDeploymentSpecOptions, ProjectsToolMap, QueryRecordsParams, QueryRecordsResult, ReadSheetParams, ReadSheetResult, ReadinessProfileEntry, ReadinessProfileKind, Recipient, RecurringScheduleConfig, RelationshipDeclaration, RelativeScheduleConfig, RemoveFromSubsequenceParams, RemoveFromSubsequenceResult, ResendGetEmailParams, ResendGetEmailResult, ResendSendEmailParams, ResendSendEmailResult, ResendToolMap, ResolvedContractRef, ResourceCategory, ResourceDefinition, ResourceLink, ResourceMetricsConfig, ResourceOntologyBindingResolver, ResourceRelationships, ResourceStatus$1 as ResourceStatus, ResourceType, RunActorParams, RunActorResult, SDKLLMGenerateParams, ScheduleOriginTracking, ScheduleTarget, ScheduleTriggerConfig, SchedulerToolMap, SendReplyParams, SendReplyResult, SetContactNurtureParams, SheetInfo, SignatureApiFieldType, SignatureApiToolMap, SigningPlace, SortCriteria, StartActorParams, StartActorResult, StepHandler, StorageDeleteInput, StorageDeleteOutput, StorageDownloadInput, StorageDownloadOutput, StorageListInput, StorageListOutput, StorageSignedUrlInput, StorageSignedUrlOutput, StorageToolMap, StorageUploadInput, StorageUploadOutput, StripeToolMap, SystemApiInterfaceReadinessContract, TaskSchedule, TaskScheduleConfig, TombaToolMap, Tool, ToolExecutionOptions, ToolMethodMap, ToolingErrorType, TransitionItemParams, TriggerConfig, TriggerDefinition, UpdateAttributeParams, UpdateAttributeResult, UpdateCloseLostReasonParams, UpdateCompanyParams, UpdateContactParams, UpdateDiscoveryDataParams, UpdateFeesParams, UpdateInterestStatusParams, UpdateInterestStatusResult, UpdateListParams, UpdatePaymentLinkParams, UpdatePaymentLinkResult, UpdateProposalDataParams, UpdateRecordParams, UpdateRecordResult, UpdateRowByValueParams, UpdateRowByValueResult, UploadFileParams, UploadFileResult, UpsertCompanyParams, UpsertContactParams, UpsertDealParams, UpsertRowParams, UpsertRowResult, VoidEnvelopeParams, VoidEnvelopeResult, WebhookProviderType, WebhookTriggerConfig, WorkflowConfig, WorkflowConfigActionRegistry, WorkflowDefinition, WorkflowLogger, WorkflowResourceDescriptorMap, WorkflowResourceDescriptorResolver, WorkflowStep, WriteSheetParams, WriteSheetResult };
package/dist/index.js CHANGED
@@ -618,17 +618,58 @@ var SYSTEM_INTERFACE_PROFILES = [
618
618
  var SYSTEM_INTERFACE_READINESS_PROFILES = SYSTEM_INTERFACE_PROFILES.map(
619
619
  (profile) => profile.readinessProfile
620
620
  );
621
- var SystemInterfaceReadinessProfileSchema = z.enum(SYSTEM_INTERFACE_READINESS_PROFILES);
621
+ var SystemInterfaceReadinessProfileSchema = z.string().trim().min(1);
622
622
  var SystemInterfaceResourceScopeSchema = z.array(ModelIdSchema).default([]);
623
+ var SystemApiInterfaceReadinessContractSchema = z.object({
624
+ /** Ontology IDs of object types the interface depends on. */
625
+ requiredObjects: z.array(z.string().trim().min(1)).default([]),
626
+ /** Ontology IDs of catalog types the interface requires (must be non-empty). */
627
+ requiredCatalogs: z.array(z.string().trim().min(1)).default([]),
628
+ /** Optional ontology kind filters (reserved for future profile extensions). */
629
+ requiredKinds: z.array(z.string().trim().min(1)).optional()
630
+ }).strict();
623
631
  var SystemApiInterfaceSchema = z.object({
624
632
  lifecycle: SystemInterfaceLifecycleSchema.default("active"),
633
+ /**
634
+ * Open-string profile id. Built-in platform presets are looked up through
635
+ * the profile registry; custom ids are validated structurally via
636
+ * `readinessContract`. Optional — `profileForInterface` provides a default.
637
+ */
625
638
  readinessProfile: SystemInterfaceReadinessProfileSchema.optional(),
626
639
  /**
627
640
  * Resource ids that participate in this API interface. This scopes readiness
628
641
  * derivation without duplicating authored required/provided contract refs.
629
642
  */
630
- resourceIds: SystemInterfaceResourceScopeSchema.optional()
643
+ resourceIds: SystemInterfaceResourceScopeSchema.optional(),
644
+ /**
645
+ * Tenant-authorable readiness declaration. Required for custom
646
+ * (non-built-in) profile ids so structural validation can proceed. Built-in
647
+ * profiles ignore this field (requirements are derived from platform code).
648
+ */
649
+ readinessContract: SystemApiInterfaceReadinessContractSchema.optional()
631
650
  }).strict();
651
+ var _profileRegistry = new Map(
652
+ SYSTEM_INTERFACE_READINESS_PROFILES.map((profileId) => [
653
+ profileId,
654
+ { profileId, kind: "built-in" }
655
+ ])
656
+ );
657
+ function lookupReadinessProfile(profileId) {
658
+ return _profileRegistry.get(profileId);
659
+ }
660
+ function registerReadinessProfile(profileId) {
661
+ const existing = _profileRegistry.get(profileId);
662
+ if (existing !== void 0) return existing;
663
+ const entry = { profileId, kind: "custom" };
664
+ _profileRegistry.set(profileId, entry);
665
+ return entry;
666
+ }
667
+ function profileForInterface(systemPath, interfaceKey, readinessProfile) {
668
+ return readinessProfile ?? `${systemPath}.${interfaceKey}`;
669
+ }
670
+ function isBuiltInReadinessProfile(profileId) {
671
+ return _profileRegistry.get(profileId)?.kind === "built-in";
672
+ }
632
673
  var SystemInterfaceRefSchema = z.object({
633
674
  systemPath: SystemPathSchema,
634
675
  interfaceKey: SystemInterfaceKeySchema
@@ -1757,9 +1798,6 @@ function addReadinessIssue(issues, family, code, message, details = {}) {
1757
1798
  function formatInterfaceIdentity(systemPath, interfaceKey) {
1758
1799
  return `${systemPath}/${interfaceKey}`;
1759
1800
  }
1760
- function profileForInterface(systemPath, interfaceKey, readinessProfile) {
1761
- return readinessProfile ?? `${systemPath}.${interfaceKey}`;
1762
- }
1763
1801
  function readinessMarkerPath(context) {
1764
1802
  return context.interfaceKey === "api" ? `systems.${context.systemPath}.apiInterface` : `systems.${context.systemPath}.derivedCrmHandoffReadiness`;
1765
1803
  }
@@ -1769,7 +1807,7 @@ function formatInterfaceReadinessFailure(result) {
1769
1807
  return `${identity} readiness failed${result.readinessProfile ? ` (${result.readinessProfile})` : ""}: ${issueSummary}`;
1770
1808
  }
1771
1809
  function formatSupportedReadinessProfiles() {
1772
- return SYSTEM_INTERFACE_READINESS_PROFILES.map((profile) => `"${profile}"`).join(", ");
1810
+ return SYSTEM_INTERFACE_PROFILES.map((p) => `"${p.readinessProfile}"`).join(", ");
1773
1811
  }
1774
1812
  function throwIfInterfaceNotReady(result) {
1775
1813
  if (result.ready) return;
@@ -1965,9 +2003,6 @@ function getLeadGenCrmHandoffResourceIds(model) {
1965
2003
  function getSystemInterfaceReadinessMarker(model, request) {
1966
2004
  const system = getSystem(model, request.systemPath);
1967
2005
  if (system === void 0) return void 0;
1968
- if (request.interfaceKey === LEAD_GEN_API_INTERFACE.interfaceKey) {
1969
- return system.apiInterface;
1970
- }
1971
2006
  if (request.systemPath === LEAD_GEN_CRM_HANDOFF_INTERFACE.systemPath && request.interfaceKey === LEAD_GEN_CRM_HANDOFF_INTERFACE.interfaceKey) {
1972
2007
  return {
1973
2008
  lifecycle: "active",
@@ -1975,6 +2010,9 @@ function getSystemInterfaceReadinessMarker(model, request) {
1975
2010
  resourceIds: getLeadGenCrmHandoffResourceIds(model)
1976
2011
  };
1977
2012
  }
2013
+ if (request.interfaceKey === "api" && system.apiInterface !== void 0) {
2014
+ return system.apiInterface;
2015
+ }
1978
2016
  return void 0;
1979
2017
  }
1980
2018
  function mergeLeadGenDerivedCatalogs(model) {
@@ -2019,6 +2057,18 @@ function tryCompileBusinessOntology(model, readinessProfile, issues) {
2019
2057
  return void 0;
2020
2058
  }
2021
2059
  }
2060
+ function requireContractReadiness(issues, index, resources, contract, context) {
2061
+ const reads = resourceBindingIds(resources, "reads");
2062
+ const catalogs = resourceBindingIds(resources, "usesCatalogs");
2063
+ for (const objectId of contract.requiredObjects) {
2064
+ requireObjectReadiness(issues, index, objectId, context);
2065
+ requireScopedBinding(issues, reads, "reads", objectId, context);
2066
+ }
2067
+ for (const catalogId of contract.requiredCatalogs) {
2068
+ requireCatalogReadiness(issues, index, catalogId, context);
2069
+ requireScopedBinding(issues, catalogs, "usesCatalogs", catalogId, context);
2070
+ }
2071
+ }
2022
2072
  function computeInterfaceReadiness(model, request) {
2023
2073
  const issues = [];
2024
2074
  const system = getSystem(model, request.systemPath);
@@ -2066,20 +2116,22 @@ function computeInterfaceReadiness(model, request) {
2066
2116
  { path: `${readinessMarkerPath(request)}.lifecycle` }
2067
2117
  );
2068
2118
  }
2069
- const supportedProfile = readinessProfile !== void 0 && SYSTEM_INTERFACE_PROFILES.some((profile) => profile.readinessProfile === readinessProfile);
2070
- if (!supportedProfile) {
2119
+ const checkedReadinessProfile = readinessProfile ?? profileForInterface(request.systemPath, request.interfaceKey);
2120
+ const isBuiltIn = isBuiltInReadinessProfile(checkedReadinessProfile);
2121
+ const readinessContract = systemInterface.readinessContract;
2122
+ if (!isBuiltIn && readinessContract === void 0) {
2071
2123
  addReadinessIssue(
2072
2124
  issues,
2073
2125
  "SYSTEM_INTERFACE_INVALID",
2074
- "unknown-readiness-profile",
2075
- `System Interface "${formatInterfaceIdentity(request.systemPath, request.interfaceKey)}" references unknown readiness profile "${readinessProfile}". Supported profiles: ${formatSupportedReadinessProfiles()}. Custom Systems should not declare apiInterface; route custom behavior through workflows/operations plus ontology, resources, and topology.`,
2076
- { path: `${readinessMarkerPath(request)}.readinessProfile`, ref: readinessProfile }
2126
+ "missing-readiness-contract",
2127
+ `System Interface "${formatInterfaceIdentity(request.systemPath, request.interfaceKey)}" uses custom readiness profile "${checkedReadinessProfile}" but declares no readinessContract. Built-in profiles: ${formatSupportedReadinessProfiles()}.`,
2128
+ { path: `${readinessMarkerPath(request)}.readinessContract`, ref: checkedReadinessProfile }
2077
2129
  );
2078
2130
  return {
2079
2131
  ready: false,
2080
2132
  systemPath: request.systemPath,
2081
2133
  interfaceKey: request.interfaceKey,
2082
- readinessProfile,
2134
+ readinessProfile: checkedReadinessProfile,
2083
2135
  scopedResourceIds,
2084
2136
  issues
2085
2137
  };
@@ -2093,10 +2145,6 @@ function computeInterfaceReadiness(model, request) {
2093
2145
  { path: `${readinessMarkerPath(request)}.resourceIds` }
2094
2146
  );
2095
2147
  }
2096
- const checkedReadinessProfile = readinessProfile;
2097
- if (checkedReadinessProfile === void 0) {
2098
- throw new Error("Supported readiness profile unexpectedly resolved to undefined");
2099
- }
2100
2148
  const resources = getActiveScopedResources(model, scopedResourceIds, issues, request);
2101
2149
  const index = tryCompileBusinessOntology(model, checkedReadinessProfile, issues);
2102
2150
  if (index !== void 0) {
@@ -2108,13 +2156,15 @@ function computeInterfaceReadiness(model, request) {
2108
2156
  requireLeadGenInterfaceReadiness(issues, index, resources, request);
2109
2157
  requireCrmInterfaceReadiness(issues, index, resources, { ...request, allowForeignOwner: true });
2110
2158
  requireHandoffBridgeReadiness(issues, model, request);
2159
+ } else if (readinessContract !== void 0) {
2160
+ requireContractReadiness(issues, index, resources, readinessContract, request);
2111
2161
  }
2112
2162
  }
2113
2163
  return {
2114
2164
  ready: issues.length === 0,
2115
2165
  systemPath: request.systemPath,
2116
2166
  interfaceKey: request.interfaceKey,
2117
- readinessProfile,
2167
+ readinessProfile: checkedReadinessProfile,
2118
2168
  scopedResourceIds,
2119
2169
  issues
2120
2170
  };
@@ -6337,17 +6387,13 @@ var AcqListMetadataSchema = z.object({
6337
6387
  }).catchall(z.unknown());
6338
6388
  var ProspectingBuildTemplateIdSchema = z.string().trim().min(1).max(100);
6339
6389
  var ListStageCountsSchema = z.object({
6340
- // Attempted counts by canonical lead-gen stage. The detailed status
6341
- // distribution lives on ListProgress; telemetry keeps the overview payload small.
6342
- stageCounts: z.object({
6343
- populated: z.number().int(),
6344
- extracted: z.number().int(),
6345
- qualified: z.number().int(),
6346
- discovered: z.number().int(),
6347
- verified: z.number().int(),
6348
- personalized: z.number().int(),
6349
- uploaded: z.number().int()
6350
- }),
6390
+ // Attempted counts keyed by the tenant's declared lead-gen stage catalog IDs.
6391
+ // The catalog is tenant-owned and OM-derived at compute time; the schema
6392
+ // validates the transport shape (string keys → integer values) rather than
6393
+ // a fixed key set, so tenants with custom stages receive complete telemetry.
6394
+ // Canonical Elevasis stages (populated, extracted, qualified, discovered,
6395
+ // verified, personalized, uploaded) are included when declared in the catalog.
6396
+ stageCounts: z.record(z.string().min(1), z.number().int()),
6351
6397
  deliverability: z.object({
6352
6398
  valid: z.number().int(),
6353
6399
  risky: z.number().int(),
@@ -7069,4 +7115,4 @@ function defineWorkflowConfig(resourceId, descriptors, actionRegistry = []) {
7069
7115
  }
7070
7116
  var ListBuilderStageKeySchema = z.string().min(1);
7071
7117
 
7072
- export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isZodType, parseTopologyNodeRef, projectDeploymentSpec, projectTopologyRelationships, resolveContractRef, runDiagnostic, splitName, toSdkResourceDescriptor, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors };
7118
+ export { ActivityEventSchema, BuildPlanSnapshotStepSchema, ProspectingBuildTemplateSchema as BuildTemplateSchema, ContractRefResolutionError, CrmStageKeySchema, CrmStateKeySchema, EmailSchema, ExecutionError, ListBuilderStageKeySchema, ProcessingStageStatusSchema, RegistryValidationError, ResourceRegistry, StepType, ToolingError, bindResourceDescriptor, compileBusinessOntologyValidationIndex, concurrentPool, createLeadGenStageValidators, defineContract, defineResource, defineResourceOntology, defineResources, defineStep, defineTopology, defineTopologyRelationship, defineWorkflow, defineWorkflowConfig, deriveActions, diagnosticOutput, integrationInput, isBuiltInReadinessProfile, isZodType, lookupReadinessProfile, parseTopologyNodeRef, profileForInterface, projectDeploymentSpec, projectTopologyRelationships, registerReadinessProfile, resolveContractRef, runDiagnostic, splitName, toSdkResourceDescriptor, topologyRef, topologyRelationship, validateDeclaredSystemInterfaceReadiness, validateResourceGovernance, withPlatformAgentResourceDescriptor, withPlatformAgentResourceDescriptors, withPlatformIntegrationResourceDescriptor, withPlatformIntegrationResourceDescriptors, withPlatformResourceDescriptor, withPlatformResourceDescriptors };
@@ -1396,12 +1396,13 @@ declare const SystemApiInterfaceSchema: z.ZodObject<{
1396
1396
  archived: "archived";
1397
1397
  disabled: "disabled";
1398
1398
  }>>;
1399
- readinessProfile: z.ZodOptional<z.ZodEnum<{
1400
- "sales.lead-gen.api": "sales.lead-gen.api";
1401
- "sales.crm.api": "sales.crm.api";
1402
- "sales.lead-gen.crm-handoff": "sales.lead-gen.crm-handoff";
1403
- }>>;
1399
+ readinessProfile: z.ZodOptional<z.ZodString>;
1404
1400
  resourceIds: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
1401
+ readinessContract: z.ZodOptional<z.ZodObject<{
1402
+ requiredObjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
1403
+ requiredCatalogs: z.ZodDefault<z.ZodArray<z.ZodString>>;
1404
+ requiredKinds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1405
+ }, z.core.$strict>>;
1405
1406
  }, z.core.$strict>;
1406
1407
  type JsonPrimitive = string | number | boolean | null;
1407
1408
  type JsonValue = JsonPrimitive | JsonValue[] | {
@@ -5945,12 +5945,13 @@ declare const SystemApiInterfaceSchema: z.ZodObject<{
5945
5945
  archived: "archived";
5946
5946
  disabled: "disabled";
5947
5947
  }>>;
5948
- readinessProfile: z.ZodOptional<z.ZodEnum<{
5949
- "sales.lead-gen.api": "sales.lead-gen.api";
5950
- "sales.crm.api": "sales.crm.api";
5951
- "sales.lead-gen.crm-handoff": "sales.lead-gen.crm-handoff";
5952
- }>>;
5948
+ readinessProfile: z.ZodOptional<z.ZodString>;
5953
5949
  resourceIds: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodString>>>;
5950
+ readinessContract: z.ZodOptional<z.ZodObject<{
5951
+ requiredObjects: z.ZodDefault<z.ZodArray<z.ZodString>>;
5952
+ requiredCatalogs: z.ZodDefault<z.ZodArray<z.ZodString>>;
5953
+ requiredKinds: z.ZodOptional<z.ZodArray<z.ZodString>>;
5954
+ }, z.core.$strict>>;
5954
5955
  }, z.core.$strict>;
5955
5956
  type JsonPrimitive = string | number | boolean | null;
5956
5957
  type JsonValue = JsonPrimitive | JsonValue[] | {