skedyul 1.7.15 → 1.7.16

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/.build-stamp CHANGED
@@ -1 +1 @@
1
- 1786107275036
1
+ 1786319639134
package/dist/cli/index.js CHANGED
@@ -1206,7 +1206,7 @@ function parseInstallConfigFromSource(content) {
1206
1206
  return parseEnvConfigFromSource(content);
1207
1207
  }
1208
1208
  var INSTALL_HANDLER_PATHS = [
1209
- // Standard integration layout (used by bft, petbooqz, phone, etc.)
1209
+ // Standard integration layout (used by public/private integration apps)
1210
1210
  "src/server/hooks/install.ts",
1211
1211
  "src/server/hooks/install.js",
1212
1212
  "dist/server/hooks/install.js",
@@ -6403,7 +6403,12 @@ var CRMFieldSchemaZ = import_v42.z.object({
6403
6403
  unique: import_v42.z.boolean().optional(),
6404
6404
  list: import_v42.z.boolean().optional(),
6405
6405
  default: import_v42.z.unknown().optional(),
6406
- definition: CRMFieldDefinitionSchema.optional()
6406
+ definition: CRMFieldDefinitionSchema.optional(),
6407
+ /**
6408
+ * Workplace-scoped field section handle (visualization helper).
6409
+ * Find-or-create on apply; display name is derived from the handle on create.
6410
+ */
6411
+ section: import_v42.z.string().regex(/^[a-z][a-z0-9_-]*$/, "Section handle must be lowercase alphanumeric with underscores/hyphens, starting with a letter").optional()
6407
6412
  });
6408
6413
  var CRMModelSchemaZ = import_v42.z.object({
6409
6414
  handle: import_v42.z.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
@@ -45,14 +45,14 @@ export declare function defineModel(model: ModelDefinition): ModelDefinition;
45
45
  *
46
46
  * Entities describe external payload shapes that workplaces map to CRM at
47
47
  * install time. They are not shared models — workflows apply maps via Liquid
48
- * filters named after the app handle (e.g. `| bft: "format", "member"`).
48
+ * filters named after the app handle (e.g. `| acme: "format", "member"`).
49
49
  *
50
50
  * @example
51
51
  * export default defineEntity({
52
52
  * handle: 'member',
53
- * label: 'Glofox Member',
53
+ * label: 'Member',
54
54
  * fields: [
55
- * { handle: 'glofox_id', label: 'Glofox ID', matchCandidate: true, required: true },
55
+ * { handle: 'external_id', label: 'External ID', matchCandidate: true, required: true },
56
56
  * { handle: 'first_name', label: 'First Name' },
57
57
  * ],
58
58
  * contextFields: [
@@ -120,8 +120,8 @@ export declare function defineAgent(agent: AgentDefinition): AgentDefinition;
120
120
  *
121
121
  * @example
122
122
  * export default defineEnv({
123
- * TWILIO_ACCOUNT_SID: {
124
- * label: 'Twilio Account SID',
123
+ * ACME_API_KEY: {
124
+ * label: 'Acme API Key',
125
125
  * scope: 'provision',
126
126
  * required: true,
127
127
  * visibility: 'encrypted'
@@ -179,12 +179,12 @@ export declare function defineSetupStep(step: SetupStepDefinition): SetupStepDef
179
179
  * label: 'Import Members',
180
180
  * entity: 'member',
181
181
  * setup: async (ctx) => {
182
- * const count = await glofox.getMemberCount()
182
+ * const count = await acmeApi.getMemberCount()
183
183
  * return { total: count }
184
184
  * },
185
185
  * iterate: async (ctx) => {
186
- * const apiKey = ctx.env.GLOFOX_API_KEY
187
- * const { data, pagination } = await glofox.getMembers({
186
+ * const apiKey = ctx.env.ACME_API_KEY
187
+ * const { data, pagination } = await acmeApi.getMembers({
188
188
  * apiKey,
189
189
  * limit: ctx.limit,
190
190
  * offset: ctx.cursor ?? 0,
@@ -2,7 +2,7 @@
2
2
  * App event definition for integration executable config.
3
3
  *
4
4
  * Events are emitted via event.create and subscribed to as
5
- * `app.{appHandle}.{name}` (e.g. app.bft.member.updated).
5
+ * `app.{appHandle}.{name}` (e.g. app.acme.member.updated).
6
6
  */
7
7
  export interface AppEventDefinition {
8
8
  /** Event suffix after app handle, e.g. member.created */
@@ -16,7 +16,7 @@ export interface AppEventDefinition {
16
16
  /** Optional Lucide icon name for pickers */
17
17
  icon?: string;
18
18
  /**
19
- * Example flat domain payload for liquid context reference (e.g. glofox_id, phone, …).
19
+ * Example flat domain payload for liquid context reference (e.g. external_id, phone, …).
20
20
  * Not the full emit payload — studio/branch metadata is added at emit time.
21
21
  */
22
22
  examplePayload?: Record<string, unknown>;
@@ -26,7 +26,7 @@ export interface AppEventDefinition {
26
26
  */
27
27
  contextFields?: AppEventContextField[];
28
28
  /**
29
- * Workflow input type for app-event payloads, e.g. @app/bft/member/updated.
29
+ * Workflow input type for app-event payloads, e.g. @app/acme/member/updated.
30
30
  * Workflows declare this on inputs.data and subscribe with {{ data }}.
31
31
  */
32
32
  workflowInputType?: string;
@@ -157,12 +157,12 @@ export type BatchOperationIterateFn = (ctx: BatchOperationContext & {
157
157
  * label: 'Import Members',
158
158
  * entity: 'member',
159
159
  * setup: async (ctx) => {
160
- * const count = await glofox.getMemberCount()
160
+ * const count = await acmeApi.getMemberCount()
161
161
  * return { total: count }
162
162
  * },
163
163
  * iterate: async (ctx) => {
164
- * const apiKey = ctx.env.GLOFOX_API_KEY
165
- * const { data, pagination } = await glofox.getMembers({
164
+ * const apiKey = ctx.env.ACME_API_KEY
165
+ * const { data, pagination } = await acmeApi.getMembers({
166
166
  * apiKey,
167
167
  * limit: ctx.limit,
168
168
  * offset: ctx.cursor ?? 0,
@@ -1,11 +1,32 @@
1
1
  /**
2
2
  * App entity definition types.
3
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.
4
+ * Entities describe external/logical payload shapes that workplaces map to CRM
5
+ * via install-time CRM maps. They are NOT shared models — the app does not own
6
+ * CRM writes; workflows/agents apply maps.
7
7
  */
8
8
  import type { BaseDefinition, FieldOption } from './base';
9
+ /**
10
+ * Suggested CRM map defaults for an entity when a workplace has matching models.
11
+ * Declared by the app (industry-specific); consumed generically by core install UI.
12
+ */
13
+ export interface EntityCrmMapDefaults {
14
+ /** Workplace model handle to prefer */
15
+ modelHandle: string;
16
+ /** Prefer this field as match when present on the model */
17
+ matchFieldHandle?: string;
18
+ /** Ordered entity paths for match fallbacks (maps to same-named CRM fields) */
19
+ matchRuleEntityPaths?: string[];
20
+ /** entityPath → workplace field handle */
21
+ fieldHandles: Record<string, string>;
22
+ /** entity relationship handle → workplace field handle */
23
+ relationshipHandles?: Record<string, string>;
24
+ /**
25
+ * Optional enum remaps per entity path when suggesting valueMaps
26
+ * (e.g. membership_status: { trial_member: 'visiting_member' }).
27
+ */
28
+ valueAliases?: Record<string, Record<string, string>>;
29
+ }
9
30
  /**
10
31
  * Field on an app entity contract (maps to a path on tool/event payloads).
11
32
  */
@@ -64,4 +85,9 @@ export interface EntityDefinition extends BaseDefinition {
64
85
  contextFields?: EntityFieldDefinition[];
65
86
  /** Relationship handles that can be mapped to CRM relationship fields */
66
87
  relationships?: EntityRelationshipDefinition[];
88
+ /**
89
+ * Optional suggested CRM map when the workplace has a matching model schema.
90
+ * Used by install suggest/analyze — not applied automatically.
91
+ */
92
+ crmMapDefaults?: EntityCrmMapDefaults;
67
93
  }
@@ -139,6 +139,11 @@ export interface FieldDefinition {
139
139
  owner?: FieldOwner;
140
140
  /** AI-specific metadata for agent interactions */
141
141
  aiMeta?: FieldAIMeta;
142
+ /**
143
+ * Workplace-scoped field section handle (visualization helper).
144
+ * Find-or-create on provision/schema apply.
145
+ */
146
+ section?: string;
142
147
  }
143
148
  /**
144
149
  * Model definition.
@@ -34,4 +34,16 @@ export interface SetupStepDefinition {
34
34
  listenToEnv?: boolean;
35
35
  /** Capability keys unlocked when this step is READY */
36
36
  capabilities?: string[];
37
+ /**
38
+ * Optional tool handle for an APP-step CTA (invoked as page_action with no form).
39
+ * Declared by the app — platform UI must not hardcode app/tool names.
40
+ */
41
+ actionTool?: string;
42
+ /** Optional label for the APP-step CTA button */
43
+ actionLabel?: string;
44
+ /**
45
+ * Optional install-relative path for post-setup navigation
46
+ * (e.g. `/leads`). Prefer entity pages over industry-specific defaults.
47
+ */
48
+ href?: string;
37
49
  }
@@ -98,7 +98,7 @@ export interface ReceiveMessageInput {
98
98
  message: CreateMessageType;
99
99
  /** Optional contact metadata to associate the message */
100
100
  contact?: ReceiveMessageContact;
101
- /** Optional remote/external message ID (e.g., Twilio MessageSid) */
101
+ /** Optional remote/external message ID (provider message id) */
102
102
  remoteId?: string;
103
103
  }
104
104
  /**
@@ -176,7 +176,7 @@ export declare const communicationChannel: {
176
176
  * Receive an inbound message on a communication channel.
177
177
  *
178
178
  * This is typically called from webhook handlers to process incoming messages
179
- * (e.g., SMS from Twilio, emails, WhatsApp messages).
179
+ * (e.g., SMS, email, or messaging-channel providers).
180
180
  *
181
181
  * @example
182
182
  * ```ts
@@ -185,7 +185,7 @@ export declare const communicationChannel: {
185
185
  * communicationChannelId: channel.id,
186
186
  * from: '+1234567890',
187
187
  * message: 'Hello!',
188
- * remoteId: 'twilio-message-sid-123',
188
+ * remoteId: 'provider-message-id-123',
189
189
  * });
190
190
  * ```
191
191
  */
@@ -617,14 +617,14 @@ export declare const webhook: {
617
617
  *
618
618
  * @example
619
619
  * ```ts
620
- * // Create a webhook for Twilio compliance callbacks
620
+ * // Create a webhook for provider compliance callbacks
621
621
  * const { url, id } = await webhook.create('compliance_status', {
622
622
  * bundleSid: bundle.sid,
623
623
  * complianceRecordId: record.id,
624
624
  * })
625
625
  *
626
- * // Pass the URL to Twilio
627
- * await twilioClient.bundles(bundle.sid).update({
626
+ * // Pass the URL to the upstream provider
627
+ * await providerClient.updateBundle(bundle.sid, {
628
628
  * statusCallback: url,
629
629
  * })
630
630
  * ```
@@ -1022,18 +1022,18 @@ export declare const ai: {
1022
1022
  generateObject<S extends z.ZodTypeAny>(options: GenerateObjectOptions<S>): Promise<z.infer<S>>;
1023
1023
  };
1024
1024
  export interface CallStartParams {
1025
- /** Communication channel (the Twilio number) this call belongs to */
1025
+ /** Communication channel (voice number) this call belongs to */
1026
1026
  communicationChannelId: string;
1027
1027
  /** Caller number in E.164 */
1028
1028
  fromNumber: string;
1029
- /** The dialed number (our Twilio number) in E.164 */
1029
+ /** The dialed number (our channel number) in E.164 */
1030
1030
  toNumber: string;
1031
1031
  /** Number the call is forwarded/dialed to (the human agent leg) */
1032
1032
  forwardedToNumber?: string | null;
1033
1033
  direction?: 'INBOUND' | 'OUTBOUND';
1034
- /** Provider call id (Twilio CallSid) */
1034
+ /** Provider call id (opaque) */
1035
1035
  externalId?: string | null;
1036
- /** Raw provider status string (e.g. Twilio "ringing") */
1036
+ /** Raw provider status string (opaque; not interpreted by the platform) */
1037
1037
  externalStatus?: string | null;
1038
1038
  /** Transcription provider/engine name (e.g. "deepgram", "google") */
1039
1039
  transcriptionEngine?: string | null;
@@ -1075,10 +1075,10 @@ export interface CallSummarizeResult {
1075
1075
  /**
1076
1076
  * Call client - manage a voice call session and its real-time transcript.
1077
1077
  *
1078
- * Designed for the phone integration's Twilio Real-Time Transcription webhooks:
1078
+ * Typical phone-integration flow:
1079
1079
  * - `start` when the inbound call arrives (creates the CallSession + thread + CALL block)
1080
- * - `appendTranscript` for each `transcription-content` event (stored as a tagged ThreadMessage)
1081
- * - `end` on call completion / `transcription-stopped`
1080
+ * - `appendTranscript` for each transcription event (stored as a tagged ThreadMessage)
1081
+ * - `end` on call completion (pass an explicit platform `status`)
1082
1082
  * - `summarize` to generate and persist an end-of-call summary
1083
1083
  *
1084
1084
  * **Requires sk_wkp_ or sk_app_ token.**
@@ -376,7 +376,12 @@ var CRMFieldSchemaZ = z3.object({
376
376
  unique: z3.boolean().optional(),
377
377
  list: z3.boolean().optional(),
378
378
  default: z3.unknown().optional(),
379
- definition: CRMFieldDefinitionSchema.optional()
379
+ definition: CRMFieldDefinitionSchema.optional(),
380
+ /**
381
+ * Workplace-scoped field section handle (visualization helper).
382
+ * Find-or-create on apply; display name is derived from the handle on create.
383
+ */
384
+ section: z3.string().regex(/^[a-z][a-z0-9_-]*$/, "Section handle must be lowercase alphanumeric with underscores/hyphens, starting with a letter").optional()
380
385
  });
381
386
  var CRMModelSchemaZ = z3.object({
382
387
  handle: z3.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
@@ -1655,7 +1660,7 @@ var EventWiringPanelComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1655
1660
  z8.object({
1656
1661
  type: z8.string(),
1657
1662
  label: z8.string(),
1658
- glofoxType: z8.string().optional(),
1663
+ sourceType: z8.string().optional(),
1659
1664
  description: z8.string().optional(),
1660
1665
  icon: z8.string().optional()
1661
1666
  })
@@ -2574,7 +2579,7 @@ var communicationChannel = {
2574
2579
  * Receive an inbound message on a communication channel.
2575
2580
  *
2576
2581
  * This is typically called from webhook handlers to process incoming messages
2577
- * (e.g., SMS from Twilio, emails, WhatsApp messages).
2582
+ * (e.g., SMS, email, or messaging-channel providers).
2578
2583
  *
2579
2584
  * @example
2580
2585
  * ```ts
@@ -2583,7 +2588,7 @@ var communicationChannel = {
2583
2588
  * communicationChannelId: channel.id,
2584
2589
  * from: '+1234567890',
2585
2590
  * message: 'Hello!',
2586
- * remoteId: 'twilio-message-sid-123',
2591
+ * remoteId: 'provider-message-id-123',
2587
2592
  * });
2588
2593
  * ```
2589
2594
  */
@@ -3238,14 +3243,14 @@ var webhook = {
3238
3243
  *
3239
3244
  * @example
3240
3245
  * ```ts
3241
- * // Create a webhook for Twilio compliance callbacks
3246
+ * // Create a webhook for provider compliance callbacks
3242
3247
  * const { url, id } = await webhook.create('compliance_status', {
3243
3248
  * bundleSid: bundle.sid,
3244
3249
  * complianceRecordId: record.id,
3245
3250
  * })
3246
3251
  *
3247
- * // Pass the URL to Twilio
3248
- * await twilioClient.bundles(bundle.sid).update({
3252
+ * // Pass the URL to the upstream provider
3253
+ * await providerClient.updateBundle(bundle.sid, {
3249
3254
  * statusCallback: url,
3250
3255
  * })
3251
3256
  * ```
package/dist/index.js CHANGED
@@ -764,7 +764,12 @@ var CRMFieldSchemaZ = import_v43.z.object({
764
764
  unique: import_v43.z.boolean().optional(),
765
765
  list: import_v43.z.boolean().optional(),
766
766
  default: import_v43.z.unknown().optional(),
767
- definition: CRMFieldDefinitionSchema.optional()
767
+ definition: CRMFieldDefinitionSchema.optional(),
768
+ /**
769
+ * Workplace-scoped field section handle (visualization helper).
770
+ * Find-or-create on apply; display name is derived from the handle on create.
771
+ */
772
+ section: import_v43.z.string().regex(/^[a-z][a-z0-9_-]*$/, "Section handle must be lowercase alphanumeric with underscores/hyphens, starting with a letter").optional()
768
773
  });
769
774
  var CRMModelSchemaZ = import_v43.z.object({
770
775
  handle: import_v43.z.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
@@ -2043,7 +2048,7 @@ var EventWiringPanelComponentDefinitionSchema = FormV2StylePropsSchema.extend({
2043
2048
  import_v48.z.object({
2044
2049
  type: import_v48.z.string(),
2045
2050
  label: import_v48.z.string(),
2046
- glofoxType: import_v48.z.string().optional(),
2051
+ sourceType: import_v48.z.string().optional(),
2047
2052
  description: import_v48.z.string().optional(),
2048
2053
  icon: import_v48.z.string().optional()
2049
2054
  })
@@ -2962,7 +2967,7 @@ var communicationChannel = {
2962
2967
  * Receive an inbound message on a communication channel.
2963
2968
  *
2964
2969
  * This is typically called from webhook handlers to process incoming messages
2965
- * (e.g., SMS from Twilio, emails, WhatsApp messages).
2970
+ * (e.g., SMS, email, or messaging-channel providers).
2966
2971
  *
2967
2972
  * @example
2968
2973
  * ```ts
@@ -2971,7 +2976,7 @@ var communicationChannel = {
2971
2976
  * communicationChannelId: channel.id,
2972
2977
  * from: '+1234567890',
2973
2978
  * message: 'Hello!',
2974
- * remoteId: 'twilio-message-sid-123',
2979
+ * remoteId: 'provider-message-id-123',
2975
2980
  * });
2976
2981
  * ```
2977
2982
  */
@@ -3626,14 +3631,14 @@ var webhook = {
3626
3631
  *
3627
3632
  * @example
3628
3633
  * ```ts
3629
- * // Create a webhook for Twilio compliance callbacks
3634
+ * // Create a webhook for provider compliance callbacks
3630
3635
  * const { url, id } = await webhook.create('compliance_status', {
3631
3636
  * bundleSid: bundle.sid,
3632
3637
  * complianceRecordId: record.id,
3633
3638
  * })
3634
3639
  *
3635
- * // Pass the URL to Twilio
3636
- * await twilioClient.bundles(bundle.sid).update({
3640
+ * // Pass the URL to the upstream provider
3641
+ * await providerClient.updateBundle(bundle.sid, {
3637
3642
  * statusCallback: url,
3638
3643
  * })
3639
3644
  * ```
@@ -123,6 +123,7 @@ export declare const CRMFieldSchemaZ: z.ZodObject<{
123
123
  max: z.ZodOptional<z.ZodNumber>;
124
124
  pattern: z.ZodOptional<z.ZodString>;
125
125
  }, z.core.$strip>]>>;
126
+ section: z.ZodOptional<z.ZodString>;
126
127
  }, z.core.$strip>;
127
128
  export type CRMFieldSchema = z.infer<typeof CRMFieldSchemaZ>;
128
129
  /**
@@ -178,6 +179,7 @@ export declare const CRMModelSchemaZ: z.ZodObject<{
178
179
  max: z.ZodOptional<z.ZodNumber>;
179
180
  pattern: z.ZodOptional<z.ZodString>;
180
181
  }, z.core.$strip>]>>;
182
+ section: z.ZodOptional<z.ZodString>;
181
183
  }, z.core.$strip>>;
182
184
  }, z.core.$strip>;
183
185
  export type CRMModelSchema = z.infer<typeof CRMModelSchemaZ>;
@@ -378,6 +380,7 @@ export declare const CRMSchemaZ: z.ZodObject<{
378
380
  max: z.ZodOptional<z.ZodNumber>;
379
381
  pattern: z.ZodOptional<z.ZodString>;
380
382
  }, z.core.$strip>]>>;
383
+ section: z.ZodOptional<z.ZodString>;
381
384
  }, z.core.$strip>>;
382
385
  }, z.core.$strip>>;
383
386
  relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
package/dist/schemas.d.ts CHANGED
@@ -1054,7 +1054,7 @@ export declare const EventWiringPanelComponentDefinitionSchema: z.ZodObject<{
1054
1054
  eventTypes: z.ZodArray<z.ZodObject<{
1055
1055
  type: z.ZodString;
1056
1056
  label: z.ZodString;
1057
- glofoxType: z.ZodOptional<z.ZodString>;
1057
+ sourceType: z.ZodOptional<z.ZodString>;
1058
1058
  description: z.ZodOptional<z.ZodString>;
1059
1059
  icon: z.ZodOptional<z.ZodString>;
1060
1060
  }, z.core.$strip>>;
@@ -1419,7 +1419,7 @@ export declare const FormV2ComponentDefinitionSchema: z.ZodDiscriminatedUnion<[z
1419
1419
  eventTypes: z.ZodArray<z.ZodObject<{
1420
1420
  type: z.ZodString;
1421
1421
  label: z.ZodString;
1422
- glofoxType: z.ZodOptional<z.ZodString>;
1422
+ sourceType: z.ZodOptional<z.ZodString>;
1423
1423
  description: z.ZodOptional<z.ZodString>;
1424
1424
  icon: z.ZodOptional<z.ZodString>;
1425
1425
  }, z.core.$strip>>;
@@ -1718,7 +1718,7 @@ export declare const FormV2PropsDefinitionSchema: z.ZodObject<{
1718
1718
  eventTypes: z.ZodArray<z.ZodObject<{
1719
1719
  type: z.ZodString;
1720
1720
  label: z.ZodString;
1721
- glofoxType: z.ZodOptional<z.ZodString>;
1721
+ sourceType: z.ZodOptional<z.ZodString>;
1722
1722
  description: z.ZodOptional<z.ZodString>;
1723
1723
  icon: z.ZodOptional<z.ZodString>;
1724
1724
  }, z.core.$strip>>;
@@ -2058,7 +2058,7 @@ export declare const CardBlockDefinitionSchema: z.ZodObject<{
2058
2058
  eventTypes: z.ZodArray<z.ZodObject<{
2059
2059
  type: z.ZodString;
2060
2060
  label: z.ZodString;
2061
- glofoxType: z.ZodOptional<z.ZodString>;
2061
+ sourceType: z.ZodOptional<z.ZodString>;
2062
2062
  description: z.ZodOptional<z.ZodString>;
2063
2063
  icon: z.ZodOptional<z.ZodString>;
2064
2064
  }, z.core.$strip>>;
@@ -2497,7 +2497,7 @@ export declare const PageBlockDefinitionSchema: z.ZodUnion<readonly [z.ZodObject
2497
2497
  eventTypes: z.ZodArray<z.ZodObject<{
2498
2498
  type: z.ZodString;
2499
2499
  label: z.ZodString;
2500
- glofoxType: z.ZodOptional<z.ZodString>;
2500
+ sourceType: z.ZodOptional<z.ZodString>;
2501
2501
  description: z.ZodOptional<z.ZodString>;
2502
2502
  icon: z.ZodOptional<z.ZodString>;
2503
2503
  }, z.core.$strip>>;
@@ -3044,7 +3044,7 @@ export declare const PageDefinitionSchema: z.ZodObject<{
3044
3044
  eventTypes: z.ZodArray<z.ZodObject<{
3045
3045
  type: z.ZodString;
3046
3046
  label: z.ZodString;
3047
- glofoxType: z.ZodOptional<z.ZodString>;
3047
+ sourceType: z.ZodOptional<z.ZodString>;
3048
3048
  description: z.ZodOptional<z.ZodString>;
3049
3049
  icon: z.ZodOptional<z.ZodString>;
3050
3050
  }, z.core.$strip>>;
@@ -4121,7 +4121,7 @@ export declare const ProvisionConfigSchema: z.ZodObject<{
4121
4121
  eventTypes: z.ZodArray<z.ZodObject<{
4122
4122
  type: z.ZodString;
4123
4123
  label: z.ZodString;
4124
- glofoxType: z.ZodOptional<z.ZodString>;
4124
+ sourceType: z.ZodOptional<z.ZodString>;
4125
4125
  description: z.ZodOptional<z.ZodString>;
4126
4126
  icon: z.ZodOptional<z.ZodString>;
4127
4127
  }, z.core.$strip>>;
@@ -4970,7 +4970,7 @@ export declare const SkedyulConfigSchema: z.ZodObject<{
4970
4970
  eventTypes: z.ZodArray<z.ZodObject<{
4971
4971
  type: z.ZodString;
4972
4972
  label: z.ZodString;
4973
- glofoxType: z.ZodOptional<z.ZodString>;
4973
+ sourceType: z.ZodOptional<z.ZodString>;
4974
4974
  description: z.ZodOptional<z.ZodString>;
4975
4975
  icon: z.ZodOptional<z.ZodString>;
4976
4976
  }, z.core.$strip>>;
@@ -7,6 +7,8 @@
7
7
  * Link structure for navigating to CRM views or external URLs.
8
8
  */
9
9
  export interface DataBlockLink {
10
+ /** App CRM entity handle (e.g. "class", "booking") for UI map gating */
11
+ entityHandle?: string;
10
12
  modelHandle?: string;
11
13
  modelHandlePlural?: string;
12
14
  modelLabel?: string;
@@ -49,6 +51,8 @@ export interface ProfileAvatar {
49
51
  export interface ProfileField {
50
52
  label: string;
51
53
  value: string;
54
+ /** Optional CRM navigation for this field value */
55
+ link?: DataBlockLink;
52
56
  }
53
57
  /**
54
58
  * Profile block - entity card with key fields.
@@ -78,7 +78,7 @@ export interface CommunicationChannelLifecycleContext extends WebhookLifecycleCo
78
78
  };
79
79
  }
80
80
  export interface WebhookLifecycleResult {
81
- /** External ID from the provider (e.g., Twilio phone number SID) */
81
+ /** External ID from the provider (e.g., phone number SID) */
82
82
  externalId: string;
83
83
  /** Optional message describing what was configured */
84
84
  message?: string;
@@ -93,7 +93,7 @@ export type WebhookLifecycleHook<TContext = WebhookLifecycleContext> = (context:
93
93
  /**
94
94
  * Webhook invocation mode - determines how responses are handled.
95
95
  * - WEBHOOK: Fire-and-forget. Returns 200 immediately, processes asynchronously.
96
- * - CALLBACK: Waits for handler response and returns it to the caller (e.g., Twilio TwiML).
96
+ * - CALLBACK: Waits for handler response and returns it to the caller (e.g., voice XML).
97
97
  */
98
98
  export type WebhookInvocationMode = 'WEBHOOK' | 'CALLBACK';
99
99
  /**
@@ -107,7 +107,7 @@ export interface WebhookDefinition {
107
107
  methods?: ('GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH')[];
108
108
  /**
109
109
  * Invocation mode. Defaults to 'WEBHOOK' (fire-and-forget).
110
- * Use 'CALLBACK' when the caller expects the handler's response (e.g., Twilio TwiML).
110
+ * Use 'CALLBACK' when the caller expects the handler's response (e.g., voice XML).
111
111
  */
112
112
  type?: WebhookInvocationMode;
113
113
  handler: WebhookHandler;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skedyul",
3
- "version": "1.7.15",
3
+ "version": "1.7.16",
4
4
  "description": "The Skedyul SDK for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",