skedyul 1.6.0 → 1.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.
@@ -6,7 +6,7 @@
6
6
  import type { ToolRegistry, WebhookRegistry, ToolMetadata, WebhookMetadata } from '../types';
7
7
  import type { ServerHooks } from '../types/handlers';
8
8
  import type { CoreApiConfig } from '../core/types';
9
- import type { EnvSchema, ComputeLayer, ModelDefinition, RelationshipDefinition, ChannelDefinition, WorkflowDefinition, PageDefinition, NavigationConfig, AgentDefinition, SignalDefinition } from './types';
9
+ import type { EnvSchema, ComputeLayer, ModelDefinition, EntityDefinition, RelationshipDefinition, ChannelDefinition, WorkflowDefinition, PageDefinition, NavigationConfig, AgentDefinition, SignalDefinition } from './types';
10
10
  import type { AppEventDefinition } from './types/app-event';
11
11
  import type { QueueRegistry, SerializableQueueConfig } from './queue-config';
12
12
  import type { SequencerRegistry, SerializableSequencerConfig } from './sequencer-config';
@@ -33,6 +33,11 @@ export interface ProvisionConfig {
33
33
  env?: EnvSchema;
34
34
  /** INTERNAL model definitions (app-owned, not visible to users) */
35
35
  models?: ModelDefinition[];
36
+ /**
37
+ * App entity contracts for install-time CRM maps (not shared models).
38
+ * Workplaces map these to CRM; workflows apply maps via app-handle Liquid filters.
39
+ */
40
+ entities?: EntityDefinition[];
36
41
  /** Relationship definitions between INTERNAL models */
37
42
  relationships?: RelationshipDefinition[];
38
43
  /** Communication channel definitions */
@@ -16,6 +16,7 @@
16
16
  * })
17
17
  */
18
18
  import type { ModelDefinition } from './types/model';
19
+ import type { EntityDefinition } from './types/entity';
19
20
  import type { ChannelDefinition } from './types/channel';
20
21
  import type { PageDefinition } from './types/page';
21
22
  import type { WorkflowDefinition } from './types/workflow';
@@ -37,6 +38,28 @@ import type { NavigationConfig } from './types/navigation';
37
38
  * })
38
39
  */
39
40
  export declare function defineModel(model: ModelDefinition): ModelDefinition;
41
+ /**
42
+ * Define an app entity (CRM map contract) with full type safety.
43
+ *
44
+ * Entities describe external payload shapes that workplaces map to CRM at
45
+ * install time. They are not shared models — workflows apply maps via Liquid
46
+ * filters named after the app handle (e.g. `| bft: "format", "member"`).
47
+ *
48
+ * @example
49
+ * export default defineEntity({
50
+ * handle: 'member',
51
+ * label: 'Glofox Member',
52
+ * fields: [
53
+ * { handle: 'glofox_id', label: 'Glofox ID', matchCandidate: true, required: true },
54
+ * { handle: 'first_name', label: 'First Name' },
55
+ * ],
56
+ * contextFields: [
57
+ * { handle: 'membership_status', label: 'Membership Status',
58
+ * options: ['prospect', 'trial_member', 'member', 'inactive_member'] },
59
+ * ],
60
+ * })
61
+ */
62
+ export declare function defineEntity(entity: EntityDefinition): EntityDefinition;
40
63
  /**
41
64
  * Define a channel with full type safety.
42
65
  *
@@ -11,7 +11,7 @@
11
11
  export * from './types';
12
12
  export type { InstallConfig, ProvisionConfig, BuildConfig, CorsOptions, SkedyulConfig, SerializableSkedyulConfig, QueueScope, QueueConfig, SerializableQueueConfig, QueueRegistry, SequencerScope, SerializableSequencerConfig, SequencerRegistry, } from './app-config';
13
13
  export { defineConfig } from './app-config';
14
- export { defineModel, defineChannel, definePage, defineWorkflow, defineAgent, defineEnv, defineNavigation, } from './define';
14
+ export { defineModel, defineEntity, defineChannel, definePage, defineWorkflow, defineAgent, defineEnv, defineNavigation, } from './define';
15
15
  export { SCHEMA_FILE_EXTENSIONS, loadSchema, saveSchema, serializeSchemaToJson, serializeSchemaToTypeScript, transformToBackendSchema, transformFromBackendSchema, type LoadSchemaOptions, type LoadSchemaResult, type SerializeSchemaOptions, type BackendModelDefinition, type BackendFieldDefinition, type BackendRelationshipDefinition, type BackendDesiredSchema, } from './schema-loader';
16
16
  export { loadAndResolveConfig, serializeResolvedConfig, type ResolvedConfig } from './resolver';
17
17
  export { getAllEnvKeys, getRequiredInstallEnvKeys } from './utils';
@@ -0,0 +1,59 @@
1
+ /**
2
+ * App entity definition types.
3
+ *
4
+ * Entities describe external/logical payload shapes (e.g. Glofox member) that
5
+ * workplaces map to CRM via install-time CRM maps. They are NOT shared models —
6
+ * the app does not own CRM writes; workflows/agents apply maps.
7
+ */
8
+ import type { BaseDefinition, FieldOption } from './base';
9
+ /**
10
+ * Field on an app entity contract (maps to a path on tool/event payloads).
11
+ */
12
+ export interface EntityFieldDefinition {
13
+ /** Unique field handle (snake_case), used as source path by default */
14
+ handle: string;
15
+ /** Human-readable label */
16
+ label: string;
17
+ /** Optional description */
18
+ description?: string;
19
+ /** Data type hint for the install mapper UI */
20
+ type?: 'string' | 'long_string' | 'number' | 'boolean' | 'date' | 'datetime' | 'object';
21
+ /** Whether this field is a candidate for upsert match */
22
+ matchCandidate?: boolean;
23
+ /** Whether this field should be mapped for a complete configuration */
24
+ required?: boolean;
25
+ /** Enum options when the source value is constrained */
26
+ options?: FieldOption[] | string[];
27
+ }
28
+ /**
29
+ * Relationship declared on an entity (for install relationship mapping UI).
30
+ */
31
+ export interface EntityRelationshipDefinition {
32
+ /** Handle used when writing relationship ids (e.g. "customer", "plan") */
33
+ handle: string;
34
+ /** Human-readable label */
35
+ label: string;
36
+ /** Target entity handle this relates to (optional documentation) */
37
+ targetEntity?: string;
38
+ description?: string;
39
+ }
40
+ /**
41
+ * App entity — mapping contract for install CRM maps + Liquid filters.
42
+ */
43
+ export interface EntityDefinition extends BaseDefinition {
44
+ /** Unique entity handle (e.g. "member", "booking") */
45
+ handle: string;
46
+ /** Display label */
47
+ label: string;
48
+ labelPlural?: string;
49
+ description?: string;
50
+ /** Fields on the primary entity object */
51
+ fields: EntityFieldDefinition[];
52
+ /**
53
+ * Fields that live on the event/tool envelope alongside the entity
54
+ * (e.g. membership_status on member events).
55
+ */
56
+ contextFields?: EntityFieldDefinition[];
57
+ /** Relationship handles that can be mapped to CRM relationship fields */
58
+ relationships?: EntityRelationshipDefinition[];
59
+ }
@@ -7,6 +7,7 @@ export * from './base';
7
7
  export * from './env';
8
8
  export * from './resource';
9
9
  export * from './model';
10
+ export * from './entity';
10
11
  export * from './channel';
11
12
  export * from './workflow';
12
13
  export * from './agent';
@@ -1290,6 +1290,43 @@ var ModelDefinitionSchema = z8.object({
1290
1290
  page: z8.string().optional(),
1291
1291
  env: EnvSchemaSchema.optional()
1292
1292
  });
1293
+ var EntityFieldDefinitionSchema = z8.object({
1294
+ handle: z8.string(),
1295
+ label: z8.string(),
1296
+ description: z8.string().optional(),
1297
+ type: z8.enum([
1298
+ "string",
1299
+ "long_string",
1300
+ "number",
1301
+ "boolean",
1302
+ "date",
1303
+ "datetime",
1304
+ "object"
1305
+ ]).optional(),
1306
+ matchCandidate: z8.boolean().optional(),
1307
+ required: z8.boolean().optional(),
1308
+ options: z8.array(
1309
+ z8.union([
1310
+ z8.string(),
1311
+ z8.object({ value: z8.string(), label: z8.string() })
1312
+ ])
1313
+ ).optional()
1314
+ });
1315
+ var EntityRelationshipDefinitionSchema = z8.object({
1316
+ handle: z8.string(),
1317
+ label: z8.string(),
1318
+ targetEntity: z8.string().optional(),
1319
+ description: z8.string().optional()
1320
+ });
1321
+ var EntityDefinitionSchema = z8.object({
1322
+ handle: z8.string(),
1323
+ label: z8.string(),
1324
+ labelPlural: z8.string().optional(),
1325
+ description: z8.string().optional(),
1326
+ fields: z8.array(EntityFieldDefinitionSchema),
1327
+ contextFields: z8.array(EntityFieldDefinitionSchema).optional(),
1328
+ relationships: z8.array(EntityRelationshipDefinitionSchema).optional()
1329
+ });
1293
1330
  var RelationshipCardinalitySchema = z8.enum([
1294
1331
  "ONE_TO_ONE",
1295
1332
  "ONE_TO_MANY"
@@ -1858,6 +1895,8 @@ var ProvisionConfigSchema = z8.object({
1858
1895
  env: EnvSchemaSchema.optional(),
1859
1896
  /** INTERNAL model definitions (app-owned, not visible to users) */
1860
1897
  models: z8.array(ModelDefinitionSchema).optional(),
1898
+ /** App entity contracts for install-time CRM maps (not shared models) */
1899
+ entities: z8.array(EntityDefinitionSchema).optional(),
1861
1900
  /** Relationship definitions between INTERNAL models */
1862
1901
  relationships: z8.array(RelationshipDefinitionSchema).optional(),
1863
1902
  channels: z8.array(ChannelDefinitionSchema).optional(),
@@ -5748,6 +5787,9 @@ function defineConfig(config) {
5748
5787
  function defineModel(model) {
5749
5788
  return model;
5750
5789
  }
5790
+ function defineEntity(entity) {
5791
+ return entity;
5792
+ }
5751
5793
  function defineChannel(channel) {
5752
5794
  return channel;
5753
5795
  }
@@ -8230,6 +8272,9 @@ export {
8230
8272
  DatePickerComponentDefinitionSchema,
8231
8273
  DayOfWeekSchema,
8232
8274
  EmptyFormComponentDefinitionSchema,
8275
+ EntityDefinitionSchema,
8276
+ EntityFieldDefinitionSchema,
8277
+ EntityRelationshipDefinitionSchema,
8233
8278
  EnvSchemaSchema,
8234
8279
  EnvVariableDefinitionSchema,
8235
8280
  EnvVisibilitySchema,
@@ -8440,6 +8485,7 @@ export {
8440
8485
  defineAgent,
8441
8486
  defineChannel,
8442
8487
  defineConfig,
8488
+ defineEntity,
8443
8489
  defineEnv,
8444
8490
  defineModel,
8445
8491
  defineNavigation,
package/dist/index.d.ts CHANGED
@@ -16,7 +16,7 @@ declare const _default: {
16
16
  z: typeof z;
17
17
  };
18
18
  export default _default;
19
- export { defineConfig, defineModel, defineChannel, definePage, defineWorkflow, defineAgent, defineEnv, defineNavigation, getAllEnvKeys, getRequiredInstallEnvKeys, } from './config';
19
+ export { defineConfig, defineModel, defineEntity, defineChannel, definePage, defineWorkflow, defineAgent, defineEnv, defineNavigation, getAllEnvKeys, getRequiredInstallEnvKeys, } from './config';
20
20
  export { queuedFetch, requeue, resolveQueue, createQueueHandle, queuedFetchResponse, registerQueueConfig, runWithRateLimitExecutionContext, getRateLimitExecutionContext, defaultShouldRetry, QueueContextError, QueueNotFoundError, QueuedFetchExhaustedError, RequeueOutsideContextError, RateLimitBackendError, RateLimitExceededError, } from './ratelimit';
21
21
  export type { QueueInput, QueueSelector, Lease, QueueLimits, ResolvedQueue, RateLimitExecutionContext, RateLimitBackend, QueueScope, QueueConfig, SerializableQueueConfig, QueueRegistry, } from './ratelimit';
22
22
  export { sequencer, allow as sequencerAllow, acquire as sequencerAcquire, release as sequencerRelease, resolveSequencer, createSequencerHandle, registerSequencerConfig, clearRegisteredSequencerConfig, getSequencerConfig, getSequencerDefinitions, resetSequencerBackendForTests, memorySequencerBackend, platformSequencerBackend, SequencerContextError, SequencerNotFoundError, SequencerBackendError, SequencerLockError, } from './sequencer';
package/dist/index.js CHANGED
@@ -82,6 +82,9 @@ __export(index_exports, {
82
82
  DatePickerComponentDefinitionSchema: () => DatePickerComponentDefinitionSchema,
83
83
  DayOfWeekSchema: () => DayOfWeekSchema,
84
84
  EmptyFormComponentDefinitionSchema: () => EmptyFormComponentDefinitionSchema,
85
+ EntityDefinitionSchema: () => EntityDefinitionSchema,
86
+ EntityFieldDefinitionSchema: () => EntityFieldDefinitionSchema,
87
+ EntityRelationshipDefinitionSchema: () => EntityRelationshipDefinitionSchema,
85
88
  EnvSchemaSchema: () => EnvSchemaSchema,
86
89
  EnvVariableDefinitionSchema: () => EnvVariableDefinitionSchema,
87
90
  EnvVisibilitySchema: () => EnvVisibilitySchema,
@@ -292,6 +295,7 @@ __export(index_exports, {
292
295
  defineAgent: () => defineAgent,
293
296
  defineChannel: () => defineChannel,
294
297
  defineConfig: () => defineConfig,
298
+ defineEntity: () => defineEntity,
295
299
  defineEnv: () => defineEnv,
296
300
  defineModel: () => defineModel,
297
301
  defineNavigation: () => defineNavigation,
@@ -1657,6 +1661,43 @@ var ModelDefinitionSchema = import_v48.z.object({
1657
1661
  page: import_v48.z.string().optional(),
1658
1662
  env: EnvSchemaSchema.optional()
1659
1663
  });
1664
+ var EntityFieldDefinitionSchema = import_v48.z.object({
1665
+ handle: import_v48.z.string(),
1666
+ label: import_v48.z.string(),
1667
+ description: import_v48.z.string().optional(),
1668
+ type: import_v48.z.enum([
1669
+ "string",
1670
+ "long_string",
1671
+ "number",
1672
+ "boolean",
1673
+ "date",
1674
+ "datetime",
1675
+ "object"
1676
+ ]).optional(),
1677
+ matchCandidate: import_v48.z.boolean().optional(),
1678
+ required: import_v48.z.boolean().optional(),
1679
+ options: import_v48.z.array(
1680
+ import_v48.z.union([
1681
+ import_v48.z.string(),
1682
+ import_v48.z.object({ value: import_v48.z.string(), label: import_v48.z.string() })
1683
+ ])
1684
+ ).optional()
1685
+ });
1686
+ var EntityRelationshipDefinitionSchema = import_v48.z.object({
1687
+ handle: import_v48.z.string(),
1688
+ label: import_v48.z.string(),
1689
+ targetEntity: import_v48.z.string().optional(),
1690
+ description: import_v48.z.string().optional()
1691
+ });
1692
+ var EntityDefinitionSchema = import_v48.z.object({
1693
+ handle: import_v48.z.string(),
1694
+ label: import_v48.z.string(),
1695
+ labelPlural: import_v48.z.string().optional(),
1696
+ description: import_v48.z.string().optional(),
1697
+ fields: import_v48.z.array(EntityFieldDefinitionSchema),
1698
+ contextFields: import_v48.z.array(EntityFieldDefinitionSchema).optional(),
1699
+ relationships: import_v48.z.array(EntityRelationshipDefinitionSchema).optional()
1700
+ });
1660
1701
  var RelationshipCardinalitySchema = import_v48.z.enum([
1661
1702
  "ONE_TO_ONE",
1662
1703
  "ONE_TO_MANY"
@@ -2225,6 +2266,8 @@ var ProvisionConfigSchema = import_v48.z.object({
2225
2266
  env: EnvSchemaSchema.optional(),
2226
2267
  /** INTERNAL model definitions (app-owned, not visible to users) */
2227
2268
  models: import_v48.z.array(ModelDefinitionSchema).optional(),
2269
+ /** App entity contracts for install-time CRM maps (not shared models) */
2270
+ entities: import_v48.z.array(EntityDefinitionSchema).optional(),
2228
2271
  /** Relationship definitions between INTERNAL models */
2229
2272
  relationships: import_v48.z.array(RelationshipDefinitionSchema).optional(),
2230
2273
  channels: import_v48.z.array(ChannelDefinitionSchema).optional(),
@@ -6115,6 +6158,9 @@ function defineConfig(config) {
6115
6158
  function defineModel(model) {
6116
6159
  return model;
6117
6160
  }
6161
+ function defineEntity(entity) {
6162
+ return entity;
6163
+ }
6118
6164
  function defineChannel(channel) {
6119
6165
  return channel;
6120
6166
  }
@@ -8598,6 +8644,9 @@ var index_default = { z: import_v414.z };
8598
8644
  DatePickerComponentDefinitionSchema,
8599
8645
  DayOfWeekSchema,
8600
8646
  EmptyFormComponentDefinitionSchema,
8647
+ EntityDefinitionSchema,
8648
+ EntityFieldDefinitionSchema,
8649
+ EntityRelationshipDefinitionSchema,
8601
8650
  EnvSchemaSchema,
8602
8651
  EnvVariableDefinitionSchema,
8603
8652
  EnvVisibilitySchema,
@@ -8807,6 +8856,7 @@ var index_default = { z: import_v414.z };
8807
8856
  defineAgent,
8808
8857
  defineChannel,
8809
8858
  defineConfig,
8859
+ defineEntity,
8810
8860
  defineEnv,
8811
8861
  defineModel,
8812
8862
  defineNavigation,
package/dist/schemas.d.ts CHANGED
@@ -339,6 +339,84 @@ export declare const ModelDefinitionSchema: z.ZodObject<{
339
339
  placeholder: z.ZodOptional<z.ZodString>;
340
340
  }, z.core.$strip>>>;
341
341
  }, z.core.$strip>;
342
+ export declare const EntityFieldDefinitionSchema: z.ZodObject<{
343
+ handle: z.ZodString;
344
+ label: z.ZodString;
345
+ description: z.ZodOptional<z.ZodString>;
346
+ type: z.ZodOptional<z.ZodEnum<{
347
+ string: "string";
348
+ number: "number";
349
+ boolean: "boolean";
350
+ object: "object";
351
+ long_string: "long_string";
352
+ date: "date";
353
+ datetime: "datetime";
354
+ }>>;
355
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
356
+ required: z.ZodOptional<z.ZodBoolean>;
357
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
358
+ value: z.ZodString;
359
+ label: z.ZodString;
360
+ }, z.core.$strip>]>>>;
361
+ }, z.core.$strip>;
362
+ export declare const EntityRelationshipDefinitionSchema: z.ZodObject<{
363
+ handle: z.ZodString;
364
+ label: z.ZodString;
365
+ targetEntity: z.ZodOptional<z.ZodString>;
366
+ description: z.ZodOptional<z.ZodString>;
367
+ }, z.core.$strip>;
368
+ export declare const EntityDefinitionSchema: z.ZodObject<{
369
+ handle: z.ZodString;
370
+ label: z.ZodString;
371
+ labelPlural: z.ZodOptional<z.ZodString>;
372
+ description: z.ZodOptional<z.ZodString>;
373
+ fields: z.ZodArray<z.ZodObject<{
374
+ handle: z.ZodString;
375
+ label: z.ZodString;
376
+ description: z.ZodOptional<z.ZodString>;
377
+ type: z.ZodOptional<z.ZodEnum<{
378
+ string: "string";
379
+ number: "number";
380
+ boolean: "boolean";
381
+ object: "object";
382
+ long_string: "long_string";
383
+ date: "date";
384
+ datetime: "datetime";
385
+ }>>;
386
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
387
+ required: z.ZodOptional<z.ZodBoolean>;
388
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
389
+ value: z.ZodString;
390
+ label: z.ZodString;
391
+ }, z.core.$strip>]>>>;
392
+ }, z.core.$strip>>;
393
+ contextFields: z.ZodOptional<z.ZodArray<z.ZodObject<{
394
+ handle: z.ZodString;
395
+ label: z.ZodString;
396
+ description: z.ZodOptional<z.ZodString>;
397
+ type: z.ZodOptional<z.ZodEnum<{
398
+ string: "string";
399
+ number: "number";
400
+ boolean: "boolean";
401
+ object: "object";
402
+ long_string: "long_string";
403
+ date: "date";
404
+ datetime: "datetime";
405
+ }>>;
406
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
407
+ required: z.ZodOptional<z.ZodBoolean>;
408
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
409
+ value: z.ZodString;
410
+ label: z.ZodString;
411
+ }, z.core.$strip>]>>>;
412
+ }, z.core.$strip>>>;
413
+ relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
414
+ handle: z.ZodString;
415
+ label: z.ZodString;
416
+ targetEntity: z.ZodOptional<z.ZodString>;
417
+ description: z.ZodOptional<z.ZodString>;
418
+ }, z.core.$strip>>>;
419
+ }, z.core.$strip>;
342
420
  export declare const RelationshipCardinalitySchema: z.ZodEnum<{
343
421
  ONE_TO_ONE: "ONE_TO_ONE";
344
422
  ONE_TO_MANY: "ONE_TO_MANY";
@@ -3375,6 +3453,58 @@ export declare const ProvisionConfigSchema: z.ZodObject<{
3375
3453
  placeholder: z.ZodOptional<z.ZodString>;
3376
3454
  }, z.core.$strip>>>;
3377
3455
  }, z.core.$strip>>>;
3456
+ entities: z.ZodOptional<z.ZodArray<z.ZodObject<{
3457
+ handle: z.ZodString;
3458
+ label: z.ZodString;
3459
+ labelPlural: z.ZodOptional<z.ZodString>;
3460
+ description: z.ZodOptional<z.ZodString>;
3461
+ fields: z.ZodArray<z.ZodObject<{
3462
+ handle: z.ZodString;
3463
+ label: z.ZodString;
3464
+ description: z.ZodOptional<z.ZodString>;
3465
+ type: z.ZodOptional<z.ZodEnum<{
3466
+ string: "string";
3467
+ number: "number";
3468
+ boolean: "boolean";
3469
+ object: "object";
3470
+ long_string: "long_string";
3471
+ date: "date";
3472
+ datetime: "datetime";
3473
+ }>>;
3474
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
3475
+ required: z.ZodOptional<z.ZodBoolean>;
3476
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
3477
+ value: z.ZodString;
3478
+ label: z.ZodString;
3479
+ }, z.core.$strip>]>>>;
3480
+ }, z.core.$strip>>;
3481
+ contextFields: z.ZodOptional<z.ZodArray<z.ZodObject<{
3482
+ handle: z.ZodString;
3483
+ label: z.ZodString;
3484
+ description: z.ZodOptional<z.ZodString>;
3485
+ type: z.ZodOptional<z.ZodEnum<{
3486
+ string: "string";
3487
+ number: "number";
3488
+ boolean: "boolean";
3489
+ object: "object";
3490
+ long_string: "long_string";
3491
+ date: "date";
3492
+ datetime: "datetime";
3493
+ }>>;
3494
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
3495
+ required: z.ZodOptional<z.ZodBoolean>;
3496
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
3497
+ value: z.ZodString;
3498
+ label: z.ZodString;
3499
+ }, z.core.$strip>]>>>;
3500
+ }, z.core.$strip>>>;
3501
+ relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
3502
+ handle: z.ZodString;
3503
+ label: z.ZodString;
3504
+ targetEntity: z.ZodOptional<z.ZodString>;
3505
+ description: z.ZodOptional<z.ZodString>;
3506
+ }, z.core.$strip>>>;
3507
+ }, z.core.$strip>>>;
3378
3508
  relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
3379
3509
  source: z.ZodObject<{
3380
3510
  model: z.ZodString;
@@ -4121,6 +4251,58 @@ export declare const SkedyulConfigSchema: z.ZodObject<{
4121
4251
  placeholder: z.ZodOptional<z.ZodString>;
4122
4252
  }, z.core.$strip>>>;
4123
4253
  }, z.core.$strip>>>;
4254
+ entities: z.ZodOptional<z.ZodArray<z.ZodObject<{
4255
+ handle: z.ZodString;
4256
+ label: z.ZodString;
4257
+ labelPlural: z.ZodOptional<z.ZodString>;
4258
+ description: z.ZodOptional<z.ZodString>;
4259
+ fields: z.ZodArray<z.ZodObject<{
4260
+ handle: z.ZodString;
4261
+ label: z.ZodString;
4262
+ description: z.ZodOptional<z.ZodString>;
4263
+ type: z.ZodOptional<z.ZodEnum<{
4264
+ string: "string";
4265
+ number: "number";
4266
+ boolean: "boolean";
4267
+ object: "object";
4268
+ long_string: "long_string";
4269
+ date: "date";
4270
+ datetime: "datetime";
4271
+ }>>;
4272
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
4273
+ required: z.ZodOptional<z.ZodBoolean>;
4274
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
4275
+ value: z.ZodString;
4276
+ label: z.ZodString;
4277
+ }, z.core.$strip>]>>>;
4278
+ }, z.core.$strip>>;
4279
+ contextFields: z.ZodOptional<z.ZodArray<z.ZodObject<{
4280
+ handle: z.ZodString;
4281
+ label: z.ZodString;
4282
+ description: z.ZodOptional<z.ZodString>;
4283
+ type: z.ZodOptional<z.ZodEnum<{
4284
+ string: "string";
4285
+ number: "number";
4286
+ boolean: "boolean";
4287
+ object: "object";
4288
+ long_string: "long_string";
4289
+ date: "date";
4290
+ datetime: "datetime";
4291
+ }>>;
4292
+ matchCandidate: z.ZodOptional<z.ZodBoolean>;
4293
+ required: z.ZodOptional<z.ZodBoolean>;
4294
+ options: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
4295
+ value: z.ZodString;
4296
+ label: z.ZodString;
4297
+ }, z.core.$strip>]>>>;
4298
+ }, z.core.$strip>>>;
4299
+ relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
4300
+ handle: z.ZodString;
4301
+ label: z.ZodString;
4302
+ targetEntity: z.ZodOptional<z.ZodString>;
4303
+ description: z.ZodOptional<z.ZodString>;
4304
+ }, z.core.$strip>>>;
4305
+ }, z.core.$strip>>>;
4124
4306
  relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
4125
4307
  source: z.ZodObject<{
4126
4308
  model: z.ZodString;
@@ -4792,6 +4974,9 @@ export type WorkflowDependency = z.infer<typeof WorkflowDependencySchema>;
4792
4974
  export type ResourceDependency = z.infer<typeof ResourceDependencySchema>;
4793
4975
  export type ModelFieldDefinition = z.infer<typeof ModelFieldDefinitionSchema>;
4794
4976
  export type ModelDefinition = z.infer<typeof ModelDefinitionSchema>;
4977
+ export type EntityFieldDefinition = z.infer<typeof EntityFieldDefinitionSchema>;
4978
+ export type EntityRelationshipDefinition = z.infer<typeof EntityRelationshipDefinitionSchema>;
4979
+ export type EntityDefinition = z.infer<typeof EntityDefinitionSchema>;
4795
4980
  export type ChannelCapabilityType = z.infer<typeof ChannelCapabilityTypeSchema>;
4796
4981
  export type ChannelCapability = z.infer<typeof ChannelCapabilitySchema>;
4797
4982
  export type ChannelFieldDefinition = z.infer<typeof ChannelFieldDefinitionSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skedyul",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "The Skedyul SDK for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",