skedyul 0.2.47 → 0.2.49

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
- 1769395461847
1
+ 1769404387102
package/dist/config.d.ts CHANGED
@@ -107,15 +107,25 @@ export interface RelationshipDefinition {
107
107
  source: RelationshipLink;
108
108
  target: RelationshipLink;
109
109
  }
110
- export interface ChannelToolBindings {
111
- send_message: string;
110
+ /** Standard capability types for communication channels */
111
+ export type ChannelCapabilityType = 'messaging' | 'voice' | 'video';
112
+ /** Capability definition with display info and handler references */
113
+ export interface ChannelCapability {
114
+ /** Display name: "SMS", "WhatsApp Messages" */
115
+ name: string;
116
+ /** Lucide icon name */
117
+ icon?: string;
118
+ /** Inbound webhook handler */
119
+ receive?: string;
120
+ /** Outbound tool handle */
121
+ send?: string;
112
122
  }
113
123
  export interface ChannelDefinition {
114
124
  handle: string;
115
125
  name: string;
116
126
  icon?: string;
117
- tools: ChannelToolBindings;
118
- requires?: ResourceDependency[];
127
+ /** Capabilities keyed by standard type (messaging, voice, video) */
128
+ capabilities: Partial<Record<ChannelCapabilityType, ChannelCapability>>;
119
129
  }
120
130
  export interface WorkflowActionInput {
121
131
  key: string;
@@ -538,6 +548,8 @@ export interface PageDefinition {
538
548
  title: string;
539
549
  /** URL path for this page (e.g., '/phone-numbers' or '/phone-numbers/[id]' for dynamic segments) */
540
550
  path: string;
551
+ /** When true, this page is the default landing page for the app installation */
552
+ default?: boolean;
541
553
  /**
542
554
  * Navigation configuration:
543
555
  * - true/false: show/hide in auto-generated navigation
@@ -99,7 +99,63 @@ export interface ReceiveMessageInput {
99
99
  /** Optional remote/external message ID (e.g., Twilio MessageSid) */
100
100
  remoteId?: string;
101
101
  }
102
+ /**
103
+ * Parameters for creating a communication channel.
104
+ */
105
+ export interface ChannelCreateParams {
106
+ /** Friendly name for the channel */
107
+ name: string;
108
+ /** Unique identifier for the channel (e.g., phone number, email address) */
109
+ identifierValue: string;
110
+ /** Optional: Link a SHARED model to user's model when creating the channel */
111
+ link?: {
112
+ /** SHARED model handle from provision config (e.g., 'contact') */
113
+ handle: string;
114
+ /** User's model ID to link to */
115
+ targetModelId: string;
116
+ };
117
+ }
118
+ /**
119
+ * Result from creating a communication channel.
120
+ */
121
+ export interface ChannelCreateResult {
122
+ /** Created channel ID */
123
+ id: string;
124
+ /** Channel name */
125
+ name: string;
126
+ /** Channel handle from config */
127
+ handle: string;
128
+ /** Channel identifier value */
129
+ identifierValue: string;
130
+ /** AppResourceInstance ID if link was provided */
131
+ resourceInstanceId?: string;
132
+ }
102
133
  export declare const communicationChannel: {
134
+ /**
135
+ * Create a communication channel for an app installation.
136
+ *
137
+ * Creates a channel with the given handle from provision.config.ts.
138
+ * Optionally links a SHARED model to the user's model in a single operation.
139
+ *
140
+ * **Requires sk_wkp_ token** - channels are scoped to app installations.
141
+ *
142
+ * @param handle - Channel handle from provision.config.ts (e.g., "phone", "email")
143
+ * @param params - Channel creation parameters
144
+ *
145
+ * @example
146
+ * ```ts
147
+ * // Create a phone channel and link the contact model
148
+ * const channel = await communicationChannel.create("phone", {
149
+ * name: "Sales Line",
150
+ * identifierValue: "+61400000000",
151
+ * link: {
152
+ * handle: "contact", // SHARED model from provision config
153
+ * targetModelId: modelId, // User's selected model
154
+ * },
155
+ * });
156
+ * ```
157
+ */
158
+ create(handle: string, params: ChannelCreateParams): Promise<ChannelCreateResult>;
103
159
  /**
104
160
  * List communication channels with optional filters.
105
161
  *
@@ -139,6 +139,37 @@ exports.workplace = {
139
139
  },
140
140
  };
141
141
  exports.communicationChannel = {
142
+ /**
143
+ * Create a communication channel for an app installation.
144
+ *
145
+ * Creates a channel with the given handle from provision.config.ts.
146
+ * Optionally links a SHARED model to the user's model in a single operation.
147
+ *
148
+ * **Requires sk_wkp_ token** - channels are scoped to app installations.
149
+ *
150
+ * @param handle - Channel handle from provision.config.ts (e.g., "phone", "email")
151
+ * @param params - Channel creation parameters
152
+ *
153
+ * @example
154
+ * ```ts
155
+ * // Create a phone channel and link the contact model
156
+ * const channel = await communicationChannel.create("phone", {
157
+ * name: "Sales Line",
158
+ * identifierValue: "+61400000000",
159
+ * link: {
160
+ * handle: "contact", // SHARED model from provision config
161
+ * targetModelId: modelId, // User's selected model
162
+ * },
163
+ * });
164
+ * ```
165
+ */
166
+ async create(handle, params) {
167
+ const { data } = await callCore('communicationChannel.create', {
168
+ handle,
169
+ ...params,
170
+ });
171
+ return data;
172
+ },
142
173
  /**
143
174
  * List communication channels with optional filters.
144
175
  *
package/dist/index.d.ts CHANGED
@@ -10,4 +10,4 @@ declare const _default: {
10
10
  };
11
11
  export default _default;
12
12
  export { defineConfig, loadConfig, validateConfig, CONFIG_FILE_NAMES, getAllEnvKeys, getRequiredInstallEnvKeys, } from './config';
13
- export type { SkedyulConfig, SerializableSkedyulConfig, EnvVariableDefinition, EnvSchema, EnvVisibility, ComputeLayerType, InstallHandlerContext, InstallHandlerResult, InstallHandler, ModelDefinition, ModelFieldDefinition, ResourceScope, FieldOwner, InternalFieldDataType, FieldOption, InlineFieldDefinition, AppFieldVisibility, RelationshipDefinition, RelationshipLink, RelationshipCardinality, OnDeleteBehavior, ChannelDefinition, ChannelToolBindings, WorkflowDefinition, WorkflowAction, WorkflowActionInput, PageDefinition, PageBlockDefinition, PageFieldDefinition, PageActionDefinition, PageType, PageBlockType, PageFieldType, PageFieldSource, PageFormHeader, PageContextMode, PageContextItemDefinition, PageContextDefinition, PageInstanceFilter, NavigationItem, NavigationSection, NavigationSidebar, BreadcrumbItem, NavigationBreadcrumb, NavigationConfig, WebhookHttpMethod, WebhookRequest, WebhookHandlerContext, WebhookHandlerResponse, WebhookHandlerFn, WebhookHandlerDefinition, Webhooks, WebhookHandlerMetadata, ProvisionConfig, ModelDependency, ChannelDependency, WorkflowDependency, ResourceDependency, StructuredFilter, } from './config';
13
+ export type { SkedyulConfig, SerializableSkedyulConfig, EnvVariableDefinition, EnvSchema, EnvVisibility, ComputeLayerType, InstallHandlerContext, InstallHandlerResult, InstallHandler, ModelDefinition, ModelFieldDefinition, ResourceScope, FieldOwner, InternalFieldDataType, FieldOption, InlineFieldDefinition, AppFieldVisibility, RelationshipDefinition, RelationshipLink, RelationshipCardinality, OnDeleteBehavior, ChannelDefinition, ChannelCapability, ChannelCapabilityType, WorkflowDefinition, WorkflowAction, WorkflowActionInput, PageDefinition, PageBlockDefinition, PageFieldDefinition, PageActionDefinition, PageType, PageBlockType, PageFieldType, PageFieldSource, PageFormHeader, PageContextMode, PageContextItemDefinition, PageContextDefinition, PageInstanceFilter, NavigationItem, NavigationSection, NavigationSidebar, BreadcrumbItem, NavigationBreadcrumb, NavigationConfig, WebhookHttpMethod, WebhookRequest, WebhookHandlerContext, WebhookHandlerResponse, WebhookHandlerFn, WebhookHandlerDefinition, Webhooks, WebhookHandlerMetadata, ProvisionConfig, ModelDependency, ChannelDependency, WorkflowDependency, ResourceDependency, StructuredFilter, } from './config';
package/dist/schemas.d.ts CHANGED
@@ -277,25 +277,33 @@ export declare const RelationshipDefinitionSchema: z.ZodObject<{
277
277
  }>>;
278
278
  }, z.core.$strip>;
279
279
  }, z.core.$strip>;
280
- export declare const ChannelToolBindingsSchema: z.ZodObject<{
281
- send_message: z.ZodString;
280
+ /** Standard capability types for communication channels */
281
+ export declare const ChannelCapabilityTypeSchema: z.ZodEnum<{
282
+ messaging: "messaging";
283
+ voice: "voice";
284
+ video: "video";
285
+ }>;
286
+ /** Capability definition with display info and handler references */
287
+ export declare const ChannelCapabilitySchema: z.ZodObject<{
288
+ name: z.ZodString;
289
+ icon: z.ZodOptional<z.ZodString>;
290
+ receive: z.ZodOptional<z.ZodString>;
291
+ send: z.ZodOptional<z.ZodString>;
282
292
  }, z.core.$strip>;
283
293
  export declare const ChannelDefinitionSchema: z.ZodObject<{
284
294
  handle: z.ZodString;
285
295
  name: z.ZodString;
286
296
  icon: z.ZodOptional<z.ZodString>;
287
- tools: z.ZodObject<{
288
- send_message: z.ZodString;
289
- }, z.core.$strip>;
290
- requires: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
291
- model: z.ZodString;
292
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
293
- where: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>>>;
294
- }, z.core.$strip>, z.ZodObject<{
295
- channel: z.ZodString;
296
- }, z.core.$strip>, z.ZodObject<{
297
- workflow: z.ZodString;
298
- }, z.core.$strip>]>>>;
297
+ capabilities: z.ZodRecord<z.ZodEnum<{
298
+ messaging: "messaging";
299
+ voice: "voice";
300
+ video: "video";
301
+ }>, z.ZodObject<{
302
+ name: z.ZodString;
303
+ icon: z.ZodOptional<z.ZodString>;
304
+ receive: z.ZodOptional<z.ZodString>;
305
+ send: z.ZodOptional<z.ZodString>;
306
+ }, z.core.$strip>>;
299
307
  }, z.core.$strip>;
300
308
  export declare const WorkflowActionInputSchema: z.ZodObject<{
301
309
  key: z.ZodString;
@@ -2190,6 +2198,7 @@ export declare const PageDefinitionSchema: z.ZodObject<{
2190
2198
  }>;
2191
2199
  title: z.ZodString;
2192
2200
  path: z.ZodString;
2201
+ default: z.ZodOptional<z.ZodBoolean>;
2193
2202
  navigation: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodObject<{
2194
2203
  sidebar: z.ZodOptional<z.ZodObject<{
2195
2204
  sections: z.ZodArray<z.ZodObject<{
@@ -2739,18 +2748,16 @@ export declare const ProvisionConfigSchema: z.ZodObject<{
2739
2748
  handle: z.ZodString;
2740
2749
  name: z.ZodString;
2741
2750
  icon: z.ZodOptional<z.ZodString>;
2742
- tools: z.ZodObject<{
2743
- send_message: z.ZodString;
2744
- }, z.core.$strip>;
2745
- requires: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
2746
- model: z.ZodString;
2747
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
2748
- where: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>>>;
2749
- }, z.core.$strip>, z.ZodObject<{
2750
- channel: z.ZodString;
2751
- }, z.core.$strip>, z.ZodObject<{
2752
- workflow: z.ZodString;
2753
- }, z.core.$strip>]>>>;
2751
+ capabilities: z.ZodRecord<z.ZodEnum<{
2752
+ messaging: "messaging";
2753
+ voice: "voice";
2754
+ video: "video";
2755
+ }>, z.ZodObject<{
2756
+ name: z.ZodString;
2757
+ icon: z.ZodOptional<z.ZodString>;
2758
+ receive: z.ZodOptional<z.ZodString>;
2759
+ send: z.ZodOptional<z.ZodString>;
2760
+ }, z.core.$strip>>;
2754
2761
  }, z.core.$strip>>>;
2755
2762
  workflows: z.ZodOptional<z.ZodArray<z.ZodObject<{
2756
2763
  path: z.ZodString;
@@ -2806,6 +2813,7 @@ export declare const ProvisionConfigSchema: z.ZodObject<{
2806
2813
  }>;
2807
2814
  title: z.ZodString;
2808
2815
  path: z.ZodString;
2816
+ default: z.ZodOptional<z.ZodBoolean>;
2809
2817
  navigation: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodObject<{
2810
2818
  sidebar: z.ZodOptional<z.ZodObject<{
2811
2819
  sections: z.ZodArray<z.ZodObject<{
@@ -3338,18 +3346,16 @@ export declare const SkedyulConfigSchema: z.ZodObject<{
3338
3346
  handle: z.ZodString;
3339
3347
  name: z.ZodString;
3340
3348
  icon: z.ZodOptional<z.ZodString>;
3341
- tools: z.ZodObject<{
3342
- send_message: z.ZodString;
3343
- }, z.core.$strip>;
3344
- requires: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
3345
- model: z.ZodString;
3346
- fields: z.ZodOptional<z.ZodArray<z.ZodString>>;
3347
- where: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>]>>>>;
3348
- }, z.core.$strip>, z.ZodObject<{
3349
- channel: z.ZodString;
3350
- }, z.core.$strip>, z.ZodObject<{
3351
- workflow: z.ZodString;
3352
- }, z.core.$strip>]>>>;
3349
+ capabilities: z.ZodRecord<z.ZodEnum<{
3350
+ messaging: "messaging";
3351
+ voice: "voice";
3352
+ video: "video";
3353
+ }>, z.ZodObject<{
3354
+ name: z.ZodString;
3355
+ icon: z.ZodOptional<z.ZodString>;
3356
+ receive: z.ZodOptional<z.ZodString>;
3357
+ send: z.ZodOptional<z.ZodString>;
3358
+ }, z.core.$strip>>;
3353
3359
  }, z.core.$strip>>>;
3354
3360
  workflows: z.ZodOptional<z.ZodArray<z.ZodObject<{
3355
3361
  path: z.ZodString;
@@ -3405,6 +3411,7 @@ export declare const SkedyulConfigSchema: z.ZodObject<{
3405
3411
  }>;
3406
3412
  title: z.ZodString;
3407
3413
  path: z.ZodString;
3414
+ default: z.ZodOptional<z.ZodBoolean>;
3408
3415
  navigation: z.ZodDefault<z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodObject<{
3409
3416
  sidebar: z.ZodOptional<z.ZodObject<{
3410
3417
  sections: z.ZodArray<z.ZodObject<{
@@ -3844,6 +3851,8 @@ export type WorkflowDependency = z.infer<typeof WorkflowDependencySchema>;
3844
3851
  export type ResourceDependency = z.infer<typeof ResourceDependencySchema>;
3845
3852
  export type ModelFieldDefinition = z.infer<typeof ModelFieldDefinitionSchema>;
3846
3853
  export type ModelDefinition = z.infer<typeof ModelDefinitionSchema>;
3854
+ export type ChannelCapabilityType = z.infer<typeof ChannelCapabilityTypeSchema>;
3855
+ export type ChannelCapability = z.infer<typeof ChannelCapabilitySchema>;
3847
3856
  export type ChannelDefinition = z.infer<typeof ChannelDefinitionSchema>;
3848
3857
  export type WorkflowDefinition = z.infer<typeof WorkflowDefinitionSchema>;
3849
3858
  export type WebhookHttpMethod = z.infer<typeof WebhookHttpMethodSchema>;
package/dist/schemas.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EmptyFormComponentDefinitionSchema = exports.ListComponentDefinitionSchema = exports.ListItemTemplateSchema = exports.FileSettingComponentDefinitionSchema = exports.ImageSettingComponentDefinitionSchema = exports.TimePickerComponentDefinitionSchema = exports.DatePickerComponentDefinitionSchema = exports.CheckboxComponentDefinitionSchema = exports.ComboboxComponentDefinitionSchema = exports.SelectComponentDefinitionSchema = exports.TextareaComponentDefinitionSchema = exports.InputComponentDefinitionSchema = exports.FormLayoutConfigDefinitionSchema = exports.FormLayoutRowDefinitionSchema = exports.FormLayoutColumnDefinitionSchema = exports.RelationshipExtensionSchema = exports.FieldSettingButtonPropsSchema = exports.FormV2StylePropsSchema = exports.PageActionDefinitionSchema = exports.PageFormHeaderSchema = exports.PageFieldSourceSchema = exports.PageFieldTypeSchema = exports.PageBlockTypeSchema = exports.PageTypeSchema = exports.WorkflowDefinitionSchema = exports.WorkflowActionSchema = exports.WorkflowActionInputSchema = exports.ChannelDefinitionSchema = exports.ChannelToolBindingsSchema = exports.RelationshipDefinitionSchema = exports.RelationshipLinkSchema = exports.OnDeleteBehaviorSchema = exports.RelationshipCardinalitySchema = exports.ModelDefinitionSchema = exports.ModelFieldDefinitionSchema = exports.AppFieldVisibilitySchema = exports.InlineFieldDefinitionSchema = exports.FieldOptionSchema = exports.FieldDataTypeSchema = exports.ResourceDependencySchema = exports.WorkflowDependencySchema = exports.ChannelDependencySchema = exports.ModelDependencySchema = exports.StructuredFilterSchema = exports.FieldOwnerSchema = exports.ResourceScopeSchema = exports.ComputeLayerTypeSchema = exports.EnvSchemaSchema = exports.EnvVariableDefinitionSchema = exports.EnvVisibilitySchema = void 0;
4
- exports.SkedyulConfigSchema = exports.ProvisionConfigSchema = exports.WebhooksSchema = exports.WebhookHandlerDefinitionSchema = exports.WebhookHttpMethodSchema = exports.PageDefinitionSchema = exports.NavigationConfigSchema = exports.NavigationBreadcrumbSchema = exports.BreadcrumbItemSchema = exports.NavigationSidebarSchema = exports.NavigationSectionSchema = exports.NavigationItemSchema = exports.PageInstanceFilterSchema = exports.PageContextDefinitionSchema = exports.PageContextItemDefinitionSchema = exports.PageContextFiltersSchema = exports.PageContextModeSchema = exports.PageBlockDefinitionSchema = exports.ListBlockDefinitionSchema = exports.LegacyFormBlockDefinitionSchema = exports.PageFieldDefinitionSchema = exports.CardBlockDefinitionSchema = exports.CardBlockHeaderSchema = exports.FormV2PropsDefinitionSchema = exports.FormV2ComponentDefinitionSchema = exports.FieldSettingComponentDefinitionSchema = exports.ModalFormDefinitionSchema = exports.AlertComponentDefinitionSchema = void 0;
3
+ exports.ListComponentDefinitionSchema = exports.ListItemTemplateSchema = exports.FileSettingComponentDefinitionSchema = exports.ImageSettingComponentDefinitionSchema = exports.TimePickerComponentDefinitionSchema = exports.DatePickerComponentDefinitionSchema = exports.CheckboxComponentDefinitionSchema = exports.ComboboxComponentDefinitionSchema = exports.SelectComponentDefinitionSchema = exports.TextareaComponentDefinitionSchema = exports.InputComponentDefinitionSchema = exports.FormLayoutConfigDefinitionSchema = exports.FormLayoutRowDefinitionSchema = exports.FormLayoutColumnDefinitionSchema = exports.RelationshipExtensionSchema = exports.FieldSettingButtonPropsSchema = exports.FormV2StylePropsSchema = exports.PageActionDefinitionSchema = exports.PageFormHeaderSchema = exports.PageFieldSourceSchema = exports.PageFieldTypeSchema = exports.PageBlockTypeSchema = exports.PageTypeSchema = exports.WorkflowDefinitionSchema = exports.WorkflowActionSchema = exports.WorkflowActionInputSchema = exports.ChannelDefinitionSchema = exports.ChannelCapabilitySchema = exports.ChannelCapabilityTypeSchema = exports.RelationshipDefinitionSchema = exports.RelationshipLinkSchema = exports.OnDeleteBehaviorSchema = exports.RelationshipCardinalitySchema = exports.ModelDefinitionSchema = exports.ModelFieldDefinitionSchema = exports.AppFieldVisibilitySchema = exports.InlineFieldDefinitionSchema = exports.FieldOptionSchema = exports.FieldDataTypeSchema = exports.ResourceDependencySchema = exports.WorkflowDependencySchema = exports.ChannelDependencySchema = exports.ModelDependencySchema = exports.StructuredFilterSchema = exports.FieldOwnerSchema = exports.ResourceScopeSchema = exports.ComputeLayerTypeSchema = exports.EnvSchemaSchema = exports.EnvVariableDefinitionSchema = exports.EnvVisibilitySchema = void 0;
4
+ exports.SkedyulConfigSchema = exports.ProvisionConfigSchema = exports.WebhooksSchema = exports.WebhookHandlerDefinitionSchema = exports.WebhookHttpMethodSchema = exports.PageDefinitionSchema = exports.NavigationConfigSchema = exports.NavigationBreadcrumbSchema = exports.BreadcrumbItemSchema = exports.NavigationSidebarSchema = exports.NavigationSectionSchema = exports.NavigationItemSchema = exports.PageInstanceFilterSchema = exports.PageContextDefinitionSchema = exports.PageContextItemDefinitionSchema = exports.PageContextFiltersSchema = exports.PageContextModeSchema = exports.PageBlockDefinitionSchema = exports.ListBlockDefinitionSchema = exports.LegacyFormBlockDefinitionSchema = exports.PageFieldDefinitionSchema = exports.CardBlockDefinitionSchema = exports.CardBlockHeaderSchema = exports.FormV2PropsDefinitionSchema = exports.FormV2ComponentDefinitionSchema = exports.FieldSettingComponentDefinitionSchema = exports.ModalFormDefinitionSchema = exports.AlertComponentDefinitionSchema = exports.EmptyFormComponentDefinitionSchema = void 0;
5
5
  exports.safeParseConfig = safeParseConfig;
6
6
  exports.isModelDependency = isModelDependency;
7
7
  exports.isChannelDependency = isChannelDependency;
@@ -132,15 +132,25 @@ exports.RelationshipDefinitionSchema = zod_1.z.object({
132
132
  // ─────────────────────────────────────────────────────────────────────────────
133
133
  // Channel Schemas
134
134
  // ─────────────────────────────────────────────────────────────────────────────
135
- exports.ChannelToolBindingsSchema = zod_1.z.object({
136
- send_message: zod_1.z.string(),
135
+ /** Standard capability types for communication channels */
136
+ exports.ChannelCapabilityTypeSchema = zod_1.z.enum([
137
+ 'messaging', // Text-based: SMS, WhatsApp, Messenger, DMs
138
+ 'voice', // Audio calls: Phone, WhatsApp Voice, etc.
139
+ 'video', // Video calls (future)
140
+ ]);
141
+ /** Capability definition with display info and handler references */
142
+ exports.ChannelCapabilitySchema = zod_1.z.object({
143
+ name: zod_1.z.string(), // Display name: "SMS", "WhatsApp Messages"
144
+ icon: zod_1.z.string().optional(), // Lucide icon name
145
+ receive: zod_1.z.string().optional(), // Inbound webhook handler
146
+ send: zod_1.z.string().optional(), // Outbound tool handle
137
147
  });
138
148
  exports.ChannelDefinitionSchema = zod_1.z.object({
139
149
  handle: zod_1.z.string(),
140
150
  name: zod_1.z.string(),
141
151
  icon: zod_1.z.string().optional(),
142
- tools: exports.ChannelToolBindingsSchema,
143
- requires: zod_1.z.array(exports.ResourceDependencySchema).optional(),
152
+ // Capabilities keyed by standard type (messaging, voice, video)
153
+ capabilities: zod_1.z.record(exports.ChannelCapabilityTypeSchema, exports.ChannelCapabilitySchema),
144
154
  });
145
155
  // ─────────────────────────────────────────────────────────────────────────────
146
156
  // Workflow Schemas
@@ -577,6 +587,8 @@ exports.PageDefinitionSchema = zod_1.z.object({
577
587
  title: zod_1.z.string(),
578
588
  /** URL path for this page (e.g., '/phone-numbers' or '/phone-numbers/[id]' for dynamic segments) */
579
589
  path: zod_1.z.string(),
590
+ /** When true, this page is the default landing page for the app installation */
591
+ default: zod_1.z.boolean().optional(),
580
592
  /**
581
593
  * Navigation configuration:
582
594
  * - true/false: show/hide in auto-generated navigation
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skedyul",
3
- "version": "0.2.47",
3
+ "version": "0.2.49",
4
4
  "description": "The Skedyul SDK for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",