@interactive-inc/claude-funnel 0.27.0 → 0.29.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
@@ -1,9 +1,9 @@
1
1
  import { n as FunnelConnectorAdapter, t as CallInput } from "./connector-adapter-VA6undzc.js";
2
2
  import { n as discordConnectorSchema, t as DiscordConnectorConfig } from "./discord-connector-schema-Df_McRJI.js";
3
- import { S as NotifyFn, _ as connectorConnectionEventSchema, a as ConnectorConnectionStatus, b as FunnelLogger, c as ConnectorProcessedQuery, d as ConnectorRawEvent, f as ConnectorRawQuery, g as StoredRawEvent, h as StoredProcessedEvent, i as ConnectorConnectionRecord, l as ConnectorProcessedRecord, m as StoredConnectionEvent, n as ConnectorConnectionEvent, o as ConnectorDiagnosticLog, p as ConnectorRawRecord, r as ConnectorConnectionQuery, s as ConnectorProcessedEvent, t as CONNECTOR_CONNECTION_STATUSES, u as ConnectorQuery, v as connectorProcessedEventSchema, x as FunnelConnectorListener, y as connectorRawEventSchema } from "./connector-diagnostic-log-Clb2sCcz.js";
3
+ import { S as NotifyFn, _ as connectorConnectionEventSchema, a as ConnectorConnectionStatus, b as FunnelLogger, c as ConnectorProcessedQuery, d as ConnectorRawEvent, f as ConnectorRawQuery, g as StoredRawEvent, h as StoredProcessedEvent, i as ConnectorConnectionRecord, l as ConnectorProcessedRecord, m as StoredConnectionEvent, n as ConnectorConnectionEvent, o as ConnectorDiagnosticLog, p as ConnectorRawRecord, r as ConnectorConnectionQuery, s as ConnectorProcessedEvent, t as CONNECTOR_CONNECTION_STATUSES, u as ConnectorQuery, v as connectorProcessedEventSchema, x as FunnelConnectorListener, y as connectorRawEventSchema } from "./connector-diagnostic-log-OPpPi9V9.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-CQmEWzdV.js";
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-C2-KqHQc.js";
6
- import { a as SlackProcessed, c as SlackRawEvent, d as slackConnectorSchema, i as FunnelSlackEventProcessor, l as SlackSkipReason, n as SlackOnAppCreated, o as SlackProcessedEmit, r as SlackPreprocessEvent, s as SlackProcessedSkip, u as SlackConnectorConfig } from "./slack-listener-BMknoyVr.js";
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-3M6WkH1Y.js";
6
+ import { a as SlackProcessed, c as SlackRawEvent, d as slackConnectorSchema, i as FunnelSlackEventProcessor, l as SlackSkipReason, n as SlackOnAppCreated, o as SlackProcessedEmit, r as SlackPreprocessEvent, s as SlackProcessedSkip, u as SlackConnectorConfig } from "./slack-listener-CLTiOEJw.js";
7
7
  import { z } from "zod";
8
8
  import * as _$hono_factory0 from "hono/factory";
9
9
  import { Hono } from "hono";
@@ -570,40 +570,14 @@ declare class FunnelClaude {
570
570
  */
571
571
  type OnFunnelError = (error: Error, context?: Record<string, unknown>) => void;
572
572
  //#endregion
573
- //#region lib/engine/local-config/dotenv-reader.d.ts
574
- type Deps$10 = {
575
- fs: FunnelFileSystem;
576
- };
577
- /**
578
- * Minimal `.env.local` parser. Supports `KEY=value` lines, blank lines, and
579
- * `#` comments. Strips matching surrounding single or double quotes. No
580
- * interpolation, no `export` prefix — anything fancier should live in a real
581
- * env file loaded by the shell.
582
- */
583
- declare class FunnelDotenvReader {
584
- private readonly fs;
585
- constructor(deps: Deps$10);
586
- read(cwd: string): Record<string, string>;
587
- }
588
- //#endregion
589
573
  //#region lib/engine/local-config/local-config-schema.d.ts
590
574
  declare const connectorSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
591
575
  type: z.ZodLiteral<"slack">;
592
576
  name: z.ZodString;
593
- botToken: z.ZodOptional<z.ZodString>;
594
- appToken: z.ZodOptional<z.ZodString>;
595
577
  minify: z.ZodOptional<z.ZodBoolean>;
596
- env: z.ZodOptional<z.ZodObject<{
597
- botToken: z.ZodOptional<z.ZodString>;
598
- appToken: z.ZodOptional<z.ZodString>;
599
- }, z.core.$strip>>;
600
578
  }, z.core.$strip>, z.ZodObject<{
601
579
  type: z.ZodLiteral<"discord">;
602
580
  name: z.ZodString;
603
- botToken: z.ZodOptional<z.ZodString>;
604
- env: z.ZodOptional<z.ZodObject<{
605
- botToken: z.ZodOptional<z.ZodString>;
606
- }, z.core.$strip>>;
607
581
  }, z.core.$strip>, z.ZodObject<{
608
582
  type: z.ZodLiteral<"gh">;
609
583
  name: z.ZodString;
@@ -618,20 +592,10 @@ declare const channelSpecSchema: z.ZodObject<{
618
592
  connectors: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
619
593
  type: z.ZodLiteral<"slack">;
620
594
  name: z.ZodString;
621
- botToken: z.ZodOptional<z.ZodString>;
622
- appToken: z.ZodOptional<z.ZodString>;
623
595
  minify: z.ZodOptional<z.ZodBoolean>;
624
- env: z.ZodOptional<z.ZodObject<{
625
- botToken: z.ZodOptional<z.ZodString>;
626
- appToken: z.ZodOptional<z.ZodString>;
627
- }, z.core.$strip>>;
628
596
  }, z.core.$strip>, z.ZodObject<{
629
597
  type: z.ZodLiteral<"discord">;
630
598
  name: z.ZodString;
631
- botToken: z.ZodOptional<z.ZodString>;
632
- env: z.ZodOptional<z.ZodObject<{
633
- botToken: z.ZodOptional<z.ZodString>;
634
- }, z.core.$strip>>;
635
599
  }, z.core.$strip>, z.ZodObject<{
636
600
  type: z.ZodLiteral<"gh">;
637
601
  name: z.ZodString;
@@ -651,25 +615,16 @@ declare const profileSpecSchema: z.ZodObject<{
651
615
  type ProfileSpec = z.infer<typeof profileSpecSchema>;
652
616
  declare const localConfigSchema: z.ZodObject<{
653
617
  $schema: z.ZodOptional<z.ZodString>;
618
+ id: z.ZodOptional<z.ZodString>;
654
619
  channels: z.ZodArray<z.ZodObject<{
655
620
  name: z.ZodString;
656
621
  connectors: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
657
622
  type: z.ZodLiteral<"slack">;
658
623
  name: z.ZodString;
659
- botToken: z.ZodOptional<z.ZodString>;
660
- appToken: z.ZodOptional<z.ZodString>;
661
624
  minify: z.ZodOptional<z.ZodBoolean>;
662
- env: z.ZodOptional<z.ZodObject<{
663
- botToken: z.ZodOptional<z.ZodString>;
664
- appToken: z.ZodOptional<z.ZodString>;
665
- }, z.core.$strip>>;
666
625
  }, z.core.$strip>, z.ZodObject<{
667
626
  type: z.ZodLiteral<"discord">;
668
627
  name: z.ZodString;
669
- botToken: z.ZodOptional<z.ZodString>;
670
- env: z.ZodOptional<z.ZodObject<{
671
- botToken: z.ZodOptional<z.ZodString>;
672
- }, z.core.$strip>>;
673
628
  }, z.core.$strip>, z.ZodObject<{
674
629
  type: z.ZodLiteral<"gh">;
675
630
  name: z.ZodString;
@@ -688,10 +643,9 @@ declare const localConfigSchema: z.ZodObject<{
688
643
  }, z.core.$strip>;
689
644
  type LocalConfig = z.infer<typeof localConfigSchema>;
690
645
  declare const LOCAL_CONFIG_FILENAME = "funnel.json";
691
- declare const LOCAL_ENV_FILENAME = ".env.local";
692
646
  //#endregion
693
647
  //#region lib/engine/local-config/local-config.d.ts
694
- type Deps$9 = {
648
+ type Deps$10 = {
695
649
  fs: FunnelFileSystem;
696
650
  };
697
651
  /**
@@ -702,7 +656,7 @@ type Deps$9 = {
702
656
  */
703
657
  declare class FunnelLocalConfig {
704
658
  private readonly fs;
705
- constructor(deps: Deps$9);
659
+ constructor(deps: Deps$10);
706
660
  read(cwd: string): LocalConfig | null;
707
661
  private assertProfilesValid;
708
662
  }
@@ -719,11 +673,9 @@ declare abstract class FunnelTokenPrompter {
719
673
  }
720
674
  //#endregion
721
675
  //#region lib/engine/local-config/local-config-sync.d.ts
722
- type Deps$8 = {
676
+ type Deps$9 = {
723
677
  channels: FunnelChannels;
724
- dotenv: FunnelDotenvReader;
725
678
  prompter: FunnelTokenPrompter;
726
- env?: NodeJS.ProcessEnv;
727
679
  };
728
680
  type ConnectorSyncOutcome = {
729
681
  name: string;
@@ -754,11 +706,9 @@ type LocalConfigSyncResult = {
754
706
  */
755
707
  declare class FunnelLocalConfigSync {
756
708
  private readonly channels;
757
- private readonly dotenv;
758
709
  private readonly prompter;
759
- private readonly env;
760
- constructor(deps: Deps$8);
761
- ensure(channel: ChannelSpec, cwd: string): Promise<LocalConfigSyncResult>;
710
+ constructor(deps: Deps$9);
711
+ ensure(channel: ChannelSpec): Promise<LocalConfigSyncResult>;
762
712
  private ensureConnector;
763
713
  private ensureSlack;
764
714
  private ensureDiscord;
@@ -768,20 +718,33 @@ declare class FunnelLocalConfigSync {
768
718
  private findExistingDiscord;
769
719
  private removeExtras;
770
720
  /**
771
- * Decides how a single token slot is stored in settings.json:
772
- *
773
- * - `env.<field>` reference `{ tokenEnv: "<VAR>" }`; the secret is NOT
774
- * resolved into settings, it stays in the environment / `.env.local` and
775
- * the listener resolves it at start. We still assert the var is set so a
776
- * typo fails loudly here instead of as a dead listener later.
777
- * - literal → `{ token: "<secret>" }`.
778
- * - neither, but a prior value exists → carry it over verbatim (whichever
779
- * form it already was), so a tokenless re-sync is a no-op.
780
- * - nothing at all → prompt for a literal (TTY only; throws otherwise).
721
+ * Decides how a single token slot is stored in settings.json. funnel.json
722
+ * never carries tokens, so the only sources are a value already in
723
+ * settings.json (carried over verbatim, whichever form it was literal or an
724
+ * `env`-var reference set via the CLI) or, on first sync, a TTY prompt for a
725
+ * literal (throws when stdin is not a TTY). Either way the secret lands in the
726
+ * repo-scoped settings, never in the repo itself.
781
727
  */
782
728
  private resolveSlot;
783
729
  }
784
730
  //#endregion
731
+ //#region lib/engine/local-config/local-config-writer.d.ts
732
+ type Deps$8 = {
733
+ fs: FunnelFileSystem;
734
+ };
735
+ /**
736
+ * The one path that mutates the repo-committed funnel.json, and it only ever
737
+ * inserts `id`. On first launch a repo has no `id`; funnel generates one and
738
+ * writes it back here so future launches resolve the same `~/.funnel/projects/<id>/`.
739
+ * Idempotent — a no-op once `id` is present. Kept separate from the read-only
740
+ * FunnelLocalConfig so reads stay side-effect free.
741
+ */
742
+ declare class FunnelLocalConfigWriter {
743
+ private readonly fs;
744
+ constructor(deps: Deps$8);
745
+ ensureId(cwd: string, id: string): void;
746
+ }
747
+ //#endregion
785
748
  //#region lib/gateway/publish-schema.d.ts
786
749
  /**
787
750
  * Shared schema for `POST /channels/:channel/publish` — used by both the
@@ -1094,6 +1057,9 @@ declare abstract class FunnelEventLog {
1094
1057
  abstract record(record: FunnelEventRecord): void;
1095
1058
  abstract loadSince(since: number): ReplayableEvent[];
1096
1059
  abstract findMaxOffset(): number;
1060
+ /** Drop every stored event and reclaim the file. The broadcaster's in-memory
1061
+ * offset counter is unaffected, so offsets keep increasing after a clear. */
1062
+ abstract clear(): void;
1097
1063
  abstract close(): void;
1098
1064
  }
1099
1065
  //#endregion
@@ -1447,8 +1413,8 @@ declare class Funnel {
1447
1413
  get profiles(): FunnelProfiles;
1448
1414
  /** Reads `funnel.json` from a cwd. `fnl claude` consults it before falling back to the default profile. */
1449
1415
  get localConfig(): FunnelLocalConfig;
1450
- /** Parses `.env.local` from a cwd (used by sync to back $VAR references). */
1451
- get dotenv(): FunnelDotenvReader;
1416
+ /** Writes the stable `id` into funnel.json on first launch so state can be scoped to `~/.funnel/projects/<id>/`. */
1417
+ get localConfigWriter(): FunnelLocalConfigWriter;
1452
1418
  /** Secret prompter. Defaults to a TTY-only stdin reader; tests inject MemoryFunnelTokenPrompter. */
1453
1419
  get tokenPrompter(): FunnelTokenPrompter;
1454
1420
  /** Reconciles funnel.json's channel + connectors with `~/.funnel/settings.json` on launch. */
@@ -1773,7 +1739,9 @@ type Props$2 = {
1773
1739
  /** SQLite database file path. Created on first write. ":memory:" for tests. */path: string; /** Override for tests. Defaults to `Date.now`. */
1774
1740
  now?: () => number; /** Optional row cap. Pruned on every insert. */
1775
1741
  maxRows?: number; /** Optional age cap in ms. Pruned on every insert. */
1776
- maxAgeMs?: number;
1742
+ maxAgeMs?: number; /** Optional on-disk byte cap. Checked periodically; on overflow the oldest rows are dropped toward targetBytes and the file is VACUUMed. */
1743
+ maxBytes?: number; /** Shrink target when maxBytes is exceeded. Defaults to maxBytes/4. */
1744
+ targetBytes?: number;
1777
1745
  };
1778
1746
  /**
1779
1747
  * SQLite-backed `FunnelEventLog`. One indexed table holds every broadcaster
@@ -1820,6 +1788,7 @@ declare class SqliteFunnelEventLog extends FunnelEventLog {
1820
1788
  limit?: number;
1821
1789
  }): ReplayableEvent[];
1822
1790
  findMaxOffset(): number;
1791
+ clear(): void;
1823
1792
  close(): void;
1824
1793
  }
1825
1794
  //#endregion
@@ -1837,6 +1806,7 @@ declare class MemoryFunnelEventLog extends FunnelEventLog {
1837
1806
  record(record: FunnelEventRecord): void;
1838
1807
  loadSince(since: number): ReplayableEvent[];
1839
1808
  findMaxOffset(): number;
1809
+ clear(): void;
1840
1810
  close(): void;
1841
1811
  }
1842
1812
  //#endregion
@@ -1884,6 +1854,7 @@ declare class SqliteConnectorDiagnosticLog extends ConnectorDiagnosticLog {
1884
1854
  queryRaw(query: ConnectorRawQuery): StoredRawEvent[];
1885
1855
  queryProcessed(query: ConnectorProcessedQuery): StoredProcessedEvent[];
1886
1856
  queryConnection(query: ConnectorConnectionQuery): StoredConnectionEvent[];
1857
+ clear(): void;
1887
1858
  close(): void;
1888
1859
  }
1889
1860
  //#endregion
@@ -1910,6 +1881,7 @@ declare class MemoryConnectorDiagnosticLog extends ConnectorDiagnosticLog {
1910
1881
  queryRaw(query: ConnectorRawQuery): StoredRawEvent[];
1911
1882
  queryProcessed(query: ConnectorProcessedQuery): StoredProcessedEvent[];
1912
1883
  queryConnection(query: ConnectorConnectionQuery): StoredConnectionEvent[];
1884
+ clear(): void;
1913
1885
  close(): void;
1914
1886
  }
1915
1887
  //#endregion
@@ -4606,4 +4578,4 @@ ${string}`;
4606
4578
  //#region lib/tui/tui.d.ts
4607
4579
  declare function launchTui(funnel: Funnel): Promise<void>;
4608
4580
  //#endregion
4609
- export { AliveStub, AttachOptions, BroadcastEvent, BroadcastSubscriber, CONNECTOR_CONNECTION_STATUSES, ChannelConfig, ChannelConnectorView, ChannelDeliveryMode, ChannelServerOptions, ChannelSpec, ConnectorConfig, ConnectorConnectionEvent, ConnectorConnectionQuery, ConnectorConnectionRecord, ConnectorConnectionStatus, ConnectorDiagnosticLog, ConnectorDiagnosticSqlReader, ConnectorProcessedEvent, ConnectorProcessedQuery, ConnectorProcessedRecord, ConnectorQuery, ConnectorRawEvent, ConnectorRawQuery, ConnectorRawRecord, 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, FunnelEventLog, FunnelEventRecord, FunnelFileSystem, FunnelGateway, FunnelGatewayServer, FunnelGatewayToken, FunnelIdGenerator, FunnelListenerSupervisor, FunnelListenersClient, FunnelLocalConfig, FunnelLocalConfigSync, FunnelLogger, FunnelMcp, FunnelProcessRunner, FunnelProfiles, 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, MemoryConnectorDiagnosticLog, MemoryFunnelClock, MemoryFunnelEventLog, 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, SlackSkipReason, SqliteConnectorDiagnosticLog, SqliteFunnelEventLog, StoredConnectionEvent, StoredProcessedEvent, StoredRawEvent, channelConfigSchema, channelDeliveryModeSchema, channelSpecSchema, app as cliApp, connectorConfigSchema, connectorConnectionEventSchema, connectorProcessedEventSchema, connectorRawEventSchema, connectorSpecSchema, createCliApp, createSettings, discordConnectorSchema, factory, funnelEventSchema, funnelJsonSchema, ghConnectorSchema, launchTui, localConfigSchema, profileConfigSchema, profileSpecSchema, publishRequestSchema, publishResponseSchema, queryToCliArgs, resolveFunnelDir, scheduleCatchupPolicySchema, scheduleConnectorSchema, scheduleEntrySchema, settingsSchema, slackConnectorSchema, startChannelServer, toRequest };
4581
+ export { AliveStub, AttachOptions, BroadcastEvent, BroadcastSubscriber, CONNECTOR_CONNECTION_STATUSES, ChannelConfig, ChannelConnectorView, ChannelDeliveryMode, ChannelServerOptions, ChannelSpec, ConnectorConfig, ConnectorConnectionEvent, ConnectorConnectionQuery, ConnectorConnectionRecord, ConnectorConnectionStatus, ConnectorDiagnosticLog, ConnectorDiagnosticSqlReader, ConnectorProcessedEvent, ConnectorProcessedQuery, ConnectorProcessedRecord, ConnectorQuery, ConnectorRawEvent, ConnectorRawQuery, ConnectorRawRecord, 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, FunnelEvent, FunnelEventLog, FunnelEventRecord, FunnelFileSystem, FunnelGateway, FunnelGatewayServer, FunnelGatewayToken, FunnelIdGenerator, FunnelListenerSupervisor, FunnelListenersClient, FunnelLocalConfig, FunnelLocalConfigSync, FunnelLocalConfigWriter, FunnelLogger, FunnelMcp, FunnelProcessRunner, FunnelProfiles, FunnelSettingsReader, FunnelSettingsStore, FunnelSlackEventProcessor, FunnelTokenPrompter, type GatewayEmitInput, type GatewayRouteDeps, type Env$1 as GatewayServerEnv, GhConnectorConfig, LOCAL_CONFIG_FILENAME, LaunchOptions, ListListenersResult, ListenerEntry, ListenerOpResult, LocalConfig, LocalConfigSyncResult, LogEntry, MemoryConnectorDiagnosticLog, MemoryFunnelClock, MemoryFunnelEventLog, 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, SlackSkipReason, SqliteConnectorDiagnosticLog, SqliteFunnelEventLog, StoredConnectionEvent, StoredProcessedEvent, StoredRawEvent, channelConfigSchema, channelDeliveryModeSchema, channelSpecSchema, app as cliApp, connectorConfigSchema, connectorConnectionEventSchema, connectorProcessedEventSchema, connectorRawEventSchema, connectorSpecSchema, createCliApp, createSettings, discordConnectorSchema, factory, funnelEventSchema, funnelJsonSchema, ghConnectorSchema, launchTui, localConfigSchema, profileConfigSchema, profileSpecSchema, publishRequestSchema, publishResponseSchema, queryToCliArgs, resolveFunnelDir, scheduleCatchupPolicySchema, scheduleConnectorSchema, scheduleEntrySchema, settingsSchema, slackConnectorSchema, startChannelServer, toRequest };