@interactive-inc/claude-funnel 0.23.1 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -3,7 +3,7 @@ import { n as discordConnectorSchema, t as DiscordConnectorConfig } from "./disc
3
3
  import { n as FunnelConnectorListener, r as NotifyFn, t as FunnelLogger } from "./logger-B3aXsVcX.js";
4
4
  import { a as FunnelProcessRunner, c as RunResult, i as DetachOptions, n as ghConnectorSchema, o as ProcessSnapshot, r as AttachOptions, s as RunOptions, t as GhConnectorConfig } from "./gh-connector-schema-Cmi57jvL.js";
5
5
  import { a as FunnelFileSystem, c as ScheduleEntry, d as scheduleEntrySchema, i as FileStat, l as scheduleCatchupPolicySchema, n as ScheduleOnFired, o as ScheduleCatchupPolicy, s as ScheduleConnectorConfig, u as scheduleConnectorSchema } from "./schedule-listener-CBYF2bGZ.js";
6
- import { a as SlackProcessed, c as SlackRawEvent, i as FunnelSlackEventProcessor, l as SlackConnectorConfig, n as SlackOnAppCreated, o as SlackProcessedEmit, r as SlackPreprocessEvent, s as SlackProcessedSkip, u as slackConnectorSchema } from "./slack-listener-tQH7cXU7.js";
6
+ import { a as SlackProcessed, c as SlackRawEvent, i as FunnelSlackEventProcessor, l as SlackConnectorConfig, n as SlackOnAppCreated, o as SlackProcessedEmit, r as SlackPreprocessEvent, s as SlackProcessedSkip, u as slackConnectorSchema } from "./slack-listener-DbNCPMqY.js";
7
7
  import { z } from "zod";
8
8
  import * as _$hono_factory0 from "hono/factory";
9
9
  import { Hono } from "hono";
@@ -18,6 +18,7 @@ declare const connectorConfigSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
18
18
  type: z.ZodLiteral<"slack">;
19
19
  botToken: z.ZodString;
20
20
  appToken: z.ZodString;
21
+ minify: z.ZodDefault<z.ZodBoolean>;
21
22
  createdAt: z.ZodOptional<z.ZodString>;
22
23
  updatedAt: z.ZodOptional<z.ZodString>;
23
24
  }, z.core.$strip>, z.ZodObject<{
@@ -150,15 +151,13 @@ declare const channelConfigSchema: z.ZodObject<{
150
151
  fanout: "fanout";
151
152
  exclusive: "exclusive";
152
153
  }>>;
153
- options: z.ZodDefault<z.ZodArray<z.ZodString>>;
154
- env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
155
- resume: z.ZodDefault<z.ZodBoolean>;
156
154
  connectors: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
157
155
  id: z.ZodString;
158
156
  name: z.ZodString;
159
157
  type: z.ZodLiteral<"slack">;
160
158
  botToken: z.ZodString;
161
159
  appToken: z.ZodString;
160
+ minify: z.ZodDefault<z.ZodBoolean>;
162
161
  createdAt: z.ZodOptional<z.ZodString>;
163
162
  updatedAt: z.ZodOptional<z.ZodString>;
164
163
  }, z.core.$strip>, z.ZodObject<{
@@ -199,6 +198,9 @@ declare const profileConfigSchema: z.ZodObject<{
199
198
  name: z.ZodString;
200
199
  path: z.ZodString;
201
200
  channelId: z.ZodString;
201
+ options: z.ZodDefault<z.ZodArray<z.ZodString>>;
202
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
203
+ resume: z.ZodDefault<z.ZodBoolean>;
202
204
  }, z.core.$strip>;
203
205
  type ProfileConfig = z.infer<typeof profileConfigSchema>;
204
206
  declare const SETTINGS_VERSION = 1;
@@ -211,15 +213,13 @@ declare const settingsSchema: z.ZodObject<{
211
213
  fanout: "fanout";
212
214
  exclusive: "exclusive";
213
215
  }>>;
214
- options: z.ZodDefault<z.ZodArray<z.ZodString>>;
215
- env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
216
- resume: z.ZodDefault<z.ZodBoolean>;
217
216
  connectors: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
218
217
  id: z.ZodString;
219
218
  name: z.ZodString;
220
219
  type: z.ZodLiteral<"slack">;
221
220
  botToken: z.ZodString;
222
221
  appToken: z.ZodString;
222
+ minify: z.ZodDefault<z.ZodBoolean>;
223
223
  createdAt: z.ZodOptional<z.ZodString>;
224
224
  updatedAt: z.ZodOptional<z.ZodString>;
225
225
  }, z.core.$strip>, z.ZodObject<{
@@ -259,6 +259,9 @@ declare const settingsSchema: z.ZodObject<{
259
259
  name: z.ZodString;
260
260
  path: z.ZodString;
261
261
  channelId: z.ZodString;
262
+ options: z.ZodDefault<z.ZodArray<z.ZodString>>;
263
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
264
+ resume: z.ZodDefault<z.ZodBoolean>;
262
265
  }, z.core.$strip>>>;
263
266
  }, z.core.$strip>;
264
267
  type Settings = z.infer<typeof settingsSchema>;
@@ -286,6 +289,7 @@ type AddConnectorInput = {
286
289
  name: string;
287
290
  botToken: string;
288
291
  appToken: string;
292
+ minify?: boolean;
289
293
  } | {
290
294
  type: "gh";
291
295
  name: string;
@@ -320,14 +324,8 @@ declare class FunnelChannels {
320
324
  add(input: {
321
325
  name: string;
322
326
  delivery?: ChannelDeliveryMode;
323
- options?: string[];
324
- env?: Record<string, string>;
325
- resume?: boolean;
326
327
  }): ChannelConfig;
327
328
  setDelivery(name: string, delivery: ChannelDeliveryMode): void;
328
- setResume(name: string, resume: boolean): void;
329
- setOptions(name: string, options: string[]): void;
330
- setEnv(name: string, env: Record<string, string>): void;
331
329
  remove(name: string): void;
332
330
  rename(oldName: string, newName: string): void;
333
331
  listConnectors(channelName: string): ConnectorConfig[];
@@ -443,7 +441,10 @@ type LaunchOptions = {
443
441
  channel: string;
444
442
  cwd?: string;
445
443
  userArgs?: string[];
446
- profileName?: string;
444
+ profileName?: string; /** Args prepended to the claude argv (typically a profile's recipe). Defaults to none. */
445
+ options?: string[]; /** Env vars layered under the launched claude process. process.env wins on collision. */
446
+ env?: Record<string, string>; /** Whether to inject a `--session-id`/`--resume` for the (channel, cwd). Defaults to true. */
447
+ resume?: boolean;
447
448
  /** Invoked synchronously after the child claude process has been spawned, with its PID.
448
449
  * Useful for hosts that need to register the spawned process before it exits
449
450
  * (e.g. multi-session registries that track per-claude liveness). */
@@ -532,6 +533,7 @@ declare const connectorSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
532
533
  name: z.ZodString;
533
534
  botToken: z.ZodOptional<z.ZodString>;
534
535
  appToken: z.ZodOptional<z.ZodString>;
536
+ minify: z.ZodOptional<z.ZodBoolean>;
535
537
  env: z.ZodOptional<z.ZodObject<{
536
538
  botToken: z.ZodOptional<z.ZodString>;
537
539
  appToken: z.ZodOptional<z.ZodString>;
@@ -554,14 +556,12 @@ declare const connectorSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
554
556
  type ConnectorSpec = z.infer<typeof connectorSpecSchema>;
555
557
  declare const channelSpecSchema: z.ZodObject<{
556
558
  name: z.ZodString;
557
- options: z.ZodOptional<z.ZodArray<z.ZodString>>;
558
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
559
- resume: z.ZodOptional<z.ZodBoolean>;
560
559
  connectors: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
561
560
  type: z.ZodLiteral<"slack">;
562
561
  name: z.ZodString;
563
562
  botToken: z.ZodOptional<z.ZodString>;
564
563
  appToken: z.ZodOptional<z.ZodString>;
564
+ minify: z.ZodOptional<z.ZodBoolean>;
565
565
  env: z.ZodOptional<z.ZodObject<{
566
566
  botToken: z.ZodOptional<z.ZodString>;
567
567
  appToken: z.ZodOptional<z.ZodString>;
@@ -583,18 +583,24 @@ declare const channelSpecSchema: z.ZodObject<{
583
583
  }, z.core.$strip>], "type">>>;
584
584
  }, z.core.$strip>;
585
585
  type ChannelSpec = z.infer<typeof channelSpecSchema>;
586
+ declare const profileSpecSchema: z.ZodObject<{
587
+ name: z.ZodString;
588
+ channel: z.ZodString;
589
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
590
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
591
+ resume: z.ZodOptional<z.ZodBoolean>;
592
+ }, z.core.$strip>;
593
+ type ProfileSpec = z.infer<typeof profileSpecSchema>;
586
594
  declare const localConfigSchema: z.ZodObject<{
587
595
  $schema: z.ZodOptional<z.ZodString>;
588
596
  channels: z.ZodArray<z.ZodObject<{
589
597
  name: z.ZodString;
590
- options: z.ZodOptional<z.ZodArray<z.ZodString>>;
591
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
592
- resume: z.ZodOptional<z.ZodBoolean>;
593
598
  connectors: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
594
599
  type: z.ZodLiteral<"slack">;
595
600
  name: z.ZodString;
596
601
  botToken: z.ZodOptional<z.ZodString>;
597
602
  appToken: z.ZodOptional<z.ZodString>;
603
+ minify: z.ZodOptional<z.ZodBoolean>;
598
604
  env: z.ZodOptional<z.ZodObject<{
599
605
  botToken: z.ZodOptional<z.ZodString>;
600
606
  appToken: z.ZodOptional<z.ZodString>;
@@ -615,6 +621,13 @@ declare const localConfigSchema: z.ZodObject<{
615
621
  name: z.ZodString;
616
622
  }, z.core.$strip>], "type">>>;
617
623
  }, z.core.$strip>>;
624
+ profiles: z.ZodOptional<z.ZodArray<z.ZodObject<{
625
+ name: z.ZodString;
626
+ channel: z.ZodString;
627
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
628
+ env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
629
+ resume: z.ZodOptional<z.ZodBoolean>;
630
+ }, z.core.$strip>>>;
618
631
  }, z.core.$strip>;
619
632
  type LocalConfig = z.infer<typeof localConfigSchema>;
620
633
  declare const LOCAL_CONFIG_FILENAME = "funnel.json";
@@ -707,9 +720,10 @@ type Deps$8 = {
707
720
  };
708
721
  /**
709
722
  * Named launch presets for `fnl claude`. Each profile bundles a working
710
- * directory, a sub-agent name, and the channel id its Claude instance will
711
- * subscribe to. Implements ProfileChannelChecker so FunnelChannels can refuse
712
- * to remove a channel that is still referenced.
723
+ * directory, the channel id its Claude instance subscribes to, and the launch
724
+ * recipe (`options` prepended to the claude argv, `env` layered under the
725
+ * process, `resume` toggling session reuse). Implements ProfileChannelChecker
726
+ * so FunnelChannels can refuse to remove a channel that is still referenced.
713
727
  *
714
728
  * The first entry in the persisted array is treated as the default profile;
715
729
  * `asDefault` reorders the array to put a named profile first.
@@ -723,7 +737,14 @@ declare class FunnelProfiles {
723
737
  list(): ProfileConfig[];
724
738
  get(name: string): ProfileConfig | null;
725
739
  getDefault(): ProfileConfig | null;
726
- add(config: ProfileConfig): void;
740
+ add(input: {
741
+ name: string;
742
+ path: string;
743
+ channelId: string;
744
+ options?: string[];
745
+ env?: Record<string, string>;
746
+ resume?: boolean;
747
+ }): void;
727
748
  remove(name: string): void;
728
749
  rename(oldName: string, newName: string): void;
729
750
  asDefault(name: string): void;
@@ -1473,8 +1494,8 @@ declare const startChannelServer: (options?: ChannelServerOptions) => Promise<vo
1473
1494
  /**
1474
1495
  * Generates the JSON Schema (draft 2020-12) for `funnel.json`. Useful for
1475
1496
  * `$schema` references in committed `funnel.json` files so editors can give
1476
- * autocomplete and validation for channel / subAgent / env / connectors[]
1477
- * without anyone hand-maintaining a separate schema.
1497
+ * autocomplete and validation for channels[] (transport) and profiles[]
1498
+ * (launch recipe) without anyone hand-maintaining a separate schema.
1478
1499
  */
1479
1500
  declare const funnelJsonSchema: () => Record<string, unknown>;
1480
1501
  //#endregion
@@ -2530,6 +2551,11 @@ declare const createCliApp: (funnel: Funnel) => _$hono_hono_base0.HonoBase<Env,
2530
2551
  query: {
2531
2552
  path: string;
2532
2553
  channel: string;
2554
+ agent?: string | undefined;
2555
+ options?: string | undefined;
2556
+ env?: string | undefined;
2557
+ resume?: string | undefined;
2558
+ "no-resume"?: string | undefined;
2533
2559
  };
2534
2560
  };
2535
2561
  output: string;
@@ -2544,6 +2570,11 @@ declare const createCliApp: (funnel: Funnel) => _$hono_hono_base0.HonoBase<Env,
2544
2570
  query: {
2545
2571
  path: string;
2546
2572
  channel: string;
2573
+ agent?: string | undefined;
2574
+ options?: string | undefined;
2575
+ env?: string | undefined;
2576
+ resume?: string | undefined;
2577
+ "no-resume"?: string | undefined;
2547
2578
  };
2548
2579
  };
2549
2580
  output: `added profile "${string}"`;
@@ -2571,6 +2602,11 @@ declare const createCliApp: (funnel: Funnel) => _$hono_hono_base0.HonoBase<Env,
2571
2602
  query: {
2572
2603
  path?: string | undefined;
2573
2604
  channel?: string | undefined;
2605
+ agent?: string | undefined;
2606
+ options?: string | undefined;
2607
+ env?: string | undefined;
2608
+ resume?: string | undefined;
2609
+ "no-resume"?: string | undefined;
2574
2610
  };
2575
2611
  };
2576
2612
  output: string;
@@ -2585,6 +2621,11 @@ declare const createCliApp: (funnel: Funnel) => _$hono_hono_base0.HonoBase<Env,
2585
2621
  query: {
2586
2622
  path?: string | undefined;
2587
2623
  channel?: string | undefined;
2624
+ agent?: string | undefined;
2625
+ options?: string | undefined;
2626
+ env?: string | undefined;
2627
+ resume?: string | undefined;
2628
+ "no-resume"?: string | undefined;
2588
2629
  };
2589
2630
  };
2590
2631
  output: `updated profile "${string}"`;
@@ -3811,6 +3852,11 @@ declare const app: _$hono_hono_base0.HonoBase<Env, {
3811
3852
  query: {
3812
3853
  path: string;
3813
3854
  channel: string;
3855
+ agent?: string | undefined;
3856
+ options?: string | undefined;
3857
+ env?: string | undefined;
3858
+ resume?: string | undefined;
3859
+ "no-resume"?: string | undefined;
3814
3860
  };
3815
3861
  };
3816
3862
  output: string;
@@ -3825,6 +3871,11 @@ declare const app: _$hono_hono_base0.HonoBase<Env, {
3825
3871
  query: {
3826
3872
  path: string;
3827
3873
  channel: string;
3874
+ agent?: string | undefined;
3875
+ options?: string | undefined;
3876
+ env?: string | undefined;
3877
+ resume?: string | undefined;
3878
+ "no-resume"?: string | undefined;
3828
3879
  };
3829
3880
  };
3830
3881
  output: `added profile "${string}"`;
@@ -3852,6 +3903,11 @@ declare const app: _$hono_hono_base0.HonoBase<Env, {
3852
3903
  query: {
3853
3904
  path?: string | undefined;
3854
3905
  channel?: string | undefined;
3906
+ agent?: string | undefined;
3907
+ options?: string | undefined;
3908
+ env?: string | undefined;
3909
+ resume?: string | undefined;
3910
+ "no-resume"?: string | undefined;
3855
3911
  };
3856
3912
  };
3857
3913
  output: string;
@@ -3866,6 +3922,11 @@ declare const app: _$hono_hono_base0.HonoBase<Env, {
3866
3922
  query: {
3867
3923
  path?: string | undefined;
3868
3924
  channel?: string | undefined;
3925
+ agent?: string | undefined;
3926
+ options?: string | undefined;
3927
+ env?: string | undefined;
3928
+ resume?: string | undefined;
3929
+ "no-resume"?: string | undefined;
3869
3930
  };
3870
3931
  };
3871
3932
  output: `updated profile "${string}"`;
@@ -4310,4 +4371,4 @@ ${string}`;
4310
4371
  //#region lib/tui/tui.d.ts
4311
4372
  declare function launchTui(funnel: Funnel): Promise<void>;
4312
4373
  //#endregion
4313
- export { AliveStub, AttachOptions, BroadcastEvent, BroadcastSubscriber, ChannelConfig, ChannelConnectorView, ChannelDeliveryMode, ChannelServerOptions, ChannelSpec, ConnectorConfig, ConnectorSpec, ConnectorSyncOutcome, ConnectorType, DEFAULT_GATEWAY_TOKEN_PATH, DetachOptions, DiscordConnectorConfig, Env, FUNNEL_DIR, FUNNEL_MCP_COMMAND, FUNNEL_MCP_NAME, FileStat, Funnel, FunnelBroadcaster, FunnelChannelPublisher, FunnelChannels, FunnelClaude, FunnelClock, FunnelConnectorFactory, FunnelConnectorListener, FunnelDotenvReader, FunnelEvent, FunnelEventStore, FunnelFileSystem, FunnelGateway, FunnelGatewayServer, FunnelGatewayToken, FunnelIdGenerator, FunnelListenerSupervisor, FunnelListenersClient, FunnelLocalConfig, FunnelLocalConfigSync, FunnelLogger, FunnelMcp, FunnelProcessRunner, FunnelProfiles, FunnelSessions, FunnelSettingsReader, FunnelSettingsStore, FunnelSlackEventProcessor, FunnelTokenPrompter, type GatewayEmitInput, type GatewayRouteDeps, type Env$1 as GatewayServerEnv, GhConnectorConfig, LOCAL_CONFIG_FILENAME, LOCAL_ENV_FILENAME, LaunchOptions, ListListenersResult, ListenerEntry, ListenerOpResult, LocalConfig, LocalConfigSyncResult, LogEntry, MemoryFunnelClock, MemoryFunnelFileSystem, MemoryFunnelIdGenerator, MemoryFunnelLogger, MemoryFunnelProcessRunner, MemoryFunnelTokenPrompter, MemoryProcessCall, MemoryProcessHandler, MemoryProcessResponse, MemoryProcessSyncHandler, MockFunnelSettingsReader, NodeFunnelClock, NodeFunnelFileSystem, NodeFunnelIdGenerator, NodeFunnelLogger, NodeFunnelProcessRunner, NodeFunnelTokenPrompter, NoopFunnelLogger, NotifyFn, OnFunnelError, ProcessListStub, ProcessSnapshot, ProfileConfig, PublishRequest, PublishResponse, PublishResult, ReplayableEvent, RunOptions, RunResult, SETTINGS_PATH, SETTINGS_VERSION, ScheduleCatchupPolicy, ScheduleConnectorConfig, ScheduleEntry, ScheduleListenerOptions, Settings, SlackConnectorConfig, SlackListenerOptions, SlackProcessed, SlackProcessedEmit, SlackProcessedSkip, SlackRawEvent, channelConfigSchema, channelDeliveryModeSchema, channelSpecSchema, app as cliApp, connectorConfigSchema, connectorSpecSchema, createCliApp, createSettings, discordConnectorSchema, factory, funnelEventSchema, funnelJsonSchema, ghConnectorSchema, launchTui, localConfigSchema, profileConfigSchema, publishRequestSchema, publishResponseSchema, queryToCliArgs, scheduleCatchupPolicySchema, scheduleConnectorSchema, scheduleEntrySchema, settingsSchema, slackConnectorSchema, startChannelServer, toRequest };
4374
+ export { AliveStub, AttachOptions, BroadcastEvent, BroadcastSubscriber, ChannelConfig, ChannelConnectorView, ChannelDeliveryMode, ChannelServerOptions, ChannelSpec, ConnectorConfig, ConnectorSpec, ConnectorSyncOutcome, ConnectorType, DEFAULT_GATEWAY_TOKEN_PATH, DetachOptions, DiscordConnectorConfig, Env, FUNNEL_DIR, FUNNEL_MCP_COMMAND, FUNNEL_MCP_NAME, FileStat, Funnel, FunnelBroadcaster, FunnelChannelPublisher, FunnelChannels, FunnelClaude, FunnelClock, FunnelConnectorFactory, FunnelConnectorListener, FunnelDotenvReader, FunnelEvent, FunnelEventStore, FunnelFileSystem, FunnelGateway, FunnelGatewayServer, FunnelGatewayToken, FunnelIdGenerator, FunnelListenerSupervisor, FunnelListenersClient, FunnelLocalConfig, FunnelLocalConfigSync, FunnelLogger, FunnelMcp, FunnelProcessRunner, FunnelProfiles, FunnelSessions, FunnelSettingsReader, FunnelSettingsStore, FunnelSlackEventProcessor, FunnelTokenPrompter, type GatewayEmitInput, type GatewayRouteDeps, type Env$1 as GatewayServerEnv, GhConnectorConfig, LOCAL_CONFIG_FILENAME, LOCAL_ENV_FILENAME, LaunchOptions, ListListenersResult, ListenerEntry, ListenerOpResult, LocalConfig, LocalConfigSyncResult, LogEntry, MemoryFunnelClock, MemoryFunnelFileSystem, MemoryFunnelIdGenerator, MemoryFunnelLogger, MemoryFunnelProcessRunner, MemoryFunnelTokenPrompter, MemoryProcessCall, MemoryProcessHandler, MemoryProcessResponse, MemoryProcessSyncHandler, MockFunnelSettingsReader, NodeFunnelClock, NodeFunnelFileSystem, NodeFunnelIdGenerator, NodeFunnelLogger, NodeFunnelProcessRunner, NodeFunnelTokenPrompter, NoopFunnelLogger, NotifyFn, OnFunnelError, ProcessListStub, ProcessSnapshot, ProfileConfig, ProfileSpec, PublishRequest, PublishResponse, PublishResult, ReplayableEvent, RunOptions, RunResult, SETTINGS_PATH, SETTINGS_VERSION, ScheduleCatchupPolicy, ScheduleConnectorConfig, ScheduleEntry, ScheduleListenerOptions, Settings, SlackConnectorConfig, SlackListenerOptions, SlackProcessed, SlackProcessedEmit, SlackProcessedSkip, SlackRawEvent, channelConfigSchema, channelDeliveryModeSchema, channelSpecSchema, app as cliApp, connectorConfigSchema, connectorSpecSchema, createCliApp, createSettings, discordConnectorSchema, factory, funnelEventSchema, funnelJsonSchema, ghConnectorSchema, launchTui, localConfigSchema, profileConfigSchema, profileSpecSchema, publishRequestSchema, publishResponseSchema, queryToCliArgs, scheduleCatchupPolicySchema, scheduleConnectorSchema, scheduleEntrySchema, settingsSchema, slackConnectorSchema, startChannelServer, toRequest };