@interactive-inc/claude-funnel 0.56.0 → 0.57.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/gateway.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  import { _ as connectorConnectionEventSchema, a as ConnectorConnectionStatus, 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, y as connectorRawEventSchema } from "./diagnostic-log-Bxe7Bbvw.js";
2
- import { $ as FunnelGatewayToken, G as SqliteFunnelEventLog, H as MemoryConnectorDiagnosticLog, J as PublishResponse, K as FunnelChannelPublisher, Q as DEFAULT_GATEWAY_TOKEN_PATH, U as SqliteConnectorDiagnosticLog, W as MemoryFunnelEventLog, X as publishRequestSchema, Y as PublishResult, Z as publishResponseSchema, _t as ReplayableEvent, at as GatewayEventStore, ct as FunnelEventRecord, dt as GatewayEmitInput, et as gatewayLoopbackUrl, ft as GatewayRouteDeps, gt as FunnelBroadcaster, ht as BroadcastSubscriber, it as FunnelGatewayServer, lt as funnelEventSchema, mt as BroadcastEvent, nt as channelWsProtocols, ot as FunnelEvent, pt as FunnelListenerSupervisor, q as PublishRequest, rt as channelWsUrl, st as FunnelEventLog, t as GatewayApp, tt as ChannelWsUrlInput, ut as Env } from "./index-CrngHrne.js";
2
+ import { $ as FunnelGatewayToken, G as SqliteFunnelEventLog, H as MemoryConnectorDiagnosticLog, J as PublishResponse, K as FunnelChannelPublisher, Q as DEFAULT_GATEWAY_TOKEN_PATH, U as SqliteConnectorDiagnosticLog, W as MemoryFunnelEventLog, X as publishRequestSchema, Y as PublishResult, Z as publishResponseSchema, _t as ReplayableEvent, at as GatewayEventStore, ct as FunnelEventRecord, dt as GatewayEmitInput, et as gatewayLoopbackUrl, ft as GatewayRouteDeps, gt as FunnelBroadcaster, ht as BroadcastSubscriber, it as FunnelGatewayServer, lt as funnelEventSchema, mt as BroadcastEvent, nt as channelWsProtocols, ot as FunnelEvent, pt as FunnelListenerSupervisor, q as PublishRequest, rt as channelWsUrl, st as FunnelEventLog, t as GatewayApp, tt as ChannelWsUrlInput, ut as Env } from "./index-DEeCwhk2.js";
3
3
  export { BroadcastEvent, BroadcastSubscriber, CONNECTOR_CONNECTION_STATUSES, ChannelWsUrlInput, ConnectorConnectionEvent, ConnectorConnectionQuery, ConnectorConnectionRecord, ConnectorConnectionStatus, ConnectorDiagnosticLog, ConnectorProcessedEvent, ConnectorProcessedQuery, ConnectorProcessedRecord, ConnectorQuery, ConnectorRawEvent, ConnectorRawQuery, ConnectorRawRecord, DEFAULT_GATEWAY_TOKEN_PATH, FunnelBroadcaster, FunnelChannelPublisher, FunnelEvent, FunnelEventLog, FunnelEventRecord, FunnelGatewayServer, FunnelGatewayToken, FunnelListenerSupervisor, type GatewayApp, type GatewayEmitInput, GatewayEventStore, type GatewayRouteDeps, type Env as GatewayServerEnv, MemoryConnectorDiagnosticLog, MemoryFunnelEventLog, PublishRequest, PublishResponse, PublishResult, ReplayableEvent, SqliteConnectorDiagnosticLog, SqliteFunnelEventLog, StoredConnectionEvent, StoredProcessedEvent, StoredRawEvent, channelWsProtocols, channelWsUrl, connectorConnectionEventSchema, connectorProcessedEventSchema, connectorRawEventSchema, funnelEventSchema, gatewayLoopbackUrl, publishRequestSchema, publishResponseSchema };
@@ -5,7 +5,7 @@ import { S as FunnelLogger, b as FunnelConnectorListener, c as ConnectorProcesse
5
5
  import { a as RunOptions, i as ProcessSnapshot, n as DetachOptions, o as RunResult, r as FunnelProcessRunner, t as AttachOptions } from "./process-runner-D5I_jhYQ.js";
6
6
  import { n as FunnelFileSystem, t as FileStat } from "./file-system-Wub9Nto4.js";
7
7
  import { t as FunnelProfiles } from "./profiles-EHTeCOqB.js";
8
- import { a as ChannelConnectorView, d as ConnectorConfig, i as FunnelTokenPrompter, l as ScheduleListenerOptions, m as FunnelLocalConfig, n as FunnelLocalConfigSync, o as FunnelChannels, s as FunnelClock, u as SlackListenerOptions } from "./local-config-sync-B8b04LrZ.js";
8
+ import { a as ChannelConnectorView, d as ConnectorConfig, i as FunnelTokenPrompter, l as ScheduleListenerOptions, m as FunnelLocalConfig, n as FunnelLocalConfigSync, o as FunnelChannels, s as FunnelClock, u as SlackListenerOptions } from "./local-config-sync-E_t5_fjw.js";
9
9
  import { c as FunnelDiagnostics } from "./funnel-diagnostics-qWy5tPSq.js";
10
10
  import { n as FunnelDocs } from "./funnel-docs-dXPokzr5.js";
11
11
  import { t as FunnelRecovery } from "./funnel-recovery-BUBsu7WX.js";
package/dist/index.d.ts CHANGED
@@ -3,14 +3,14 @@ import { n as FunnelIdGenerator, t as FunnelSettingsReader } from "./settings-re
3
3
  import { S as FunnelLogger, _ as connectorConnectionEventSchema, a as ConnectorConnectionStatus, b as FunnelConnectorListener, 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 NotifyFn, y as connectorRawEventSchema } from "./diagnostic-log-Bxe7Bbvw.js";
4
4
  import { a as RunOptions, i as ProcessSnapshot, n as DetachOptions, o as RunResult, r as FunnelProcessRunner, t as AttachOptions } from "./process-runner-D5I_jhYQ.js";
5
5
  import { n as FunnelFileSystem, t as FileStat } from "./file-system-Wub9Nto4.js";
6
- import { a as ChannelConnectorView, c as FunnelConnectorFactory, d as ConnectorConfig, f as ConnectorType, l as ScheduleListenerOptions, o as FunnelChannels, p as connectorConfigSchema, s as FunnelClock, u as SlackListenerOptions } from "./local-config-sync-B8b04LrZ.js";
6
+ import { a as ChannelConnectorView, c as FunnelConnectorFactory, d as ConnectorConfig, f as ConnectorType, l as ScheduleListenerOptions, o as FunnelChannels, p as connectorConfigSchema, s as FunnelClock, u as SlackListenerOptions } from "./local-config-sync-E_t5_fjw.js";
7
7
  import { a as ScheduleEntry, c as scheduleEntrySchema, i as ScheduleConnectorConfig, o as scheduleCatchupPolicySchema, r as ScheduleCatchupPolicy, s as scheduleConnectorSchema } from "./schedule-listener-DKh0hnkK.js";
8
- import { a as slackConnectorSchema, c as SlackProcessedEmit, d as SlackSkipReason, i as SlackConnectorConfig, l as SlackProcessedSkip, o as FunnelSlackEventProcessor, s as SlackProcessed, u as SlackRawEvent } from "./slack-listener-COQA8wAZ.js";
8
+ import { a as slackConnectorSchema, c as SlackProcessedEmit, d as SlackSkipReason, i as SlackConnectorConfig, l as SlackProcessedSkip, o as FunnelSlackEventProcessor, s as SlackProcessed, u as SlackRawEvent } from "./slack-listener-DFlAzMc7.js";
9
9
  import { a as DiagnosticsGatewayProbe, c as FunnelDiagnostics, d as DiagnosticEvent, f as previewOf, g as ConnectorDiagnosticSqlReader, h as toDiagnosticEvent, i as DiagnosticsChannelSource, l as ReplayResult, m as toDiagnosticConnectionError, n as DiagnoseAllReport, o as DiagnosticsPublisher, p as queryRows, r as DiagnosisStatus, s as DiagnosticsTokenReader, t as ChannelDiagnosis, u as DiagnosticConnectionError } from "./funnel-diagnostics-qWy5tPSq.js";
10
10
  import { n as FunnelDocs, t as DocsTopicListing } from "./funnel-docs-dXPokzr5.js";
11
11
  import { a as RecoveryListenerControl, i as RecoveryGatewayControl, n as RecoveryAction, o as RecoveryResult, r as RecoveryChannelSource, t as FunnelRecovery } from "./funnel-recovery-BUBsu7WX.js";
12
12
  import { n as DoctorReport, r as FunnelDoctor, t as DoctorFixMode } from "./funnel-doctor-BF3Rdgk0.js";
13
13
  import { n as discordConnectorSchema, t as DiscordConnectorConfig } from "./discord-connector-schema-CPgcZkXh.js";
14
14
  import { n as ghConnectorSchema, t as GhConnectorConfig } from "./gh-connector-schema-CU1ojfIF.js";
15
- import { $ as FunnelGatewayToken, A as FUNNEL_DIR, B as ListenerOpResult, C as ProcessListStub, D as MockFunnelSettingsReader, E as NodeFunnelFileSystem, F as Funnel, G as SqliteFunnelEventLog, H as MemoryConnectorDiagnosticLog, I as GatewayServerOptions, J as PublishResponse, K as FunnelChannelPublisher, L as FunnelListenersClient, M as SETTINGS_PATH, N as resolveFunnelDir, O as createSettings, P as resolveFunnelPort, Q as DEFAULT_GATEWAY_TOKEN_PATH, R as ListListenersResult, S as MemoryProcessSyncHandler, T as MemoryFunnelFileSystem, U as SqliteConnectorDiagnosticLog, V as FunnelGateway, W as MemoryFunnelEventLog, X as publishRequestSchema, Y as PublishResult, Z as publishResponseSchema, _ as AliveStub, _t as ReplayableEvent, a as toRequest, at as GatewayEventStore, b as MemoryProcessHandler, c as buildServiceRoutes, ct as FunnelEventRecord, d as MemoryFunnelClock, dt as GatewayEmitInput, et as gatewayLoopbackUrl, f as NodeFunnelClock, ft as GatewayRouteDeps, g as NodeFunnelLogger, gt as FunnelBroadcaster, h as MemoryFunnelLogger, ht as BroadcastSubscriber, i as queryToCliArgs, it as FunnelGatewayServer, j as FunnelSettingsStore, k as DEFAULT_GATEWAY_PORT, l as MemoryFunnelIdGenerator, lt as funnelEventSchema, m as LogEntry, mt as BroadcastEvent, n as CliApp, nt as channelWsProtocols, o as Env, ot as FunnelEvent, p as NoopFunnelLogger, pt as FunnelListenerSupervisor, q as PublishRequest, r as routes, rt as channelWsUrl, s as factory, st as FunnelEventLog, t as GatewayApp, tt as ChannelWsUrlInput, u as NodeFunnelIdGenerator, ut as Env$1, v as MemoryFunnelProcessRunner, vt as OnFunnelError, w as NodeFunnelProcessRunner, x as MemoryProcessResponse, y as MemoryProcessCall, z as ListenerEntry } from "./index-CrngHrne.js";
15
+ import { $ as FunnelGatewayToken, A as FUNNEL_DIR, B as ListenerOpResult, C as ProcessListStub, D as MockFunnelSettingsReader, E as NodeFunnelFileSystem, F as Funnel, G as SqliteFunnelEventLog, H as MemoryConnectorDiagnosticLog, I as GatewayServerOptions, J as PublishResponse, K as FunnelChannelPublisher, L as FunnelListenersClient, M as SETTINGS_PATH, N as resolveFunnelDir, O as createSettings, P as resolveFunnelPort, Q as DEFAULT_GATEWAY_TOKEN_PATH, R as ListListenersResult, S as MemoryProcessSyncHandler, T as MemoryFunnelFileSystem, U as SqliteConnectorDiagnosticLog, V as FunnelGateway, W as MemoryFunnelEventLog, X as publishRequestSchema, Y as PublishResult, Z as publishResponseSchema, _ as AliveStub, _t as ReplayableEvent, a as toRequest, at as GatewayEventStore, b as MemoryProcessHandler, c as buildServiceRoutes, ct as FunnelEventRecord, d as MemoryFunnelClock, dt as GatewayEmitInput, et as gatewayLoopbackUrl, f as NodeFunnelClock, ft as GatewayRouteDeps, g as NodeFunnelLogger, gt as FunnelBroadcaster, h as MemoryFunnelLogger, ht as BroadcastSubscriber, i as queryToCliArgs, it as FunnelGatewayServer, j as FunnelSettingsStore, k as DEFAULT_GATEWAY_PORT, l as MemoryFunnelIdGenerator, lt as funnelEventSchema, m as LogEntry, mt as BroadcastEvent, n as CliApp, nt as channelWsProtocols, o as Env, ot as FunnelEvent, p as NoopFunnelLogger, pt as FunnelListenerSupervisor, q as PublishRequest, r as routes, rt as channelWsUrl, s as factory, st as FunnelEventLog, t as GatewayApp, tt as ChannelWsUrlInput, u as NodeFunnelIdGenerator, ut as Env$1, v as MemoryFunnelProcessRunner, vt as OnFunnelError, w as NodeFunnelProcessRunner, x as MemoryProcessResponse, y as MemoryProcessCall, z as ListenerEntry } from "./index-DEeCwhk2.js";
16
16
  export { AliveStub, AttachOptions, BroadcastEvent, BroadcastSubscriber, CONNECTOR_CONNECTION_STATUSES, ChannelConfig, ChannelConnectorView, ChannelDeliveryMode, ChannelDiagnosis, ChannelWsUrlInput, CliApp, ConnectorConfig, ConnectorConnectionEvent, ConnectorConnectionQuery, ConnectorConnectionRecord, ConnectorConnectionStatus, ConnectorDiagnosticLog, ConnectorDiagnosticSqlReader, ConnectorProcessedEvent, ConnectorProcessedQuery, ConnectorProcessedRecord, ConnectorQuery, ConnectorRawEvent, ConnectorRawQuery, ConnectorRawRecord, ConnectorType, DEFAULT_GATEWAY_PORT, DEFAULT_GATEWAY_TOKEN_PATH, DetachOptions, DiagnoseAllReport, DiagnosisStatus, DiagnosticConnectionError, DiagnosticEvent, DiagnosticsChannelSource, DiagnosticsGatewayProbe, DiagnosticsPublisher, DiagnosticsTokenReader, DiscordConnectorConfig, DocsTopicListing, DoctorFixMode, DoctorReport, Env, FUNNEL_DIR, FileStat, Funnel, FunnelBroadcaster, FunnelChannelPublisher, FunnelChannels, FunnelClock, FunnelConnectorFactory, FunnelConnectorListener, FunnelDiagnostics, FunnelDocs, FunnelDoctor, FunnelEvent, FunnelEventLog, FunnelEventRecord, FunnelFileSystem, FunnelGateway, FunnelGatewayServer, FunnelGatewayToken, FunnelIdGenerator, FunnelListenerSupervisor, FunnelListenersClient, FunnelLogger, FunnelProcessRunner, FunnelRecovery, FunnelSettingsReader, FunnelSettingsStore, FunnelSlackEventProcessor, GatewayApp, GatewayEmitInput, GatewayEventStore, GatewayRouteDeps, Env$1 as GatewayServerEnv, GatewayServerOptions, GhConnectorConfig, ListListenersResult, ListenerEntry, ListenerOpResult, LogEntry, MemoryConnectorDiagnosticLog, MemoryFunnelClock, MemoryFunnelEventLog, MemoryFunnelFileSystem, MemoryFunnelIdGenerator, MemoryFunnelLogger, MemoryFunnelProcessRunner, MemoryProcessCall, MemoryProcessHandler, MemoryProcessResponse, MemoryProcessSyncHandler, MockFunnelSettingsReader, NodeFunnelClock, NodeFunnelFileSystem, NodeFunnelIdGenerator, NodeFunnelLogger, NodeFunnelProcessRunner, NoopFunnelLogger, NotifyFn, OnFunnelError, ProcessListStub, ProcessSnapshot, ProfileConfig, PublishRequest, PublishResponse, PublishResult, RecoveryAction, RecoveryChannelSource, RecoveryGatewayControl, RecoveryListenerControl, RecoveryResult, ReplayResult, ReplayableEvent, RunOptions, RunResult, SETTINGS_PATH, SETTINGS_VERSION, ScheduleCatchupPolicy, ScheduleConnectorConfig, ScheduleEntry, ScheduleListenerOptions, Settings, SlackConnectorConfig, SlackListenerOptions, SlackProcessed, SlackProcessedEmit, SlackProcessedSkip, SlackRawEvent, SlackSkipReason, SqliteConnectorDiagnosticLog, SqliteFunnelEventLog, StoredConnectionEvent, StoredProcessedEvent, StoredRawEvent, buildServiceRoutes, channelConfigSchema, channelDeliveryModeSchema, channelWsProtocols, channelWsUrl, routes as cliRoutes, connectorConfigSchema, connectorConnectionEventSchema, connectorProcessedEventSchema, connectorRawEventSchema, createSettings, discordConnectorSchema, factory, funnelEventSchema, gatewayLoopbackUrl, ghConnectorSchema, previewOf, profileConfigSchema, publishRequestSchema, publishResponseSchema, queryRows, queryToCliArgs, resolveFunnelDir, resolveFunnelPort, scheduleCatchupPolicySchema, scheduleConnectorSchema, scheduleEntrySchema, settingsSchema, slackConnectorSchema, toDiagnosticConnectionError, toDiagnosticEvent, toRequest };
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ import { n as FunnelGhAdapter, t as FunnelGhListener } from "./gh-listener-Dsx6A
6
6
  import { n as ScheduleStateStore, t as FunnelScheduleListener } from "./schedule-listener-DP9Jhc6U.js";
7
7
  import { t as FunnelFileSystem } from "./file-system-PWKKU7lA.js";
8
8
  import { t as NodeFunnelFileSystem } from "./node-file-system-BcrmWN9I.js";
9
- import { n as FunnelSlackEventProcessor, r as FunnelSlackAdapter, t as FunnelSlackListener } from "./slack-listener-DUKPcpJH.js";
9
+ import { n as FunnelSlackEventProcessor, r as FunnelSlackAdapter, t as FunnelSlackListener } from "./slack-listener-BDyBqatt.js";
10
10
  import { n as FunnelIdGenerator, t as FunnelSettingsReader } from "./settings-reader-DPqrpV7s.js";
11
11
  import { a as SETTINGS_PATH, c as SETTINGS_VERSION, d as profileConfigSchema, f as settingsSchema, i as FunnelSettingsStore, l as channelConfigSchema, m as NodeFunnelIdGenerator, n as DEFAULT_GATEWAY_PORT, o as resolveFunnelDir, p as connectorConfigSchema, r as FUNNEL_DIR, s as resolveFunnelPort, t as gatewayLoopbackUrl, u as channelDeliveryModeSchema } from "./gateway-base-url-6foMXfFf.js";
12
12
  import { t as discordConnectorSchema } from "./discord-connector-schema-B_N6IXLz.js";
@@ -5,7 +5,7 @@ import { r as FunnelProcessRunner } from "./process-runner-D5I_jhYQ.js";
5
5
  import { n as FunnelFileSystem } from "./file-system-Wub9Nto4.js";
6
6
  import { n as FunnelConnectorAdapter, t as CallInput } from "./connector-adapter-1PxjN-Uk.js";
7
7
  import { a as ScheduleEntry, n as ScheduleOnFired } from "./schedule-listener-DKh0hnkK.js";
8
- import { n as SlackOnAppCreated, r as SlackPreprocessEvent } from "./slack-listener-COQA8wAZ.js";
8
+ import { n as SlackOnAppCreated, r as SlackPreprocessEvent } from "./slack-listener-DFlAzMc7.js";
9
9
  import { z } from "zod";
10
10
 
11
11
  //#region lib/services/local-config/local-config-schema.d.ts
@@ -1,3 +1,3 @@
1
- import { C as profileSpecSchema, S as localConfigSchema, _ as LOCAL_CONFIG_FILENAME, b as channelSpecSchema, g as ConnectorSpec, h as ChannelSpec, i as FunnelTokenPrompter, m as FunnelLocalConfig, n as FunnelLocalConfigSync, r as LocalConfigSyncResult, t as ConnectorSyncOutcome, v as LocalConfig, x as connectorSpecSchema, y as ProfileSpec } from "./local-config-sync-B8b04LrZ.js";
2
- import { i as funnelJsonSchema, n as NodeFunnelTokenPrompter, r as FunnelLocalConfigWriter, t as MemoryFunnelTokenPrompter } from "./memory-token-prompter-Lo3YRDzq.js";
1
+ import { C as profileSpecSchema, S as localConfigSchema, _ as LOCAL_CONFIG_FILENAME, b as channelSpecSchema, g as ConnectorSpec, h as ChannelSpec, i as FunnelTokenPrompter, m as FunnelLocalConfig, n as FunnelLocalConfigSync, r as LocalConfigSyncResult, t as ConnectorSyncOutcome, v as LocalConfig, x as connectorSpecSchema, y as ProfileSpec } from "./local-config-sync-E_t5_fjw.js";
2
+ import { i as funnelJsonSchema, n as NodeFunnelTokenPrompter, r as FunnelLocalConfigWriter, t as MemoryFunnelTokenPrompter } from "./memory-token-prompter-DpCC1_Dn.js";
3
3
  export { ChannelSpec, ConnectorSpec, ConnectorSyncOutcome, FunnelLocalConfig, FunnelLocalConfigSync, FunnelLocalConfigWriter, FunnelTokenPrompter, LOCAL_CONFIG_FILENAME, LocalConfig, LocalConfigSyncResult, MemoryFunnelTokenPrompter, NodeFunnelTokenPrompter, ProfileSpec, channelSpecSchema, connectorSpecSchema, funnelJsonSchema, localConfigSchema, profileSpecSchema };
@@ -1,5 +1,5 @@
1
1
  import { n as FunnelFileSystem } from "./file-system-Wub9Nto4.js";
2
- import { i as FunnelTokenPrompter } from "./local-config-sync-B8b04LrZ.js";
2
+ import { i as FunnelTokenPrompter } from "./local-config-sync-E_t5_fjw.js";
3
3
 
4
4
  //#region lib/services/local-config/local-config-json-schema.d.ts
5
5
  /**
@@ -51,6 +51,39 @@ var FunnelSlackAdapter = class extends FunnelConnectorAdapter {
51
51
  throw error;
52
52
  }
53
53
  }
54
+ async postMessage(props) {
55
+ return this.call({
56
+ method: "post",
57
+ path: "chat.postMessage",
58
+ body: {
59
+ channel: props.channel,
60
+ text: props.text,
61
+ ...props.threadTs ? { thread_ts: props.threadTs } : {}
62
+ }
63
+ });
64
+ }
65
+ async addReaction(props) {
66
+ return this.call({
67
+ method: "post",
68
+ path: "reactions.add",
69
+ body: {
70
+ channel: props.channel,
71
+ timestamp: props.timestamp,
72
+ name: props.name
73
+ }
74
+ });
75
+ }
76
+ async removeReaction(props) {
77
+ return this.call({
78
+ method: "post",
79
+ path: "reactions.remove",
80
+ body: {
81
+ channel: props.channel,
82
+ timestamp: props.timestamp,
83
+ name: props.name
84
+ }
85
+ });
86
+ }
54
87
  };
55
88
  //#endregion
56
89
  //#region lib/engine/connectors/minify-slack-event.ts
@@ -192,11 +225,26 @@ var FunnelSlackEventProcessor = class {
192
225
  skip: true,
193
226
  reason: "skip:self-bot"
194
227
  };
195
- const mentioned = (getString(event, "text") ?? "").includes(`<@${this.ownBotUserId}>`);
228
+ const rawText = getString(event, "text") ?? "";
229
+ const mentioned = rawText.includes(`<@${this.ownBotUserId}>`);
196
230
  const threadTs = getString(event, "thread_ts") ?? getString(event, "ts") ?? "";
231
+ const ts = getString(event, "ts") ?? "";
232
+ const source = eventType === "app_mention" ? "app_mention" : "message";
197
233
  const emitted = this.minify ? minifySlackEvent(event) : event;
198
234
  return {
199
235
  skip: false,
236
+ event: {
237
+ kind: "message",
238
+ channel: channelId,
239
+ user: userId ?? "",
240
+ rawText,
241
+ text: stripMention(rawText, this.ownBotUserId),
242
+ threadTs,
243
+ ts,
244
+ isThreadRoot: threadTs === ts,
245
+ mentioned,
246
+ source
247
+ },
200
248
  content: JSON.stringify(emitted),
201
249
  meta: {
202
250
  event_type: "slack",
@@ -207,10 +255,11 @@ var FunnelSlackEventProcessor = class {
207
255
  },
208
256
  shouldReact: mentioned,
209
257
  channel: channelId,
210
- timestamp: getString(event, "ts") ?? ""
258
+ timestamp: ts
211
259
  };
212
260
  }
213
261
  };
262
+ const stripMention = (text, botUserId) => text.replace(new RegExp(`<@${botUserId}>`, "g"), "").trim();
214
263
  //#endregion
215
264
  //#region lib/engine/connectors/slack-listener.ts
216
265
  const middlewareArgsSchema = z.object({ event: z.record(z.string(), z.unknown()).optional() });
@@ -2,6 +2,29 @@ import { S as FunnelLogger, b as FunnelConnectorListener, o as ConnectorDiagnost
2
2
  import { z } from "zod";
3
3
  import { App } from "@slack/bolt";
4
4
 
5
+ //#region lib/engine/connectors/slack-event-types.d.ts
6
+ type SlackMessageEvent = {
7
+ kind: "message";
8
+ channel: string;
9
+ user: string;
10
+ rawText: string;
11
+ text: string;
12
+ threadTs: string;
13
+ ts: string;
14
+ isThreadRoot: boolean;
15
+ mentioned: boolean;
16
+ source: "app_mention" | "message";
17
+ };
18
+ type SlackReactionEvent = {
19
+ kind: "reaction_added" | "reaction_removed";
20
+ channel: string;
21
+ user: string;
22
+ emoji: string;
23
+ targetTs: string;
24
+ targetUser: string | null;
25
+ };
26
+ type SlackEvent = SlackMessageEvent | SlackReactionEvent;
27
+ //#endregion
5
28
  //#region lib/engine/connectors/slack-event-processor.d.ts
6
29
  type SlackRawEvent = Record<string, unknown>;
7
30
  /**
@@ -18,6 +41,7 @@ type SlackProcessedSkip = {
18
41
  };
19
42
  type SlackProcessedEmit = {
20
43
  skip: false;
44
+ event: SlackEvent;
21
45
  content: string;
22
46
  meta: Record<string, string>;
23
47
  shouldReact: boolean;
@@ -108,4 +132,4 @@ declare class FunnelSlackListener extends FunnelConnectorListener {
108
132
  private recordConnection;
109
133
  }
110
134
  //#endregion
111
- export { slackConnectorSchema as a, SlackProcessedEmit as c, SlackSkipReason as d, SlackConnectorConfig as i, SlackProcessedSkip as l, SlackOnAppCreated as n, FunnelSlackEventProcessor as o, SlackPreprocessEvent as r, SlackProcessed as s, FunnelSlackListener as t, SlackRawEvent as u };
135
+ export { slackConnectorSchema as a, SlackProcessedEmit as c, SlackSkipReason as d, SlackEvent as f, SlackConnectorConfig as i, SlackProcessedSkip as l, SlackReactionEvent as m, SlackOnAppCreated as n, FunnelSlackEventProcessor as o, SlackMessageEvent as p, SlackPreprocessEvent as r, SlackProcessed as s, FunnelSlackListener as t, SlackRawEvent as u };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@interactive-inc/claude-funnel",
3
- "version": "0.56.0",
3
+ "version": "0.57.0",
4
4
  "description": "Hub CLI that routes external events (Slack / GitHub / Discord) to Claude Code agents through subscription channels over MCP.",
5
5
  "keywords": [
6
6
  "bun",
@@ -124,7 +124,8 @@
124
124
  "devDependencies": {
125
125
  "@types/bun": "^1.3.14",
126
126
  "@typescript/native-preview": "^7.0.0-dev.20260516.1",
127
- "vite-plus": "^0.1.21"
127
+ "vite-plus": "^0.1.21",
128
+ "vitest": "^4.1.8"
128
129
  },
129
130
  "engines": {
130
131
  "bun": ">=1.3.0"