@interactive-inc/claude-funnel 0.21.1 → 0.22.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/bin.js +436 -436
- package/dist/connectors/discord.d.ts +1 -1
- package/dist/connectors/discord.js +1 -1
- package/dist/connectors/gh.d.ts +2 -2
- package/dist/connectors/gh.js +1 -1
- package/dist/connectors/schedule.d.ts +1 -1
- package/dist/connectors/schedule.js +1 -1
- package/dist/connectors/slack.d.ts +1 -1
- package/dist/connectors/slack.js +1 -1
- package/dist/{discord-connector-schema-ygf5Df-2.js → discord-connector-schema-CR8RJ08_.js} +1 -1
- package/dist/gateway/daemon.js +194 -194
- package/dist/{gh-connector-schema-CD5HIkrd.js → gh-connector-schema-CAC24s0r.js} +148 -4
- package/dist/{gh-connector-schema-BNyTaASt.d.ts → gh-connector-schema-Cmi57jvL.d.ts} +16 -2
- package/dist/index.d.ts +25 -13
- package/dist/index.js +88 -85
- package/dist/{logger-CTlXs7z4.d.ts → logger-B3aXsVcX.d.ts} +1 -1
- package/dist/{node-logger-DQz_BGOD.js → node-logger-B97ZiGwj.js} +17 -4
- package/dist/{schedule-connector-schema-FxP7LPlx.js → schedule-connector-schema-BZpH6ZmR.js} +1 -1
- package/dist/{schedule-listener-BPodvbld.d.ts → schedule-listener-CBYF2bGZ.d.ts} +1 -1
- package/dist/{slack-connector-schema-BM9xshol.js → slack-connector-schema-B3jr-RTH.js} +1 -1
- package/dist/{slack-listener-CHj6uMY-.d.ts → slack-listener-tQH7cXU7.d.ts} +1 -1
- package/package.json +1 -1
|
@@ -1,14 +1,68 @@
|
|
|
1
1
|
import { t as FunnelConnectorAdapter } from "./connector-adapter-D5Utumgz.js";
|
|
2
|
-
import {
|
|
2
|
+
import { i as FunnelConnectorListener, t as NodeFunnelLogger } from "./node-logger-B97ZiGwj.js";
|
|
3
|
+
import { openSync } from "node:fs";
|
|
3
4
|
import { z } from "zod";
|
|
4
5
|
//#region lib/engine/process/process-runner.ts
|
|
5
6
|
/**
|
|
6
7
|
* Process boundary covering one-shot runs, sync runs, foreground attach, and
|
|
7
8
|
* detached background spawns. Default is NodeFunnelProcessRunner (Bun.spawn);
|
|
8
9
|
* MemoryFunnelProcessRunner records calls and lets tests stub responses.
|
|
10
|
+
*
|
|
11
|
+
* Liveness and process-listing helpers absorb POSIX/Windows differences so
|
|
12
|
+
* callers do not branch on `process.platform`. `isAlive` checks whether a PID
|
|
13
|
+
* names a live (non-zombie) process; `listProcessesContaining` enumerates
|
|
14
|
+
* processes whose command line includes `marker`, used for funnel-gateway tag
|
|
15
|
+
* matching across daemons that share a home dir.
|
|
9
16
|
*/
|
|
10
17
|
var FunnelProcessRunner = class {};
|
|
11
18
|
//#endregion
|
|
19
|
+
//#region lib/engine/process/parse-csv-row.ts
|
|
20
|
+
/**
|
|
21
|
+
* Parse a single CSV row produced by Windows tools such as
|
|
22
|
+
* `ConvertTo-Csv -NoTypeInformation`. Returns the trimmed cell array.
|
|
23
|
+
* Supports embedded quotes via the `""` escape and quoted commas.
|
|
24
|
+
*/
|
|
25
|
+
function parseCsvRow(line) {
|
|
26
|
+
const cells = [];
|
|
27
|
+
const chars = Array.from(line);
|
|
28
|
+
let current = "";
|
|
29
|
+
let inQuotes = false;
|
|
30
|
+
let cursor = 0;
|
|
31
|
+
while (cursor < chars.length) {
|
|
32
|
+
const char = chars[cursor] ?? "";
|
|
33
|
+
if (inQuotes) {
|
|
34
|
+
if (char === "\"" && chars[cursor + 1] === "\"") {
|
|
35
|
+
current += "\"";
|
|
36
|
+
cursor += 2;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (char === "\"") {
|
|
40
|
+
inQuotes = false;
|
|
41
|
+
cursor += 1;
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
current += char;
|
|
45
|
+
cursor += 1;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (char === "\"") {
|
|
49
|
+
inQuotes = true;
|
|
50
|
+
cursor += 1;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (char === ",") {
|
|
54
|
+
cells.push(current);
|
|
55
|
+
current = "";
|
|
56
|
+
cursor += 1;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
current += char;
|
|
60
|
+
cursor += 1;
|
|
61
|
+
}
|
|
62
|
+
cells.push(current);
|
|
63
|
+
return cells;
|
|
64
|
+
}
|
|
65
|
+
//#endregion
|
|
12
66
|
//#region lib/engine/process/node-process-runner.ts
|
|
13
67
|
const toEnv = (env) => {
|
|
14
68
|
if (!env) return void 0;
|
|
@@ -17,6 +71,7 @@ const toEnv = (env) => {
|
|
|
17
71
|
for (const [key, value] of Object.entries(env)) merged[key] = value;
|
|
18
72
|
return merged;
|
|
19
73
|
};
|
|
74
|
+
const isWindows = () => process.platform === "win32";
|
|
20
75
|
var NodeFunnelProcessRunner = class extends FunnelProcessRunner {
|
|
21
76
|
constructor() {
|
|
22
77
|
super();
|
|
@@ -65,13 +120,16 @@ var NodeFunnelProcessRunner = class extends FunnelProcessRunner {
|
|
|
65
120
|
return await proc.exited;
|
|
66
121
|
}
|
|
67
122
|
detach(command, options = {}) {
|
|
123
|
+
const stdoutTarget = options.stdoutFile ? openSync(options.stdoutFile, "a") : "ignore";
|
|
124
|
+
const stderrTarget = options.stderrFile ? options.stderrFile === options.stdoutFile && typeof stdoutTarget === "number" ? stdoutTarget : openSync(options.stderrFile, "a") : "ignore";
|
|
68
125
|
Bun.spawn(command, {
|
|
69
126
|
env: toEnv(options.env),
|
|
70
127
|
stdio: [
|
|
71
128
|
"ignore",
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
]
|
|
129
|
+
stdoutTarget,
|
|
130
|
+
stderrTarget
|
|
131
|
+
],
|
|
132
|
+
windowsHide: true
|
|
75
133
|
}).unref();
|
|
76
134
|
}
|
|
77
135
|
kill(pid, signal = "SIGTERM") {
|
|
@@ -79,6 +137,92 @@ var NodeFunnelProcessRunner = class extends FunnelProcessRunner {
|
|
|
79
137
|
process.kill(pid, signal);
|
|
80
138
|
} catch {}
|
|
81
139
|
}
|
|
140
|
+
isAlive(pid) {
|
|
141
|
+
if (!Number.isInteger(pid) || pid <= 0) return false;
|
|
142
|
+
if (isWindows()) return this.isAliveWindows(pid);
|
|
143
|
+
return this.isAlivePosix(pid);
|
|
144
|
+
}
|
|
145
|
+
listProcessesContaining(marker) {
|
|
146
|
+
if (!marker) return [];
|
|
147
|
+
if (isWindows()) return this.listProcessesContainingWindows(marker);
|
|
148
|
+
return this.listProcessesContainingPosix(marker);
|
|
149
|
+
}
|
|
150
|
+
isAlivePosix(pid) {
|
|
151
|
+
const result = this.runSync([
|
|
152
|
+
"ps",
|
|
153
|
+
"-p",
|
|
154
|
+
String(pid),
|
|
155
|
+
"-o",
|
|
156
|
+
"state="
|
|
157
|
+
]);
|
|
158
|
+
if (result.exitCode !== 0) return false;
|
|
159
|
+
const state = result.stdout.trim();
|
|
160
|
+
if (!state) return false;
|
|
161
|
+
return !state.startsWith("Z");
|
|
162
|
+
}
|
|
163
|
+
isAliveWindows(pid) {
|
|
164
|
+
const result = this.runSync([
|
|
165
|
+
"tasklist",
|
|
166
|
+
"/FI",
|
|
167
|
+
`PID eq ${pid}`,
|
|
168
|
+
"/NH",
|
|
169
|
+
"/FO",
|
|
170
|
+
"CSV"
|
|
171
|
+
]);
|
|
172
|
+
if (result.exitCode !== 0) return false;
|
|
173
|
+
return result.stdout.includes(`"${pid}"`);
|
|
174
|
+
}
|
|
175
|
+
listProcessesContainingPosix(marker) {
|
|
176
|
+
const result = this.runSync([
|
|
177
|
+
"ps",
|
|
178
|
+
"-e",
|
|
179
|
+
"-o",
|
|
180
|
+
"pid=,args="
|
|
181
|
+
]);
|
|
182
|
+
if (result.exitCode !== 0) return [];
|
|
183
|
+
const snapshots = [];
|
|
184
|
+
for (const raw of result.stdout.split("\n")) {
|
|
185
|
+
const line = raw.trim();
|
|
186
|
+
if (!line) continue;
|
|
187
|
+
const match = /^(\d+)\s+(.+)$/.exec(line);
|
|
188
|
+
if (!match) continue;
|
|
189
|
+
const pid = Number(match[1]);
|
|
190
|
+
const command = match[2] ?? "";
|
|
191
|
+
if (!Number.isInteger(pid) || pid <= 0) continue;
|
|
192
|
+
if (!command.includes(marker)) continue;
|
|
193
|
+
snapshots.push({
|
|
194
|
+
pid,
|
|
195
|
+
command
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
return snapshots;
|
|
199
|
+
}
|
|
200
|
+
listProcessesContainingWindows(marker) {
|
|
201
|
+
const result = this.runSync([
|
|
202
|
+
"powershell",
|
|
203
|
+
"-NoProfile",
|
|
204
|
+
"-Command",
|
|
205
|
+
"Get-CimInstance Win32_Process | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"
|
|
206
|
+
]);
|
|
207
|
+
if (result.exitCode !== 0) return [];
|
|
208
|
+
const snapshots = [];
|
|
209
|
+
const lines = result.stdout.split(/\r?\n/).slice(1);
|
|
210
|
+
for (const raw of lines) {
|
|
211
|
+
const line = raw.trim();
|
|
212
|
+
if (!line) continue;
|
|
213
|
+
const cells = parseCsvRow(line);
|
|
214
|
+
if (cells.length < 2) continue;
|
|
215
|
+
const pid = Number(cells[0]);
|
|
216
|
+
const command = cells[1] ?? "";
|
|
217
|
+
if (!Number.isInteger(pid) || pid <= 0) continue;
|
|
218
|
+
if (!command.includes(marker)) continue;
|
|
219
|
+
snapshots.push({
|
|
220
|
+
pid,
|
|
221
|
+
command
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
return snapshots;
|
|
225
|
+
}
|
|
82
226
|
};
|
|
83
227
|
//#endregion
|
|
84
228
|
//#region lib/connectors/gh-adapter.ts
|
|
@@ -19,12 +19,24 @@ type AttachOptions = {
|
|
|
19
19
|
onSpawned?: (pid: number) => void;
|
|
20
20
|
};
|
|
21
21
|
type DetachOptions = {
|
|
22
|
-
env?: Record<string, string>;
|
|
22
|
+
env?: Record<string, string>; /** Append stdout to this file. Parent dir is the caller's responsibility. */
|
|
23
|
+
stdoutFile?: string; /** Append stderr to this file. Parent dir is the caller's responsibility. */
|
|
24
|
+
stderrFile?: string;
|
|
25
|
+
};
|
|
26
|
+
type ProcessSnapshot = {
|
|
27
|
+
pid: number;
|
|
28
|
+
command: string;
|
|
23
29
|
};
|
|
24
30
|
/**
|
|
25
31
|
* Process boundary covering one-shot runs, sync runs, foreground attach, and
|
|
26
32
|
* detached background spawns. Default is NodeFunnelProcessRunner (Bun.spawn);
|
|
27
33
|
* MemoryFunnelProcessRunner records calls and lets tests stub responses.
|
|
34
|
+
*
|
|
35
|
+
* Liveness and process-listing helpers absorb POSIX/Windows differences so
|
|
36
|
+
* callers do not branch on `process.platform`. `isAlive` checks whether a PID
|
|
37
|
+
* names a live (non-zombie) process; `listProcessesContaining` enumerates
|
|
38
|
+
* processes whose command line includes `marker`, used for funnel-gateway tag
|
|
39
|
+
* matching across daemons that share a home dir.
|
|
28
40
|
*/
|
|
29
41
|
declare abstract class FunnelProcessRunner {
|
|
30
42
|
abstract run(command: string[], options?: RunOptions): Promise<RunResult>;
|
|
@@ -32,6 +44,8 @@ declare abstract class FunnelProcessRunner {
|
|
|
32
44
|
abstract attach(command: string[], options?: AttachOptions): Promise<number>;
|
|
33
45
|
abstract detach(command: string[], options?: DetachOptions): void;
|
|
34
46
|
abstract kill(pid: number, signal?: string): void;
|
|
47
|
+
abstract isAlive(pid: number): boolean;
|
|
48
|
+
abstract listProcessesContaining(marker: string): ProcessSnapshot[];
|
|
35
49
|
}
|
|
36
50
|
//#endregion
|
|
37
51
|
//#region lib/connectors/gh-connector-schema.d.ts
|
|
@@ -45,4 +59,4 @@ declare const ghConnectorSchema: z.ZodObject<{
|
|
|
45
59
|
}, z.core.$strip>;
|
|
46
60
|
type GhConnectorConfig = z.infer<typeof ghConnectorSchema>;
|
|
47
61
|
//#endregion
|
|
48
|
-
export { FunnelProcessRunner as a, DetachOptions as i, ghConnectorSchema as n,
|
|
62
|
+
export { FunnelProcessRunner as a, RunResult as c, DetachOptions as i, ghConnectorSchema as n, ProcessSnapshot as o, AttachOptions as r, RunOptions as s, GhConnectorConfig as t };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { n as FunnelConnectorAdapter, t as CallInput } from "./connector-adapter-CXB-q_XC.js";
|
|
2
2
|
import { n as discordConnectorSchema, t as DiscordConnectorConfig } from "./discord-connector-schema-Dww2I4zH.js";
|
|
3
|
-
import { n as FunnelConnectorListener, r as NotifyFn, t as FunnelLogger } from "./logger-
|
|
4
|
-
import { a as FunnelProcessRunner, i as DetachOptions, n as ghConnectorSchema, o as
|
|
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-
|
|
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-
|
|
3
|
+
import { n as FunnelConnectorListener, r as NotifyFn, t as FunnelLogger } from "./logger-B3aXsVcX.js";
|
|
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
|
+
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";
|
|
7
7
|
import { z } from "zod";
|
|
8
8
|
import * as _$hono_factory0 from "hono/factory";
|
|
9
9
|
import { Hono } from "hono";
|
|
@@ -1001,7 +1001,6 @@ declare class FunnelGateway {
|
|
|
1001
1001
|
private readonly clock;
|
|
1002
1002
|
private readonly dir;
|
|
1003
1003
|
private readonly pidFile;
|
|
1004
|
-
private readonly logDir;
|
|
1005
1004
|
private readonly gatewayLog;
|
|
1006
1005
|
private readonly tmpDir;
|
|
1007
1006
|
private readonly port;
|
|
@@ -1018,7 +1017,7 @@ declare class FunnelGateway {
|
|
|
1018
1017
|
}): Promise<boolean>;
|
|
1019
1018
|
buildStartCommand(gatewayScript: string, options?: {
|
|
1020
1019
|
caffeinate?: boolean;
|
|
1021
|
-
}): string;
|
|
1020
|
+
}): string[];
|
|
1022
1021
|
stop(): Promise<boolean>;
|
|
1023
1022
|
restart(options?: {
|
|
1024
1023
|
onlyIfRunning?: boolean;
|
|
@@ -1029,7 +1028,6 @@ declare class FunnelGateway {
|
|
|
1029
1028
|
stopped: boolean;
|
|
1030
1029
|
started: boolean;
|
|
1031
1030
|
}>;
|
|
1032
|
-
getLogDir(): string;
|
|
1033
1031
|
getGatewayLog(): string;
|
|
1034
1032
|
getPort(): number;
|
|
1035
1033
|
private readPid;
|
|
@@ -1117,8 +1115,8 @@ declare class FunnelEventStore {
|
|
|
1117
1115
|
type Deps$3 = {
|
|
1118
1116
|
channels: FunnelChannels;
|
|
1119
1117
|
settings: FunnelSettingsReader;
|
|
1120
|
-
port?: number; /**
|
|
1121
|
-
|
|
1118
|
+
port?: number; /** SQLite event store file path. Parent directory is created on demand. Defaults to `<os.tmpdir()>/funnel/events.db`. */
|
|
1119
|
+
dbPath?: string;
|
|
1122
1120
|
process?: FunnelProcessRunner;
|
|
1123
1121
|
clock?: FunnelClock;
|
|
1124
1122
|
logger?: FunnelLogger;
|
|
@@ -1156,7 +1154,7 @@ declare class FunnelGatewayServer {
|
|
|
1156
1154
|
private readonly channels;
|
|
1157
1155
|
private readonly settings;
|
|
1158
1156
|
private readonly port;
|
|
1159
|
-
private readonly
|
|
1157
|
+
private readonly dbPath;
|
|
1160
1158
|
private readonly process?;
|
|
1161
1159
|
private readonly logger;
|
|
1162
1160
|
private readonly selfPid;
|
|
@@ -1310,7 +1308,7 @@ type Props$5 = {
|
|
|
1310
1308
|
clock?: FunnelClock; /** ID generator for channel and connector ids. Use MemoryFunnelIdGenerator for deterministic tests. */
|
|
1311
1309
|
idGenerator?: FunnelIdGenerator; /** Prompter used by FunnelLocalConfigSync when funnel.json omits a token. Defaults to a TTY-only stdin prompter. */
|
|
1312
1310
|
tokenPrompter?: FunnelTokenPrompter; /** Funnel home directory (settings.json + per-channel/per-connector dirs). Defaults to ~/.funnel. */
|
|
1313
|
-
dir?: string; /** Temp / runtime directory (gateway logs and PID adjacent files). Defaults to
|
|
1311
|
+
dir?: string; /** Temp / runtime directory (gateway logs and PID adjacent files). Defaults to `<os.tmpdir()>/funnel`. */
|
|
1314
1312
|
tmpDir?: string;
|
|
1315
1313
|
/**
|
|
1316
1314
|
* Host integration hooks for Slack listeners — `onAppCreated` for attaching
|
|
@@ -1414,7 +1412,7 @@ declare class Funnel {
|
|
|
1414
1412
|
*/
|
|
1415
1413
|
gatewayServer(options?: {
|
|
1416
1414
|
port?: number;
|
|
1417
|
-
|
|
1415
|
+
dbPath?: string;
|
|
1418
1416
|
killCompetingSlack?: boolean; /** Override the auth token. Defaults to the persisted gateway.token. Pass "" to disable auth (tests). */
|
|
1419
1417
|
token?: string;
|
|
1420
1418
|
/**
|
|
@@ -1525,6 +1523,12 @@ declare class NodeFunnelProcessRunner extends FunnelProcessRunner {
|
|
|
1525
1523
|
attach(command: string[], options?: AttachOptions): Promise<number>;
|
|
1526
1524
|
detach(command: string[], options?: DetachOptions): void;
|
|
1527
1525
|
kill(pid: number, signal?: string): void;
|
|
1526
|
+
isAlive(pid: number): boolean;
|
|
1527
|
+
listProcessesContaining(marker: string): ProcessSnapshot[];
|
|
1528
|
+
private isAlivePosix;
|
|
1529
|
+
private isAliveWindows;
|
|
1530
|
+
private listProcessesContainingPosix;
|
|
1531
|
+
private listProcessesContainingWindows;
|
|
1528
1532
|
}
|
|
1529
1533
|
//#endregion
|
|
1530
1534
|
//#region lib/engine/process/memory-process-runner.d.ts
|
|
@@ -1554,6 +1558,8 @@ type MemoryProcessCall = {
|
|
|
1554
1558
|
kind: "kill";
|
|
1555
1559
|
command: string[];
|
|
1556
1560
|
};
|
|
1561
|
+
type AliveStub = (pid: number) => boolean;
|
|
1562
|
+
type ProcessListStub = (marker: string) => ProcessSnapshot[];
|
|
1557
1563
|
declare class MemoryFunnelProcessRunner extends FunnelProcessRunner {
|
|
1558
1564
|
readonly calls: MemoryProcessCall[];
|
|
1559
1565
|
readonly killed: {
|
|
@@ -1562,13 +1568,19 @@ declare class MemoryFunnelProcessRunner extends FunnelProcessRunner {
|
|
|
1562
1568
|
}[];
|
|
1563
1569
|
private handler;
|
|
1564
1570
|
private syncHandler;
|
|
1571
|
+
private aliveStub;
|
|
1572
|
+
private listStub;
|
|
1565
1573
|
on(handler: MemoryProcessHandler): this;
|
|
1566
1574
|
onSync(handler: MemoryProcessSyncHandler): this;
|
|
1575
|
+
onIsAlive(stub: AliveStub): this;
|
|
1576
|
+
onListProcessesContaining(stub: ProcessListStub): this;
|
|
1567
1577
|
run(command: string[], options?: RunOptions): Promise<RunResult>;
|
|
1568
1578
|
runSync(command: string[]): RunResult;
|
|
1569
1579
|
attach(command: string[], options?: AttachOptions): Promise<number>;
|
|
1570
1580
|
detach(command: string[], options?: DetachOptions): void;
|
|
1571
1581
|
kill(pid: number, signal?: string): void;
|
|
1582
|
+
isAlive(pid: number): boolean;
|
|
1583
|
+
listProcessesContaining(marker: string): ProcessSnapshot[];
|
|
1572
1584
|
}
|
|
1573
1585
|
//#endregion
|
|
1574
1586
|
//#region lib/engine/logger/node-logger.d.ts
|
|
@@ -4263,4 +4275,4 @@ ${string}`;
|
|
|
4263
4275
|
//#region lib/tui/tui.d.ts
|
|
4264
4276
|
declare function launchTui(funnel: Funnel): Promise<void>;
|
|
4265
4277
|
//#endregion
|
|
4266
|
-
export { 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, 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 };
|
|
4278
|
+
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, 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 };
|