skedyul 1.4.4 → 1.4.7

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
@@ -89,6 +89,7 @@ __export(index_exports, {
89
89
  EventSubscriptionSchema: () => EventSubscriptionSchema,
90
90
  EventTypeSchema: () => EventTypeSchema,
91
91
  EventWaitSchema: () => EventWaitSchema,
92
+ EventWiringPanelComponentDefinitionSchema: () => EventWiringPanelComponentDefinitionSchema,
92
93
  EventsConfigSchema: () => EventsConfigSchema,
93
94
  ExternalDataCacheSchema: () => ExternalDataCacheSchema,
94
95
  ExternalMemoryConfigSchema: () => ExternalMemoryConfigSchema2,
@@ -173,6 +174,7 @@ __export(index_exports, {
173
174
  QueueNotFoundError: () => QueueNotFoundError,
174
175
  QueuedFetchExhaustedError: () => QueuedFetchExhaustedError,
175
176
  RateLimitBackendError: () => RateLimitBackendError,
177
+ RateLimitExceededError: () => RateLimitExceededError,
176
178
  RelationshipCardinalitySchema: () => RelationshipCardinalitySchema,
177
179
  RelationshipDefinitionSchema: () => RelationshipDefinitionSchema,
178
180
  RelationshipExtensionSchema: () => RelationshipExtensionSchema,
@@ -717,7 +719,9 @@ var ThreadEventTypeSchema = import_v43.z.enum([
717
719
  "thread.workflow.completed",
718
720
  // Scheduled events
719
721
  "thread.follow_up.due",
720
- "thread.reminder.due"
722
+ "thread.reminder.due",
723
+ // Signal events
724
+ "thread.signal.created"
721
725
  ]);
722
726
  var CustomEventTypeSchema = import_v43.z.string().regex(/^custom\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/, {
723
727
  message: "Custom event type must match pattern: custom.{namespace}.{event}"
@@ -1809,6 +1813,21 @@ var AlertComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1809
1813
  variant: import_v47.z.enum(["default", "destructive"]).optional()
1810
1814
  })
1811
1815
  });
1816
+ var EventWiringPanelComponentDefinitionSchema = FormV2StylePropsSchema.extend({
1817
+ component: import_v47.z.literal("EventWiringPanel"),
1818
+ props: import_v47.z.object({
1819
+ eventTypes: import_v47.z.array(
1820
+ import_v47.z.object({
1821
+ type: import_v47.z.string(),
1822
+ label: import_v47.z.string(),
1823
+ glofoxType: import_v47.z.string().optional(),
1824
+ description: import_v47.z.string().optional(),
1825
+ icon: import_v47.z.string().optional()
1826
+ })
1827
+ ),
1828
+ recommendedWorkflowHandle: import_v47.z.string().optional()
1829
+ })
1830
+ });
1812
1831
  var ModalFormDefinitionSchema = import_v47.z.object({
1813
1832
  header: PageFormHeaderSchema,
1814
1833
  handler: import_v47.z.string(),
@@ -1849,7 +1868,8 @@ var FormV2ComponentDefinitionSchema = import_v47.z.discriminatedUnion("component
1849
1868
  FileSettingComponentDefinitionSchema,
1850
1869
  ListComponentDefinitionSchema,
1851
1870
  EmptyFormComponentDefinitionSchema,
1852
- AlertComponentDefinitionSchema
1871
+ AlertComponentDefinitionSchema,
1872
+ EventWiringPanelComponentDefinitionSchema
1853
1873
  ]);
1854
1874
  var FormV2PropsDefinitionSchema = import_v47.z.object({
1855
1875
  formVersion: import_v47.z.literal("v2"),
@@ -3679,6 +3699,57 @@ var AppAuthInvalidError = class extends Error {
3679
3699
  }
3680
3700
  };
3681
3701
 
3702
+ // src/ratelimit/errors.ts
3703
+ var QueueContextError = class extends Error {
3704
+ constructor(message) {
3705
+ super(message);
3706
+ this.code = "QUEUE_CONTEXT_ERROR";
3707
+ this.name = "QueueContextError";
3708
+ }
3709
+ };
3710
+ var QueueNotFoundError = class extends Error {
3711
+ constructor(queueName) {
3712
+ super(`Queue "${queueName}" is not defined in skedyul.config queues`);
3713
+ this.code = "QUEUE_NOT_FOUND";
3714
+ this.name = "QueueNotFoundError";
3715
+ }
3716
+ };
3717
+ var QueuedFetchExhaustedError = class extends Error {
3718
+ constructor(attempts, maxRetries, causeError) {
3719
+ super(
3720
+ `queuedFetch exhausted retries after ${attempts} attempts (maxRetries=${maxRetries})`
3721
+ );
3722
+ this.code = "QUEUED_FETCH_EXHAUSTED";
3723
+ this.name = "QueuedFetchExhaustedError";
3724
+ this.attempts = attempts;
3725
+ this.maxRetries = maxRetries;
3726
+ this.causeError = causeError;
3727
+ }
3728
+ };
3729
+ var RequeueOutsideContextError = class extends Error {
3730
+ constructor() {
3731
+ super("requeue() can only be called inside an active queuedFetch operation");
3732
+ this.code = "REQUEUE_OUTSIDE_CONTEXT";
3733
+ this.name = "RequeueOutsideContextError";
3734
+ }
3735
+ };
3736
+ var RateLimitBackendError = class extends Error {
3737
+ constructor(message, statusCode) {
3738
+ super(message);
3739
+ this.code = "RATE_LIMIT_BACKEND_ERROR";
3740
+ this.name = "RateLimitBackendError";
3741
+ this.statusCode = statusCode;
3742
+ }
3743
+ };
3744
+ var RateLimitExceededError = class extends Error {
3745
+ constructor(retryAfterMs, message = "Rate limit exceeded. Please try again later.") {
3746
+ super(message);
3747
+ this.code = "RATE_LIMITED";
3748
+ this.name = "RateLimitExceededError";
3749
+ this.retryAfterMs = retryAfterMs;
3750
+ }
3751
+ };
3752
+
3682
3753
  // src/server/context-logger.ts
3683
3754
  var import_async_hooks3 = require("async_hooks");
3684
3755
  var logContextStorage = new import_async_hooks3.AsyncLocalStorage();
@@ -3776,6 +3847,7 @@ function buildToolMetadata(registry) {
3776
3847
  const rawRetries = tool.retries ?? toolConfig.retries;
3777
3848
  const timeout = typeof rawTimeout === "number" && rawTimeout > 0 ? rawTimeout : 1e4;
3778
3849
  const retries = typeof rawRetries === "number" && rawRetries >= 1 ? rawRetries : 1;
3850
+ const queueTouchPoints = tool.queueTouchPoints ?? toolConfig.queueTouchPoints;
3779
3851
  return {
3780
3852
  name: tool.name,
3781
3853
  displayName: tool.label || tool.name,
@@ -3785,10 +3857,12 @@ function buildToolMetadata(registry) {
3785
3857
  // Include timeout/retries at top-level for tools/list response (used by syncExecutableTools)
3786
3858
  timeout,
3787
3859
  retries,
3860
+ queueTouchPoints,
3788
3861
  config: {
3789
3862
  timeout,
3790
3863
  retries,
3791
- completionHints: toolConfig.completionHints
3864
+ completionHints: toolConfig.completionHints,
3865
+ queueTouchPoints
3792
3866
  }
3793
3867
  };
3794
3868
  });
@@ -3931,6 +4005,27 @@ function createCallToolHandler(registry, state, onMaxRequests) {
3931
4005
  cursor: functionResult.cursor
3932
4006
  };
3933
4007
  } catch (error) {
4008
+ if (error instanceof RateLimitExceededError) {
4009
+ return {
4010
+ success: false,
4011
+ output: null,
4012
+ billing: { credits: 0 },
4013
+ meta: {
4014
+ success: false,
4015
+ message: error.message,
4016
+ toolName
4017
+ },
4018
+ error: {
4019
+ code: "RATE_LIMITED",
4020
+ message: error.message,
4021
+ category: "external"
4022
+ },
4023
+ retry: {
4024
+ allowed: true,
4025
+ afterMs: error.retryAfterMs
4026
+ }
4027
+ };
4028
+ }
3934
4029
  if (error instanceof AppAuthInvalidError) {
3935
4030
  return {
3936
4031
  output: null,
@@ -4294,7 +4389,8 @@ function serializeConfig(config) {
4294
4389
  description: tool.description,
4295
4390
  // Read timeout/retries from top-level first, then fallback to config
4296
4391
  timeout: tool.timeout ?? tool.config?.timeout,
4297
- retries: tool.retries ?? tool.config?.retries
4392
+ retries: tool.retries ?? tool.config?.retries,
4393
+ queueTouchPoints: tool.queueTouchPoints ?? tool.config?.queueTouchPoints
4298
4394
  })) : [],
4299
4395
  webhooks: webhookRegistry ? Object.values(webhookRegistry).map((w) => ({
4300
4396
  name: w.name,
@@ -4304,6 +4400,7 @@ function serializeConfig(config) {
4304
4400
  })) : [],
4305
4401
  provision: isProvisionConfig(config.provision) ? config.provision : void 0,
4306
4402
  agents: config.agents,
4403
+ events: config.events,
4307
4404
  queues: config.queues
4308
4405
  };
4309
4406
  }
@@ -5715,17 +5812,37 @@ var CONFIG_FILE_NAMES = [
5715
5812
  "skedyul.config.mjs",
5716
5813
  "skedyul.config.cjs"
5717
5814
  ];
5815
+ function loadTypeScriptConfigModule(absolutePath) {
5816
+ try {
5817
+ require("tsx/cjs");
5818
+ delete require.cache[absolutePath];
5819
+ const module2 = require(absolutePath);
5820
+ return module2.default ?? module2;
5821
+ } catch (error) {
5822
+ throw new Error(
5823
+ `Cannot load TypeScript config: ${absolutePath}: ${error instanceof Error ? error.message : String(error)}`
5824
+ );
5825
+ }
5826
+ }
5718
5827
  async function transpileTypeScript(filePath) {
5719
5828
  const content = fs3.readFileSync(filePath, "utf-8");
5720
5829
  const configDir = path3.dirname(path3.resolve(filePath));
5721
5830
  let transpiled = content.replace(/import\s+type\s+\{[^}]+\}\s+from\s+['"][^'"]+['"]\s*;?\n?/g, "").replace(/import\s+\{\s*defineConfig\s*\}\s+from\s+['"]skedyul['"]\s*;?\n?/g, "").replace(/:\s*SkedyulConfig/g, "").replace(/export\s+default\s+/, "module.exports = ").replace(/defineConfig\s*\(\s*\{/, "{").replace(/\}\s*\)\s*;?\s*$/, "}");
5722
5831
  transpiled = transpiled.replace(
5723
5832
  /import\s+(\w+)\s+from\s+['"](\.[^'"]+)['"]\s*(?:with\s*\{[^}]*\})?/g,
5724
- (match, varName, relativePath) => {
5833
+ (_match, varName, relativePath) => {
5725
5834
  const absolutePath = path3.resolve(configDir, relativePath);
5726
5835
  return `const ${varName} = require('${absolutePath.replace(/\\/g, "/")}')`;
5727
5836
  }
5728
5837
  );
5838
+ transpiled = transpiled.replace(
5839
+ /import\s+\{\s*([^}]+)\s*\}\s+from\s+['"](\.[^'"]+)['"]\s*;?\n?/g,
5840
+ (_match, namedImports, relativePath) => {
5841
+ const absolutePath = path3.resolve(configDir, relativePath);
5842
+ return `const { ${namedImports.trim()} } = require('${absolutePath.replace(/\\/g, "/")}')
5843
+ `;
5844
+ }
5845
+ );
5729
5846
  transpiled = transpiled.replace(/import\s*\(\s*['"][^'"]+['"]\s*\)/g, "null");
5730
5847
  return transpiled;
5731
5848
  }
@@ -5736,16 +5853,9 @@ async function loadConfig(configPath) {
5736
5853
  }
5737
5854
  const isTypeScript = absolutePath.endsWith(".ts");
5738
5855
  try {
5739
- let moduleToLoad = absolutePath;
5740
5856
  if (isTypeScript) {
5741
- const transpiled = await transpileTypeScript(absolutePath);
5742
- const tempDir = os.tmpdir();
5743
- const tempFile = path3.join(tempDir, `skedyul-config-${Date.now()}.cjs`);
5744
- fs3.writeFileSync(tempFile, transpiled);
5745
- moduleToLoad = tempFile;
5746
5857
  try {
5747
- const module3 = require(moduleToLoad);
5748
- const config2 = module3.default || module3;
5858
+ const config2 = loadTypeScriptConfigModule(absolutePath);
5749
5859
  if (!config2 || typeof config2 !== "object") {
5750
5860
  throw new Error("Config file must export a configuration object");
5751
5861
  }
@@ -5753,16 +5863,31 @@ async function loadConfig(configPath) {
5753
5863
  throw new Error('Config must have a "name" property');
5754
5864
  }
5755
5865
  return config2;
5756
- } finally {
5866
+ } catch (tsxError) {
5867
+ const transpiled = await transpileTypeScript(absolutePath);
5868
+ const tempFile = path3.join(os.tmpdir(), `skedyul-config-${Date.now()}.cjs`);
5869
+ fs3.writeFileSync(tempFile, transpiled);
5757
5870
  try {
5758
- fs3.unlinkSync(tempFile);
5759
- } catch {
5871
+ const module3 = require(tempFile);
5872
+ const config2 = module3.default || module3;
5873
+ if (!config2 || typeof config2 !== "object") {
5874
+ throw new Error("Config file must export a configuration object");
5875
+ }
5876
+ if (!config2.name || typeof config2.name !== "string") {
5877
+ throw new Error('Config must have a "name" property');
5878
+ }
5879
+ return config2;
5880
+ } finally {
5881
+ try {
5882
+ fs3.unlinkSync(tempFile);
5883
+ } catch {
5884
+ }
5760
5885
  }
5761
5886
  }
5762
5887
  }
5763
5888
  const module2 = await import(
5764
5889
  /* webpackIgnore: true */
5765
- moduleToLoad
5890
+ absolutePath
5766
5891
  );
5767
5892
  const config = module2.default || module2;
5768
5893
  if (!config || typeof config !== "object") {
@@ -5813,49 +5938,6 @@ function getRequiredInstallEnvKeys(config) {
5813
5938
  return Object.entries(provision.env).filter(([, def]) => def.required).map(([key]) => key);
5814
5939
  }
5815
5940
 
5816
- // src/ratelimit/errors.ts
5817
- var QueueContextError = class extends Error {
5818
- constructor(message) {
5819
- super(message);
5820
- this.code = "QUEUE_CONTEXT_ERROR";
5821
- this.name = "QueueContextError";
5822
- }
5823
- };
5824
- var QueueNotFoundError = class extends Error {
5825
- constructor(queueName) {
5826
- super(`Queue "${queueName}" is not defined in skedyul.config queues`);
5827
- this.code = "QUEUE_NOT_FOUND";
5828
- this.name = "QueueNotFoundError";
5829
- }
5830
- };
5831
- var QueuedFetchExhaustedError = class extends Error {
5832
- constructor(attempts, maxRetries, causeError) {
5833
- super(
5834
- `queuedFetch exhausted retries after ${attempts} attempts (maxRetries=${maxRetries})`
5835
- );
5836
- this.code = "QUEUED_FETCH_EXHAUSTED";
5837
- this.name = "QueuedFetchExhaustedError";
5838
- this.attempts = attempts;
5839
- this.maxRetries = maxRetries;
5840
- this.causeError = causeError;
5841
- }
5842
- };
5843
- var RequeueOutsideContextError = class extends Error {
5844
- constructor() {
5845
- super("requeue() can only be called inside an active queuedFetch operation");
5846
- this.code = "REQUEUE_OUTSIDE_CONTEXT";
5847
- this.name = "RequeueOutsideContextError";
5848
- }
5849
- };
5850
- var RateLimitBackendError = class extends Error {
5851
- constructor(message, statusCode) {
5852
- super(message);
5853
- this.code = "RATE_LIMIT_BACKEND_ERROR";
5854
- this.name = "RateLimitBackendError";
5855
- this.statusCode = statusCode;
5856
- }
5857
- };
5858
-
5859
5941
  // src/ratelimit/resolve-queue-key.ts
5860
5942
  function resolveEndpointHandle(config, invocation) {
5861
5943
  if (config.endpoint) {
@@ -6299,11 +6381,30 @@ async function executeWithRetries(operation, maxRetries) {
6299
6381
  const timeoutMs = operation.resolved.config.timeout ?? 12e4;
6300
6382
  const retryDelayMs = operation.resolved.config.retryDelayMs ?? 1e3;
6301
6383
  const shouldRetryFn = getQueueConfigWithRetry(operation.resolved.name)?.shouldRetry ?? defaultShouldRetry;
6302
- const lease = await backend.acquire(
6303
- operation.resolved.queueKey,
6304
- operation.resolved.limits,
6305
- timeoutMs
6306
- );
6384
+ let lease;
6385
+ try {
6386
+ lease = await backend.acquire(
6387
+ operation.resolved.queueKey,
6388
+ operation.resolved.limits,
6389
+ timeoutMs
6390
+ );
6391
+ } catch (acquireError) {
6392
+ if (acquireError instanceof RateLimitBackendError && acquireError.statusCode === 408) {
6393
+ const retryAfterMs = Math.max(
6394
+ operation.resolved.limits.minTime ?? 1e3,
6395
+ operation.resolved.config.retryDelayMs ?? 1e3
6396
+ );
6397
+ throw new RateLimitExceededError(retryAfterMs);
6398
+ }
6399
+ if (acquireError instanceof Error && acquireError.message.includes("timed out")) {
6400
+ const retryAfterMs = Math.max(
6401
+ operation.resolved.limits.minTime ?? 1e3,
6402
+ operation.resolved.config.retryDelayMs ?? 1e3
6403
+ );
6404
+ throw new RateLimitExceededError(retryAfterMs);
6405
+ }
6406
+ throw acquireError;
6407
+ }
6307
6408
  operation.lease = lease;
6308
6409
  setActiveQueuedOperationLease(lease);
6309
6410
  try {
@@ -7790,6 +7891,7 @@ var index_default = { z: import_v413.z };
7790
7891
  EventSubscriptionSchema,
7791
7892
  EventTypeSchema,
7792
7893
  EventWaitSchema,
7894
+ EventWiringPanelComponentDefinitionSchema,
7793
7895
  EventsConfigSchema,
7794
7896
  ExternalDataCacheSchema,
7795
7897
  ExternalMemoryConfigSchema,
@@ -7874,6 +7976,7 @@ var index_default = { z: import_v413.z };
7874
7976
  QueueNotFoundError,
7875
7977
  QueuedFetchExhaustedError,
7876
7978
  RateLimitBackendError,
7979
+ RateLimitExceededError,
7877
7980
  RelationshipCardinalitySchema,
7878
7981
  RelationshipDefinitionSchema,
7879
7982
  RelationshipExtensionSchema,
@@ -25,3 +25,9 @@ export declare class RateLimitBackendError extends Error {
25
25
  readonly statusCode?: number;
26
26
  constructor(message: string, statusCode?: number);
27
27
  }
28
+ /** Thrown when queuedFetch cannot acquire a rate-limit slot within the queue timeout. */
29
+ export declare class RateLimitExceededError extends Error {
30
+ readonly code = "RATE_LIMITED";
31
+ readonly retryAfterMs: number;
32
+ constructor(retryAfterMs: number, message?: string);
33
+ }
@@ -1,6 +1,6 @@
1
1
  export { queuedFetch, requeue, resolveQueue, createQueueHandle, queuedFetchResponse, } from './queued-fetch';
2
2
  export type { QueueInput, QueueSelector, Lease, QueueLimits, ResolvedQueue, RateLimitExecutionContext, RateLimitBackend, } from './types';
3
- export { QueueContextError, QueueNotFoundError, QueuedFetchExhaustedError, RequeueOutsideContextError, RateLimitBackendError, } from './errors';
3
+ export { QueueContextError, QueueNotFoundError, QueuedFetchExhaustedError, RequeueOutsideContextError, RateLimitBackendError, RateLimitExceededError, } from './errors';
4
4
  export { registerQueueConfig, clearRegisteredQueueConfig, getQueueDefinitions, getQueueConfig, } from './config-loader';
5
5
  export { runWithRateLimitExecutionContext, getRateLimitExecutionContext, } from './context';
6
6
  export { resolveQueueKey, toQueueLimits } from './resolve-queue-key';
@@ -539,6 +539,7 @@ export declare const AgentYAMLV3Schema: z.ZodObject<{
539
539
  "thread.workflow.completed": "thread.workflow.completed";
540
540
  "thread.follow_up.due": "thread.follow_up.due";
541
541
  "thread.reminder.due": "thread.reminder.due";
542
+ "thread.signal.created": "thread.signal.created";
542
543
  }>, z.ZodString]>>>;
543
544
  condition: z.ZodOptional<z.ZodString>;
544
545
  emits: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodEnum<{
@@ -555,6 +556,7 @@ export declare const AgentYAMLV3Schema: z.ZodObject<{
555
556
  "thread.workflow.completed": "thread.workflow.completed";
556
557
  "thread.follow_up.due": "thread.follow_up.due";
557
558
  "thread.reminder.due": "thread.reminder.due";
559
+ "thread.signal.created": "thread.signal.created";
558
560
  }>, z.ZodString]>>>;
559
561
  waits: z.ZodOptional<z.ZodArray<z.ZodObject<{
560
562
  event: z.ZodUnion<readonly [z.ZodEnum<{
@@ -571,6 +573,7 @@ export declare const AgentYAMLV3Schema: z.ZodObject<{
571
573
  "thread.workflow.completed": "thread.workflow.completed";
572
574
  "thread.follow_up.due": "thread.follow_up.due";
573
575
  "thread.reminder.due": "thread.reminder.due";
576
+ "thread.signal.created": "thread.signal.created";
574
577
  }>, z.ZodString]>;
575
578
  timeout: z.ZodOptional<z.ZodString>;
576
579
  onTimeout: z.ZodOptional<z.ZodString>;
@@ -589,6 +592,7 @@ export declare const AgentYAMLV3Schema: z.ZodObject<{
589
592
  "thread.workflow.completed": "thread.workflow.completed";
590
593
  "thread.follow_up.due": "thread.follow_up.due";
591
594
  "thread.reminder.due": "thread.reminder.due";
595
+ "thread.signal.created": "thread.signal.created";
592
596
  }>, z.ZodString]>>>;
593
597
  cancelCondition: z.ZodOptional<z.ZodString>;
594
598
  }, z.core.$strip>>;
@@ -76,7 +76,9 @@ var ThreadEventTypeSchema = import_v4.z.enum([
76
76
  "thread.workflow.completed",
77
77
  // Scheduled events
78
78
  "thread.follow_up.due",
79
- "thread.reminder.due"
79
+ "thread.reminder.due",
80
+ // Signal events
81
+ "thread.signal.created"
80
82
  ]);
81
83
  var CustomEventTypeSchema = import_v4.z.string().regex(/^custom\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/, {
82
84
  message: "Custom event type must match pattern: custom.{namespace}.{event}"
@@ -23,7 +23,9 @@ var ThreadEventTypeSchema = z.enum([
23
23
  "thread.workflow.completed",
24
24
  // Scheduled events
25
25
  "thread.follow_up.due",
26
- "thread.reminder.due"
26
+ "thread.reminder.due",
27
+ // Signal events
28
+ "thread.signal.created"
27
29
  ]);
28
30
  var CustomEventTypeSchema = z.string().regex(/^custom\.[a-z][a-z0-9_]*(\.[a-z][a-z0-9_]*)*$/, {
29
31
  message: "Custom event type must match pattern: custom.{namespace}.{event}"
package/dist/schemas.d.ts CHANGED
@@ -901,6 +901,25 @@ export declare const AlertComponentDefinitionSchema: z.ZodObject<{
901
901
  }>>;
902
902
  }, z.core.$strip>;
903
903
  }, z.core.$strip>;
904
+ /** Event wiring overview for app install pages */
905
+ export declare const EventWiringPanelComponentDefinitionSchema: z.ZodObject<{
906
+ id: z.ZodString;
907
+ row: z.ZodNumber;
908
+ col: z.ZodNumber;
909
+ className: z.ZodOptional<z.ZodString>;
910
+ hidden: z.ZodOptional<z.ZodBoolean>;
911
+ component: z.ZodLiteral<"EventWiringPanel">;
912
+ props: z.ZodObject<{
913
+ eventTypes: z.ZodArray<z.ZodObject<{
914
+ type: z.ZodString;
915
+ label: z.ZodString;
916
+ glofoxType: z.ZodOptional<z.ZodString>;
917
+ description: z.ZodOptional<z.ZodString>;
918
+ icon: z.ZodOptional<z.ZodString>;
919
+ }, z.core.$strip>>;
920
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
921
+ }, z.core.$strip>;
922
+ }, z.core.$strip>;
904
923
  /** Forward declaration for FieldSetting with modalForm */
905
924
  export type FormV2ComponentDefinition = z.infer<typeof FormV2ComponentDefinitionSchema>;
906
925
  /** Modal form definition for nested forms */
@@ -1248,6 +1267,23 @@ export declare const FormV2ComponentDefinitionSchema: z.ZodDiscriminatedUnion<[z
1248
1267
  destructive: "destructive";
1249
1268
  }>>;
1250
1269
  }, z.core.$strip>;
1270
+ }, z.core.$strip>, z.ZodObject<{
1271
+ id: z.ZodString;
1272
+ row: z.ZodNumber;
1273
+ col: z.ZodNumber;
1274
+ className: z.ZodOptional<z.ZodString>;
1275
+ hidden: z.ZodOptional<z.ZodBoolean>;
1276
+ component: z.ZodLiteral<"EventWiringPanel">;
1277
+ props: z.ZodObject<{
1278
+ eventTypes: z.ZodArray<z.ZodObject<{
1279
+ type: z.ZodString;
1280
+ label: z.ZodString;
1281
+ glofoxType: z.ZodOptional<z.ZodString>;
1282
+ description: z.ZodOptional<z.ZodString>;
1283
+ icon: z.ZodOptional<z.ZodString>;
1284
+ }, z.core.$strip>>;
1285
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
1286
+ }, z.core.$strip>;
1251
1287
  }, z.core.$strip>], "component">;
1252
1288
  /** FormV2 props definition */
1253
1289
  export declare const FormV2PropsDefinitionSchema: z.ZodObject<{
@@ -1530,6 +1566,23 @@ export declare const FormV2PropsDefinitionSchema: z.ZodObject<{
1530
1566
  destructive: "destructive";
1531
1567
  }>>;
1532
1568
  }, z.core.$strip>;
1569
+ }, z.core.$strip>, z.ZodObject<{
1570
+ id: z.ZodString;
1571
+ row: z.ZodNumber;
1572
+ col: z.ZodNumber;
1573
+ className: z.ZodOptional<z.ZodString>;
1574
+ hidden: z.ZodOptional<z.ZodBoolean>;
1575
+ component: z.ZodLiteral<"EventWiringPanel">;
1576
+ props: z.ZodObject<{
1577
+ eventTypes: z.ZodArray<z.ZodObject<{
1578
+ type: z.ZodString;
1579
+ label: z.ZodString;
1580
+ glofoxType: z.ZodOptional<z.ZodString>;
1581
+ description: z.ZodOptional<z.ZodString>;
1582
+ icon: z.ZodOptional<z.ZodString>;
1583
+ }, z.core.$strip>>;
1584
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
1585
+ }, z.core.$strip>;
1533
1586
  }, z.core.$strip>], "component">>;
1534
1587
  layout: z.ZodObject<{
1535
1588
  type: z.ZodLiteral<"form">;
@@ -1853,6 +1906,23 @@ export declare const CardBlockDefinitionSchema: z.ZodObject<{
1853
1906
  destructive: "destructive";
1854
1907
  }>>;
1855
1908
  }, z.core.$strip>;
1909
+ }, z.core.$strip>, z.ZodObject<{
1910
+ id: z.ZodString;
1911
+ row: z.ZodNumber;
1912
+ col: z.ZodNumber;
1913
+ className: z.ZodOptional<z.ZodString>;
1914
+ hidden: z.ZodOptional<z.ZodBoolean>;
1915
+ component: z.ZodLiteral<"EventWiringPanel">;
1916
+ props: z.ZodObject<{
1917
+ eventTypes: z.ZodArray<z.ZodObject<{
1918
+ type: z.ZodString;
1919
+ label: z.ZodString;
1920
+ glofoxType: z.ZodOptional<z.ZodString>;
1921
+ description: z.ZodOptional<z.ZodString>;
1922
+ icon: z.ZodOptional<z.ZodString>;
1923
+ }, z.core.$strip>>;
1924
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
1925
+ }, z.core.$strip>;
1856
1926
  }, z.core.$strip>], "component">>;
1857
1927
  layout: z.ZodObject<{
1858
1928
  type: z.ZodLiteral<"form">;
@@ -2280,6 +2350,23 @@ export declare const PageBlockDefinitionSchema: z.ZodUnion<readonly [z.ZodObject
2280
2350
  destructive: "destructive";
2281
2351
  }>>;
2282
2352
  }, z.core.$strip>;
2353
+ }, z.core.$strip>, z.ZodObject<{
2354
+ id: z.ZodString;
2355
+ row: z.ZodNumber;
2356
+ col: z.ZodNumber;
2357
+ className: z.ZodOptional<z.ZodString>;
2358
+ hidden: z.ZodOptional<z.ZodBoolean>;
2359
+ component: z.ZodLiteral<"EventWiringPanel">;
2360
+ props: z.ZodObject<{
2361
+ eventTypes: z.ZodArray<z.ZodObject<{
2362
+ type: z.ZodString;
2363
+ label: z.ZodString;
2364
+ glofoxType: z.ZodOptional<z.ZodString>;
2365
+ description: z.ZodOptional<z.ZodString>;
2366
+ icon: z.ZodOptional<z.ZodString>;
2367
+ }, z.core.$strip>>;
2368
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
2369
+ }, z.core.$strip>;
2283
2370
  }, z.core.$strip>], "component">>;
2284
2371
  layout: z.ZodObject<{
2285
2372
  type: z.ZodLiteral<"form">;
@@ -2813,6 +2900,23 @@ export declare const PageDefinitionSchema: z.ZodObject<{
2813
2900
  destructive: "destructive";
2814
2901
  }>>;
2815
2902
  }, z.core.$strip>;
2903
+ }, z.core.$strip>, z.ZodObject<{
2904
+ id: z.ZodString;
2905
+ row: z.ZodNumber;
2906
+ col: z.ZodNumber;
2907
+ className: z.ZodOptional<z.ZodString>;
2908
+ hidden: z.ZodOptional<z.ZodBoolean>;
2909
+ component: z.ZodLiteral<"EventWiringPanel">;
2910
+ props: z.ZodObject<{
2911
+ eventTypes: z.ZodArray<z.ZodObject<{
2912
+ type: z.ZodString;
2913
+ label: z.ZodString;
2914
+ glofoxType: z.ZodOptional<z.ZodString>;
2915
+ description: z.ZodOptional<z.ZodString>;
2916
+ icon: z.ZodOptional<z.ZodString>;
2917
+ }, z.core.$strip>>;
2918
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
2919
+ }, z.core.$strip>;
2816
2920
  }, z.core.$strip>], "component">>;
2817
2921
  layout: z.ZodObject<{
2818
2922
  type: z.ZodLiteral<"form">;
@@ -3682,6 +3786,23 @@ export declare const ProvisionConfigSchema: z.ZodObject<{
3682
3786
  destructive: "destructive";
3683
3787
  }>>;
3684
3788
  }, z.core.$strip>;
3789
+ }, z.core.$strip>, z.ZodObject<{
3790
+ id: z.ZodString;
3791
+ row: z.ZodNumber;
3792
+ col: z.ZodNumber;
3793
+ className: z.ZodOptional<z.ZodString>;
3794
+ hidden: z.ZodOptional<z.ZodBoolean>;
3795
+ component: z.ZodLiteral<"EventWiringPanel">;
3796
+ props: z.ZodObject<{
3797
+ eventTypes: z.ZodArray<z.ZodObject<{
3798
+ type: z.ZodString;
3799
+ label: z.ZodString;
3800
+ glofoxType: z.ZodOptional<z.ZodString>;
3801
+ description: z.ZodOptional<z.ZodString>;
3802
+ icon: z.ZodOptional<z.ZodString>;
3803
+ }, z.core.$strip>>;
3804
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
3805
+ }, z.core.$strip>;
3685
3806
  }, z.core.$strip>], "component">>;
3686
3807
  layout: z.ZodObject<{
3687
3808
  type: z.ZodLiteral<"form">;
@@ -4388,6 +4509,23 @@ export declare const SkedyulConfigSchema: z.ZodObject<{
4388
4509
  destructive: "destructive";
4389
4510
  }>>;
4390
4511
  }, z.core.$strip>;
4512
+ }, z.core.$strip>, z.ZodObject<{
4513
+ id: z.ZodString;
4514
+ row: z.ZodNumber;
4515
+ col: z.ZodNumber;
4516
+ className: z.ZodOptional<z.ZodString>;
4517
+ hidden: z.ZodOptional<z.ZodBoolean>;
4518
+ component: z.ZodLiteral<"EventWiringPanel">;
4519
+ props: z.ZodObject<{
4520
+ eventTypes: z.ZodArray<z.ZodObject<{
4521
+ type: z.ZodString;
4522
+ label: z.ZodString;
4523
+ glofoxType: z.ZodOptional<z.ZodString>;
4524
+ description: z.ZodOptional<z.ZodString>;
4525
+ icon: z.ZodOptional<z.ZodString>;
4526
+ }, z.core.$strip>>;
4527
+ recommendedWorkflowHandle: z.ZodOptional<z.ZodString>;
4528
+ }, z.core.$strip>;
4391
4529
  }, z.core.$strip>], "component">>;
4392
4530
  layout: z.ZodObject<{
4393
4531
  type: z.ZodLiteral<"form">;