skedyul 1.5.2 → 1.5.10

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/index.js CHANGED
@@ -84,6 +84,7 @@ __export(index_exports, {
84
84
  EnvSchemaSchema: () => EnvSchemaSchema,
85
85
  EnvVariableDefinitionSchema: () => EnvVariableDefinitionSchema,
86
86
  EnvVisibilitySchema: () => EnvVisibilitySchema,
87
+ EstimationSchema: () => EstimationSchema,
87
88
  EventConditionsSchema: () => EventConditionsSchema,
88
89
  EventSubscriptionSchema: () => EventSubscriptionSchema,
89
90
  EventTypeSchema: () => EventTypeSchema,
@@ -125,6 +126,9 @@ __export(index_exports, {
125
126
  MemoryQueryOptionsSchema: () => MemoryQueryOptionsSchema,
126
127
  MemoryScopeSchema: () => MemoryScopeSchema,
127
128
  MemoryService: () => MemoryService,
129
+ MessageBulkRecipientSchema: () => MessageBulkRecipientSchema,
130
+ MessageBulkSendInputSchema: () => MessageBulkSendInputSchema,
131
+ MessageBulkSendOutputSchema: () => MessageBulkSendOutputSchema,
128
132
  MessageEventPayloadSchema: () => MessageEventPayloadSchema,
129
133
  MessageSendAttachmentSchema: () => MessageSendAttachmentSchema,
130
134
  MessageSendChannelSchema: () => MessageSendChannelSchema,
@@ -143,6 +147,7 @@ __export(index_exports, {
143
147
  ModelDependencySchema: () => ModelDependencySchema,
144
148
  ModelFieldDefinitionSchema: () => ModelFieldDefinitionSchema,
145
149
  ModelMapperBlockDefinitionSchema: () => ModelMapperBlockDefinitionSchema,
150
+ MoneyMinorRangeSchema: () => MoneyMinorRangeSchema,
146
151
  NavigationBreadcrumbSchema: () => NavigationBreadcrumbSchema,
147
152
  NavigationConfigSchema: () => NavigationConfigSchema,
148
153
  NavigationItemSchema: () => NavigationItemSchema,
@@ -246,15 +251,18 @@ __export(index_exports, {
246
251
  communicationChannel: () => communicationChannel,
247
252
  compileAgent: () => compileAgent,
248
253
  compileWorkflow: () => compileWorkflow,
254
+ computeSkewedExpectedMinorUnits: () => computeSkewedExpectedMinorUnits,
249
255
  configure: () => configure,
250
256
  createAuthError: () => createAuthError,
251
257
  createConflictError: () => createConflictError,
252
258
  createContextLogger: () => createContextLogger,
253
259
  createErrorResponse: () => createErrorResponse,
260
+ createEstimation: () => createEstimation,
254
261
  createExternalError: () => createExternalError,
255
262
  createInMemoryService: () => createInMemoryService,
256
263
  createInstanceClient: () => createInstanceClient,
257
264
  createListResponse: () => createListResponse,
265
+ createMoneyMinorRange: () => createMoneyMinorRange,
258
266
  createNotFoundError: () => createNotFoundError,
259
267
  createPermissionError: () => createPermissionError,
260
268
  createQueueHandle: () => createQueueHandle,
@@ -280,11 +288,14 @@ __export(index_exports, {
280
288
  defineSkill: () => defineSkill,
281
289
  defineWorkflow: () => defineWorkflow,
282
290
  defineWorkflowYAML: () => defineWorkflowYAML,
291
+ estimateSmsSegments: () => estimateSmsSegments,
283
292
  evaluateCondition: () => evaluateCondition,
284
293
  evaluateTemplate: () => evaluateTemplate,
285
294
  event: () => event,
286
295
  file: () => file,
287
296
  formatContextForPrompt: () => formatContextForPrompt,
297
+ formatMoneyMinorEstimate: () => formatMoneyMinorEstimate,
298
+ formatMoneyMinorRange: () => formatMoneyMinorRange,
288
299
  formatSkillInstructions: () => formatSkillInstructions,
289
300
  getAllEnvKeys: () => getAllEnvKeys,
290
301
  getAssociationByModel: () => getAssociationByModel,
@@ -310,6 +321,7 @@ __export(index_exports, {
310
321
  isWorkflowDependency: () => isWorkflowDependency,
311
322
  matchesTrigger: () => matchesTrigger,
312
323
  parseCRMSchema: () => parseCRMSchema,
324
+ parseEstimationFromBilling: () => parseEstimationFromBilling,
313
325
  queuedFetch: () => queuedFetch,
314
326
  queuedFetchResponse: () => queuedFetchResponse,
315
327
  registerQueueConfig: () => registerQueueConfig,
@@ -323,16 +335,17 @@ __export(index_exports, {
323
335
  safeParseCRMSchema: () => safeParseCRMSchema,
324
336
  safeParseConfig: () => safeParseConfig,
325
337
  server: () => server,
338
+ toGsm7: () => toGsm7,
326
339
  token: () => token,
327
340
  validateCRMSchema: () => validateCRMSchema,
328
341
  validateSkillYAML: () => validateSkillYAML,
329
342
  validateWorkflowYAML: () => validateWorkflowYAML,
330
343
  webhook: () => webhook,
331
344
  workplace: () => workplace,
332
- z: () => import_v413.z
345
+ z: () => import_v414.z
333
346
  });
334
347
  module.exports = __toCommonJS(index_exports);
335
- var import_v413 = require("zod/v4");
348
+ var import_v414 = require("zod/v4");
336
349
 
337
350
  // src/types/invocation.ts
338
351
  function createToolCallContext(params) {
@@ -387,12 +400,110 @@ function isCronContext(ctx) {
387
400
  return ctx.trigger === "cron";
388
401
  }
389
402
 
390
- // src/types/tool.ts
403
+ // src/types/estimation.ts
391
404
  var import_v4 = require("zod/v4");
392
- var ToolResponseMetaSchema = import_v4.z.object({
393
- success: import_v4.z.boolean(),
394
- message: import_v4.z.string(),
395
- toolName: import_v4.z.string()
405
+ var MoneyMinorRangeSchema = import_v4.z.object({
406
+ currency: import_v4.z.string().min(3).max(3),
407
+ minorUnitsLow: import_v4.z.number().int().nonnegative(),
408
+ minorUnitsHigh: import_v4.z.number().int().nonnegative(),
409
+ minorUnitsExpected: import_v4.z.number().int().nonnegative().optional()
410
+ });
411
+ var EstimationSchema = import_v4.z.object({
412
+ deliverableCount: import_v4.z.number().int().nonnegative(),
413
+ skippedCount: import_v4.z.number().int().nonnegative().optional(),
414
+ cost: MoneyMinorRangeSchema.optional()
415
+ });
416
+ function createMoneyMinorRange(params) {
417
+ return {
418
+ currency: params.currency,
419
+ minorUnitsLow: params.minorUnitsLow,
420
+ minorUnitsHigh: params.minorUnitsHigh,
421
+ ...params.minorUnitsExpected !== void 0 ? { minorUnitsExpected: params.minorUnitsExpected } : {}
422
+ };
423
+ }
424
+ function createEstimation(params) {
425
+ return {
426
+ deliverableCount: params.deliverableCount,
427
+ ...params.skippedCount !== void 0 ? { skippedCount: params.skippedCount } : {},
428
+ ...params.cost ? { cost: params.cost } : {}
429
+ };
430
+ }
431
+ function computeSkewedExpectedMinorUnits(range) {
432
+ if (range.minorUnitsExpected !== void 0) {
433
+ return range.minorUnitsExpected;
434
+ }
435
+ if (range.minorUnitsLow === range.minorUnitsHigh) {
436
+ return range.minorUnitsLow;
437
+ }
438
+ return Math.round(0.8 * range.minorUnitsLow + 0.2 * range.minorUnitsHigh);
439
+ }
440
+ function formatMoneyMinorRange(range, locale) {
441
+ const formatter = new Intl.NumberFormat(locale, {
442
+ style: "currency",
443
+ currency: range.currency
444
+ });
445
+ const low = formatter.format(range.minorUnitsLow / 100);
446
+ const high = formatter.format(range.minorUnitsHigh / 100);
447
+ if (range.minorUnitsLow === range.minorUnitsHigh) {
448
+ return low;
449
+ }
450
+ return `${low} \u2013 ${high}`;
451
+ }
452
+ function formatMoneyMinorEstimate(range, options) {
453
+ const formatter = new Intl.NumberFormat(options?.locale, {
454
+ style: "currency",
455
+ currency: range.currency
456
+ });
457
+ const maxSpreadRatio = options?.maxSpreadRatio ?? 3;
458
+ const spreadRatio = range.minorUnitsLow > 0 ? range.minorUnitsHigh / range.minorUnitsLow : 1;
459
+ if (spreadRatio > maxSpreadRatio) {
460
+ return formatMoneyMinorRange(range, options?.locale);
461
+ }
462
+ const expectedMinorUnits = options?.expectedMinorUnits ?? computeSkewedExpectedMinorUnits(range);
463
+ const expected = formatter.format(expectedMinorUnits / 100);
464
+ if (range.minorUnitsLow === range.minorUnitsHigh) {
465
+ return expected;
466
+ }
467
+ return `~${expected}`;
468
+ }
469
+ function parseEstimationFromBilling(billing) {
470
+ if (!billing || typeof billing !== "object") {
471
+ return void 0;
472
+ }
473
+ const record2 = billing;
474
+ const nested = record2.estimation;
475
+ if (nested && typeof nested === "object") {
476
+ const parsed = EstimationSchema.safeParse(nested);
477
+ if (parsed.success) {
478
+ return parsed.data;
479
+ }
480
+ }
481
+ const currency = typeof record2.currency === "string" && record2.currency.trim() !== "" ? record2.currency : void 0;
482
+ const minorUnitsLow = typeof record2.minorUnitsLow === "number" ? record2.minorUnitsLow : typeof record2.costCentsLow === "number" ? record2.costCentsLow : void 0;
483
+ const minorUnitsHigh = typeof record2.minorUnitsHigh === "number" ? record2.minorUnitsHigh : typeof record2.costCentsHigh === "number" ? record2.costCentsHigh : void 0;
484
+ const minorUnitsExpected = typeof record2.minorUnitsExpected === "number" ? record2.minorUnitsExpected : typeof record2.costCentsExpected === "number" ? record2.costCentsExpected : void 0;
485
+ const deliverableCount = typeof record2.deliverableCount === "number" ? record2.deliverableCount : void 0;
486
+ if (deliverableCount === void 0 || minorUnitsLow === void 0 || minorUnitsHigh === void 0 || !currency) {
487
+ return void 0;
488
+ }
489
+ return createEstimation({
490
+ deliverableCount,
491
+ skippedCount: typeof record2.skippedCount === "number" ? record2.skippedCount : void 0,
492
+ cost: createMoneyMinorRange({
493
+ currency,
494
+ minorUnitsLow,
495
+ minorUnitsHigh,
496
+ ...minorUnitsExpected !== void 0 ? { minorUnitsExpected } : {}
497
+ })
498
+ });
499
+ }
500
+
501
+ // src/types/tool.ts
502
+ var import_v42 = require("zod/v4");
503
+ var ToolResponseMetaSchema = import_v42.z.object({
504
+ success: import_v42.z.boolean(),
505
+ message: import_v42.z.string(),
506
+ toolName: import_v42.z.string()
396
507
  });
397
508
 
398
509
  // src/types/tool-response.ts
@@ -533,11 +644,11 @@ function isRuntimeWebhookContext(ctx) {
533
644
  }
534
645
 
535
646
  // src/schemas.ts
536
- var import_v47 = require("zod/v4");
647
+ var import_v48 = require("zod/v4");
537
648
 
538
649
  // src/schemas/crm-schema.ts
539
- var import_v42 = require("zod/v4");
540
- var CRMFieldTypeSchema = import_v42.z.enum([
650
+ var import_v43 = require("zod/v4");
651
+ var CRMFieldTypeSchema = import_v43.z.enum([
541
652
  "string",
542
653
  "long_string",
543
654
  "number",
@@ -549,125 +660,125 @@ var CRMFieldTypeSchema = import_v42.z.enum([
549
660
  "image",
550
661
  "object"
551
662
  ]);
552
- var CRMFieldRequirementSchema = import_v42.z.enum([
663
+ var CRMFieldRequirementSchema = import_v43.z.enum([
553
664
  "optional",
554
665
  "on_create",
555
666
  "required"
556
667
  ]);
557
- var CRMFieldOptionSchema = import_v42.z.object({
558
- label: import_v42.z.string(),
559
- value: import_v42.z.string(),
560
- color: import_v42.z.string().optional()
561
- });
562
- var CRMFieldDefinitionObjectSchema = import_v42.z.object({
563
- options: import_v42.z.array(CRMFieldOptionSchema).optional(),
564
- limitChoices: import_v42.z.number().optional(),
565
- minLength: import_v42.z.number().optional(),
566
- maxLength: import_v42.z.number().optional(),
567
- min: import_v42.z.number().optional(),
568
- max: import_v42.z.number().optional(),
569
- pattern: import_v42.z.string().optional()
570
- });
571
- var CRMFieldDefinitionSchema = import_v42.z.union([
572
- import_v42.z.string(),
668
+ var CRMFieldOptionSchema = import_v43.z.object({
669
+ label: import_v43.z.string(),
670
+ value: import_v43.z.string(),
671
+ color: import_v43.z.string().optional()
672
+ });
673
+ var CRMFieldDefinitionObjectSchema = import_v43.z.object({
674
+ options: import_v43.z.array(CRMFieldOptionSchema).optional(),
675
+ limitChoices: import_v43.z.number().optional(),
676
+ minLength: import_v43.z.number().optional(),
677
+ maxLength: import_v43.z.number().optional(),
678
+ min: import_v43.z.number().optional(),
679
+ max: import_v43.z.number().optional(),
680
+ pattern: import_v43.z.string().optional()
681
+ });
682
+ var CRMFieldDefinitionSchema = import_v43.z.union([
683
+ import_v43.z.string(),
573
684
  CRMFieldDefinitionObjectSchema
574
685
  ]);
575
- var CRMFieldAppearanceSchemaZ = import_v42.z.object({
576
- leftIcon: import_v42.z.string().optional(),
577
- rightIcon: import_v42.z.string().optional(),
578
- placeholder: import_v42.z.string().optional(),
579
- helpText: import_v42.z.string().optional()
580
- });
581
- var CRMFieldSchemaZ = import_v42.z.object({
582
- handle: import_v42.z.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
583
- label: import_v42.z.string().min(1, "Label is required"),
686
+ var CRMFieldAppearanceSchemaZ = import_v43.z.object({
687
+ leftIcon: import_v43.z.string().optional(),
688
+ rightIcon: import_v43.z.string().optional(),
689
+ placeholder: import_v43.z.string().optional(),
690
+ helpText: import_v43.z.string().optional()
691
+ });
692
+ var CRMFieldSchemaZ = import_v43.z.object({
693
+ handle: import_v43.z.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
694
+ label: import_v43.z.string().min(1, "Label is required"),
584
695
  type: CRMFieldTypeSchema,
585
696
  /** Field description - explains what the field is for (metadata, not UI) */
586
- description: import_v42.z.string().optional(),
697
+ description: import_v43.z.string().optional(),
587
698
  /** Field appearance - UI presentation settings */
588
699
  appearance: CRMFieldAppearanceSchemaZ.optional(),
589
700
  requirement: CRMFieldRequirementSchema.optional(),
590
- unique: import_v42.z.boolean().optional(),
591
- list: import_v42.z.boolean().optional(),
592
- default: import_v42.z.unknown().optional(),
701
+ unique: import_v43.z.boolean().optional(),
702
+ list: import_v43.z.boolean().optional(),
703
+ default: import_v43.z.unknown().optional(),
593
704
  definition: CRMFieldDefinitionSchema.optional()
594
705
  });
595
- var CRMModelSchemaZ = import_v42.z.object({
596
- handle: import_v42.z.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
597
- name: import_v42.z.string().min(1, "Name is required"),
598
- namePlural: import_v42.z.string().optional(),
599
- labelTemplate: import_v42.z.string().optional(),
600
- description: import_v42.z.string().optional(),
601
- icon: import_v42.z.string().optional(),
602
- fields: import_v42.z.array(CRMFieldSchemaZ)
603
- });
604
- var CRMCardinalitySchema = import_v42.z.enum(["one_to_one", "one_to_many"]);
605
- var CRMOnDeleteSchema = import_v42.z.enum(["none", "cascade", "restrict"]);
606
- var CRMRelationshipLinkSchema = import_v42.z.object({
607
- model: import_v42.z.string(),
608
- field: import_v42.z.string(),
609
- label: import_v42.z.string()
610
- });
611
- var CRMRelationshipSchemaZ = import_v42.z.object({
706
+ var CRMModelSchemaZ = import_v43.z.object({
707
+ handle: import_v43.z.string().regex(/^[a-z][a-z0-9_]*$/, "Handle must be lowercase alphanumeric with underscores, starting with a letter"),
708
+ name: import_v43.z.string().min(1, "Name is required"),
709
+ namePlural: import_v43.z.string().optional(),
710
+ labelTemplate: import_v43.z.string().optional(),
711
+ description: import_v43.z.string().optional(),
712
+ icon: import_v43.z.string().optional(),
713
+ fields: import_v43.z.array(CRMFieldSchemaZ)
714
+ });
715
+ var CRMCardinalitySchema = import_v43.z.enum(["one_to_one", "one_to_many"]);
716
+ var CRMOnDeleteSchema = import_v43.z.enum(["none", "cascade", "restrict"]);
717
+ var CRMRelationshipLinkSchema = import_v43.z.object({
718
+ model: import_v43.z.string(),
719
+ field: import_v43.z.string(),
720
+ label: import_v43.z.string()
721
+ });
722
+ var CRMRelationshipSchemaZ = import_v43.z.object({
612
723
  source: CRMRelationshipLinkSchema,
613
724
  target: CRMRelationshipLinkSchema,
614
725
  cardinality: CRMCardinalitySchema,
615
726
  onDelete: CRMOnDeleteSchema.optional()
616
727
  });
617
- var CRMBlockTypeSchema = import_v42.z.enum([
728
+ var CRMBlockTypeSchema = import_v43.z.enum([
618
729
  "spreadsheet",
619
730
  "form",
620
731
  "card",
621
732
  "metric",
622
733
  "kanban"
623
734
  ]);
624
- var CRMBlockSchemaZ = import_v42.z.object({
735
+ var CRMBlockSchemaZ = import_v43.z.object({
625
736
  type: CRMBlockTypeSchema,
626
- title: import_v42.z.string().optional(),
627
- config: import_v42.z.unknown().optional(),
628
- default: import_v42.z.boolean().optional()
737
+ title: import_v43.z.string().optional(),
738
+ config: import_v43.z.unknown().optional(),
739
+ default: import_v43.z.boolean().optional()
629
740
  });
630
- var CRMPageTypeSchema = import_v42.z.enum(["list", "instance"]);
631
- var CRMPageSchemaZ = import_v42.z.object({
632
- path: import_v42.z.string(),
741
+ var CRMPageTypeSchema = import_v43.z.enum(["list", "instance"]);
742
+ var CRMPageSchemaZ = import_v43.z.object({
743
+ path: import_v43.z.string(),
633
744
  type: CRMPageTypeSchema,
634
- title: import_v42.z.string(),
635
- icon: import_v42.z.string().optional(),
636
- modelHandle: import_v42.z.string(),
637
- parentPath: import_v42.z.string().optional(),
638
- baseQuery: import_v42.z.unknown().optional(),
639
- blocks: import_v42.z.array(CRMBlockSchemaZ).optional()
640
- });
641
- var CRMNavigationNodeBaseSchemaZ = import_v42.z.object({
642
- label: import_v42.z.string(),
643
- icon: import_v42.z.string().optional(),
644
- path: import_v42.z.string().optional(),
645
- kind: import_v42.z.enum(["section", "group"]).optional(),
646
- sortIndex: import_v42.z.number().optional()
647
- });
648
- var CRMNavigationItemSchemaZ = import_v42.z.lazy(
745
+ title: import_v43.z.string(),
746
+ icon: import_v43.z.string().optional(),
747
+ modelHandle: import_v43.z.string(),
748
+ parentPath: import_v43.z.string().optional(),
749
+ baseQuery: import_v43.z.unknown().optional(),
750
+ blocks: import_v43.z.array(CRMBlockSchemaZ).optional()
751
+ });
752
+ var CRMNavigationNodeBaseSchemaZ = import_v43.z.object({
753
+ label: import_v43.z.string(),
754
+ icon: import_v43.z.string().optional(),
755
+ path: import_v43.z.string().optional(),
756
+ kind: import_v43.z.enum(["section", "group"]).optional(),
757
+ sortIndex: import_v43.z.number().optional()
758
+ });
759
+ var CRMNavigationItemSchemaZ = import_v43.z.lazy(
649
760
  () => CRMNavigationNodeBaseSchemaZ.extend({
650
- children: import_v42.z.array(CRMNavigationItemSchemaZ).optional()
761
+ children: import_v43.z.array(CRMNavigationItemSchemaZ).optional()
651
762
  })
652
763
  );
653
- var CRMNavigationSchemaZ = import_v42.z.object({
654
- sidebar: import_v42.z.array(CRMNavigationItemSchemaZ).optional()
764
+ var CRMNavigationSchemaZ = import_v43.z.object({
765
+ sidebar: import_v43.z.array(CRMNavigationItemSchemaZ).optional()
655
766
  });
656
- var CRMSchemaZ = import_v42.z.object({
767
+ var CRMSchemaZ = import_v43.z.object({
657
768
  /** Schema format version for future compatibility */
658
- $schema: import_v42.z.literal("https://skedyul.com/schemas/crm/v1").optional(),
769
+ $schema: import_v43.z.literal("https://skedyul.com/schemas/crm/v1").optional(),
659
770
  /** Schema name for identification */
660
- name: import_v42.z.string().min(1, "Name is required"),
771
+ name: import_v43.z.string().min(1, "Name is required"),
661
772
  /** Optional description */
662
- description: import_v42.z.string().optional(),
773
+ description: import_v43.z.string().optional(),
663
774
  /** Schema version (semver) */
664
- version: import_v42.z.string().optional(),
775
+ version: import_v43.z.string().optional(),
665
776
  /** Model definitions */
666
- models: import_v42.z.array(CRMModelSchemaZ),
777
+ models: import_v43.z.array(CRMModelSchemaZ),
667
778
  /** Relationship definitions */
668
- relationships: import_v42.z.array(CRMRelationshipSchemaZ).optional(),
779
+ relationships: import_v43.z.array(CRMRelationshipSchemaZ).optional(),
669
780
  /** Page definitions */
670
- pages: import_v42.z.array(CRMPageSchemaZ).optional(),
781
+ pages: import_v43.z.array(CRMPageSchemaZ).optional(),
671
782
  /** Navigation definitions */
672
783
  navigation: CRMNavigationSchemaZ.optional()
673
784
  });
@@ -694,11 +805,11 @@ function safeParseCRMSchema(data) {
694
805
  }
695
806
 
696
807
  // src/schemas/agent-schema-v3.ts
697
- var import_v46 = require("zod/v4");
808
+ var import_v47 = require("zod/v4");
698
809
 
699
810
  // src/events/types.ts
700
- var import_v43 = require("zod/v4");
701
- var ThreadEventTypeSchema = import_v43.z.enum([
811
+ var import_v44 = require("zod/v4");
812
+ var ThreadEventTypeSchema = import_v44.z.enum([
702
813
  // Message events
703
814
  "thread.message.received",
704
815
  "thread.message.sent",
@@ -720,73 +831,73 @@ var ThreadEventTypeSchema = import_v43.z.enum([
720
831
  // Signal events
721
832
  "thread.signal.created"
722
833
  ]);
723
- var CustomEventTypeSchema = import_v43.z.string().regex(/^custom\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/, {
834
+ var CustomEventTypeSchema = import_v44.z.string().regex(/^custom\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/, {
724
835
  message: "Custom event type must match pattern: custom.{namespace}.{event}"
725
836
  });
726
- var EventTypeSchema = import_v43.z.union([ThreadEventTypeSchema, CustomEventTypeSchema]);
727
- var ParticipantKindSchema = import_v43.z.enum(["CONTACT", "MEMBER", "AGENT", "WORKFLOW"]);
728
- var BaseEventPayloadSchema = import_v43.z.object({
729
- threadId: import_v43.z.string(),
730
- workplaceId: import_v43.z.string(),
731
- timestamp: import_v43.z.string().datetime().optional()
837
+ var EventTypeSchema = import_v44.z.union([ThreadEventTypeSchema, CustomEventTypeSchema]);
838
+ var ParticipantKindSchema = import_v44.z.enum(["CONTACT", "MEMBER", "AGENT", "WORKFLOW"]);
839
+ var BaseEventPayloadSchema = import_v44.z.object({
840
+ threadId: import_v44.z.string(),
841
+ workplaceId: import_v44.z.string(),
842
+ timestamp: import_v44.z.string().datetime().optional()
732
843
  });
733
844
  var MessageEventPayloadSchema = BaseEventPayloadSchema.extend({
734
- message: import_v43.z.object({
735
- id: import_v43.z.string(),
736
- content: import_v43.z.string(),
737
- senderId: import_v43.z.string().optional()
845
+ message: import_v44.z.object({
846
+ id: import_v44.z.string(),
847
+ content: import_v44.z.string(),
848
+ senderId: import_v44.z.string().optional()
738
849
  }),
739
- participant: import_v43.z.object({
740
- id: import_v43.z.string(),
850
+ participant: import_v44.z.object({
851
+ id: import_v44.z.string(),
741
852
  kind: ParticipantKindSchema,
742
- displayName: import_v43.z.string().optional()
853
+ displayName: import_v44.z.string().optional()
743
854
  }).optional(),
744
- isFirstMessage: import_v43.z.boolean().optional(),
745
- messageCount: import_v43.z.number().optional()
855
+ isFirstMessage: import_v44.z.boolean().optional(),
856
+ messageCount: import_v44.z.number().optional()
746
857
  });
747
858
  var ParticipantEventPayloadSchema = BaseEventPayloadSchema.extend({
748
- participant: import_v43.z.object({
749
- id: import_v43.z.string(),
859
+ participant: import_v44.z.object({
860
+ id: import_v44.z.string(),
750
861
  kind: ParticipantKindSchema,
751
- displayName: import_v43.z.string().optional(),
752
- contactId: import_v43.z.string().optional(),
753
- memberId: import_v43.z.string().optional(),
754
- agentId: import_v43.z.string().optional(),
755
- workflowId: import_v43.z.string().optional()
862
+ displayName: import_v44.z.string().optional(),
863
+ contactId: import_v44.z.string().optional(),
864
+ memberId: import_v44.z.string().optional(),
865
+ agentId: import_v44.z.string().optional(),
866
+ workflowId: import_v44.z.string().optional()
756
867
  })
757
868
  });
758
869
  var ContextChangedPayloadSchema = BaseEventPayloadSchema.extend({
759
- context: import_v43.z.object({
760
- handle: import_v43.z.string(),
761
- model: import_v43.z.string(),
762
- instanceId: import_v43.z.string()
870
+ context: import_v44.z.object({
871
+ handle: import_v44.z.string(),
872
+ model: import_v44.z.string(),
873
+ instanceId: import_v44.z.string()
763
874
  }),
764
- change: import_v43.z.object({
765
- field: import_v43.z.string().optional(),
766
- oldValue: import_v43.z.unknown().optional(),
767
- newValue: import_v43.z.unknown().optional()
875
+ change: import_v44.z.object({
876
+ field: import_v44.z.string().optional(),
877
+ oldValue: import_v44.z.unknown().optional(),
878
+ newValue: import_v44.z.unknown().optional()
768
879
  }).optional()
769
880
  });
770
881
  var StatusChangedPayloadSchema = BaseEventPayloadSchema.extend({
771
- oldStatus: import_v43.z.string(),
772
- newStatus: import_v43.z.string()
882
+ oldStatus: import_v44.z.string(),
883
+ newStatus: import_v44.z.string()
773
884
  });
774
885
  var ScheduledEventPayloadSchema = BaseEventPayloadSchema.extend({
775
- scheduledEventId: import_v43.z.string(),
776
- reason: import_v43.z.string().optional(),
777
- context: import_v43.z.record(import_v43.z.string(), import_v43.z.unknown()).optional()
886
+ scheduledEventId: import_v44.z.string(),
887
+ reason: import_v44.z.string().optional(),
888
+ context: import_v44.z.record(import_v44.z.string(), import_v44.z.unknown()).optional()
778
889
  });
779
890
  var AgentWorkflowEventPayloadSchema = BaseEventPayloadSchema.extend({
780
- agentId: import_v43.z.string().optional(),
781
- workflowId: import_v43.z.string().optional(),
782
- workflowRunId: import_v43.z.string().optional(),
783
- outputs: import_v43.z.record(import_v43.z.string(), import_v43.z.unknown()).optional(),
784
- error: import_v43.z.string().optional()
891
+ agentId: import_v44.z.string().optional(),
892
+ workflowId: import_v44.z.string().optional(),
893
+ workflowRunId: import_v44.z.string().optional(),
894
+ outputs: import_v44.z.record(import_v44.z.string(), import_v44.z.unknown()).optional(),
895
+ error: import_v44.z.string().optional()
785
896
  });
786
897
  var CustomEventPayloadSchema = BaseEventPayloadSchema.extend({
787
- data: import_v43.z.record(import_v43.z.string(), import_v43.z.unknown()).optional()
898
+ data: import_v44.z.record(import_v44.z.string(), import_v44.z.unknown()).optional()
788
899
  });
789
- var ThreadEventPayloadSchema = import_v43.z.union([
900
+ var ThreadEventPayloadSchema = import_v44.z.union([
790
901
  MessageEventPayloadSchema,
791
902
  ParticipantEventPayloadSchema,
792
903
  ContextChangedPayloadSchema,
@@ -795,164 +906,164 @@ var ThreadEventPayloadSchema = import_v43.z.union([
795
906
  AgentWorkflowEventPayloadSchema,
796
907
  CustomEventPayloadSchema
797
908
  ]);
798
- var ThreadEventSchema = import_v43.z.object({
799
- id: import_v43.z.string(),
800
- threadId: import_v43.z.string(),
909
+ var ThreadEventSchema = import_v44.z.object({
910
+ id: import_v44.z.string(),
911
+ threadId: import_v44.z.string(),
801
912
  type: EventTypeSchema,
802
913
  payload: ThreadEventPayloadSchema,
803
- emittedBy: import_v43.z.string().optional(),
804
- createdAt: import_v43.z.string().datetime()
914
+ emittedBy: import_v44.z.string().optional(),
915
+ createdAt: import_v44.z.string().datetime()
805
916
  });
806
- var CreateThreadEventInputSchema = import_v43.z.object({
807
- threadId: import_v43.z.string(),
917
+ var CreateThreadEventInputSchema = import_v44.z.object({
918
+ threadId: import_v44.z.string(),
808
919
  type: EventTypeSchema,
809
- payload: import_v43.z.record(import_v43.z.string(), import_v43.z.unknown()),
810
- emittedBy: import_v43.z.string().optional()
920
+ payload: import_v44.z.record(import_v44.z.string(), import_v44.z.unknown()),
921
+ emittedBy: import_v44.z.string().optional()
811
922
  });
812
- var EventSubscriptionSchema = import_v43.z.object({
813
- subscribes: import_v43.z.array(EventTypeSchema),
814
- condition: import_v43.z.string().optional(),
815
- cancels: import_v43.z.array(EventTypeSchema).optional(),
816
- cancelCondition: import_v43.z.string().optional()
923
+ var EventSubscriptionSchema = import_v44.z.object({
924
+ subscribes: import_v44.z.array(EventTypeSchema),
925
+ condition: import_v44.z.string().optional(),
926
+ cancels: import_v44.z.array(EventTypeSchema).optional(),
927
+ cancelCondition: import_v44.z.string().optional()
817
928
  });
818
- var EventWaitSchema = import_v43.z.object({
929
+ var EventWaitSchema = import_v44.z.object({
819
930
  event: EventTypeSchema,
820
- timeout: import_v43.z.string().optional(),
821
- onTimeout: import_v43.z.string().optional()
931
+ timeout: import_v44.z.string().optional(),
932
+ onTimeout: import_v44.z.string().optional()
822
933
  });
823
- var EventsConfigSchema = import_v43.z.object({
824
- subscribes: import_v43.z.array(EventTypeSchema).optional(),
825
- condition: import_v43.z.string().optional(),
826
- emits: import_v43.z.array(EventTypeSchema).optional(),
827
- waits: import_v43.z.array(EventWaitSchema).optional(),
828
- cancels: import_v43.z.array(EventTypeSchema).optional(),
829
- cancelCondition: import_v43.z.string().optional()
934
+ var EventsConfigSchema = import_v44.z.object({
935
+ subscribes: import_v44.z.array(EventTypeSchema).optional(),
936
+ condition: import_v44.z.string().optional(),
937
+ emits: import_v44.z.array(EventTypeSchema).optional(),
938
+ waits: import_v44.z.array(EventWaitSchema).optional(),
939
+ cancels: import_v44.z.array(EventTypeSchema).optional(),
940
+ cancelCondition: import_v44.z.string().optional()
830
941
  });
831
942
 
832
943
  // src/skills/types.ts
833
- var import_v44 = require("zod/v4");
944
+ var import_v45 = require("zod/v4");
834
945
  var SKILL_SCHEMA_VERSION = "https://skedyul.com/schemas/skill/v1";
835
946
  var SKILL_SCHEMA_VERSION_V2 = "https://skedyul.com/schemas/skill/v2";
836
- var SkillSourceSchema = import_v44.z.enum(["BUILTIN", "S3", "APP", "EXTERNAL"]);
837
- var SkillToolRequirementSchema = import_v44.z.object({
838
- requires: import_v44.z.array(import_v44.z.string()).optional(),
839
- provides: import_v44.z.array(import_v44.z.string()).optional()
840
- });
841
- var SkillToolSandboxSchema = import_v44.z.object({
842
- mock: import_v44.z.unknown().optional()
843
- });
844
- var ToolConstraintsSchema = import_v44.z.object({
845
- maxCallsPerRun: import_v44.z.number().optional(),
846
- idempotent: import_v44.z.boolean().optional(),
847
- restricted: import_v44.z.boolean().optional(),
848
- tags: import_v44.z.array(import_v44.z.string()).optional()
849
- });
850
- var SkillToolDefinitionSchema = import_v44.z.object({
851
- tool: import_v44.z.string(),
852
- description: import_v44.z.string().optional(),
853
- overrides: import_v44.z.record(import_v44.z.string(), import_v44.z.unknown()).optional(),
947
+ var SkillSourceSchema = import_v45.z.enum(["BUILTIN", "S3", "APP", "EXTERNAL"]);
948
+ var SkillToolRequirementSchema = import_v45.z.object({
949
+ requires: import_v45.z.array(import_v45.z.string()).optional(),
950
+ provides: import_v45.z.array(import_v45.z.string()).optional()
951
+ });
952
+ var SkillToolSandboxSchema = import_v45.z.object({
953
+ mock: import_v45.z.unknown().optional()
954
+ });
955
+ var ToolConstraintsSchema = import_v45.z.object({
956
+ maxCallsPerRun: import_v45.z.number().optional(),
957
+ idempotent: import_v45.z.boolean().optional(),
958
+ restricted: import_v45.z.boolean().optional(),
959
+ tags: import_v45.z.array(import_v45.z.string()).optional()
960
+ });
961
+ var SkillToolDefinitionSchema = import_v45.z.object({
962
+ tool: import_v45.z.string(),
963
+ description: import_v45.z.string().optional(),
964
+ overrides: import_v45.z.record(import_v45.z.string(), import_v45.z.unknown()).optional(),
854
965
  sandbox: SkillToolSandboxSchema.optional(),
855
- requiresApproval: import_v44.z.boolean().optional(),
966
+ requiresApproval: import_v45.z.boolean().optional(),
856
967
  constraints: ToolConstraintsSchema.optional()
857
968
  });
858
- var SkillToolsSchema = import_v44.z.union([
969
+ var SkillToolsSchema = import_v45.z.union([
859
970
  SkillToolRequirementSchema,
860
- import_v44.z.array(SkillToolDefinitionSchema)
971
+ import_v45.z.array(SkillToolDefinitionSchema)
861
972
  ]);
862
- var SkillExampleSchema = import_v44.z.object({
863
- context: import_v44.z.string().optional(),
864
- input: import_v44.z.string(),
865
- reasoning: import_v44.z.string().optional(),
866
- output: import_v44.z.string(),
867
- tool_call: import_v44.z.string().optional()
973
+ var SkillExampleSchema = import_v45.z.object({
974
+ context: import_v45.z.string().optional(),
975
+ input: import_v45.z.string(),
976
+ reasoning: import_v45.z.string().optional(),
977
+ output: import_v45.z.string(),
978
+ tool_call: import_v45.z.string().optional()
868
979
  });
869
- var CRMModelFieldRequirementsSchema = import_v44.z.object({
870
- required: import_v44.z.array(import_v44.z.string()).optional(),
871
- recommended: import_v44.z.array(import_v44.z.string()).optional()
980
+ var CRMModelFieldRequirementsSchema = import_v45.z.object({
981
+ required: import_v45.z.array(import_v45.z.string()).optional(),
982
+ recommended: import_v45.z.array(import_v45.z.string()).optional()
872
983
  });
873
- var CRMContextSchema = import_v44.z.object({
874
- models: import_v44.z.record(import_v44.z.string(), CRMModelFieldRequirementsSchema)
984
+ var CRMContextSchema = import_v45.z.object({
985
+ models: import_v45.z.record(import_v45.z.string(), CRMModelFieldRequirementsSchema)
875
986
  });
876
- var SkillYAMLSchema = import_v44.z.object({
987
+ var SkillYAMLSchema = import_v45.z.object({
877
988
  // Schema version
878
- $schema: import_v44.z.string().optional(),
989
+ $schema: import_v45.z.string().optional(),
879
990
  // Identity
880
- handle: import_v44.z.string(),
881
- name: import_v44.z.string(),
882
- version: import_v44.z.string().optional(),
883
- description: import_v44.z.string().optional(),
991
+ handle: import_v45.z.string(),
992
+ name: import_v45.z.string(),
993
+ version: import_v45.z.string().optional(),
994
+ description: import_v45.z.string().optional(),
884
995
  // Instructions injected into agent system prompt
885
- instructions: import_v44.z.string(),
996
+ instructions: import_v45.z.string(),
886
997
  // Tool configuration - supports both v1 and v2 formats
887
998
  tools: SkillToolsSchema.optional(),
888
999
  // CRM context - specifies which models/fields to include in schema
889
1000
  crmContext: CRMContextSchema.optional(),
890
1001
  // Few-shot examples
891
- examples: import_v44.z.array(SkillExampleSchema).optional()
892
- });
893
- var SkillYAMLV2Schema = import_v44.z.object({
894
- $schema: import_v44.z.literal(SKILL_SCHEMA_VERSION_V2).optional(),
895
- handle: import_v44.z.string(),
896
- name: import_v44.z.string(),
897
- version: import_v44.z.string().optional(),
898
- description: import_v44.z.string().optional(),
899
- instructions: import_v44.z.string(),
900
- tools: import_v44.z.array(SkillToolDefinitionSchema).optional(),
1002
+ examples: import_v45.z.array(SkillExampleSchema).optional()
1003
+ });
1004
+ var SkillYAMLV2Schema = import_v45.z.object({
1005
+ $schema: import_v45.z.literal(SKILL_SCHEMA_VERSION_V2).optional(),
1006
+ handle: import_v45.z.string(),
1007
+ name: import_v45.z.string(),
1008
+ version: import_v45.z.string().optional(),
1009
+ description: import_v45.z.string().optional(),
1010
+ instructions: import_v45.z.string(),
1011
+ tools: import_v45.z.array(SkillToolDefinitionSchema).optional(),
901
1012
  crmContext: CRMContextSchema.optional(),
902
- examples: import_v44.z.array(SkillExampleSchema).optional()
1013
+ examples: import_v45.z.array(SkillExampleSchema).optional()
903
1014
  });
904
- var SkillVersionWeightSchema = import_v44.z.object({
905
- version: import_v44.z.number(),
906
- weight: import_v44.z.number()
1015
+ var SkillVersionWeightSchema = import_v45.z.object({
1016
+ version: import_v45.z.number(),
1017
+ weight: import_v45.z.number()
907
1018
  });
908
- var SkillRefSchema = import_v44.z.union([
909
- import_v44.z.string(),
1019
+ var SkillRefSchema = import_v45.z.union([
1020
+ import_v45.z.string(),
910
1021
  // Just handle - uses latest published version
911
- import_v44.z.object({
912
- skill: import_v44.z.string(),
913
- description: import_v44.z.string().optional(),
1022
+ import_v45.z.object({
1023
+ skill: import_v45.z.string(),
1024
+ description: import_v45.z.string().optional(),
914
1025
  // For AI SDK Agent Skills discovery
915
1026
  /** Auto-inject this skill's instructions and tools on every agent turn */
916
- alwaysLoad: import_v44.z.boolean().optional(),
1027
+ alwaysLoad: import_v45.z.boolean().optional(),
917
1028
  // Version selection (pick one):
918
- version: import_v44.z.number().optional(),
1029
+ version: import_v45.z.number().optional(),
919
1030
  // Pin to specific version number
920
- versions: import_v44.z.array(SkillVersionWeightSchema).optional(),
1031
+ versions: import_v45.z.array(SkillVersionWeightSchema).optional(),
921
1032
  // A/B testing weights
922
1033
  // Legacy support:
923
- instructions: import_v44.z.string().optional(),
1034
+ instructions: import_v45.z.string().optional(),
924
1035
  // Inline instructions (deprecated)
925
- enabled: import_v44.z.boolean().optional()
1036
+ enabled: import_v45.z.boolean().optional()
926
1037
  })
927
1038
  ]);
928
- var SkillMetadataSchema = import_v44.z.object({
929
- id: import_v44.z.string(),
930
- handle: import_v44.z.string(),
931
- name: import_v44.z.string(),
932
- version: import_v44.z.string().optional(),
933
- description: import_v44.z.string().optional(),
1039
+ var SkillMetadataSchema = import_v45.z.object({
1040
+ id: import_v45.z.string(),
1041
+ handle: import_v45.z.string(),
1042
+ name: import_v45.z.string(),
1043
+ version: import_v45.z.string().optional(),
1044
+ description: import_v45.z.string().optional(),
934
1045
  source: SkillSourceSchema,
935
- s3Key: import_v44.z.string().optional(),
936
- appVersionId: import_v44.z.string().optional(),
937
- workplaceId: import_v44.z.string().optional(),
938
- createdAt: import_v44.z.string().datetime().optional(),
939
- updatedAt: import_v44.z.string().datetime().optional()
940
- });
941
- var ResolvedSkillSchema = import_v44.z.object({
942
- handle: import_v44.z.string(),
943
- name: import_v44.z.string(),
944
- instructions: import_v44.z.string().optional(),
945
- description: import_v44.z.string().optional(),
946
- tools: import_v44.z.array(import_v44.z.string()).optional(),
947
- examples: import_v44.z.array(SkillExampleSchema).optional()
948
- });
949
- var LoadedSkillSchema = import_v44.z.object({
950
- handle: import_v44.z.string(),
951
- name: import_v44.z.string(),
952
- instructions: import_v44.z.string().optional(),
953
- description: import_v44.z.string().optional(),
954
- tools: import_v44.z.array(SkillToolDefinitionSchema).optional(),
955
- examples: import_v44.z.array(SkillExampleSchema).optional()
1046
+ s3Key: import_v45.z.string().optional(),
1047
+ appVersionId: import_v45.z.string().optional(),
1048
+ workplaceId: import_v45.z.string().optional(),
1049
+ createdAt: import_v45.z.string().datetime().optional(),
1050
+ updatedAt: import_v45.z.string().datetime().optional()
1051
+ });
1052
+ var ResolvedSkillSchema = import_v45.z.object({
1053
+ handle: import_v45.z.string(),
1054
+ name: import_v45.z.string(),
1055
+ instructions: import_v45.z.string().optional(),
1056
+ description: import_v45.z.string().optional(),
1057
+ tools: import_v45.z.array(import_v45.z.string()).optional(),
1058
+ examples: import_v45.z.array(SkillExampleSchema).optional()
1059
+ });
1060
+ var LoadedSkillSchema = import_v45.z.object({
1061
+ handle: import_v45.z.string(),
1062
+ name: import_v45.z.string(),
1063
+ instructions: import_v45.z.string().optional(),
1064
+ description: import_v45.z.string().optional(),
1065
+ tools: import_v45.z.array(SkillToolDefinitionSchema).optional(),
1066
+ examples: import_v45.z.array(SkillExampleSchema).optional()
956
1067
  });
957
1068
  function isV2SkillTools(tools) {
958
1069
  if (!tools) return false;
@@ -1008,182 +1119,182 @@ ${sections.join("\n\n---\n\n")}`;
1008
1119
  }
1009
1120
 
1010
1121
  // src/context/types.ts
1011
- var import_v45 = require("zod/v4");
1012
- var CRMContextSchema2 = import_v45.z.object({
1013
- model: import_v45.z.string(),
1014
- instanceId: import_v45.z.string(),
1015
- data: import_v45.z.record(import_v45.z.string(), import_v45.z.unknown())
1122
+ var import_v46 = require("zod/v4");
1123
+ var CRMContextSchema2 = import_v46.z.object({
1124
+ model: import_v46.z.string(),
1125
+ instanceId: import_v46.z.string(),
1126
+ data: import_v46.z.record(import_v46.z.string(), import_v46.z.unknown())
1016
1127
  });
1017
- var SenderContextSchema = import_v45.z.object({
1128
+ var SenderContextSchema = import_v46.z.object({
1018
1129
  kind: ParticipantKindSchema,
1019
- displayName: import_v45.z.string().optional(),
1020
- email: import_v45.z.string().optional(),
1021
- role: import_v45.z.string().optional(),
1022
- permissions: import_v45.z.array(import_v45.z.string()).optional(),
1130
+ displayName: import_v46.z.string().optional(),
1131
+ email: import_v46.z.string().optional(),
1132
+ role: import_v46.z.string().optional(),
1133
+ permissions: import_v46.z.array(import_v46.z.string()).optional(),
1023
1134
  crm: CRMContextSchema2.optional()
1024
1135
  });
1025
- var ThreadContextItemSchema = import_v45.z.object({
1026
- handle: import_v45.z.string(),
1027
- model: import_v45.z.string(),
1028
- instanceId: import_v45.z.string(),
1029
- data: import_v45.z.record(import_v45.z.string(), import_v45.z.unknown()).optional()
1030
- });
1031
- var ThreadInfoSchema = import_v45.z.object({
1032
- id: import_v45.z.string(),
1033
- title: import_v45.z.string().optional(),
1034
- status: import_v45.z.string().optional(),
1035
- kind: import_v45.z.string().optional()
1036
- });
1037
- var SubscriptionSchema = import_v45.z.object({
1038
- identifierValue: import_v45.z.string(),
1039
- channelHandle: import_v45.z.string().optional()
1040
- });
1041
- var AssociationSchema = import_v45.z.object({
1042
- id: import_v45.z.string().optional(),
1043
- data: import_v45.z.record(import_v45.z.string(), import_v45.z.unknown())
1044
- });
1045
- var ContactSchema = import_v45.z.object({
1046
- id: import_v45.z.string().optional(),
1047
- name: import_v45.z.string().optional(),
1136
+ var ThreadContextItemSchema = import_v46.z.object({
1137
+ handle: import_v46.z.string(),
1138
+ model: import_v46.z.string(),
1139
+ instanceId: import_v46.z.string(),
1140
+ data: import_v46.z.record(import_v46.z.string(), import_v46.z.unknown()).optional()
1141
+ });
1142
+ var ThreadInfoSchema = import_v46.z.object({
1143
+ id: import_v46.z.string(),
1144
+ title: import_v46.z.string().optional(),
1145
+ status: import_v46.z.string().optional(),
1146
+ kind: import_v46.z.string().optional()
1147
+ });
1148
+ var SubscriptionSchema = import_v46.z.object({
1149
+ identifierValue: import_v46.z.string(),
1150
+ channelHandle: import_v46.z.string().optional()
1151
+ });
1152
+ var AssociationSchema = import_v46.z.object({
1153
+ id: import_v46.z.string().optional(),
1154
+ data: import_v46.z.record(import_v46.z.string(), import_v46.z.unknown())
1155
+ });
1156
+ var ContactSchema = import_v46.z.object({
1157
+ id: import_v46.z.string().optional(),
1158
+ name: import_v46.z.string().optional(),
1048
1159
  subscription: SubscriptionSchema.optional(),
1049
- associations: import_v45.z.record(import_v45.z.string(), AssociationSchema).optional()
1160
+ associations: import_v46.z.record(import_v46.z.string(), AssociationSchema).optional()
1050
1161
  });
1051
- var AgentSenderContextSchema = import_v45.z.object({
1052
- kind: import_v45.z.enum(["contact", "member"]),
1053
- displayName: import_v45.z.string().optional(),
1054
- role: import_v45.z.string().optional(),
1055
- permissions: import_v45.z.array(import_v45.z.string()).optional(),
1162
+ var AgentSenderContextSchema = import_v46.z.object({
1163
+ kind: import_v46.z.enum(["contact", "member"]),
1164
+ displayName: import_v46.z.string().optional(),
1165
+ role: import_v46.z.string().optional(),
1166
+ permissions: import_v46.z.array(import_v46.z.string()).optional(),
1056
1167
  contact: ContactSchema.optional()
1057
1168
  });
1058
- var AgentThreadContextSchema = import_v45.z.object({
1059
- handle: import_v45.z.string(),
1060
- model: import_v45.z.string(),
1061
- data: import_v45.z.record(import_v45.z.string(), import_v45.z.unknown())
1169
+ var AgentThreadContextSchema = import_v46.z.object({
1170
+ handle: import_v46.z.string(),
1171
+ model: import_v46.z.string(),
1172
+ data: import_v46.z.record(import_v46.z.string(), import_v46.z.unknown())
1062
1173
  });
1063
- var AgentContextSchema = import_v45.z.object({
1174
+ var AgentContextSchema = import_v46.z.object({
1064
1175
  sender: AgentSenderContextSchema,
1065
- contexts: import_v45.z.array(AgentThreadContextSchema).optional()
1176
+ contexts: import_v46.z.array(AgentThreadContextSchema).optional()
1066
1177
  });
1067
- var ContextIssueSeveritySchema = import_v45.z.enum(["ERROR", "WARNING"]);
1068
- var ContextIssueTypeSchema = import_v45.z.enum([
1178
+ var ContextIssueSeveritySchema = import_v46.z.enum(["ERROR", "WARNING"]);
1179
+ var ContextIssueTypeSchema = import_v46.z.enum([
1069
1180
  "MISSING_ROUTING_PARTICIPANT",
1070
1181
  "MISSING_ASSOCIATION",
1071
1182
  "MISSING_REQUIRED_FIELD",
1072
1183
  "MISSING_RECOMMENDED_FIELD"
1073
1184
  ]);
1074
- var ContextIssueSchema = import_v45.z.object({
1185
+ var ContextIssueSchema = import_v46.z.object({
1075
1186
  type: ContextIssueTypeSchema,
1076
1187
  severity: ContextIssueSeveritySchema,
1077
- model: import_v45.z.string().optional(),
1078
- field: import_v45.z.string().optional(),
1079
- message: import_v45.z.string(),
1080
- suggestion: import_v45.z.string().optional()
1188
+ model: import_v46.z.string().optional(),
1189
+ field: import_v46.z.string().optional(),
1190
+ message: import_v46.z.string(),
1191
+ suggestion: import_v46.z.string().optional()
1081
1192
  });
1082
- var ContextValidationResultSchema = import_v45.z.object({
1083
- valid: import_v45.z.boolean(),
1084
- degraded: import_v45.z.boolean(),
1085
- issues: import_v45.z.array(ContextIssueSchema)
1193
+ var ContextValidationResultSchema = import_v46.z.object({
1194
+ valid: import_v46.z.boolean(),
1195
+ degraded: import_v46.z.boolean(),
1196
+ issues: import_v46.z.array(ContextIssueSchema)
1086
1197
  });
1087
1198
  var MockSenderContextSchema = AgentSenderContextSchema;
1088
1199
  var MockThreadContextSchema = AgentThreadContextSchema;
1089
1200
  var MockContextSchema = AgentContextSchema;
1090
- var SandboxConfigSchema = import_v45.z.object({
1091
- enabled: import_v45.z.boolean().optional(),
1201
+ var SandboxConfigSchema = import_v46.z.object({
1202
+ enabled: import_v46.z.boolean().optional(),
1092
1203
  /** @deprecated Use 'context' instead of 'mockContext' */
1093
1204
  mockContext: AgentContextSchema.optional(),
1094
1205
  context: AgentContextSchema.optional()
1095
1206
  });
1096
1207
 
1097
1208
  // src/schemas/agent-schema-v3.ts
1098
- var PersonaVoiceFormatV3Schema = import_v46.z.object({
1099
- maxChars: import_v46.z.number().optional(),
1100
- noEmojis: import_v46.z.boolean().optional(),
1101
- noHyphens: import_v46.z.boolean().optional(),
1102
- noBulletPoints: import_v46.z.boolean().optional(),
1103
- maxQuestionsPerMessage: import_v46.z.number().optional(),
1104
- noSignOffs: import_v46.z.boolean().optional()
1105
- });
1106
- var PersonaVoiceV3Schema = import_v46.z.object({
1107
- style: import_v46.z.string(),
1209
+ var PersonaVoiceFormatV3Schema = import_v47.z.object({
1210
+ maxChars: import_v47.z.number().optional(),
1211
+ noEmojis: import_v47.z.boolean().optional(),
1212
+ noHyphens: import_v47.z.boolean().optional(),
1213
+ noBulletPoints: import_v47.z.boolean().optional(),
1214
+ maxQuestionsPerMessage: import_v47.z.number().optional(),
1215
+ noSignOffs: import_v47.z.boolean().optional()
1216
+ });
1217
+ var PersonaVoiceV3Schema = import_v47.z.object({
1218
+ style: import_v47.z.string(),
1108
1219
  format: PersonaVoiceFormatV3Schema.optional()
1109
1220
  });
1110
- var PersonaV3Schema = import_v46.z.object({
1111
- name: import_v46.z.string(),
1221
+ var PersonaV3Schema = import_v47.z.object({
1222
+ name: import_v47.z.string(),
1112
1223
  voice: PersonaVoiceV3Schema
1113
1224
  });
1114
- var ToolApprovalConfigSchema = import_v46.z.object({
1115
- required: import_v46.z.boolean().optional(),
1116
- requiredIf: import_v46.z.array(import_v46.z.string()).optional()
1225
+ var ToolApprovalConfigSchema = import_v47.z.object({
1226
+ required: import_v47.z.boolean().optional(),
1227
+ requiredIf: import_v47.z.array(import_v47.z.string()).optional()
1117
1228
  });
1118
- var ToolSandboxConfigSchema = import_v46.z.object({
1119
- mock: import_v46.z.unknown().optional()
1229
+ var ToolSandboxConfigSchema = import_v47.z.object({
1230
+ mock: import_v47.z.unknown().optional()
1120
1231
  });
1121
- var ToolRefV3Schema = import_v46.z.union([
1122
- import_v46.z.string(),
1123
- import_v46.z.object({
1124
- tool: import_v46.z.string(),
1125
- description: import_v46.z.string().optional(),
1232
+ var ToolRefV3Schema = import_v47.z.union([
1233
+ import_v47.z.string(),
1234
+ import_v47.z.object({
1235
+ tool: import_v47.z.string(),
1236
+ description: import_v47.z.string().optional(),
1126
1237
  approval: ToolApprovalConfigSchema.optional(),
1127
1238
  sandbox: ToolSandboxConfigSchema.optional(),
1128
- overrides: import_v46.z.record(import_v46.z.string(), import_v46.z.unknown()).optional()
1239
+ overrides: import_v47.z.record(import_v47.z.string(), import_v47.z.unknown()).optional()
1129
1240
  })
1130
1241
  ]);
1131
- var AgentToolRefSchema = import_v46.z.union([
1132
- import_v46.z.string(),
1133
- import_v46.z.object({
1134
- tool: import_v46.z.string(),
1135
- description: import_v46.z.string().optional()
1242
+ var AgentToolRefSchema = import_v47.z.union([
1243
+ import_v47.z.string(),
1244
+ import_v47.z.object({
1245
+ tool: import_v47.z.string(),
1246
+ description: import_v47.z.string().optional()
1136
1247
  })
1137
1248
  ]);
1138
- var WorkingMemoryConfigSchema = import_v46.z.object({
1139
- strategy: import_v46.z.enum(["full", "rolling_summary", "sliding_window"]).optional(),
1140
- maxTokens: import_v46.z.number().optional(),
1141
- summarizeAt: import_v46.z.number().optional()
1249
+ var WorkingMemoryConfigSchema = import_v47.z.object({
1250
+ strategy: import_v47.z.enum(["full", "rolling_summary", "sliding_window"]).optional(),
1251
+ maxTokens: import_v47.z.number().optional(),
1252
+ summarizeAt: import_v47.z.number().optional()
1142
1253
  });
1143
- var ExternalMemoryConfigSchema = import_v46.z.object({
1144
- enabled: import_v46.z.boolean().optional(),
1145
- ttl: import_v46.z.string().optional()
1254
+ var ExternalMemoryConfigSchema = import_v47.z.object({
1255
+ enabled: import_v47.z.boolean().optional(),
1256
+ ttl: import_v47.z.string().optional()
1146
1257
  });
1147
- var SemanticMemoryConfigSchema = import_v46.z.object({
1148
- enabled: import_v46.z.boolean().optional(),
1149
- topK: import_v46.z.number().optional(),
1150
- scope: import_v46.z.enum(["thread", "instance", "workspace"]).optional()
1258
+ var SemanticMemoryConfigSchema = import_v47.z.object({
1259
+ enabled: import_v47.z.boolean().optional(),
1260
+ topK: import_v47.z.number().optional(),
1261
+ scope: import_v47.z.enum(["thread", "instance", "workspace"]).optional()
1151
1262
  });
1152
- var MemoryConfigV3Schema = import_v46.z.object({
1263
+ var MemoryConfigV3Schema = import_v47.z.object({
1153
1264
  working: WorkingMemoryConfigSchema.optional(),
1154
- persistent: import_v46.z.object({
1155
- namespace: import_v46.z.string().optional()
1265
+ persistent: import_v47.z.object({
1266
+ namespace: import_v47.z.string().optional()
1156
1267
  }).optional(),
1157
1268
  external: ExternalMemoryConfigSchema.optional(),
1158
1269
  semantic: SemanticMemoryConfigSchema.optional()
1159
1270
  });
1160
- var RequiresApprovalPolicySchema = import_v46.z.object({
1161
- requiresApproval: import_v46.z.boolean().optional()
1271
+ var RequiresApprovalPolicySchema = import_v47.z.object({
1272
+ requiresApproval: import_v47.z.boolean().optional()
1162
1273
  });
1163
- var PoliciesConfigV3Schema = import_v46.z.object({
1164
- messages: import_v46.z.object({
1274
+ var PoliciesConfigV3Schema = import_v47.z.object({
1275
+ messages: import_v47.z.object({
1165
1276
  send: RequiresApprovalPolicySchema.optional(),
1166
1277
  schedule: RequiresApprovalPolicySchema.optional()
1167
1278
  }).optional(),
1168
- tools: import_v46.z.object({
1169
- externalRequiresApproval: import_v46.z.boolean().optional(),
1170
- systemRequiresApproval: import_v46.z.boolean().optional()
1279
+ tools: import_v47.z.object({
1280
+ externalRequiresApproval: import_v47.z.boolean().optional(),
1281
+ systemRequiresApproval: import_v47.z.boolean().optional()
1171
1282
  }).optional()
1172
1283
  });
1173
- var RuntimeConfigV3Schema = import_v46.z.object({
1284
+ var RuntimeConfigV3Schema = import_v47.z.object({
1174
1285
  /** LLM model identifier for reasoning (e.g., "google/gemini-3.1-flash-lite") */
1175
- model: import_v46.z.string().optional(),
1286
+ model: import_v47.z.string().optional(),
1176
1287
  /** LLM model for persona transformation (e.g., "openai/gpt-5-nano") */
1177
- personaModel: import_v46.z.string().optional()
1288
+ personaModel: import_v47.z.string().optional()
1178
1289
  });
1179
- var TimeWindowTimeStampSchema = import_v46.z.union([
1180
- import_v46.z.number().describe("Hour of day (0-23)"),
1181
- import_v46.z.object({
1182
- hour: import_v46.z.number(),
1183
- minute: import_v46.z.number().optional().default(0)
1290
+ var TimeWindowTimeStampSchema = import_v47.z.union([
1291
+ import_v47.z.number().describe("Hour of day (0-23)"),
1292
+ import_v47.z.object({
1293
+ hour: import_v47.z.number(),
1294
+ minute: import_v47.z.number().optional().default(0)
1184
1295
  })
1185
1296
  ]);
1186
- var TimeWindowDayOfWeekSchema = import_v46.z.enum([
1297
+ var TimeWindowDayOfWeekSchema = import_v47.z.enum([
1187
1298
  "monday",
1188
1299
  "tuesday",
1189
1300
  "wednesday",
@@ -1192,47 +1303,47 @@ var TimeWindowDayOfWeekSchema = import_v46.z.enum([
1192
1303
  "saturday",
1193
1304
  "sunday"
1194
1305
  ]);
1195
- var TimeWindowSlotAgentSchema = import_v46.z.object({
1306
+ var TimeWindowSlotAgentSchema = import_v47.z.object({
1196
1307
  startTime: TimeWindowTimeStampSchema,
1197
1308
  endTime: TimeWindowTimeStampSchema,
1198
- days: import_v46.z.array(TimeWindowDayOfWeekSchema)
1309
+ days: import_v47.z.array(TimeWindowDayOfWeekSchema)
1199
1310
  });
1200
- var ResponseModeSchema = import_v46.z.enum([
1311
+ var ResponseModeSchema = import_v47.z.enum([
1201
1312
  "immediate",
1202
1313
  "ack_and_schedule",
1203
1314
  "schedule_only"
1204
1315
  ]);
1205
- var TimeWindowBehaviorSchema = import_v46.z.object({
1316
+ var TimeWindowBehaviorSchema = import_v47.z.object({
1206
1317
  /** How to handle responses in this window */
1207
1318
  responseMode: ResponseModeSchema,
1208
1319
  /** Prompt injection for this time context */
1209
- prompt: import_v46.z.string().optional().describe("Prompt injection for this time context"),
1320
+ prompt: import_v47.z.string().optional().describe("Prompt injection for this time context"),
1210
1321
  /** Window to schedule responses for (when responseMode is ack_and_schedule or schedule_only) */
1211
- scheduleFor: import_v46.z.string().optional().describe("Window name to schedule responses for")
1322
+ scheduleFor: import_v47.z.string().optional().describe("Window name to schedule responses for")
1212
1323
  });
1213
- var TimeWindowPolicySchema = import_v46.z.object({
1324
+ var TimeWindowPolicySchema = import_v47.z.object({
1214
1325
  /** IANA timezone for the window (e.g., "Australia/Sydney") */
1215
- timezone: import_v46.z.string().describe('IANA timezone, e.g., "Australia/Sydney"'),
1326
+ timezone: import_v47.z.string().describe('IANA timezone, e.g., "Australia/Sydney"'),
1216
1327
  /** Time slots when this window is active */
1217
- windows: import_v46.z.array(TimeWindowSlotAgentSchema),
1328
+ windows: import_v47.z.array(TimeWindowSlotAgentSchema),
1218
1329
  /** Behavior for this window (optional - defaults to immediate response) */
1219
1330
  behavior: TimeWindowBehaviorSchema.optional()
1220
1331
  });
1221
- var TimeWindowPoliciesSchema = import_v46.z.record(import_v46.z.string(), TimeWindowPolicySchema);
1332
+ var TimeWindowPoliciesSchema = import_v47.z.record(import_v47.z.string(), TimeWindowPolicySchema);
1222
1333
  var TimeWindowDefaultSchema = TimeWindowBehaviorSchema.describe(
1223
1334
  "Fallback behavior when no time window matches"
1224
1335
  );
1225
- var ResponsesBehaviorConfigSchema = import_v46.z.object({
1336
+ var ResponsesBehaviorConfigSchema = import_v47.z.object({
1226
1337
  /**
1227
1338
  * Maximum immediate messages per agent run (acks, progress updates).
1228
1339
  * @default 1
1229
1340
  */
1230
- maxImmediate: import_v46.z.number().optional(),
1341
+ maxImmediate: import_v47.z.number().optional(),
1231
1342
  /**
1232
1343
  * Maximum scheduled messages per agent run (follow-ups via sendAt).
1233
1344
  * @default 2
1234
1345
  */
1235
- maxScheduled: import_v46.z.number().optional(),
1346
+ maxScheduled: import_v47.z.number().optional(),
1236
1347
  /**
1237
1348
  * Maximum intermediate messages per agent run.
1238
1349
  * Intermediate = progress updates, acknowledgments before task completion.
@@ -1240,74 +1351,74 @@ var ResponsesBehaviorConfigSchema = import_v46.z.object({
1240
1351
  * @deprecated Use maxImmediate instead
1241
1352
  * @default 2
1242
1353
  */
1243
- maxIntermediate: import_v46.z.number().optional(),
1354
+ maxIntermediate: import_v47.z.number().optional(),
1244
1355
  /**
1245
1356
  * Whether a final message is required before the run completes.
1246
1357
  * If true and no final message is sent, the run fails.
1247
1358
  * @default true
1248
1359
  */
1249
- requireFinal: import_v46.z.boolean().optional(),
1360
+ requireFinal: import_v47.z.boolean().optional(),
1250
1361
  /**
1251
1362
  * Whether the agent can schedule messages for future delivery.
1252
1363
  * Scheduled messages typically require approval.
1253
1364
  * @default false
1254
1365
  */
1255
- allowSchedule: import_v46.z.boolean().optional(),
1366
+ allowSchedule: import_v47.z.boolean().optional(),
1256
1367
  /**
1257
1368
  * Message splitting configuration.
1258
1369
  * Controls whether and how the agent splits responses into multiple messages.
1259
1370
  */
1260
- messageSplitting: import_v46.z.object({
1371
+ messageSplitting: import_v47.z.object({
1261
1372
  /**
1262
1373
  * Whether to allow natural message splitting.
1263
1374
  * When true, the agent may split responses into multiple messages
1264
1375
  * when it improves conversational flow.
1265
1376
  */
1266
- enabled: import_v46.z.boolean(),
1377
+ enabled: import_v47.z.boolean(),
1267
1378
  /**
1268
1379
  * Custom prompt to override the default message splitting guidance.
1269
1380
  * If not provided, uses sensible defaults for when to split vs. keep together.
1270
1381
  */
1271
- prompt: import_v46.z.string().optional()
1382
+ prompt: import_v47.z.string().optional()
1272
1383
  }).optional()
1273
1384
  });
1274
- var SchedulingDelaySchema = import_v46.z.object({
1385
+ var SchedulingDelaySchema = import_v47.z.object({
1275
1386
  /** Time unit amount */
1276
- amount: import_v46.z.number(),
1387
+ amount: import_v47.z.number(),
1277
1388
  /** Time unit (e.g., "week", "weeks", "day", "days", "month", "months") */
1278
- unit: import_v46.z.string(),
1389
+ unit: import_v47.z.string(),
1279
1390
  /** Optional time window to constrain the delay */
1280
- timeWindow: import_v46.z.string().optional()
1391
+ timeWindow: import_v47.z.string().optional()
1281
1392
  });
1282
- var SchedulingPatternSchema = import_v46.z.object({
1393
+ var SchedulingPatternSchema = import_v47.z.object({
1283
1394
  /** Trigger name for this pattern */
1284
- trigger: import_v46.z.string(),
1395
+ trigger: import_v47.z.string(),
1285
1396
  /** Human-readable description of when this pattern applies */
1286
- description: import_v46.z.string().optional(),
1397
+ description: import_v47.z.string().optional(),
1287
1398
  /** Example user phrases that match this pattern */
1288
- examples: import_v46.z.array(import_v46.z.string()).optional(),
1399
+ examples: import_v47.z.array(import_v47.z.string()).optional(),
1289
1400
  /** Default delay for this pattern */
1290
1401
  defaultDelay: SchedulingDelaySchema.optional()
1291
1402
  });
1292
- var SchedulingBehaviorConfigSchema = import_v46.z.object({
1403
+ var SchedulingBehaviorConfigSchema = import_v47.z.object({
1293
1404
  /**
1294
1405
  * Patterns that trigger scheduling suggestions.
1295
1406
  * The agent uses these to know when to add sendAt to messages.
1296
1407
  */
1297
- patterns: import_v46.z.array(SchedulingPatternSchema).optional(),
1408
+ patterns: import_v47.z.array(SchedulingPatternSchema).optional(),
1298
1409
  /**
1299
1410
  * Default settings for scheduled messages.
1300
1411
  */
1301
- defaults: import_v46.z.object({
1412
+ defaults: import_v47.z.object({
1302
1413
  /** Cancel scheduled message if user replies before send time (default: true) */
1303
- cancelOnActivity: import_v46.z.boolean().optional(),
1414
+ cancelOnActivity: import_v47.z.boolean().optional(),
1304
1415
  /** Whether scheduled messages require approval (default: true) */
1305
- requiresApproval: import_v46.z.boolean().optional(),
1416
+ requiresApproval: import_v47.z.boolean().optional(),
1306
1417
  /** Default time window policy to constrain all scheduled messages */
1307
- timeWindow: import_v46.z.string().optional().describe("Time window policy name for scheduled messages")
1418
+ timeWindow: import_v47.z.string().optional().describe("Time window policy name for scheduled messages")
1308
1419
  }).optional()
1309
1420
  });
1310
- var BehaviorConfigV3Schema = import_v46.z.object({
1421
+ var BehaviorConfigV3Schema = import_v47.z.object({
1311
1422
  /**
1312
1423
  * Response behavior - controls message sending via tool calls.
1313
1424
  * When configured, agents must explicitly call system:message:send
@@ -1320,32 +1431,32 @@ var BehaviorConfigV3Schema = import_v46.z.object({
1320
1431
  */
1321
1432
  scheduling: SchedulingBehaviorConfigSchema.optional()
1322
1433
  });
1323
- var PromptsConfigV3Schema = import_v46.z.object({
1434
+ var PromptsConfigV3Schema = import_v47.z.object({
1324
1435
  /** Main system prompt with workflow instructions */
1325
- system: import_v46.z.string().optional(),
1436
+ system: import_v47.z.string().optional(),
1326
1437
  /** Injected during second pass when skills were loaded but tools not used */
1327
- recovery: import_v46.z.string().optional(),
1438
+ recovery: import_v47.z.string().optional(),
1328
1439
  /** Injected during follow-up passes when context needs updating */
1329
- followUp: import_v46.z.string().optional(),
1440
+ followUp: import_v47.z.string().optional(),
1330
1441
  /** Thread list title generation (system + user template with {{var}} placeholders) */
1331
- titleEnrichment: import_v46.z.object({
1332
- system: import_v46.z.string().optional(),
1333
- user: import_v46.z.string().optional()
1442
+ titleEnrichment: import_v47.z.object({
1443
+ system: import_v47.z.string().optional(),
1444
+ user: import_v47.z.string().optional()
1334
1445
  }).optional()
1335
1446
  });
1336
- var AgentYAMLV3Schema = import_v46.z.object({
1337
- $schema: import_v46.z.string().optional(),
1338
- handle: import_v46.z.string(),
1339
- name: import_v46.z.string(),
1340
- version: import_v46.z.string().optional(),
1341
- description: import_v46.z.string().optional(),
1447
+ var AgentYAMLV3Schema = import_v47.z.object({
1448
+ $schema: import_v47.z.string().optional(),
1449
+ handle: import_v47.z.string(),
1450
+ name: import_v47.z.string(),
1451
+ version: import_v47.z.string().optional(),
1452
+ description: import_v47.z.string().optional(),
1342
1453
  // Persona - Who the agent is
1343
1454
  persona: PersonaV3Schema.optional(),
1344
1455
  // Skills - What the agent knows how to do (skills own their tools)
1345
- skills: import_v46.z.array(SkillRefSchema).optional(),
1456
+ skills: import_v47.z.array(SkillRefSchema).optional(),
1346
1457
  // Tools - Always-available tools before any skill loads
1347
1458
  // Examples: system:settings:business_information:get
1348
- tools: import_v46.z.array(AgentToolRefSchema).optional(),
1459
+ tools: import_v47.z.array(AgentToolRefSchema).optional(),
1349
1460
  /**
1350
1461
  * Events - When the agent activates
1351
1462
  * @deprecated Not yet implemented - this is a planned feature for event-driven agents.
@@ -1378,21 +1489,21 @@ var AgentYAMLV3Schema = import_v46.z.object({
1378
1489
  });
1379
1490
 
1380
1491
  // src/schemas.ts
1381
- var EnvVisibilitySchema = import_v47.z.enum(["visible", "encrypted"]);
1382
- var EnvVariableDefinitionSchema = import_v47.z.object({
1383
- label: import_v47.z.string(),
1384
- required: import_v47.z.boolean().optional(),
1492
+ var EnvVisibilitySchema = import_v48.z.enum(["visible", "encrypted"]);
1493
+ var EnvVariableDefinitionSchema = import_v48.z.object({
1494
+ label: import_v48.z.string(),
1495
+ required: import_v48.z.boolean().optional(),
1385
1496
  visibility: EnvVisibilitySchema.optional(),
1386
- default: import_v47.z.string().optional(),
1387
- description: import_v47.z.string().optional(),
1388
- placeholder: import_v47.z.string().optional()
1389
- });
1390
- var EnvSchemaSchema = import_v47.z.record(import_v47.z.string(), EnvVariableDefinitionSchema);
1391
- var ComputeLayerTypeSchema = import_v47.z.enum(["serverless", "dedicated"]);
1392
- var FieldOwnerSchema = import_v47.z.enum(["APP", "SHARED"]);
1393
- var PrimitiveSchema = import_v47.z.union([import_v47.z.string(), import_v47.z.number(), import_v47.z.boolean()]);
1394
- var PrimitiveOrArraySchema = import_v47.z.union([PrimitiveSchema, import_v47.z.array(PrimitiveSchema)]);
1395
- var FilterOperatorSchema = import_v47.z.enum([
1497
+ default: import_v48.z.string().optional(),
1498
+ description: import_v48.z.string().optional(),
1499
+ placeholder: import_v48.z.string().optional()
1500
+ });
1501
+ var EnvSchemaSchema = import_v48.z.record(import_v48.z.string(), EnvVariableDefinitionSchema);
1502
+ var ComputeLayerTypeSchema = import_v48.z.enum(["serverless", "dedicated"]);
1503
+ var FieldOwnerSchema = import_v48.z.enum(["APP", "SHARED"]);
1504
+ var PrimitiveSchema = import_v48.z.union([import_v48.z.string(), import_v48.z.number(), import_v48.z.boolean()]);
1505
+ var PrimitiveOrArraySchema = import_v48.z.union([PrimitiveSchema, import_v48.z.array(PrimitiveSchema)]);
1506
+ var FilterOperatorSchema = import_v48.z.enum([
1396
1507
  "eq",
1397
1508
  "neq",
1398
1509
  "gt",
@@ -1410,7 +1521,7 @@ var FilterOperatorSchema = import_v47.z.enum([
1410
1521
  "isEmpty",
1411
1522
  "isNotEmpty"
1412
1523
  ]);
1413
- var FilterConditionSchema = import_v47.z.object({
1524
+ var FilterConditionSchema = import_v48.z.object({
1414
1525
  eq: PrimitiveOrArraySchema,
1415
1526
  neq: PrimitiveOrArraySchema,
1416
1527
  gt: PrimitiveOrArraySchema,
@@ -1428,27 +1539,27 @@ var FilterConditionSchema = import_v47.z.object({
1428
1539
  isEmpty: PrimitiveOrArraySchema,
1429
1540
  isNotEmpty: PrimitiveOrArraySchema
1430
1541
  }).partial();
1431
- var StructuredFilterSchema = import_v47.z.record(
1432
- import_v47.z.string(),
1542
+ var StructuredFilterSchema = import_v48.z.record(
1543
+ import_v48.z.string(),
1433
1544
  FilterConditionSchema
1434
1545
  );
1435
- var ModelDependencySchema = import_v47.z.object({
1436
- model: import_v47.z.string(),
1437
- fields: import_v47.z.array(import_v47.z.string()).optional(),
1546
+ var ModelDependencySchema = import_v48.z.object({
1547
+ model: import_v48.z.string(),
1548
+ fields: import_v48.z.array(import_v48.z.string()).optional(),
1438
1549
  where: StructuredFilterSchema.optional()
1439
1550
  });
1440
- var ChannelDependencySchema = import_v47.z.object({
1441
- channel: import_v47.z.string()
1551
+ var ChannelDependencySchema = import_v48.z.object({
1552
+ channel: import_v48.z.string()
1442
1553
  });
1443
- var WorkflowDependencySchema = import_v47.z.object({
1444
- workflow: import_v47.z.string()
1554
+ var WorkflowDependencySchema = import_v48.z.object({
1555
+ workflow: import_v48.z.string()
1445
1556
  });
1446
- var ResourceDependencySchema = import_v47.z.union([
1557
+ var ResourceDependencySchema = import_v48.z.union([
1447
1558
  ModelDependencySchema,
1448
1559
  ChannelDependencySchema,
1449
1560
  WorkflowDependencySchema
1450
1561
  ]);
1451
- var FieldDataTypeSchema = import_v47.z.enum([
1562
+ var FieldDataTypeSchema = import_v48.z.enum([
1452
1563
  "LONG_STRING",
1453
1564
  "STRING",
1454
1565
  "NUMBER",
@@ -1461,74 +1572,74 @@ var FieldDataTypeSchema = import_v47.z.enum([
1461
1572
  "RELATION",
1462
1573
  "OBJECT"
1463
1574
  ]);
1464
- var FieldOptionSchema = import_v47.z.object({
1465
- label: import_v47.z.string(),
1466
- value: import_v47.z.string(),
1467
- color: import_v47.z.string().optional()
1468
- });
1469
- var InlineFieldDefinitionSchema = import_v47.z.object({
1470
- limitChoices: import_v47.z.number().optional(),
1471
- options: import_v47.z.array(FieldOptionSchema).optional(),
1472
- minLength: import_v47.z.number().optional(),
1473
- maxLength: import_v47.z.number().optional(),
1474
- min: import_v47.z.number().optional(),
1475
- max: import_v47.z.number().optional(),
1476
- relatedModel: import_v47.z.string().optional(),
1477
- pattern: import_v47.z.string().optional()
1478
- });
1479
- var AppFieldVisibilitySchema = import_v47.z.object({
1480
- data: import_v47.z.boolean().optional(),
1481
- list: import_v47.z.boolean().optional(),
1482
- filters: import_v47.z.boolean().optional()
1483
- });
1484
- var FieldRequirementTypeSchema = import_v47.z.enum(["optional", "on_create", "required"]);
1485
- var ModelFieldDefinitionSchema = import_v47.z.object({
1486
- handle: import_v47.z.string(),
1487
- label: import_v47.z.string(),
1575
+ var FieldOptionSchema = import_v48.z.object({
1576
+ label: import_v48.z.string(),
1577
+ value: import_v48.z.string(),
1578
+ color: import_v48.z.string().optional()
1579
+ });
1580
+ var InlineFieldDefinitionSchema = import_v48.z.object({
1581
+ limitChoices: import_v48.z.number().optional(),
1582
+ options: import_v48.z.array(FieldOptionSchema).optional(),
1583
+ minLength: import_v48.z.number().optional(),
1584
+ maxLength: import_v48.z.number().optional(),
1585
+ min: import_v48.z.number().optional(),
1586
+ max: import_v48.z.number().optional(),
1587
+ relatedModel: import_v48.z.string().optional(),
1588
+ pattern: import_v48.z.string().optional()
1589
+ });
1590
+ var AppFieldVisibilitySchema = import_v48.z.object({
1591
+ data: import_v48.z.boolean().optional(),
1592
+ list: import_v48.z.boolean().optional(),
1593
+ filters: import_v48.z.boolean().optional()
1594
+ });
1595
+ var FieldRequirementTypeSchema = import_v48.z.enum(["optional", "on_create", "required"]);
1596
+ var ModelFieldDefinitionSchema = import_v48.z.object({
1597
+ handle: import_v48.z.string(),
1598
+ label: import_v48.z.string(),
1488
1599
  type: FieldDataTypeSchema.optional(),
1489
- definition: import_v47.z.union([InlineFieldDefinitionSchema, import_v47.z.string()]).optional(),
1600
+ definition: import_v48.z.union([InlineFieldDefinitionSchema, import_v48.z.string()]).optional(),
1490
1601
  /** Field requirement type: 'optional', 'on_create', or 'required' */
1491
1602
  requirement: FieldRequirementTypeSchema.optional(),
1492
1603
  /** @deprecated Use `requirement` instead */
1493
- required: import_v47.z.boolean().optional(),
1494
- unique: import_v47.z.boolean().optional(),
1495
- system: import_v47.z.boolean().optional(),
1496
- isList: import_v47.z.boolean().optional(),
1497
- defaultValue: import_v47.z.object({ value: import_v47.z.unknown() }).optional(),
1498
- description: import_v47.z.string().optional(),
1604
+ required: import_v48.z.boolean().optional(),
1605
+ unique: import_v48.z.boolean().optional(),
1606
+ system: import_v48.z.boolean().optional(),
1607
+ isList: import_v48.z.boolean().optional(),
1608
+ defaultValue: import_v48.z.object({ value: import_v48.z.unknown() }).optional(),
1609
+ description: import_v48.z.string().optional(),
1499
1610
  visibility: AppFieldVisibilitySchema.optional(),
1500
1611
  owner: FieldOwnerSchema.optional()
1501
1612
  });
1502
- var ModelDefinitionSchema = import_v47.z.object({
1503
- handle: import_v47.z.string(),
1504
- name: import_v47.z.string(),
1505
- namePlural: import_v47.z.string().optional(),
1506
- labelTemplate: import_v47.z.string().optional(),
1507
- description: import_v47.z.string().optional(),
1508
- fields: import_v47.z.array(ModelFieldDefinitionSchema),
1509
- requires: import_v47.z.array(ResourceDependencySchema).optional(),
1510
- addDefaultPages: import_v47.z.boolean().optional(),
1511
- addNavigation: import_v47.z.boolean().optional(),
1613
+ var ModelDefinitionSchema = import_v48.z.object({
1614
+ handle: import_v48.z.string(),
1615
+ name: import_v48.z.string(),
1616
+ namePlural: import_v48.z.string().optional(),
1617
+ labelTemplate: import_v48.z.string().optional(),
1618
+ description: import_v48.z.string().optional(),
1619
+ fields: import_v48.z.array(ModelFieldDefinitionSchema),
1620
+ requires: import_v48.z.array(ResourceDependencySchema).optional(),
1621
+ addDefaultPages: import_v48.z.boolean().optional(),
1622
+ addNavigation: import_v48.z.boolean().optional(),
1512
1623
  /** Root path for developer resource UI (e.g., '/access_requests'). Links internal model to a provision.pages entry. */
1513
- page: import_v47.z.string().optional()
1624
+ page: import_v48.z.string().optional()
1514
1625
  });
1515
- var RelationshipCardinalitySchema = import_v47.z.enum([
1626
+ var RelationshipCardinalitySchema = import_v48.z.enum([
1516
1627
  "ONE_TO_ONE",
1517
1628
  "ONE_TO_MANY"
1518
1629
  ]);
1519
- var OnDeleteBehaviorSchema = import_v47.z.enum(["NONE", "CASCADE", "RESTRICT"]);
1520
- var RelationshipLinkSchema = import_v47.z.object({
1521
- model: import_v47.z.string(),
1522
- field: import_v47.z.string(),
1523
- label: import_v47.z.string()
1630
+ var OnDeleteBehaviorSchema = import_v48.z.enum(["NONE", "CASCADE", "RESTRICT"]);
1631
+ var RelationshipLinkSchema = import_v48.z.object({
1632
+ model: import_v48.z.string(),
1633
+ field: import_v48.z.string(),
1634
+ label: import_v48.z.string()
1524
1635
  });
1525
- var RelationshipDefinitionSchema = import_v47.z.object({
1636
+ var RelationshipDefinitionSchema = import_v48.z.object({
1526
1637
  source: RelationshipLinkSchema,
1527
1638
  target: RelationshipLinkSchema,
1528
1639
  cardinality: RelationshipCardinalitySchema,
1529
1640
  onDelete: OnDeleteBehaviorSchema.default("NONE")
1530
1641
  });
1531
- var ChannelCapabilityTypeSchema = import_v47.z.enum([
1642
+ var ChannelCapabilityTypeSchema = import_v48.z.enum([
1532
1643
  "messaging",
1533
1644
  // Text-based: SMS, WhatsApp, Messenger, DMs
1534
1645
  "voice",
@@ -1536,323 +1647,325 @@ var ChannelCapabilityTypeSchema = import_v47.z.enum([
1536
1647
  "video"
1537
1648
  // Video calls (future)
1538
1649
  ]);
1539
- var ChannelCapabilitySchema = import_v47.z.object({
1540
- label: import_v47.z.string(),
1650
+ var ChannelCapabilitySchema = import_v48.z.object({
1651
+ label: import_v48.z.string(),
1541
1652
  // Display name: "SMS", "WhatsApp Messages"
1542
- icon: import_v47.z.string().optional(),
1653
+ icon: import_v48.z.string().optional(),
1543
1654
  // Lucide icon name
1544
- receive: import_v47.z.string().optional(),
1655
+ receive: import_v48.z.string().optional(),
1545
1656
  // Inbound webhook handler
1546
- send: import_v47.z.string().optional()
1657
+ send: import_v48.z.string().optional(),
1547
1658
  // Outbound tool handle
1659
+ send_batch: import_v48.z.string().optional()
1660
+ // Batch outbound tool handle
1548
1661
  });
1549
- var ChannelFieldDefinitionSchema = import_v47.z.object({
1550
- handle: import_v47.z.string(),
1551
- label: import_v47.z.string(),
1662
+ var ChannelFieldDefinitionSchema = import_v48.z.object({
1663
+ handle: import_v48.z.string(),
1664
+ label: import_v48.z.string(),
1552
1665
  /** Field definition reference or inline definition */
1553
- definition: import_v47.z.union([InlineFieldDefinitionSchema, import_v47.z.string()]).optional(),
1666
+ definition: import_v48.z.union([InlineFieldDefinitionSchema, import_v48.z.string()]).optional(),
1554
1667
  /** Marks this field as the identifier field for the channel */
1555
- identifier: import_v47.z.boolean().optional(),
1668
+ identifier: import_v48.z.boolean().optional(),
1556
1669
  /** Whether this field is required */
1557
- required: import_v47.z.boolean().optional(),
1670
+ required: import_v48.z.boolean().optional(),
1558
1671
  /** Default value when creating a new field */
1559
- defaultValue: import_v47.z.object({ value: import_v47.z.unknown() }).passthrough().optional(),
1672
+ defaultValue: import_v48.z.object({ value: import_v48.z.unknown() }).passthrough().optional(),
1560
1673
  /** Visibility settings for the field */
1561
- visibility: import_v47.z.object({
1562
- data: import_v47.z.boolean().optional(),
1563
- list: import_v47.z.boolean().optional(),
1564
- filters: import_v47.z.boolean().optional()
1674
+ visibility: import_v48.z.object({
1675
+ data: import_v48.z.boolean().optional(),
1676
+ list: import_v48.z.boolean().optional(),
1677
+ filters: import_v48.z.boolean().optional()
1565
1678
  }).passthrough().optional(),
1566
1679
  /** Permission settings for the field */
1567
- permissions: import_v47.z.object({
1568
- read: import_v47.z.boolean().optional(),
1569
- write: import_v47.z.boolean().optional()
1680
+ permissions: import_v48.z.object({
1681
+ read: import_v48.z.boolean().optional(),
1682
+ write: import_v48.z.boolean().optional()
1570
1683
  }).passthrough().optional()
1571
1684
  }).passthrough();
1572
- var ChannelDefinitionSchema = import_v47.z.object({
1573
- handle: import_v47.z.string(),
1574
- label: import_v47.z.string(),
1575
- icon: import_v47.z.string().optional(),
1685
+ var ChannelDefinitionSchema = import_v48.z.object({
1686
+ handle: import_v48.z.string(),
1687
+ label: import_v48.z.string(),
1688
+ icon: import_v48.z.string().optional(),
1576
1689
  /** Array of field definitions for this channel. One field must have identifier: true. */
1577
- fields: import_v47.z.array(ChannelFieldDefinitionSchema),
1690
+ fields: import_v48.z.array(ChannelFieldDefinitionSchema),
1578
1691
  // Capabilities keyed by standard type (messaging, voice, video) - all optional
1579
- capabilities: import_v47.z.object({
1692
+ capabilities: import_v48.z.object({
1580
1693
  messaging: ChannelCapabilitySchema.optional(),
1581
1694
  voice: ChannelCapabilitySchema.optional(),
1582
1695
  video: ChannelCapabilitySchema.optional()
1583
1696
  })
1584
1697
  });
1585
- var WorkflowActionInputSchema = import_v47.z.object({
1586
- key: import_v47.z.string(),
1587
- label: import_v47.z.string(),
1588
- fieldRef: import_v47.z.object({
1589
- fieldHandle: import_v47.z.string(),
1590
- entityHandle: import_v47.z.string()
1698
+ var WorkflowActionInputSchema = import_v48.z.object({
1699
+ key: import_v48.z.string(),
1700
+ label: import_v48.z.string(),
1701
+ fieldRef: import_v48.z.object({
1702
+ fieldHandle: import_v48.z.string(),
1703
+ entityHandle: import_v48.z.string()
1591
1704
  }).optional(),
1592
- template: import_v47.z.string().optional()
1593
- });
1594
- var WorkflowActionSchema = import_v47.z.object({
1595
- label: import_v47.z.string(),
1596
- handle: import_v47.z.string(),
1597
- batch: import_v47.z.boolean().optional(),
1598
- entityHandle: import_v47.z.string().optional(),
1599
- inputs: import_v47.z.array(WorkflowActionInputSchema).optional()
1600
- });
1601
- var WorkflowDefinitionSchema = import_v47.z.object({
1602
- path: import_v47.z.string(),
1603
- label: import_v47.z.string().optional(),
1604
- handle: import_v47.z.string().optional(),
1605
- requires: import_v47.z.array(ResourceDependencySchema).optional(),
1606
- actions: import_v47.z.array(WorkflowActionSchema)
1607
- });
1608
- var PageTypeSchema = import_v47.z.enum(["INSTANCE", "LIST"]);
1609
- var PageBlockTypeSchema = import_v47.z.enum(["form", "spreadsheet", "kanban", "calendar", "link", "list", "card"]);
1610
- var PageFieldTypeSchema = import_v47.z.enum(["STRING", "FILE", "NUMBER", "DATE", "BOOLEAN", "SELECT", "FORM", "RELATIONSHIP"]);
1611
- var PageFieldSourceSchema = import_v47.z.object({
1612
- model: import_v47.z.string(),
1613
- field: import_v47.z.string()
1614
- });
1615
- var PageFormHeaderSchema = import_v47.z.object({
1616
- title: import_v47.z.string(),
1617
- description: import_v47.z.string().optional()
1618
- });
1619
- var PageActionDefinitionSchema = import_v47.z.object({
1620
- handle: import_v47.z.string(),
1621
- label: import_v47.z.string(),
1622
- handler: import_v47.z.string().optional(),
1623
- href: import_v47.z.string().optional(),
1624
- icon: import_v47.z.string().optional(),
1625
- variant: import_v47.z.enum(["primary", "secondary", "destructive", "outline"]).optional(),
1626
- isDisabled: import_v47.z.union([import_v47.z.boolean(), import_v47.z.string()]).optional(),
1627
- isHidden: import_v47.z.union([import_v47.z.boolean(), import_v47.z.string()]).optional()
1705
+ template: import_v48.z.string().optional()
1706
+ });
1707
+ var WorkflowActionSchema = import_v48.z.object({
1708
+ label: import_v48.z.string(),
1709
+ handle: import_v48.z.string(),
1710
+ batch: import_v48.z.boolean().optional(),
1711
+ entityHandle: import_v48.z.string().optional(),
1712
+ inputs: import_v48.z.array(WorkflowActionInputSchema).optional()
1713
+ });
1714
+ var WorkflowDefinitionSchema = import_v48.z.object({
1715
+ path: import_v48.z.string(),
1716
+ label: import_v48.z.string().optional(),
1717
+ handle: import_v48.z.string().optional(),
1718
+ requires: import_v48.z.array(ResourceDependencySchema).optional(),
1719
+ actions: import_v48.z.array(WorkflowActionSchema)
1720
+ });
1721
+ var PageTypeSchema = import_v48.z.enum(["INSTANCE", "LIST"]);
1722
+ var PageBlockTypeSchema = import_v48.z.enum(["form", "spreadsheet", "kanban", "calendar", "link", "list", "card"]);
1723
+ var PageFieldTypeSchema = import_v48.z.enum(["STRING", "FILE", "NUMBER", "DATE", "BOOLEAN", "SELECT", "FORM", "RELATIONSHIP"]);
1724
+ var PageFieldSourceSchema = import_v48.z.object({
1725
+ model: import_v48.z.string(),
1726
+ field: import_v48.z.string()
1727
+ });
1728
+ var PageFormHeaderSchema = import_v48.z.object({
1729
+ title: import_v48.z.string(),
1730
+ description: import_v48.z.string().optional()
1731
+ });
1732
+ var PageActionDefinitionSchema = import_v48.z.object({
1733
+ handle: import_v48.z.string(),
1734
+ label: import_v48.z.string(),
1735
+ handler: import_v48.z.string().optional(),
1736
+ href: import_v48.z.string().optional(),
1737
+ icon: import_v48.z.string().optional(),
1738
+ variant: import_v48.z.enum(["primary", "secondary", "destructive", "outline"]).optional(),
1739
+ isDisabled: import_v48.z.union([import_v48.z.boolean(), import_v48.z.string()]).optional(),
1740
+ isHidden: import_v48.z.union([import_v48.z.boolean(), import_v48.z.string()]).optional()
1628
1741
  }).refine((data) => Boolean(data.handler || data.href), {
1629
1742
  message: "Page action requires handler or href"
1630
1743
  });
1631
- var FormV2StylePropsSchema = import_v47.z.object({
1632
- id: import_v47.z.string(),
1633
- row: import_v47.z.number(),
1634
- col: import_v47.z.number(),
1635
- className: import_v47.z.string().optional(),
1636
- hidden: import_v47.z.boolean().optional()
1637
- });
1638
- var FieldSettingButtonPropsSchema = import_v47.z.object({
1639
- label: import_v47.z.string(),
1640
- variant: import_v47.z.enum(["default", "destructive", "outline", "secondary", "ghost", "link"]).optional(),
1641
- size: import_v47.z.enum(["default", "sm", "lg", "icon"]).optional(),
1642
- isLoading: import_v47.z.boolean().optional(),
1744
+ var FormV2StylePropsSchema = import_v48.z.object({
1745
+ id: import_v48.z.string(),
1746
+ row: import_v48.z.number(),
1747
+ col: import_v48.z.number(),
1748
+ className: import_v48.z.string().optional(),
1749
+ hidden: import_v48.z.boolean().optional()
1750
+ });
1751
+ var FieldSettingButtonPropsSchema = import_v48.z.object({
1752
+ label: import_v48.z.string(),
1753
+ variant: import_v48.z.enum(["default", "destructive", "outline", "secondary", "ghost", "link"]).optional(),
1754
+ size: import_v48.z.enum(["default", "sm", "lg", "icon"]).optional(),
1755
+ isLoading: import_v48.z.boolean().optional(),
1643
1756
  /** Can be boolean or Liquid template string that resolves to boolean */
1644
- isDisabled: import_v47.z.union([import_v47.z.boolean(), import_v47.z.string()]).optional(),
1645
- leftIcon: import_v47.z.string().optional()
1757
+ isDisabled: import_v48.z.union([import_v48.z.boolean(), import_v48.z.string()]).optional(),
1758
+ leftIcon: import_v48.z.string().optional()
1646
1759
  });
1647
- var RelationshipExtensionSchema = import_v47.z.object({
1648
- model: import_v47.z.string()
1760
+ var RelationshipExtensionSchema = import_v48.z.object({
1761
+ model: import_v48.z.string()
1649
1762
  });
1650
- var FormLayoutColumnDefinitionSchema = import_v47.z.object({
1651
- field: import_v47.z.string(),
1652
- colSpan: import_v47.z.number(),
1653
- dataType: import_v47.z.string().optional(),
1654
- subQuery: import_v47.z.unknown().optional()
1763
+ var FormLayoutColumnDefinitionSchema = import_v48.z.object({
1764
+ field: import_v48.z.string(),
1765
+ colSpan: import_v48.z.number(),
1766
+ dataType: import_v48.z.string().optional(),
1767
+ subQuery: import_v48.z.unknown().optional()
1655
1768
  });
1656
- var FormLayoutRowDefinitionSchema = import_v47.z.object({
1657
- columns: import_v47.z.array(FormLayoutColumnDefinitionSchema)
1769
+ var FormLayoutRowDefinitionSchema = import_v48.z.object({
1770
+ columns: import_v48.z.array(FormLayoutColumnDefinitionSchema)
1658
1771
  });
1659
- var FormLayoutConfigDefinitionSchema = import_v47.z.object({
1660
- type: import_v47.z.literal("form"),
1661
- rows: import_v47.z.array(FormLayoutRowDefinitionSchema)
1772
+ var FormLayoutConfigDefinitionSchema = import_v48.z.object({
1773
+ type: import_v48.z.literal("form"),
1774
+ rows: import_v48.z.array(FormLayoutRowDefinitionSchema)
1662
1775
  });
1663
1776
  var InputComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1664
- component: import_v47.z.literal("Input"),
1665
- props: import_v47.z.object({
1666
- label: import_v47.z.string().optional(),
1667
- placeholder: import_v47.z.string().optional(),
1668
- helpText: import_v47.z.string().optional(),
1669
- type: import_v47.z.enum(["text", "number", "email", "password", "tel", "url", "hidden"]).optional(),
1670
- required: import_v47.z.boolean().optional(),
1671
- disabled: import_v47.z.boolean().optional(),
1672
- value: import_v47.z.union([import_v47.z.string(), import_v47.z.number()]).optional()
1777
+ component: import_v48.z.literal("Input"),
1778
+ props: import_v48.z.object({
1779
+ label: import_v48.z.string().optional(),
1780
+ placeholder: import_v48.z.string().optional(),
1781
+ helpText: import_v48.z.string().optional(),
1782
+ type: import_v48.z.enum(["text", "number", "email", "password", "tel", "url", "hidden"]).optional(),
1783
+ required: import_v48.z.boolean().optional(),
1784
+ disabled: import_v48.z.boolean().optional(),
1785
+ value: import_v48.z.union([import_v48.z.string(), import_v48.z.number()]).optional()
1673
1786
  })
1674
1787
  });
1675
1788
  var TextareaComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1676
- component: import_v47.z.literal("Textarea"),
1677
- props: import_v47.z.object({
1678
- label: import_v47.z.string().optional(),
1679
- placeholder: import_v47.z.string().optional(),
1680
- helpText: import_v47.z.string().optional(),
1681
- required: import_v47.z.boolean().optional(),
1682
- disabled: import_v47.z.boolean().optional(),
1683
- value: import_v47.z.string().optional()
1789
+ component: import_v48.z.literal("Textarea"),
1790
+ props: import_v48.z.object({
1791
+ label: import_v48.z.string().optional(),
1792
+ placeholder: import_v48.z.string().optional(),
1793
+ helpText: import_v48.z.string().optional(),
1794
+ required: import_v48.z.boolean().optional(),
1795
+ disabled: import_v48.z.boolean().optional(),
1796
+ value: import_v48.z.string().optional()
1684
1797
  })
1685
1798
  });
1686
1799
  var SelectComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1687
- component: import_v47.z.literal("Select"),
1688
- props: import_v47.z.object({
1689
- label: import_v47.z.string().optional(),
1690
- placeholder: import_v47.z.string().optional(),
1691
- helpText: import_v47.z.string().optional(),
1800
+ component: import_v48.z.literal("Select"),
1801
+ props: import_v48.z.object({
1802
+ label: import_v48.z.string().optional(),
1803
+ placeholder: import_v48.z.string().optional(),
1804
+ helpText: import_v48.z.string().optional(),
1692
1805
  /** Static items array (will be populated by iterable if using dynamic items) */
1693
- items: import_v47.z.union([import_v47.z.array(import_v47.z.object({ value: import_v47.z.string(), label: import_v47.z.string() })), import_v47.z.string()]).optional(),
1694
- value: import_v47.z.string().optional(),
1695
- isDisabled: import_v47.z.boolean().optional(),
1696
- required: import_v47.z.boolean().optional()
1806
+ items: import_v48.z.union([import_v48.z.array(import_v48.z.object({ value: import_v48.z.string(), label: import_v48.z.string() })), import_v48.z.string()]).optional(),
1807
+ value: import_v48.z.string().optional(),
1808
+ isDisabled: import_v48.z.boolean().optional(),
1809
+ required: import_v48.z.boolean().optional()
1697
1810
  }),
1698
1811
  relationship: RelationshipExtensionSchema.optional(),
1699
1812
  /** For dynamic items using iterable pattern (e.g., 'system.models') */
1700
- iterable: import_v47.z.string().optional(),
1813
+ iterable: import_v48.z.string().optional(),
1701
1814
  /** Template for each item in the iterable */
1702
- itemTemplate: import_v47.z.object({
1703
- value: import_v47.z.string(),
1704
- label: import_v47.z.string()
1815
+ itemTemplate: import_v48.z.object({
1816
+ value: import_v48.z.string(),
1817
+ label: import_v48.z.string()
1705
1818
  }).optional()
1706
1819
  });
1707
1820
  var ComboboxComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1708
- component: import_v47.z.literal("Combobox"),
1709
- props: import_v47.z.object({
1710
- label: import_v47.z.string().optional(),
1711
- placeholder: import_v47.z.string().optional(),
1712
- helpText: import_v47.z.string().optional(),
1713
- items: import_v47.z.array(import_v47.z.object({ value: import_v47.z.string(), label: import_v47.z.string() })).optional(),
1714
- value: import_v47.z.string().optional()
1821
+ component: import_v48.z.literal("Combobox"),
1822
+ props: import_v48.z.object({
1823
+ label: import_v48.z.string().optional(),
1824
+ placeholder: import_v48.z.string().optional(),
1825
+ helpText: import_v48.z.string().optional(),
1826
+ items: import_v48.z.array(import_v48.z.object({ value: import_v48.z.string(), label: import_v48.z.string() })).optional(),
1827
+ value: import_v48.z.string().optional()
1715
1828
  }),
1716
1829
  relationship: RelationshipExtensionSchema.optional()
1717
1830
  });
1718
1831
  var CheckboxComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1719
- component: import_v47.z.literal("Checkbox"),
1720
- props: import_v47.z.object({
1721
- label: import_v47.z.string().optional(),
1722
- helpText: import_v47.z.string().optional(),
1723
- checked: import_v47.z.boolean().optional(),
1724
- disabled: import_v47.z.boolean().optional()
1832
+ component: import_v48.z.literal("Checkbox"),
1833
+ props: import_v48.z.object({
1834
+ label: import_v48.z.string().optional(),
1835
+ helpText: import_v48.z.string().optional(),
1836
+ checked: import_v48.z.boolean().optional(),
1837
+ disabled: import_v48.z.boolean().optional()
1725
1838
  })
1726
1839
  });
1727
1840
  var DatePickerComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1728
- component: import_v47.z.literal("DatePicker"),
1729
- props: import_v47.z.object({
1730
- label: import_v47.z.string().optional(),
1731
- helpText: import_v47.z.string().optional(),
1732
- value: import_v47.z.union([import_v47.z.string(), import_v47.z.date()]).optional(),
1733
- disabled: import_v47.z.boolean().optional()
1841
+ component: import_v48.z.literal("DatePicker"),
1842
+ props: import_v48.z.object({
1843
+ label: import_v48.z.string().optional(),
1844
+ helpText: import_v48.z.string().optional(),
1845
+ value: import_v48.z.union([import_v48.z.string(), import_v48.z.date()]).optional(),
1846
+ disabled: import_v48.z.boolean().optional()
1734
1847
  })
1735
1848
  });
1736
1849
  var TimePickerComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1737
- component: import_v47.z.literal("TimePicker"),
1738
- props: import_v47.z.object({
1739
- label: import_v47.z.string().optional(),
1740
- helpText: import_v47.z.string().optional(),
1741
- value: import_v47.z.string().optional(),
1742
- disabled: import_v47.z.boolean().optional()
1850
+ component: import_v48.z.literal("TimePicker"),
1851
+ props: import_v48.z.object({
1852
+ label: import_v48.z.string().optional(),
1853
+ helpText: import_v48.z.string().optional(),
1854
+ value: import_v48.z.string().optional(),
1855
+ disabled: import_v48.z.boolean().optional()
1743
1856
  })
1744
1857
  });
1745
1858
  var ImageSettingComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1746
- component: import_v47.z.literal("ImageSetting"),
1747
- props: import_v47.z.object({
1748
- label: import_v47.z.string().optional(),
1749
- description: import_v47.z.string().optional(),
1750
- helpText: import_v47.z.string().optional(),
1751
- accept: import_v47.z.string().optional()
1859
+ component: import_v48.z.literal("ImageSetting"),
1860
+ props: import_v48.z.object({
1861
+ label: import_v48.z.string().optional(),
1862
+ description: import_v48.z.string().optional(),
1863
+ helpText: import_v48.z.string().optional(),
1864
+ accept: import_v48.z.string().optional()
1752
1865
  })
1753
1866
  });
1754
1867
  var FileSettingComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1755
- component: import_v47.z.literal("FileSetting"),
1756
- props: import_v47.z.object({
1757
- label: import_v47.z.string().optional(),
1758
- description: import_v47.z.string().optional(),
1759
- helpText: import_v47.z.string().optional(),
1760
- accept: import_v47.z.string().optional(),
1761
- required: import_v47.z.boolean().optional(),
1762
- button: import_v47.z.object({
1763
- label: import_v47.z.string().optional(),
1764
- variant: import_v47.z.enum(["default", "outline", "ghost", "link"]).optional(),
1765
- size: import_v47.z.enum(["sm", "md", "lg"]).optional()
1868
+ component: import_v48.z.literal("FileSetting"),
1869
+ props: import_v48.z.object({
1870
+ label: import_v48.z.string().optional(),
1871
+ description: import_v48.z.string().optional(),
1872
+ helpText: import_v48.z.string().optional(),
1873
+ accept: import_v48.z.string().optional(),
1874
+ required: import_v48.z.boolean().optional(),
1875
+ button: import_v48.z.object({
1876
+ label: import_v48.z.string().optional(),
1877
+ variant: import_v48.z.enum(["default", "outline", "ghost", "link"]).optional(),
1878
+ size: import_v48.z.enum(["sm", "md", "lg"]).optional()
1766
1879
  }).optional()
1767
1880
  })
1768
1881
  });
1769
- var ListItemTemplateSchema = import_v47.z.object({
1770
- component: import_v47.z.string(),
1771
- span: import_v47.z.number().optional(),
1772
- mdSpan: import_v47.z.number().optional(),
1773
- lgSpan: import_v47.z.number().optional(),
1774
- props: import_v47.z.record(import_v47.z.string(), import_v47.z.unknown())
1882
+ var ListItemTemplateSchema = import_v48.z.object({
1883
+ component: import_v48.z.string(),
1884
+ span: import_v48.z.number().optional(),
1885
+ mdSpan: import_v48.z.number().optional(),
1886
+ lgSpan: import_v48.z.number().optional(),
1887
+ props: import_v48.z.record(import_v48.z.string(), import_v48.z.unknown())
1775
1888
  });
1776
1889
  var ListComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1777
- component: import_v47.z.literal("List"),
1778
- props: import_v47.z.object({
1779
- title: import_v47.z.string().optional(),
1780
- items: import_v47.z.array(import_v47.z.object({
1781
- id: import_v47.z.string(),
1782
- label: import_v47.z.string(),
1783
- description: import_v47.z.string().optional()
1890
+ component: import_v48.z.literal("List"),
1891
+ props: import_v48.z.object({
1892
+ title: import_v48.z.string().optional(),
1893
+ items: import_v48.z.array(import_v48.z.object({
1894
+ id: import_v48.z.string(),
1895
+ label: import_v48.z.string(),
1896
+ description: import_v48.z.string().optional()
1784
1897
  })).optional(),
1785
- emptyMessage: import_v47.z.string().optional()
1898
+ emptyMessage: import_v48.z.string().optional()
1786
1899
  }),
1787
- model: import_v47.z.string().optional(),
1788
- labelField: import_v47.z.string().optional(),
1789
- descriptionField: import_v47.z.string().optional(),
1790
- icon: import_v47.z.string().optional(),
1900
+ model: import_v48.z.string().optional(),
1901
+ labelField: import_v48.z.string().optional(),
1902
+ descriptionField: import_v48.z.string().optional(),
1903
+ icon: import_v48.z.string().optional(),
1791
1904
  /** Context variable name to iterate over (e.g., 'phone_numbers') */
1792
- iterable: import_v47.z.string().optional(),
1905
+ iterable: import_v48.z.string().optional(),
1793
1906
  /** Template for each item - use {{ item.xyz }} for field values */
1794
1907
  itemTemplate: ListItemTemplateSchema.optional()
1795
1908
  });
1796
1909
  var EmptyFormComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1797
- component: import_v47.z.literal("EmptyForm"),
1798
- props: import_v47.z.object({
1799
- title: import_v47.z.string().optional(),
1800
- description: import_v47.z.string().optional(),
1801
- icon: import_v47.z.string().optional()
1910
+ component: import_v48.z.literal("EmptyForm"),
1911
+ props: import_v48.z.object({
1912
+ title: import_v48.z.string().optional(),
1913
+ description: import_v48.z.string().optional(),
1914
+ icon: import_v48.z.string().optional()
1802
1915
  })
1803
1916
  });
1804
1917
  var AlertComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1805
- component: import_v47.z.literal("Alert"),
1806
- props: import_v47.z.object({
1807
- title: import_v47.z.string(),
1808
- description: import_v47.z.string(),
1809
- icon: import_v47.z.string().optional(),
1810
- variant: import_v47.z.enum(["default", "destructive"]).optional()
1918
+ component: import_v48.z.literal("Alert"),
1919
+ props: import_v48.z.object({
1920
+ title: import_v48.z.string(),
1921
+ description: import_v48.z.string(),
1922
+ icon: import_v48.z.string().optional(),
1923
+ variant: import_v48.z.enum(["default", "destructive"]).optional()
1811
1924
  })
1812
1925
  });
1813
1926
  var EventWiringPanelComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1814
- component: import_v47.z.literal("EventWiringPanel"),
1815
- props: import_v47.z.object({
1816
- eventTypes: import_v47.z.array(
1817
- import_v47.z.object({
1818
- type: import_v47.z.string(),
1819
- label: import_v47.z.string(),
1820
- glofoxType: import_v47.z.string().optional(),
1821
- description: import_v47.z.string().optional(),
1822
- icon: import_v47.z.string().optional()
1927
+ component: import_v48.z.literal("EventWiringPanel"),
1928
+ props: import_v48.z.object({
1929
+ eventTypes: import_v48.z.array(
1930
+ import_v48.z.object({
1931
+ type: import_v48.z.string(),
1932
+ label: import_v48.z.string(),
1933
+ glofoxType: import_v48.z.string().optional(),
1934
+ description: import_v48.z.string().optional(),
1935
+ icon: import_v48.z.string().optional()
1823
1936
  })
1824
1937
  ),
1825
- recommendedWorkflowHandle: import_v47.z.string().optional()
1938
+ recommendedWorkflowHandle: import_v48.z.string().optional()
1826
1939
  })
1827
1940
  });
1828
- var ModalFormDefinitionSchema = import_v47.z.object({
1941
+ var ModalFormDefinitionSchema = import_v48.z.object({
1829
1942
  header: PageFormHeaderSchema,
1830
- handler: import_v47.z.string(),
1943
+ handler: import_v48.z.string(),
1831
1944
  /** Named dialog template to use instead of inline fields */
1832
- template: import_v47.z.string().optional(),
1945
+ template: import_v48.z.string().optional(),
1833
1946
  /** Template-specific params to pass to the dialog */
1834
- templateParams: import_v47.z.record(import_v47.z.string(), import_v47.z.unknown()).optional(),
1947
+ templateParams: import_v48.z.record(import_v48.z.string(), import_v48.z.unknown()).optional(),
1835
1948
  /** Inline field definitions (used when template is not specified) */
1836
- fields: import_v47.z.lazy(() => import_v47.z.array(FormV2ComponentDefinitionSchema)).optional(),
1949
+ fields: import_v48.z.lazy(() => import_v48.z.array(FormV2ComponentDefinitionSchema)).optional(),
1837
1950
  layout: FormLayoutConfigDefinitionSchema.optional(),
1838
- actions: import_v47.z.array(PageActionDefinitionSchema).optional()
1951
+ actions: import_v48.z.array(PageActionDefinitionSchema).optional()
1839
1952
  });
1840
1953
  var FieldSettingComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1841
- component: import_v47.z.literal("FieldSetting"),
1842
- props: import_v47.z.object({
1843
- label: import_v47.z.string(),
1844
- description: import_v47.z.string().optional(),
1845
- helpText: import_v47.z.string().optional(),
1846
- mode: import_v47.z.enum(["field", "setting"]).optional(),
1954
+ component: import_v48.z.literal("FieldSetting"),
1955
+ props: import_v48.z.object({
1956
+ label: import_v48.z.string(),
1957
+ description: import_v48.z.string().optional(),
1958
+ helpText: import_v48.z.string().optional(),
1959
+ mode: import_v48.z.enum(["field", "setting"]).optional(),
1847
1960
  /** Status indicator - can be literal or Liquid template */
1848
- status: import_v47.z.string().optional(),
1961
+ status: import_v48.z.string().optional(),
1849
1962
  /** Text to display alongside status badge - can be Liquid template */
1850
- statusText: import_v47.z.string().optional(),
1963
+ statusText: import_v48.z.string().optional(),
1851
1964
  button: FieldSettingButtonPropsSchema
1852
1965
  }),
1853
1966
  modalForm: ModalFormDefinitionSchema.optional()
1854
1967
  });
1855
- var FormV2ComponentDefinitionSchema = import_v47.z.discriminatedUnion("component", [
1968
+ var FormV2ComponentDefinitionSchema = import_v48.z.discriminatedUnion("component", [
1856
1969
  InputComponentDefinitionSchema,
1857
1970
  TextareaComponentDefinitionSchema,
1858
1971
  SelectComponentDefinitionSchema,
@@ -1868,82 +1981,82 @@ var FormV2ComponentDefinitionSchema = import_v47.z.discriminatedUnion("component
1868
1981
  AlertComponentDefinitionSchema,
1869
1982
  EventWiringPanelComponentDefinitionSchema
1870
1983
  ]);
1871
- var FormV2PropsDefinitionSchema = import_v47.z.object({
1872
- formVersion: import_v47.z.literal("v2"),
1873
- id: import_v47.z.string().optional(),
1874
- fields: import_v47.z.array(FormV2ComponentDefinitionSchema),
1984
+ var FormV2PropsDefinitionSchema = import_v48.z.object({
1985
+ formVersion: import_v48.z.literal("v2"),
1986
+ id: import_v48.z.string().optional(),
1987
+ fields: import_v48.z.array(FormV2ComponentDefinitionSchema),
1875
1988
  layout: FormLayoutConfigDefinitionSchema,
1876
1989
  /** Optional actions that trigger MCP tool calls */
1877
- actions: import_v47.z.array(PageActionDefinitionSchema).optional()
1990
+ actions: import_v48.z.array(PageActionDefinitionSchema).optional()
1878
1991
  });
1879
- var CardBlockHeaderSchema = import_v47.z.object({
1880
- title: import_v47.z.string(),
1881
- description: import_v47.z.string().optional(),
1882
- descriptionHref: import_v47.z.string().optional()
1992
+ var CardBlockHeaderSchema = import_v48.z.object({
1993
+ title: import_v48.z.string(),
1994
+ description: import_v48.z.string().optional(),
1995
+ descriptionHref: import_v48.z.string().optional()
1883
1996
  });
1884
- var CardBlockDefinitionSchema = import_v47.z.object({
1885
- type: import_v47.z.literal("card"),
1886
- restructurable: import_v47.z.boolean().optional(),
1997
+ var CardBlockDefinitionSchema = import_v48.z.object({
1998
+ type: import_v48.z.literal("card"),
1999
+ restructurable: import_v48.z.boolean().optional(),
1887
2000
  header: CardBlockHeaderSchema.optional(),
1888
2001
  form: FormV2PropsDefinitionSchema,
1889
- actions: import_v47.z.array(PageActionDefinitionSchema).optional(),
1890
- secondaryActions: import_v47.z.array(PageActionDefinitionSchema).optional(),
1891
- primaryActions: import_v47.z.array(PageActionDefinitionSchema).optional()
2002
+ actions: import_v48.z.array(PageActionDefinitionSchema).optional(),
2003
+ secondaryActions: import_v48.z.array(PageActionDefinitionSchema).optional(),
2004
+ primaryActions: import_v48.z.array(PageActionDefinitionSchema).optional()
1892
2005
  });
1893
- var PageFieldDefinitionBaseSchema = import_v47.z.object({
1894
- handle: import_v47.z.string(),
2006
+ var PageFieldDefinitionBaseSchema = import_v48.z.object({
2007
+ handle: import_v48.z.string(),
1895
2008
  type: PageFieldTypeSchema,
1896
- label: import_v47.z.string(),
1897
- description: import_v47.z.string().optional(),
1898
- required: import_v47.z.boolean().optional(),
1899
- handler: import_v47.z.string().optional(),
2009
+ label: import_v48.z.string(),
2010
+ description: import_v48.z.string().optional(),
2011
+ required: import_v48.z.boolean().optional(),
2012
+ handler: import_v48.z.string().optional(),
1900
2013
  source: PageFieldSourceSchema.optional(),
1901
- options: import_v47.z.array(import_v47.z.object({ value: import_v47.z.string(), label: import_v47.z.string() })).optional(),
1902
- accept: import_v47.z.string().optional(),
1903
- model: import_v47.z.string().optional()
2014
+ options: import_v48.z.array(import_v48.z.object({ value: import_v48.z.string(), label: import_v48.z.string() })).optional(),
2015
+ accept: import_v48.z.string().optional(),
2016
+ model: import_v48.z.string().optional()
1904
2017
  });
1905
2018
  var PageFieldDefinitionSchema = PageFieldDefinitionBaseSchema.extend({
1906
2019
  header: PageFormHeaderSchema.optional(),
1907
- fields: import_v47.z.lazy(() => import_v47.z.array(PageFieldDefinitionSchema)).optional(),
1908
- actions: import_v47.z.lazy(() => import_v47.z.array(PageActionDefinitionSchema)).optional()
1909
- });
1910
- var LegacyFormBlockDefinitionSchema = import_v47.z.object({
1911
- type: import_v47.z.enum(["form", "spreadsheet", "kanban", "calendar", "link"]),
1912
- title: import_v47.z.string().optional(),
1913
- fields: import_v47.z.array(PageFieldDefinitionSchema).optional(),
1914
- readonly: import_v47.z.boolean().optional()
1915
- });
1916
- var ListBlockDefinitionSchema = import_v47.z.object({
1917
- type: import_v47.z.literal("list"),
1918
- title: import_v47.z.string().optional(),
1919
- model: import_v47.z.string(),
1920
- labelField: import_v47.z.string().optional(),
1921
- descriptionField: import_v47.z.string().optional(),
1922
- icon: import_v47.z.string().optional(),
1923
- emptyMessage: import_v47.z.string().optional()
1924
- });
1925
- var ModelMapperBlockDefinitionSchema = import_v47.z.object({
1926
- type: import_v47.z.literal("model_mapper"),
2020
+ fields: import_v48.z.lazy(() => import_v48.z.array(PageFieldDefinitionSchema)).optional(),
2021
+ actions: import_v48.z.lazy(() => import_v48.z.array(PageActionDefinitionSchema)).optional()
2022
+ });
2023
+ var LegacyFormBlockDefinitionSchema = import_v48.z.object({
2024
+ type: import_v48.z.enum(["form", "spreadsheet", "kanban", "calendar", "link"]),
2025
+ title: import_v48.z.string().optional(),
2026
+ fields: import_v48.z.array(PageFieldDefinitionSchema).optional(),
2027
+ readonly: import_v48.z.boolean().optional()
2028
+ });
2029
+ var ListBlockDefinitionSchema = import_v48.z.object({
2030
+ type: import_v48.z.literal("list"),
2031
+ title: import_v48.z.string().optional(),
2032
+ model: import_v48.z.string(),
2033
+ labelField: import_v48.z.string().optional(),
2034
+ descriptionField: import_v48.z.string().optional(),
2035
+ icon: import_v48.z.string().optional(),
2036
+ emptyMessage: import_v48.z.string().optional()
2037
+ });
2038
+ var ModelMapperBlockDefinitionSchema = import_v48.z.object({
2039
+ type: import_v48.z.literal("model_mapper"),
1927
2040
  /** The SHARED model handle from install config (e.g., "client", "patient") */
1928
- model: import_v47.z.string()
2041
+ model: import_v48.z.string()
1929
2042
  });
1930
- var PageBlockDefinitionSchema = import_v47.z.union([
2043
+ var PageBlockDefinitionSchema = import_v48.z.union([
1931
2044
  CardBlockDefinitionSchema,
1932
2045
  LegacyFormBlockDefinitionSchema,
1933
2046
  ListBlockDefinitionSchema,
1934
2047
  ModelMapperBlockDefinitionSchema
1935
2048
  ]);
1936
- var PageContextModeSchema = import_v47.z.enum(["first", "many", "count", "all"]).transform((val) => val === "all" ? "many" : val);
1937
- var PageContextFiltersSchema = import_v47.z.record(
1938
- import_v47.z.string(),
1939
- import_v47.z.record(
1940
- import_v47.z.string(),
1941
- import_v47.z.union([PrimitiveSchema, import_v47.z.array(PrimitiveSchema), import_v47.z.string()])
2049
+ var PageContextModeSchema = import_v48.z.enum(["first", "many", "count", "all"]).transform((val) => val === "all" ? "many" : val);
2050
+ var PageContextFiltersSchema = import_v48.z.record(
2051
+ import_v48.z.string(),
2052
+ import_v48.z.record(
2053
+ import_v48.z.string(),
2054
+ import_v48.z.union([PrimitiveSchema, import_v48.z.array(PrimitiveSchema), import_v48.z.string()])
1942
2055
  )
1943
2056
  );
1944
- var PageContextItemDefinitionSchema = import_v47.z.object({
2057
+ var PageContextItemDefinitionSchema = import_v48.z.object({
1945
2058
  /** Model handle to fetch data from */
1946
- model: import_v47.z.string(),
2059
+ model: import_v48.z.string(),
1947
2060
  /** Fetch mode: 'first' returns single object, 'many' returns array, 'count' returns number */
1948
2061
  mode: PageContextModeSchema,
1949
2062
  /**
@@ -1953,69 +2066,69 @@ var PageContextItemDefinitionSchema = import_v47.z.object({
1953
2066
  */
1954
2067
  filters: PageContextFiltersSchema.optional(),
1955
2068
  /** Optional limit for 'many' mode */
1956
- limit: import_v47.z.number().optional()
2069
+ limit: import_v48.z.number().optional()
1957
2070
  });
1958
- var PageContextToolItemDefinitionSchema = import_v47.z.object({
2071
+ var PageContextToolItemDefinitionSchema = import_v48.z.object({
1959
2072
  /** Tool name to invoke for fetching context data */
1960
- tool: import_v47.z.string()
2073
+ tool: import_v48.z.string()
1961
2074
  });
1962
- var PageContextDefinitionSchema = import_v47.z.record(
1963
- import_v47.z.string(),
1964
- import_v47.z.union([PageContextItemDefinitionSchema, PageContextToolItemDefinitionSchema])
2075
+ var PageContextDefinitionSchema = import_v48.z.record(
2076
+ import_v48.z.string(),
2077
+ import_v48.z.union([PageContextItemDefinitionSchema, PageContextToolItemDefinitionSchema])
1965
2078
  );
1966
- var PageInstanceFilterSchema = import_v47.z.object({
1967
- model: import_v47.z.string(),
1968
- where: import_v47.z.record(import_v47.z.string(), import_v47.z.unknown()).optional()
2079
+ var PageInstanceFilterSchema = import_v48.z.object({
2080
+ model: import_v48.z.string(),
2081
+ where: import_v48.z.record(import_v48.z.string(), import_v48.z.unknown()).optional()
1969
2082
  });
1970
- var NavigationItemSchema = import_v47.z.object({
2083
+ var NavigationItemSchema = import_v48.z.object({
1971
2084
  /** Display label (supports Liquid templates) */
1972
- label: import_v47.z.string(),
2085
+ label: import_v48.z.string(),
1973
2086
  /** URL href (supports Liquid templates with path_params and context) */
1974
- href: import_v47.z.string(),
2087
+ href: import_v48.z.string(),
1975
2088
  /** Optional icon name */
1976
- icon: import_v47.z.string().optional(),
2089
+ icon: import_v48.z.string().optional(),
1977
2090
  /** When true, item is omitted from rendered navigation (supports Liquid templates) */
1978
- hidden: import_v47.z.union([import_v47.z.boolean(), import_v47.z.string()]).optional()
2091
+ hidden: import_v48.z.union([import_v48.z.boolean(), import_v48.z.string()]).optional()
1979
2092
  });
1980
- var NavigationSectionSchema = import_v47.z.object({
2093
+ var NavigationSectionSchema = import_v48.z.object({
1981
2094
  /** Section title (supports Liquid templates) */
1982
- title: import_v47.z.string().optional(),
2095
+ title: import_v48.z.string().optional(),
1983
2096
  /** Navigation items in this section */
1984
- items: import_v47.z.array(NavigationItemSchema)
2097
+ items: import_v48.z.array(NavigationItemSchema)
1985
2098
  });
1986
- var NavigationSidebarSchema = import_v47.z.object({
2099
+ var NavigationSidebarSchema = import_v48.z.object({
1987
2100
  /** Sections to display in the sidebar */
1988
- sections: import_v47.z.array(NavigationSectionSchema)
2101
+ sections: import_v48.z.array(NavigationSectionSchema)
1989
2102
  });
1990
- var BreadcrumbItemSchema = import_v47.z.object({
2103
+ var BreadcrumbItemSchema = import_v48.z.object({
1991
2104
  /** Display label (supports Liquid templates) */
1992
- label: import_v47.z.string(),
2105
+ label: import_v48.z.string(),
1993
2106
  /** Optional href - if not provided, item is not clickable */
1994
- href: import_v47.z.string().optional()
2107
+ href: import_v48.z.string().optional()
1995
2108
  });
1996
- var NavigationBreadcrumbSchema = import_v47.z.object({
2109
+ var NavigationBreadcrumbSchema = import_v48.z.object({
1997
2110
  /** Breadcrumb items from left to right */
1998
- items: import_v47.z.array(BreadcrumbItemSchema)
2111
+ items: import_v48.z.array(BreadcrumbItemSchema)
1999
2112
  });
2000
- var NavigationConfigSchema = import_v47.z.object({
2113
+ var NavigationConfigSchema = import_v48.z.object({
2001
2114
  /** Sidebar navigation */
2002
2115
  sidebar: NavigationSidebarSchema.optional(),
2003
2116
  /** Breadcrumb navigation */
2004
2117
  breadcrumb: NavigationBreadcrumbSchema.optional()
2005
2118
  });
2006
- var PageAudienceSchema = import_v47.z.enum(["install", "developer", "both"]);
2007
- var PageDefinitionSchema = import_v47.z.object({
2119
+ var PageAudienceSchema = import_v48.z.enum(["install", "developer", "both"]);
2120
+ var PageDefinitionSchema = import_v48.z.object({
2008
2121
  /** Unique identifier within the app (snake_case) */
2009
- handle: import_v47.z.string().optional(),
2122
+ handle: import_v48.z.string().optional(),
2010
2123
  /** Human-readable display name */
2011
- label: import_v47.z.string(),
2124
+ label: import_v48.z.string(),
2012
2125
  /** Optional description for documentation/UI */
2013
- description: import_v47.z.string().optional(),
2126
+ description: import_v48.z.string().optional(),
2014
2127
  type: PageTypeSchema,
2015
2128
  /** URL path for this page (e.g., '/phone-numbers' or '/phone-numbers/[id]' for dynamic segments) */
2016
- path: import_v47.z.string(),
2129
+ path: import_v48.z.string(),
2017
2130
  /** When true, this page is the default landing page for the app installation */
2018
- default: import_v47.z.boolean().optional(),
2131
+ default: import_v48.z.boolean().optional(),
2019
2132
  /**
2020
2133
  * Page audience:
2021
2134
  * - 'install': Visible only to app installers (default)
@@ -2029,115 +2142,134 @@ var PageDefinitionSchema = import_v47.z.object({
2029
2142
  * - string: Liquid template that evaluates to true/false
2030
2143
  * - NavigationConfigSchema: full navigation override for this page (replaces base navigation)
2031
2144
  */
2032
- navigation: import_v47.z.union([import_v47.z.boolean(), import_v47.z.string(), NavigationConfigSchema]).optional().default(true),
2033
- blocks: import_v47.z.array(PageBlockDefinitionSchema),
2034
- actions: import_v47.z.array(PageActionDefinitionSchema).optional(),
2145
+ navigation: import_v48.z.union([import_v48.z.boolean(), import_v48.z.string(), NavigationConfigSchema]).optional().default(true),
2146
+ blocks: import_v48.z.array(PageBlockDefinitionSchema),
2147
+ actions: import_v48.z.array(PageActionDefinitionSchema).optional(),
2035
2148
  /** Context data to load for Liquid templates. appInstallationId filtering is automatic. */
2036
2149
  context: PageContextDefinitionSchema.optional(),
2037
2150
  /** @deprecated Use context instead */
2038
2151
  filter: PageInstanceFilterSchema.optional()
2039
2152
  });
2040
- var WebhookHttpMethodSchema = import_v47.z.enum(["GET", "POST", "PUT", "DELETE", "PATCH"]);
2041
- var WebhookTypeSchema = import_v47.z.enum(["WEBHOOK", "CALLBACK"]);
2042
- var WebhookHandlerDefinitionSchema = import_v47.z.object({
2043
- description: import_v47.z.string().optional(),
2044
- methods: import_v47.z.array(WebhookHttpMethodSchema).optional(),
2153
+ var WebhookHttpMethodSchema = import_v48.z.enum(["GET", "POST", "PUT", "DELETE", "PATCH"]);
2154
+ var WebhookTypeSchema = import_v48.z.enum(["WEBHOOK", "CALLBACK"]);
2155
+ var WebhookHandlerDefinitionSchema = import_v48.z.object({
2156
+ description: import_v48.z.string().optional(),
2157
+ methods: import_v48.z.array(WebhookHttpMethodSchema).optional(),
2045
2158
  /** Invocation type: WEBHOOK (fire-and-forget) or CALLBACK (waits for response). Defaults to WEBHOOK. */
2046
2159
  type: WebhookTypeSchema.optional(),
2047
- handler: import_v47.z.unknown()
2160
+ handler: import_v48.z.unknown()
2048
2161
  });
2049
- var WebhooksSchema = import_v47.z.record(import_v47.z.string(), WebhookHandlerDefinitionSchema);
2050
- var AgentDefinitionSchema = import_v47.z.object({
2162
+ var WebhooksSchema = import_v48.z.record(import_v48.z.string(), WebhookHandlerDefinitionSchema);
2163
+ var AgentDefinitionSchema = import_v48.z.object({
2051
2164
  /** Unique identifier within the app (used for upserts) */
2052
- handle: import_v47.z.string().regex(/^[a-z0-9_-]+$/, "Handle must be lowercase alphanumeric with dashes/underscores"),
2165
+ handle: import_v48.z.string().regex(/^[a-z0-9_-]+$/, "Handle must be lowercase alphanumeric with dashes/underscores"),
2053
2166
  /** Display name */
2054
- name: import_v47.z.string().min(1),
2167
+ name: import_v48.z.string().min(1),
2055
2168
  /** Description of what the agent does */
2056
- description: import_v47.z.string(),
2169
+ description: import_v48.z.string(),
2057
2170
  /** System prompt (static, no templating) */
2058
- system: import_v47.z.string(),
2171
+ system: import_v48.z.string(),
2059
2172
  /** Tool names to bind (can be empty for orchestrator agents) */
2060
- tools: import_v47.z.array(import_v47.z.string()),
2173
+ tools: import_v48.z.array(import_v48.z.string()),
2061
2174
  /** Optional LLM model override */
2062
- llmModelId: import_v47.z.string().optional(),
2175
+ llmModelId: import_v48.z.string().optional(),
2063
2176
  /** Parent agent that can call this agent ('composer' or another agent handle) */
2064
- parentAgent: import_v47.z.string().optional()
2177
+ parentAgent: import_v48.z.string().optional()
2065
2178
  });
2066
- var InstallConfigSchema = import_v47.z.object({
2179
+ var InstallConfigSchema = import_v48.z.object({
2067
2180
  env: EnvSchemaSchema.optional(),
2068
2181
  /** SHARED model definitions (mapped to user's existing data during installation) */
2069
- models: import_v47.z.array(ModelDefinitionSchema).optional(),
2182
+ models: import_v48.z.array(ModelDefinitionSchema).optional(),
2070
2183
  /** Relationship definitions between SHARED models */
2071
- relationships: import_v47.z.array(RelationshipDefinitionSchema).optional()
2184
+ relationships: import_v48.z.array(RelationshipDefinitionSchema).optional()
2072
2185
  });
2073
- var ProvisionConfigSchema = import_v47.z.object({
2186
+ var ProvisionConfigSchema = import_v48.z.object({
2074
2187
  env: EnvSchemaSchema.optional(),
2075
2188
  /** INTERNAL model definitions (app-owned, not visible to users) */
2076
- models: import_v47.z.array(ModelDefinitionSchema).optional(),
2189
+ models: import_v48.z.array(ModelDefinitionSchema).optional(),
2077
2190
  /** Relationship definitions between INTERNAL models */
2078
- relationships: import_v47.z.array(RelationshipDefinitionSchema).optional(),
2079
- channels: import_v47.z.array(ChannelDefinitionSchema).optional(),
2080
- workflows: import_v47.z.array(WorkflowDefinitionSchema).optional(),
2191
+ relationships: import_v48.z.array(RelationshipDefinitionSchema).optional(),
2192
+ channels: import_v48.z.array(ChannelDefinitionSchema).optional(),
2193
+ workflows: import_v48.z.array(WorkflowDefinitionSchema).optional(),
2081
2194
  /** Base navigation configuration for all pages (can be overridden per page) */
2082
2195
  navigation: NavigationConfigSchema.optional(),
2083
- pages: import_v47.z.array(PageDefinitionSchema).optional()
2196
+ pages: import_v48.z.array(PageDefinitionSchema).optional()
2084
2197
  });
2085
- var SkedyulConfigSchema = import_v47.z.object({
2086
- name: import_v47.z.string(),
2087
- version: import_v47.z.string().optional(),
2088
- description: import_v47.z.string().optional(),
2198
+ var SkedyulConfigSchema = import_v48.z.object({
2199
+ name: import_v48.z.string(),
2200
+ version: import_v48.z.string().optional(),
2201
+ description: import_v48.z.string().optional(),
2089
2202
  computeLayer: ComputeLayerTypeSchema.optional(),
2090
- tools: import_v47.z.unknown().optional(),
2091
- webhooks: import_v47.z.unknown().optional(),
2092
- provision: import_v47.z.union([ProvisionConfigSchema, import_v47.z.unknown()]).optional(),
2093
- agents: import_v47.z.array(AgentDefinitionSchema).optional()
2203
+ tools: import_v48.z.unknown().optional(),
2204
+ webhooks: import_v48.z.unknown().optional(),
2205
+ provision: import_v48.z.union([ProvisionConfigSchema, import_v48.z.unknown()]).optional(),
2206
+ agents: import_v48.z.array(AgentDefinitionSchema).optional()
2094
2207
  });
2095
2208
  function safeParseConfig(data) {
2096
2209
  const result = SkedyulConfigSchema.safeParse(data);
2097
2210
  return result.success ? result.data : null;
2098
2211
  }
2099
- var MessageSendChannelSchema = import_v47.z.object({
2100
- id: import_v47.z.string(),
2101
- handle: import_v47.z.string(),
2102
- identifierValue: import_v47.z.string()
2103
- });
2104
- var MessageSendSubscriptionSchema = import_v47.z.object({
2105
- id: import_v47.z.string(),
2106
- identifierValue: import_v47.z.string()
2107
- });
2108
- var MessageSendContactSchema = import_v47.z.object({
2109
- id: import_v47.z.string(),
2110
- name: import_v47.z.string().optional()
2111
- });
2112
- var MessageSendRecipientSchema = import_v47.z.object({
2113
- address: import_v47.z.string(),
2114
- name: import_v47.z.string().optional(),
2115
- participantId: import_v47.z.string().optional(),
2116
- contactId: import_v47.z.string().optional()
2117
- });
2118
- var MessageSendAttachmentSchema = import_v47.z.object({
2119
- filename: import_v47.z.string(),
2120
- url: import_v47.z.string(),
2121
- mimeType: import_v47.z.string(),
2122
- size: import_v47.z.number()
2123
- });
2124
- var MessageSendMessageSchema = import_v47.z.object({
2125
- id: import_v47.z.string(),
2126
- content: import_v47.z.string(),
2127
- contentRaw: import_v47.z.string().optional(),
2128
- title: import_v47.z.string().optional(),
2129
- attachments: import_v47.z.array(MessageSendAttachmentSchema).optional()
2130
- });
2131
- var MessageSendInputSchema = import_v47.z.object({
2212
+ var MessageSendChannelSchema = import_v48.z.object({
2213
+ id: import_v48.z.string(),
2214
+ handle: import_v48.z.string(),
2215
+ identifierValue: import_v48.z.string()
2216
+ });
2217
+ var MessageSendSubscriptionSchema = import_v48.z.object({
2218
+ id: import_v48.z.string(),
2219
+ identifierValue: import_v48.z.string()
2220
+ });
2221
+ var MessageSendContactSchema = import_v48.z.object({
2222
+ id: import_v48.z.string(),
2223
+ name: import_v48.z.string().optional()
2224
+ });
2225
+ var MessageSendRecipientSchema = import_v48.z.object({
2226
+ address: import_v48.z.string(),
2227
+ name: import_v48.z.string().optional(),
2228
+ participantId: import_v48.z.string().optional(),
2229
+ contactId: import_v48.z.string().optional()
2230
+ });
2231
+ var MessageSendAttachmentSchema = import_v48.z.object({
2232
+ filename: import_v48.z.string(),
2233
+ url: import_v48.z.string(),
2234
+ mimeType: import_v48.z.string(),
2235
+ size: import_v48.z.number()
2236
+ });
2237
+ var MessageSendMessageSchema = import_v48.z.object({
2238
+ id: import_v48.z.string(),
2239
+ content: import_v48.z.string(),
2240
+ contentRaw: import_v48.z.string().optional(),
2241
+ title: import_v48.z.string().optional(),
2242
+ attachments: import_v48.z.array(MessageSendAttachmentSchema).optional()
2243
+ });
2244
+ var MessageSendInputSchema = import_v48.z.object({
2132
2245
  channel: MessageSendChannelSchema,
2133
2246
  subscription: MessageSendSubscriptionSchema.optional(),
2134
2247
  contact: MessageSendContactSchema.optional(),
2135
2248
  recipient: MessageSendRecipientSchema.optional(),
2136
2249
  message: MessageSendMessageSchema
2137
2250
  });
2138
- var MessageSendOutputSchema = import_v47.z.object({
2139
- status: import_v47.z.enum(["sent", "queued", "failed"]),
2140
- remoteId: import_v47.z.string().optional()
2251
+ var MessageSendOutputSchema = import_v48.z.object({
2252
+ status: import_v48.z.enum(["sent", "queued", "failed"]),
2253
+ remoteId: import_v48.z.string().optional()
2254
+ });
2255
+ var MessageBulkRecipientSchema = import_v48.z.object({
2256
+ address: import_v48.z.string(),
2257
+ renderedBody: import_v48.z.string(),
2258
+ instanceId: import_v48.z.string().optional(),
2259
+ threadId: import_v48.z.string().optional(),
2260
+ messageId: import_v48.z.string().optional(),
2261
+ contactId: import_v48.z.string().optional()
2262
+ });
2263
+ var MessageBulkSendInputSchema = import_v48.z.object({
2264
+ channel: MessageSendChannelSchema,
2265
+ recipients: import_v48.z.array(MessageBulkRecipientSchema).min(1).max(1e4),
2266
+ schedule: import_v48.z.object({ at: import_v48.z.string() }).optional()
2267
+ });
2268
+ var MessageBulkSendOutputSchema = import_v48.z.object({
2269
+ status: import_v48.z.enum(["accepted", "failed"]),
2270
+ operationId: import_v48.z.string().optional(),
2271
+ acceptedCount: import_v48.z.number().int().nonnegative(),
2272
+ rejectedCount: import_v48.z.number().int().nonnegative().optional()
2141
2273
  });
2142
2274
  function isModelDependency(dep) {
2143
2275
  return "model" in dep;
@@ -2151,7 +2283,7 @@ function isWorkflowDependency(dep) {
2151
2283
 
2152
2284
  // src/server/index.ts
2153
2285
  var import_mcp = require("@modelcontextprotocol/sdk/server/mcp.js");
2154
- var z10 = __toESM(require("zod"));
2286
+ var z11 = __toESM(require("zod"));
2155
2287
 
2156
2288
  // src/core/service.ts
2157
2289
  var CoreApiService = class {
@@ -2260,17 +2392,20 @@ function getQueueConfigWithRetry(queueName) {
2260
2392
  }
2261
2393
 
2262
2394
  // src/server/utils/schema.ts
2263
- var z8 = __toESM(require("zod"));
2395
+ var z9 = __toESM(require("zod"));
2264
2396
  function normalizeBilling(billing) {
2265
- if (!billing || typeof billing.credits !== "number") {
2397
+ if (!billing || typeof billing !== "object") {
2266
2398
  return { credits: 0 };
2267
2399
  }
2400
+ if (typeof billing.credits !== "number") {
2401
+ return { ...billing, credits: 0 };
2402
+ }
2268
2403
  return billing;
2269
2404
  }
2270
2405
  function toJsonSchema(schema) {
2271
2406
  if (!schema) return void 0;
2272
2407
  try {
2273
- return z8.toJSONSchema(schema, {
2408
+ return z9.toJSONSchema(schema, {
2274
2409
  unrepresentable: "any"
2275
2410
  // Handle z.date(), z.bigint() etc gracefully
2276
2411
  });
@@ -2281,12 +2416,12 @@ function toJsonSchema(schema) {
2281
2416
  }
2282
2417
  function isToolSchemaWithJson(schema) {
2283
2418
  return Boolean(
2284
- schema && typeof schema === "object" && "zod" in schema && schema.zod instanceof z8.ZodType
2419
+ schema && typeof schema === "object" && "zod" in schema && schema.zod instanceof z9.ZodType
2285
2420
  );
2286
2421
  }
2287
2422
  function getZodSchema(schema) {
2288
2423
  if (!schema) return void 0;
2289
- if (schema instanceof z8.ZodType) {
2424
+ if (schema instanceof z9.ZodType) {
2290
2425
  return schema;
2291
2426
  }
2292
2427
  if (isToolSchemaWithJson(schema)) {
@@ -2433,7 +2568,7 @@ function buildToolCallErrorOutput(result) {
2433
2568
 
2434
2569
  // src/core/client.ts
2435
2570
  var import_async_hooks = require("async_hooks");
2436
- var import_v48 = require("zod/v4");
2571
+ var import_v49 = require("zod/v4");
2437
2572
  var requestConfigStorage = new import_async_hooks.AsyncLocalStorage();
2438
2573
  var globalConfig = {
2439
2574
  baseUrl: process.env.SKEDYUL_API_URL ?? process.env.SKEDYUL_NODE_URL ?? "",
@@ -3413,7 +3548,7 @@ var resource = {
3413
3548
  }
3414
3549
  };
3415
3550
  function zodSchemaToJsonSchema(schema) {
3416
- return import_v48.z.toJSONSchema(schema);
3551
+ return import_v49.z.toJSONSchema(schema);
3417
3552
  }
3418
3553
  var ai = {
3419
3554
  /**
@@ -3639,10 +3774,27 @@ function getActiveQueuedOperation() {
3639
3774
  function getActiveQueuedOperationStack() {
3640
3775
  return activeOperationStackStorage.getStore() ?? [];
3641
3776
  }
3642
- function isInsidePetbooqzCalendarBookingMutex() {
3643
- return getActiveQueuedOperationStack().some(
3644
- (operation) => operation.resolved.name === "petbooqz_calendar_booking" && operation.lease !== null
3645
- );
3777
+ function getActiveMutexQueueNames() {
3778
+ const names = /* @__PURE__ */ new Set();
3779
+ for (const operation of getActiveQueuedOperationStack()) {
3780
+ if (operation.lease === null) {
3781
+ continue;
3782
+ }
3783
+ const config = getQueueConfigWithRetry(operation.resolved.name);
3784
+ if (config?.mutex === true) {
3785
+ names.add(operation.resolved.name);
3786
+ }
3787
+ }
3788
+ return [...names];
3789
+ }
3790
+ function shouldSkipNestedAcquire(queueName) {
3791
+ for (const mutexQueueName of getActiveMutexQueueNames()) {
3792
+ const config = getQueueConfigWithRetry(mutexQueueName);
3793
+ if (config?.suppressesQueues?.includes(queueName)) {
3794
+ return true;
3795
+ }
3796
+ }
3797
+ return false;
3646
3798
  }
3647
3799
  function setActiveQueuedOperationLease(lease) {
3648
3800
  const op = activeOperationStorage.getStore();
@@ -3879,6 +4031,7 @@ function buildToolMetadata(registry) {
3879
4031
  const timeout = typeof rawTimeout === "number" && rawTimeout > 0 ? rawTimeout : 1e4;
3880
4032
  const retries = typeof rawRetries === "number" && rawRetries >= 1 ? rawRetries : 1;
3881
4033
  const queueTouchPoints = tool.queueTouchPoints ?? toolConfig.queueTouchPoints;
4034
+ const rateLimitHandoff = tool.rateLimitHandoff ?? toolConfig.rateLimitHandoff;
3882
4035
  return {
3883
4036
  name: tool.name,
3884
4037
  displayName: tool.label || tool.name,
@@ -3889,11 +4042,13 @@ function buildToolMetadata(registry) {
3889
4042
  timeout,
3890
4043
  retries,
3891
4044
  queueTouchPoints,
4045
+ rateLimitHandoff,
3892
4046
  config: {
3893
4047
  timeout,
3894
4048
  retries,
3895
4049
  completionHints: toolConfig.completionHints,
3896
- queueTouchPoints
4050
+ queueTouchPoints,
4051
+ rateLimitHandoff
3897
4052
  }
3898
4053
  };
3899
4054
  });
@@ -3935,7 +4090,8 @@ function createCallToolHandler(registry, state, onMaxRequests) {
3935
4090
  }
3936
4091
  const fn = tool.handler;
3937
4092
  const args = toolArgsInput ?? {};
3938
- const estimateMode = args.estimate === true;
4093
+ const rawContextForMode = args.context ?? {};
4094
+ const estimateMode = args.estimate === true || rawContextForMode.mode === "estimate";
3939
4095
  if (!estimateMode) {
3940
4096
  state.incrementRequestCount();
3941
4097
  if (state.shouldShutdown()) {
@@ -4422,7 +4578,8 @@ function serializeConfig(config) {
4422
4578
  // Read timeout/retries from top-level first, then fallback to config
4423
4579
  timeout: tool.timeout ?? tool.config?.timeout,
4424
4580
  retries: tool.retries ?? tool.config?.retries,
4425
- queueTouchPoints: tool.queueTouchPoints ?? tool.config?.queueTouchPoints
4581
+ queueTouchPoints: tool.queueTouchPoints ?? tool.config?.queueTouchPoints,
4582
+ rateLimitHandoff: tool.rateLimitHandoff ?? tool.config?.rateLimitHandoff
4426
4583
  })) : [],
4427
4584
  webhooks: webhookRegistry ? Object.values(webhookRegistry).map((w) => ({
4428
4585
  name: w.name,
@@ -5117,11 +5274,12 @@ async function handleMcpRoute(req, ctx) {
5117
5274
  async function handleMcpToolsCall(params, id, ctx) {
5118
5275
  const toolName = params?.name;
5119
5276
  const rawArgs = params?.arguments ?? {};
5120
- const hasSkedyulFormat = "inputs" in rawArgs || "env" in rawArgs || "context" in rawArgs || "invocation" in rawArgs;
5277
+ const hasSkedyulFormat = "inputs" in rawArgs || "env" in rawArgs || "context" in rawArgs || "invocation" in rawArgs || "estimate" in rawArgs;
5121
5278
  const toolInputs = hasSkedyulFormat ? rawArgs.inputs ?? {} : rawArgs;
5122
5279
  const toolContext = hasSkedyulFormat ? rawArgs.context : void 0;
5123
5280
  const toolEnv = hasSkedyulFormat ? rawArgs.env : void 0;
5124
5281
  const toolInvocation = hasSkedyulFormat ? rawArgs.invocation : void 0;
5282
+ const estimate = hasSkedyulFormat && rawArgs.estimate === true;
5125
5283
  const found = findToolInRegistry(ctx.registry, toolName);
5126
5284
  if (!found) {
5127
5285
  return {
@@ -5146,7 +5304,8 @@ async function handleMcpToolsCall(params, id, ctx) {
5146
5304
  inputs: validatedInputs,
5147
5305
  context: toolContext,
5148
5306
  env: toolEnv,
5149
- invocation: toolInvocation
5307
+ invocation: toolInvocation,
5308
+ estimate
5150
5309
  });
5151
5310
  let result;
5152
5311
  const isFailure2 = isToolCallFailure(toolResult);
@@ -5604,12 +5763,12 @@ function createSkedyulServer(config) {
5604
5763
  const toolDisplayName = tool.label || toolName;
5605
5764
  const inputZodSchema = getZodSchema(tool.inputSchema);
5606
5765
  const outputZodSchema = getZodSchema(tool.outputSchema);
5607
- const wrappedInputSchema = z10.object({
5608
- inputs: inputZodSchema ?? z10.record(z10.string(), z10.unknown()).optional(),
5609
- context: z10.record(z10.string(), z10.unknown()).optional(),
5610
- env: z10.record(z10.string(), z10.string()).optional(),
5611
- invocation: z10.record(z10.string(), z10.unknown()).optional(),
5612
- estimate: z10.boolean().optional()
5766
+ const wrappedInputSchema = z11.object({
5767
+ inputs: inputZodSchema ?? z11.record(z11.string(), z11.unknown()).optional(),
5768
+ context: z11.record(z11.string(), z11.unknown()).optional(),
5769
+ env: z11.record(z11.string(), z11.string()).optional(),
5770
+ invocation: z11.record(z11.string(), z11.unknown()).optional(),
5771
+ estimate: z11.boolean().optional()
5613
5772
  }).passthrough();
5614
5773
  mcpServer.registerTool(
5615
5774
  toolName,
@@ -6318,7 +6477,7 @@ async function executeWithRetries(operation, maxRetries) {
6318
6477
  operation.resolved.queueKey,
6319
6478
  rateLimitCtx
6320
6479
  );
6321
- if (operation.resolved.name === "petbooqz_api" && isInsidePetbooqzCalendarBookingMutex()) {
6480
+ if (shouldSkipNestedAcquire(operation.resolved.name)) {
6322
6481
  return operation.fn();
6323
6482
  }
6324
6483
  if (preAcquired) {
@@ -6422,86 +6581,86 @@ async function queuedFetchResponse(queueInput, url, init) {
6422
6581
  }
6423
6582
 
6424
6583
  // src/triggers/types.ts
6425
- var import_v49 = require("zod/v4");
6426
- var CRMDataSchema = import_v49.z.object({
6427
- model: import_v49.z.string(),
6428
- instanceId: import_v49.z.string(),
6429
- data: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown())
6584
+ var import_v410 = require("zod/v4");
6585
+ var CRMDataSchema = import_v410.z.object({
6586
+ model: import_v410.z.string(),
6587
+ instanceId: import_v410.z.string(),
6588
+ data: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown())
6430
6589
  });
6431
- var SenderContextSchema2 = import_v49.z.object({
6590
+ var SenderContextSchema2 = import_v410.z.object({
6432
6591
  kind: ParticipantKindSchema,
6433
- displayName: import_v49.z.string().optional(),
6592
+ displayName: import_v410.z.string().optional(),
6434
6593
  crm: CRMDataSchema.optional()
6435
6594
  });
6436
- var ThreadContextItemSchema2 = import_v49.z.object({
6437
- handle: import_v49.z.string(),
6438
- model: import_v49.z.string(),
6439
- instanceId: import_v49.z.string(),
6440
- data: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown()).optional()
6595
+ var ThreadContextItemSchema2 = import_v410.z.object({
6596
+ handle: import_v410.z.string(),
6597
+ model: import_v410.z.string(),
6598
+ instanceId: import_v410.z.string(),
6599
+ data: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()).optional()
6441
6600
  });
6442
- var ParticipantContextSchema = import_v49.z.object({
6443
- id: import_v49.z.string(),
6601
+ var ParticipantContextSchema = import_v410.z.object({
6602
+ id: import_v410.z.string(),
6444
6603
  kind: ParticipantKindSchema,
6445
- displayName: import_v49.z.string().optional(),
6446
- contactId: import_v49.z.string().optional(),
6447
- memberId: import_v49.z.string().optional(),
6448
- agentId: import_v49.z.string().optional(),
6449
- workflowId: import_v49.z.string().optional()
6604
+ displayName: import_v410.z.string().optional(),
6605
+ contactId: import_v410.z.string().optional(),
6606
+ memberId: import_v410.z.string().optional(),
6607
+ agentId: import_v410.z.string().optional(),
6608
+ workflowId: import_v410.z.string().optional()
6450
6609
  });
6451
- var TriggerContextSchema = import_v49.z.object({
6610
+ var TriggerContextSchema = import_v410.z.object({
6452
6611
  // The event that triggered this
6453
- event: import_v49.z.object({
6612
+ event: import_v410.z.object({
6454
6613
  type: EventTypeSchema,
6455
- payload: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown()),
6614
+ payload: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()),
6456
6615
  participant: ParticipantContextSchema.optional()
6457
6616
  }),
6458
6617
  // Thread information
6459
- thread: import_v49.z.object({
6460
- id: import_v49.z.string(),
6461
- title: import_v49.z.string().optional(),
6462
- status: import_v49.z.string().optional(),
6618
+ thread: import_v410.z.object({
6619
+ id: import_v410.z.string(),
6620
+ title: import_v410.z.string().optional(),
6621
+ status: import_v410.z.string().optional(),
6463
6622
  sender: SenderContextSchema2.optional(),
6464
- context: import_v49.z.record(import_v49.z.string(), CRMDataSchema).optional(),
6465
- participants: import_v49.z.array(ParticipantContextSchema).optional()
6623
+ context: import_v410.z.record(import_v410.z.string(), CRMDataSchema).optional(),
6624
+ participants: import_v410.z.array(ParticipantContextSchema).optional()
6466
6625
  }),
6467
6626
  // Workplace info
6468
- workplace: import_v49.z.object({
6469
- id: import_v49.z.string(),
6470
- name: import_v49.z.string().optional(),
6471
- settings: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown()).optional()
6627
+ workplace: import_v410.z.object({
6628
+ id: import_v410.z.string(),
6629
+ name: import_v410.z.string().optional(),
6630
+ settings: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()).optional()
6472
6631
  })
6473
6632
  });
6474
- var InputMappingSchema = import_v49.z.record(import_v49.z.string(), import_v49.z.string());
6475
- var EventConditionsSchema = import_v49.z.record(import_v49.z.string(), import_v49.z.string());
6476
- var TriggerConfigSchema = import_v49.z.object({
6477
- id: import_v49.z.string(),
6478
- workflowId: import_v49.z.string(),
6479
- workflowVersionId: import_v49.z.string().optional(),
6480
- workplaceId: import_v49.z.string(),
6481
- handle: import_v49.z.string(),
6633
+ var InputMappingSchema = import_v410.z.record(import_v410.z.string(), import_v410.z.string());
6634
+ var EventConditionsSchema = import_v410.z.record(import_v410.z.string(), import_v410.z.string());
6635
+ var TriggerConfigSchema = import_v410.z.object({
6636
+ id: import_v410.z.string(),
6637
+ workflowId: import_v410.z.string(),
6638
+ workflowVersionId: import_v410.z.string().optional(),
6639
+ workplaceId: import_v410.z.string(),
6640
+ handle: import_v410.z.string(),
6482
6641
  // Input mappings: how to resolve workflow inputs from thread context
6483
6642
  inputMappings: InputMappingSchema.optional(),
6484
6643
  // Event conditions: additional workplace-specific conditions
6485
6644
  eventConditions: EventConditionsSchema.optional(),
6486
6645
  // Workplace-specific config overrides
6487
- config: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown()).optional(),
6646
+ config: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()).optional(),
6488
6647
  // Trigger type and status
6489
- type: import_v49.z.string().optional(),
6490
- isEnabled: import_v49.z.boolean().optional()
6648
+ type: import_v410.z.string().optional(),
6649
+ isEnabled: import_v410.z.boolean().optional()
6491
6650
  });
6492
- var ResolvedTriggerSchema = import_v49.z.object({
6651
+ var ResolvedTriggerSchema = import_v410.z.object({
6493
6652
  trigger: TriggerConfigSchema,
6494
- workflow: import_v49.z.object({
6495
- id: import_v49.z.string(),
6496
- handle: import_v49.z.string(),
6497
- name: import_v49.z.string().optional(),
6498
- inputs: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown()).optional(),
6499
- events: import_v49.z.object({
6500
- subscribes: import_v49.z.array(EventTypeSchema).optional(),
6501
- condition: import_v49.z.string().optional()
6653
+ workflow: import_v410.z.object({
6654
+ id: import_v410.z.string(),
6655
+ handle: import_v410.z.string(),
6656
+ name: import_v410.z.string().optional(),
6657
+ inputs: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()).optional(),
6658
+ events: import_v410.z.object({
6659
+ subscribes: import_v410.z.array(EventTypeSchema).optional(),
6660
+ condition: import_v410.z.string().optional()
6502
6661
  }).optional()
6503
6662
  }),
6504
- inputs: import_v49.z.record(import_v49.z.string(), import_v49.z.unknown()),
6663
+ inputs: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()),
6505
6664
  context: TriggerContextSchema
6506
6665
  });
6507
6666
  var TriggerResolutionError = class extends Error {
@@ -6512,13 +6671,13 @@ var TriggerResolutionError = class extends Error {
6512
6671
  this.name = "TriggerResolutionError";
6513
6672
  }
6514
6673
  };
6515
- var WorkflowInputDefinitionSchema = import_v49.z.object({
6516
- type: import_v49.z.string(),
6517
- required: import_v49.z.boolean().optional(),
6518
- description: import_v49.z.string().optional(),
6519
- default: import_v49.z.unknown().optional()
6674
+ var WorkflowInputDefinitionSchema = import_v410.z.object({
6675
+ type: import_v410.z.string(),
6676
+ required: import_v410.z.boolean().optional(),
6677
+ description: import_v410.z.string().optional(),
6678
+ default: import_v410.z.unknown().optional()
6520
6679
  });
6521
- var WorkflowInputSchemaSchema = import_v49.z.record(import_v49.z.string(), WorkflowInputDefinitionSchema);
6680
+ var WorkflowInputSchemaSchema = import_v410.z.record(import_v410.z.string(), WorkflowInputDefinitionSchema);
6522
6681
 
6523
6682
  // src/triggers/resolver.ts
6524
6683
  function evaluateTemplate(template, context) {
@@ -6600,67 +6759,67 @@ function matchesTrigger(trigger, eventType, context) {
6600
6759
  }
6601
6760
 
6602
6761
  // src/workflows/types.ts
6603
- var import_v410 = require("zod/v4");
6762
+ var import_v411 = require("zod/v4");
6604
6763
  var WORKFLOW_SCHEMA_VERSION = "https://skedyul.com/schemas/workflow/v1";
6605
- var WorkflowInputSchema = import_v410.z.object({
6606
- type: import_v410.z.string(),
6607
- required: import_v410.z.boolean().optional().default(false),
6608
- description: import_v410.z.string().optional(),
6609
- default: import_v410.z.unknown().optional()
6610
- });
6611
- var WorkflowStepInputSchema = import_v410.z.union([import_v410.z.string(), import_v410.z.number(), import_v410.z.boolean(), import_v410.z.record(import_v410.z.string(), import_v410.z.unknown())]);
6612
- var WorkflowStepSchema = import_v410.z.object({
6764
+ var WorkflowInputSchema = import_v411.z.object({
6765
+ type: import_v411.z.string(),
6766
+ required: import_v411.z.boolean().optional().default(false),
6767
+ description: import_v411.z.string().optional(),
6768
+ default: import_v411.z.unknown().optional()
6769
+ });
6770
+ var WorkflowStepInputSchema = import_v411.z.union([import_v411.z.string(), import_v411.z.number(), import_v411.z.boolean(), import_v411.z.record(import_v411.z.string(), import_v411.z.unknown())]);
6771
+ var WorkflowStepSchema = import_v411.z.object({
6613
6772
  // Service and command
6614
- service: import_v410.z.string(),
6615
- cmd: import_v410.z.string(),
6773
+ service: import_v411.z.string(),
6774
+ cmd: import_v411.z.string(),
6616
6775
  // Dependencies
6617
- needs: import_v410.z.array(import_v410.z.string()).optional(),
6776
+ needs: import_v411.z.array(import_v411.z.string()).optional(),
6618
6777
  // Inputs (Liquid templates supported)
6619
- inputs: import_v410.z.record(import_v410.z.string(), WorkflowStepInputSchema).optional(),
6778
+ inputs: import_v411.z.record(import_v411.z.string(), WorkflowStepInputSchema).optional(),
6620
6779
  // Conditional execution
6621
- condition: import_v410.z.string().optional(),
6780
+ condition: import_v411.z.string().optional(),
6622
6781
  // Retry configuration
6623
- retry: import_v410.z.object({
6624
- attempts: import_v410.z.number().optional(),
6625
- backoff: import_v410.z.enum(["linear", "exponential"]).optional()
6782
+ retry: import_v411.z.object({
6783
+ attempts: import_v411.z.number().optional(),
6784
+ backoff: import_v411.z.enum(["linear", "exponential"]).optional()
6626
6785
  }).optional(),
6627
6786
  // Timeout
6628
- timeout: import_v410.z.string().optional()
6629
- });
6630
- var WorkflowRuntimeSchema = import_v410.z.object({
6631
- durable: import_v410.z.boolean().optional().default(true),
6632
- timeout: import_v410.z.string().optional(),
6633
- retry: import_v410.z.object({
6634
- attempts: import_v410.z.number().optional(),
6635
- backoff: import_v410.z.enum(["linear", "exponential"]).optional()
6787
+ timeout: import_v411.z.string().optional()
6788
+ });
6789
+ var WorkflowRuntimeSchema = import_v411.z.object({
6790
+ durable: import_v411.z.boolean().optional().default(true),
6791
+ timeout: import_v411.z.string().optional(),
6792
+ retry: import_v411.z.object({
6793
+ attempts: import_v411.z.number().optional(),
6794
+ backoff: import_v411.z.enum(["linear", "exponential"]).optional()
6636
6795
  }).optional()
6637
6796
  });
6638
- var WorkflowYAMLSchema = import_v410.z.object({
6797
+ var WorkflowYAMLSchema = import_v411.z.object({
6639
6798
  // Schema version
6640
- $schema: import_v410.z.string().optional(),
6799
+ $schema: import_v411.z.string().optional(),
6641
6800
  // Identity
6642
- handle: import_v410.z.string(),
6643
- name: import_v410.z.string(),
6644
- version: import_v410.z.string().optional(),
6645
- description: import_v410.z.string().optional(),
6801
+ handle: import_v411.z.string(),
6802
+ name: import_v411.z.string(),
6803
+ version: import_v411.z.string().optional(),
6804
+ description: import_v411.z.string().optional(),
6646
6805
  // Inputs this workflow needs (portable, declared in YAML)
6647
- inputs: import_v410.z.record(import_v410.z.string(), WorkflowInputSchema).optional(),
6806
+ inputs: import_v411.z.record(import_v411.z.string(), WorkflowInputSchema).optional(),
6648
6807
  // Event subscriptions and conditions
6649
6808
  events: EventsConfigSchema.optional(),
6650
6809
  // Deterministic steps
6651
- steps: import_v410.z.record(import_v410.z.string(), WorkflowStepSchema),
6810
+ steps: import_v411.z.record(import_v411.z.string(), WorkflowStepSchema),
6652
6811
  // Runtime configuration
6653
6812
  runtime: WorkflowRuntimeSchema.optional()
6654
6813
  });
6655
- var WorkflowMetadataSchema = import_v410.z.object({
6656
- handle: import_v410.z.string(),
6657
- name: import_v410.z.string(),
6658
- version: import_v410.z.string().optional(),
6659
- description: import_v410.z.string().optional(),
6660
- inputs: import_v410.z.record(import_v410.z.string(), WorkflowInputDefinitionSchema).optional(),
6814
+ var WorkflowMetadataSchema = import_v411.z.object({
6815
+ handle: import_v411.z.string(),
6816
+ name: import_v411.z.string(),
6817
+ version: import_v411.z.string().optional(),
6818
+ description: import_v411.z.string().optional(),
6819
+ inputs: import_v411.z.record(import_v411.z.string(), WorkflowInputDefinitionSchema).optional(),
6661
6820
  events: EventsConfigSchema.optional()
6662
6821
  });
6663
- var WorkflowExecutionStatusSchema = import_v410.z.enum([
6822
+ var WorkflowExecutionStatusSchema = import_v411.z.enum([
6664
6823
  "PENDING",
6665
6824
  "RUNNING",
6666
6825
  "COMPLETED",
@@ -6668,14 +6827,14 @@ var WorkflowExecutionStatusSchema = import_v410.z.enum([
6668
6827
  "CANCELLED",
6669
6828
  "WAITING"
6670
6829
  ]);
6671
- var WorkflowExecutionResultSchema = import_v410.z.object({
6830
+ var WorkflowExecutionResultSchema = import_v411.z.object({
6672
6831
  status: WorkflowExecutionStatusSchema,
6673
- outputs: import_v410.z.record(import_v410.z.string(), import_v410.z.unknown()).optional(),
6674
- error: import_v410.z.string().optional(),
6675
- startedAt: import_v410.z.string().datetime().optional(),
6676
- completedAt: import_v410.z.string().datetime().optional(),
6677
- cancelledAt: import_v410.z.string().datetime().optional(),
6678
- cancelReason: import_v410.z.string().optional()
6832
+ outputs: import_v411.z.record(import_v411.z.string(), import_v411.z.unknown()).optional(),
6833
+ error: import_v411.z.string().optional(),
6834
+ startedAt: import_v411.z.string().datetime().optional(),
6835
+ completedAt: import_v411.z.string().datetime().optional(),
6836
+ cancelledAt: import_v411.z.string().datetime().optional(),
6837
+ cancelReason: import_v411.z.string().optional()
6679
6838
  });
6680
6839
  function defineWorkflowYAML(workflow) {
6681
6840
  return WorkflowYAMLSchema.parse(workflow);
@@ -6753,8 +6912,8 @@ function getAssociationByModel(context, model) {
6753
6912
  }
6754
6913
 
6755
6914
  // src/memory/types.ts
6756
- var import_v411 = require("zod/v4");
6757
- var MemoryEntryTypeSchema = import_v411.z.enum([
6915
+ var import_v412 = require("zod/v4");
6916
+ var MemoryEntryTypeSchema = import_v412.z.enum([
6758
6917
  "WORKING",
6759
6918
  // Current conversation context
6760
6919
  "OBSERVATION",
@@ -6764,80 +6923,80 @@ var MemoryEntryTypeSchema = import_v411.z.enum([
6764
6923
  "SEMANTIC"
6765
6924
  // Semantic memory for retrieval
6766
6925
  ]);
6767
- var MemoryEntrySchema = import_v411.z.object({
6768
- id: import_v411.z.string(),
6926
+ var MemoryEntrySchema = import_v412.z.object({
6927
+ id: import_v412.z.string(),
6769
6928
  type: MemoryEntryTypeSchema,
6770
- key: import_v411.z.string(),
6771
- value: import_v411.z.unknown(),
6772
- metadata: import_v411.z.record(import_v411.z.string(), import_v411.z.unknown()).optional(),
6773
- expiresAt: import_v411.z.string().datetime().optional(),
6774
- createdAt: import_v411.z.string().datetime(),
6775
- updatedAt: import_v411.z.string().datetime()
6776
- });
6777
- var WorkingMemoryConfigSchema2 = import_v411.z.object({
6778
- strategy: import_v411.z.enum(["full", "rolling_summary", "sliding_window"]).default("rolling_summary"),
6779
- maxTokens: import_v411.z.number().default(8e3),
6780
- summarizeAt: import_v411.z.number().optional(),
6781
- ttl: import_v411.z.string().optional()
6782
- });
6783
- var SemanticMemoryConfigSchema2 = import_v411.z.object({
6784
- enabled: import_v411.z.boolean().default(false),
6785
- topK: import_v411.z.number().default(5),
6786
- scope: import_v411.z.enum(["thread", "instance", "workspace"]).default("thread"),
6787
- minScore: import_v411.z.number().default(0.7)
6788
- });
6789
- var ExternalMemoryConfigSchema2 = import_v411.z.object({
6790
- namespace: import_v411.z.string(),
6791
- ttl: import_v411.z.string().optional()
6792
- });
6793
- var MemoryConfigSchema = import_v411.z.object({
6929
+ key: import_v412.z.string(),
6930
+ value: import_v412.z.unknown(),
6931
+ metadata: import_v412.z.record(import_v412.z.string(), import_v412.z.unknown()).optional(),
6932
+ expiresAt: import_v412.z.string().datetime().optional(),
6933
+ createdAt: import_v412.z.string().datetime(),
6934
+ updatedAt: import_v412.z.string().datetime()
6935
+ });
6936
+ var WorkingMemoryConfigSchema2 = import_v412.z.object({
6937
+ strategy: import_v412.z.enum(["full", "rolling_summary", "sliding_window"]).default("rolling_summary"),
6938
+ maxTokens: import_v412.z.number().default(8e3),
6939
+ summarizeAt: import_v412.z.number().optional(),
6940
+ ttl: import_v412.z.string().optional()
6941
+ });
6942
+ var SemanticMemoryConfigSchema2 = import_v412.z.object({
6943
+ enabled: import_v412.z.boolean().default(false),
6944
+ topK: import_v412.z.number().default(5),
6945
+ scope: import_v412.z.enum(["thread", "instance", "workspace"]).default("thread"),
6946
+ minScore: import_v412.z.number().default(0.7)
6947
+ });
6948
+ var ExternalMemoryConfigSchema2 = import_v412.z.object({
6949
+ namespace: import_v412.z.string(),
6950
+ ttl: import_v412.z.string().optional()
6951
+ });
6952
+ var MemoryConfigSchema = import_v412.z.object({
6794
6953
  working: WorkingMemoryConfigSchema2.optional(),
6795
6954
  semantic: SemanticMemoryConfigSchema2.optional(),
6796
6955
  external: ExternalMemoryConfigSchema2.optional(),
6797
- persistent: import_v411.z.object({
6798
- namespace: import_v411.z.string()
6956
+ persistent: import_v412.z.object({
6957
+ namespace: import_v412.z.string()
6799
6958
  }).optional()
6800
6959
  });
6801
- var MemoryScopeSchema = import_v411.z.object({
6802
- threadId: import_v411.z.string().optional(),
6803
- participantId: import_v411.z.string().optional(),
6804
- agentId: import_v411.z.string().optional(),
6805
- workplaceId: import_v411.z.string().optional(),
6806
- namespace: import_v411.z.string().optional()
6807
- });
6808
- var MemoryQueryOptionsSchema = import_v411.z.object({
6809
- types: import_v411.z.array(MemoryEntryTypeSchema).optional(),
6810
- keys: import_v411.z.array(import_v411.z.string()).optional(),
6811
- limit: import_v411.z.number().default(100),
6812
- includeExpired: import_v411.z.boolean().default(false)
6813
- });
6814
- var ConversationSummarySchema = import_v411.z.object({
6815
- summary: import_v411.z.string(),
6816
- keyPoints: import_v411.z.array(import_v411.z.string()),
6817
- entities: import_v411.z.array(import_v411.z.object({
6818
- name: import_v411.z.string(),
6819
- type: import_v411.z.string(),
6820
- relevance: import_v411.z.number()
6960
+ var MemoryScopeSchema = import_v412.z.object({
6961
+ threadId: import_v412.z.string().optional(),
6962
+ participantId: import_v412.z.string().optional(),
6963
+ agentId: import_v412.z.string().optional(),
6964
+ workplaceId: import_v412.z.string().optional(),
6965
+ namespace: import_v412.z.string().optional()
6966
+ });
6967
+ var MemoryQueryOptionsSchema = import_v412.z.object({
6968
+ types: import_v412.z.array(MemoryEntryTypeSchema).optional(),
6969
+ keys: import_v412.z.array(import_v412.z.string()).optional(),
6970
+ limit: import_v412.z.number().default(100),
6971
+ includeExpired: import_v412.z.boolean().default(false)
6972
+ });
6973
+ var ConversationSummarySchema = import_v412.z.object({
6974
+ summary: import_v412.z.string(),
6975
+ keyPoints: import_v412.z.array(import_v412.z.string()),
6976
+ entities: import_v412.z.array(import_v412.z.object({
6977
+ name: import_v412.z.string(),
6978
+ type: import_v412.z.string(),
6979
+ relevance: import_v412.z.number()
6821
6980
  })),
6822
- lastMessageId: import_v411.z.string().optional(),
6823
- messageCount: import_v411.z.number(),
6824
- tokenCount: import_v411.z.number(),
6825
- createdAt: import_v411.z.string().datetime()
6826
- });
6827
- var AgentObservationSchema = import_v411.z.object({
6828
- observation: import_v411.z.string(),
6829
- confidence: import_v411.z.number().min(0).max(1),
6830
- source: import_v411.z.enum(["inference", "explicit", "tool_result"]),
6831
- context: import_v411.z.record(import_v411.z.string(), import_v411.z.unknown()).optional(),
6832
- createdAt: import_v411.z.string().datetime()
6833
- });
6834
- var ExternalDataCacheSchema = import_v411.z.object({
6835
- source: import_v411.z.string(),
6836
- endpoint: import_v411.z.string().optional(),
6837
- data: import_v411.z.unknown(),
6838
- fetchedAt: import_v411.z.string().datetime(),
6839
- expiresAt: import_v411.z.string().datetime().optional(),
6840
- metadata: import_v411.z.record(import_v411.z.string(), import_v411.z.unknown()).optional()
6981
+ lastMessageId: import_v412.z.string().optional(),
6982
+ messageCount: import_v412.z.number(),
6983
+ tokenCount: import_v412.z.number(),
6984
+ createdAt: import_v412.z.string().datetime()
6985
+ });
6986
+ var AgentObservationSchema = import_v412.z.object({
6987
+ observation: import_v412.z.string(),
6988
+ confidence: import_v412.z.number().min(0).max(1),
6989
+ source: import_v412.z.enum(["inference", "explicit", "tool_result"]),
6990
+ context: import_v412.z.record(import_v412.z.string(), import_v412.z.unknown()).optional(),
6991
+ createdAt: import_v412.z.string().datetime()
6992
+ });
6993
+ var ExternalDataCacheSchema = import_v412.z.object({
6994
+ source: import_v412.z.string(),
6995
+ endpoint: import_v412.z.string().optional(),
6996
+ data: import_v412.z.unknown(),
6997
+ fetchedAt: import_v412.z.string().datetime(),
6998
+ expiresAt: import_v412.z.string().datetime().optional(),
6999
+ metadata: import_v412.z.record(import_v412.z.string(), import_v412.z.unknown()).optional()
6841
7000
  });
6842
7001
 
6843
7002
  // src/memory/service.ts
@@ -7428,16 +7587,16 @@ function estimateTokens(agent, skills) {
7428
7587
  }
7429
7588
 
7430
7589
  // src/scheduling/types.ts
7431
- var import_v412 = require("zod/v4");
7432
- var TimeStampSchema = import_v412.z.union([
7433
- import_v412.z.number().describe("Hour of day (0-23)"),
7434
- import_v412.z.object({
7435
- hour: import_v412.z.number(),
7436
- minute: import_v412.z.number().optional().default(0),
7437
- second: import_v412.z.number().optional().default(0)
7590
+ var import_v413 = require("zod/v4");
7591
+ var TimeStampSchema = import_v413.z.union([
7592
+ import_v413.z.number().describe("Hour of day (0-23)"),
7593
+ import_v413.z.object({
7594
+ hour: import_v413.z.number(),
7595
+ minute: import_v413.z.number().optional().default(0),
7596
+ second: import_v413.z.number().optional().default(0)
7438
7597
  })
7439
7598
  ]);
7440
- var DayOfWeekSchema = import_v412.z.enum([
7599
+ var DayOfWeekSchema = import_v413.z.enum([
7441
7600
  "monday",
7442
7601
  "tuesday",
7443
7602
  "wednesday",
@@ -7446,13 +7605,13 @@ var DayOfWeekSchema = import_v412.z.enum([
7446
7605
  "saturday",
7447
7606
  "sunday"
7448
7607
  ]);
7449
- var TimeWindowSlotSchema = import_v412.z.object({
7608
+ var TimeWindowSlotSchema = import_v413.z.object({
7450
7609
  startTime: TimeStampSchema,
7451
7610
  endTime: TimeStampSchema,
7452
- days: import_v412.z.array(DayOfWeekSchema),
7453
- timezone: import_v412.z.string().optional()
7611
+ days: import_v413.z.array(DayOfWeekSchema),
7612
+ timezone: import_v413.z.string().optional()
7454
7613
  });
7455
- var WaitUnitSchema = import_v412.z.enum([
7614
+ var WaitUnitSchema = import_v413.z.enum([
7456
7615
  "second",
7457
7616
  "seconds",
7458
7617
  "minute",
@@ -7468,17 +7627,17 @@ var WaitUnitSchema = import_v412.z.enum([
7468
7627
  "year",
7469
7628
  "years"
7470
7629
  ]);
7471
- var WaitInputRelativeSchema = import_v412.z.object({
7472
- mode: import_v412.z.literal("relative"),
7473
- amount: import_v412.z.number(),
7630
+ var WaitInputRelativeSchema = import_v413.z.object({
7631
+ mode: import_v413.z.literal("relative"),
7632
+ amount: import_v413.z.number(),
7474
7633
  unit: WaitUnitSchema,
7475
- windows: import_v412.z.array(TimeWindowSlotSchema).optional()
7634
+ windows: import_v413.z.array(TimeWindowSlotSchema).optional()
7476
7635
  });
7477
- var WaitInputAbsoluteSchema = import_v412.z.object({
7478
- mode: import_v412.z.literal("absolute"),
7479
- scheduleAt: import_v412.z.union([import_v412.z.string(), import_v412.z.number()])
7636
+ var WaitInputAbsoluteSchema = import_v413.z.object({
7637
+ mode: import_v413.z.literal("absolute"),
7638
+ scheduleAt: import_v413.z.union([import_v413.z.string(), import_v413.z.number()])
7480
7639
  });
7481
- var WaitInputSchema = import_v412.z.union([
7640
+ var WaitInputSchema = import_v413.z.union([
7482
7641
  WaitInputRelativeSchema,
7483
7642
  WaitInputAbsoluteSchema
7484
7643
  ]);
@@ -7788,8 +7947,62 @@ function isTimeInPolicy(date, policy) {
7788
7947
  return false;
7789
7948
  }
7790
7949
 
7950
+ // src/tools/sms/gsm7.ts
7951
+ var GSM7_BASIC = `@\xA3$\xA5\xE8\xE9\xF9\xEC\xF2\xC7
7952
+ \xD8\xF8\r\xC5\xE5\u0394_\u03A6\u0393\u039B\u03A9\u03A0\u03A8\u03A3\u0398\u039E\xC6\xE6\xDF\xC9 !"#\xA4%&'()*+,-./0123456789:;<=>?\xA1ABCDEFGHIJKLMNOPQRSTUVWXYZ\xC4\xD6\xD1\xDC\xA7\xBFabcdefghijklmnopqrstuvwxyz\xE4\xF6\xF1\xFC\xE0`;
7953
+ var GSM7_EXTENDED = "^{}\\[~]|\u20AC";
7954
+ var GSM7_BASIC_SET = new Set(GSM7_BASIC.split(""));
7955
+ var GSM7_EXTENDED_SET = new Set(GSM7_EXTENDED.split(""));
7956
+ function toGsm7(value) {
7957
+ if (value === null || value === void 0) {
7958
+ return "";
7959
+ }
7960
+ const str = String(value);
7961
+ let result = "";
7962
+ for (const char of str) {
7963
+ if (GSM7_BASIC_SET.has(char) || GSM7_EXTENDED_SET.has(char)) {
7964
+ result += char;
7965
+ }
7966
+ }
7967
+ return result;
7968
+ }
7969
+ function isGsm7Character(char) {
7970
+ return GSM7_BASIC_SET.has(char) || GSM7_EXTENDED_SET.has(char);
7971
+ }
7972
+ function countGsm7Septets(text) {
7973
+ let septets = 0;
7974
+ for (const char of text) {
7975
+ septets += GSM7_EXTENDED_SET.has(char) ? 2 : 1;
7976
+ }
7977
+ return septets;
7978
+ }
7979
+ function estimateSmsSegments(text) {
7980
+ const normalized = text ?? "";
7981
+ const characters = [...normalized].length;
7982
+ if (characters === 0) {
7983
+ return { encoding: "GSM-7", characters: 0, septets: 0, segments: 0 };
7984
+ }
7985
+ const isGsm7 = [...normalized].every(isGsm7Character);
7986
+ if (isGsm7) {
7987
+ const septets = countGsm7Septets(normalized);
7988
+ const segments2 = septets <= 160 ? 1 : Math.ceil(septets / 153);
7989
+ return {
7990
+ encoding: "GSM-7",
7991
+ characters,
7992
+ septets,
7993
+ segments: segments2
7994
+ };
7995
+ }
7996
+ const segments = characters <= 70 ? 1 : Math.ceil(characters / 67);
7997
+ return {
7998
+ encoding: "UCS-2",
7999
+ characters,
8000
+ segments
8001
+ };
8002
+ }
8003
+
7791
8004
  // src/index.ts
7792
- var index_default = { z: import_v413.z };
8005
+ var index_default = { z: import_v414.z };
7793
8006
  // Annotate the CommonJS export names for ESM import in node:
7794
8007
  0 && (module.exports = {
7795
8008
  AgentContextSchema,
@@ -7846,6 +8059,7 @@ var index_default = { z: import_v413.z };
7846
8059
  EnvSchemaSchema,
7847
8060
  EnvVariableDefinitionSchema,
7848
8061
  EnvVisibilitySchema,
8062
+ EstimationSchema,
7849
8063
  EventConditionsSchema,
7850
8064
  EventSubscriptionSchema,
7851
8065
  EventTypeSchema,
@@ -7887,6 +8101,9 @@ var index_default = { z: import_v413.z };
7887
8101
  MemoryQueryOptionsSchema,
7888
8102
  MemoryScopeSchema,
7889
8103
  MemoryService,
8104
+ MessageBulkRecipientSchema,
8105
+ MessageBulkSendInputSchema,
8106
+ MessageBulkSendOutputSchema,
7890
8107
  MessageEventPayloadSchema,
7891
8108
  MessageSendAttachmentSchema,
7892
8109
  MessageSendChannelSchema,
@@ -7905,6 +8122,7 @@ var index_default = { z: import_v413.z };
7905
8122
  ModelDependencySchema,
7906
8123
  ModelFieldDefinitionSchema,
7907
8124
  ModelMapperBlockDefinitionSchema,
8125
+ MoneyMinorRangeSchema,
7908
8126
  NavigationBreadcrumbSchema,
7909
8127
  NavigationConfigSchema,
7910
8128
  NavigationItemSchema,
@@ -8008,15 +8226,18 @@ var index_default = { z: import_v413.z };
8008
8226
  communicationChannel,
8009
8227
  compileAgent,
8010
8228
  compileWorkflow,
8229
+ computeSkewedExpectedMinorUnits,
8011
8230
  configure,
8012
8231
  createAuthError,
8013
8232
  createConflictError,
8014
8233
  createContextLogger,
8015
8234
  createErrorResponse,
8235
+ createEstimation,
8016
8236
  createExternalError,
8017
8237
  createInMemoryService,
8018
8238
  createInstanceClient,
8019
8239
  createListResponse,
8240
+ createMoneyMinorRange,
8020
8241
  createNotFoundError,
8021
8242
  createPermissionError,
8022
8243
  createQueueHandle,
@@ -8041,11 +8262,14 @@ var index_default = { z: import_v413.z };
8041
8262
  defineSkill,
8042
8263
  defineWorkflow,
8043
8264
  defineWorkflowYAML,
8265
+ estimateSmsSegments,
8044
8266
  evaluateCondition,
8045
8267
  evaluateTemplate,
8046
8268
  event,
8047
8269
  file,
8048
8270
  formatContextForPrompt,
8271
+ formatMoneyMinorEstimate,
8272
+ formatMoneyMinorRange,
8049
8273
  formatSkillInstructions,
8050
8274
  getAllEnvKeys,
8051
8275
  getAssociationByModel,
@@ -8071,6 +8295,7 @@ var index_default = { z: import_v413.z };
8071
8295
  isWorkflowDependency,
8072
8296
  matchesTrigger,
8073
8297
  parseCRMSchema,
8298
+ parseEstimationFromBilling,
8074
8299
  queuedFetch,
8075
8300
  queuedFetchResponse,
8076
8301
  registerQueueConfig,
@@ -8084,6 +8309,7 @@ var index_default = { z: import_v413.z };
8084
8309
  safeParseCRMSchema,
8085
8310
  safeParseConfig,
8086
8311
  server,
8312
+ toGsm7,
8087
8313
  token,
8088
8314
  validateCRMSchema,
8089
8315
  validateSkillYAML,