@interactive-inc/claude-funnel 0.8.1 → 0.10.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/README.md +179 -80
- package/dist/bin.js +724 -656
- package/dist/connector-adapter-CXB-q_XC.d.ts +11 -0
- package/dist/connector-adapter-D5Utumgz.js +4 -0
- package/dist/connectors/discord.d.ts +76 -0
- package/dist/connectors/discord.js +2 -0
- package/dist/connectors/gh.d.ts +38 -0
- package/dist/connectors/gh.js +2 -0
- package/dist/connectors/schedule.d.ts +53 -0
- package/dist/connectors/schedule.js +2 -0
- package/dist/connectors/slack.d.ts +62 -0
- package/dist/connectors/slack.js +2 -0
- package/dist/discord-connector-schema-Dww2I4zH.d.ts +14 -0
- package/dist/discord-connector-schema-ygf5Df-2.js +173 -0
- package/dist/file-system-Co60LrmR.d.ts +74 -0
- package/dist/gateway/daemon.js +233 -183
- package/dist/gh-connector-schema-2ml29MBC.js +218 -0
- package/dist/gh-connector-schema-BZFAS-p-.d.ts +45 -0
- package/dist/index.d.ts +3888 -36
- package/dist/index.js +6206 -3485
- package/dist/logger-CTlXs7z4.d.ts +33 -0
- package/dist/node-logger-DQz_BGOD.js +61 -0
- package/dist/schedule-connector-schema-CkuIQ0JQ.js +325 -0
- package/dist/slack-connector-schema-Cd22WiHB.js +153 -0
- package/dist/slack-connector-schema-D7zAHN8k.d.ts +15 -0
- package/lib/bin.ts +1 -76
- package/lib/cli/index.ts +85 -0
- package/lib/cli/router/to-request.ts +1 -0
- package/lib/cli/routes/channels.$channel.publish.ts +52 -0
- package/lib/cli/routes/claude.ts +1 -0
- package/lib/cli/routes/index.ts +35 -18
- package/lib/cli/routes/profiles.add.$profile.ts +5 -2
- package/lib/cli/routes/profiles.set.$profile.ts +10 -11
- package/lib/connectors/discord.ts +4 -0
- package/lib/connectors/gh.ts +3 -0
- package/lib/connectors/schedule.ts +4 -0
- package/lib/connectors/slack.ts +4 -0
- package/lib/engine/claude/claude.ts +6 -0
- package/lib/engine/mcp/channel-server.ts +34 -115
- package/lib/engine/mcp/channel-subscriber.ts +82 -0
- package/lib/engine/mcp/read-channel-connectors.ts +34 -0
- package/lib/engine/mcp/read-gateway-token.ts +16 -0
- package/lib/engine/mcp/usage-hint-for-type.ts +15 -0
- package/lib/engine/settings/settings-schema.ts +2 -0
- package/lib/funnel.ts +162 -55
- package/lib/gateway/broadcaster.ts +1 -1
- package/lib/gateway/channel-publisher.ts +67 -0
- package/lib/gateway/gateway-server.ts +28 -16
- package/lib/gateway/publish-schema.ts +27 -0
- package/lib/gateway/routes/channels.publish.ts +44 -0
- package/lib/gateway/routes/index.ts +2 -0
- package/lib/gateway/routes/route-deps.ts +8 -0
- package/lib/index.ts +15 -0
- package/package.json +34 -23
- package/dist/cli/factory.d.ts +0 -7
- package/dist/cli/router/query-to-cli-args.d.ts +0 -1
- package/dist/cli/router/to-request.d.ts +0 -5
- package/dist/cli/router/validator.d.ts +0 -5
- package/dist/cli/routes/channels.$channel.connectors.$connector.d.ts +0 -42
- package/dist/cli/routes/channels.$channel.connectors.$connector.rename.$newName.d.ts +0 -46
- package/dist/cli/routes/channels.$channel.connectors.$connector.request.d.ts +0 -54
- package/dist/cli/routes/channels.$channel.connectors.$connector.schedules.add.$id.d.ts +0 -66
- package/dist/cli/routes/channels.$channel.connectors.$connector.schedules.d.ts +0 -42
- package/dist/cli/routes/channels.$channel.connectors.$connector.schedules.remove.$id.d.ts +0 -46
- package/dist/cli/routes/channels.$channel.connectors.add.$connector.d.ts +0 -90
- package/dist/cli/routes/channels.$channel.connectors.d.ts +0 -38
- package/dist/cli/routes/channels.$channel.connectors.remove.$connector.d.ts +0 -42
- package/dist/cli/routes/channels.$channel.connectors.set.$connector.d.ts +0 -62
- package/dist/cli/routes/channels.$channel.d.ts +0 -38
- package/dist/cli/routes/channels.$channel.rename.$newName.d.ts +0 -42
- package/dist/cli/routes/channels.$channel.set.delivery.$mode.d.ts +0 -28
- package/dist/cli/routes/channels.add.$channel.d.ts +0 -46
- package/dist/cli/routes/channels.d.ts +0 -16
- package/dist/cli/routes/channels.remove.$channel.d.ts +0 -38
- package/dist/cli/routes/claude.d.ts +0 -32
- package/dist/cli/routes/gateway.d.ts +0 -20
- package/dist/cli/routes/gateway.listeners.d.ts +0 -17
- package/dist/cli/routes/gateway.logs.d.ts +0 -24
- package/dist/cli/routes/gateway.restart.d.ts +0 -24
- package/dist/cli/routes/gateway.run.d.ts +0 -24
- package/dist/cli/routes/gateway.start.d.ts +0 -24
- package/dist/cli/routes/gateway.status.d.ts +0 -13
- package/dist/cli/routes/gateway.stop.d.ts +0 -16
- package/dist/cli/routes/index.d.ts +0 -1222
- package/dist/cli/routes/profiles.$profile.as-default.d.ts +0 -38
- package/dist/cli/routes/profiles.$profile.rename.$newName.d.ts +0 -42
- package/dist/cli/routes/profiles.$profile.run.d.ts +0 -46
- package/dist/cli/routes/profiles.add.$profile.d.ts +0 -54
- package/dist/cli/routes/profiles.d.ts +0 -16
- package/dist/cli/routes/profiles.remove.$profile.d.ts +0 -38
- package/dist/cli/routes/profiles.set.$profile.d.ts +0 -54
- package/dist/cli/routes/status.d.ts +0 -16
- package/dist/cli/routes/update.d.ts +0 -16
- package/dist/connectors/connector-adapter.d.ts +0 -8
- package/dist/connectors/connector-config-schema.d.ts +0 -43
- package/dist/connectors/connector-factory.d.ts +0 -32
- package/dist/connectors/connector-listener.d.ts +0 -17
- package/dist/connectors/discord-adapter.d.ts +0 -14
- package/dist/connectors/discord-connector-schema.d.ts +0 -10
- package/dist/connectors/discord-event-processor.d.ts +0 -26
- package/dist/connectors/discord-listener.d.ts +0 -17
- package/dist/connectors/gh-adapter.d.ts +0 -11
- package/dist/connectors/gh-connector-schema.d.ts +0 -10
- package/dist/connectors/gh-listener.d.ts +0 -26
- package/dist/connectors/match-cron.d.ts +0 -1
- package/dist/connectors/schedule-connector-schema.d.ts +0 -45
- package/dist/connectors/schedule-listener.d.ts +0 -30
- package/dist/connectors/schedule-state-store.d.ts +0 -19
- package/dist/connectors/slack-adapter.d.ts +0 -15
- package/dist/connectors/slack-connector-schema.d.ts +0 -11
- package/dist/connectors/slack-event-processor.d.ts +0 -27
- package/dist/connectors/slack-listener.d.ts +0 -17
- package/dist/engine/channels/channels.d.ts +0 -106
- package/dist/engine/claude/claude.d.ts +0 -49
- package/dist/engine/claude/gateway-controller.d.ts +0 -6
- package/dist/engine/fs/file-system.d.ts +0 -24
- package/dist/engine/fs/memory-file-system.d.ts +0 -31
- package/dist/engine/fs/node-file-system.d.ts +0 -15
- package/dist/engine/http/http-client.d.ts +0 -15
- package/dist/engine/http/memory-http-client.d.ts +0 -12
- package/dist/engine/http/node-http-client.d.ts +0 -5
- package/dist/engine/id/id-generator.d.ts +0 -7
- package/dist/engine/id/memory-id-generator.d.ts +0 -11
- package/dist/engine/id/node-id-generator.d.ts +0 -4
- package/dist/engine/logger/logger.d.ts +0 -11
- package/dist/engine/logger/memory-logger.d.ts +0 -14
- package/dist/engine/logger/node-logger.d.ts +0 -15
- package/dist/engine/logger/noop-logger.d.ts +0 -7
- package/dist/engine/mcp/channel-server.d.ts +0 -1
- package/dist/engine/mcp/mcp.d.ts +0 -22
- package/dist/engine/process/memory-process-runner.d.ts +0 -43
- package/dist/engine/process/node-process-runner.d.ts +0 -9
- package/dist/engine/process/process-runner.d.ts +0 -29
- package/dist/engine/profiles/profile-channel-checker.d.ts +0 -7
- package/dist/engine/profiles/profiles.d.ts +0 -31
- package/dist/engine/settings/mock-settings-reader.d.ts +0 -9
- package/dist/engine/settings/settings-reader.d.ts +0 -5
- package/dist/engine/settings/settings-schema.d.ts +0 -132
- package/dist/engine/settings/settings-store.d.ts +0 -18
- package/dist/engine/time/clock.d.ts +0 -9
- package/dist/engine/time/memory-clock.d.ts +0 -12
- package/dist/engine/time/node-clock.d.ts +0 -4
- package/dist/funnel.d.ts +0 -95
- package/dist/gateway/auth-middleware.d.ts +0 -14
- package/dist/gateway/broadcaster.d.ts +0 -122
- package/dist/gateway/daemon.d.ts +0 -2
- package/dist/gateway/factory.d.ts +0 -7
- package/dist/gateway/funnel-event-store.d.ts +0 -81
- package/dist/gateway/gateway-server.d.ts +0 -94
- package/dist/gateway/gateway-token.d.ts +0 -33
- package/dist/gateway/gateway.d.ts +0 -58
- package/dist/gateway/kill-competing-slack-gateways.d.ts +0 -9
- package/dist/gateway/listener-supervisor.d.ts +0 -85
- package/dist/gateway/listeners-client.d.ts +0 -53
- package/dist/gateway/resolve-daemon-script.d.ts +0 -11
- package/dist/gateway/routes/channels.connectors.call.d.ts +0 -41
- package/dist/gateway/routes/health.d.ts +0 -17
- package/dist/gateway/routes/index.d.ts +0 -209
- package/dist/gateway/routes/listeners.list.d.ts +0 -14
- package/dist/gateway/routes/listeners.restart.d.ts +0 -34
- package/dist/gateway/routes/listeners.start.d.ts +0 -34
- package/dist/gateway/routes/listeners.stop.d.ts +0 -34
- package/dist/gateway/routes/route-deps.d.ts +0 -10
- package/dist/gateway/routes/status.d.ts +0 -30
- package/dist/gateway/routes/validator.d.ts +0 -19
- package/dist/logger/leuco-human-file-writer.d.ts +0 -33
- package/dist/logger/leuco-human-logger.d.ts +0 -46
- package/dist/logger/leuco-human-record.d.ts +0 -15
- package/dist/logger/leuco-human-stdout-writer.d.ts +0 -20
- package/dist/logger/leuco-human-writer.d.ts +0 -13
- package/dist/logger/leuco-logger-memory-sink.d.ts +0 -33
- package/dist/logger/leuco-logger-record.d.ts +0 -13
- package/dist/logger/leuco-logger-sink.d.ts +0 -34
- package/dist/logger/leuco-logger-sqlite-sink.d.ts +0 -102
- package/dist/logger/leuco-logger.d.ts +0 -56
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { t as FunnelConnectorAdapter } from "./connector-adapter-D5Utumgz.js";
|
|
2
|
+
import { r as FunnelConnectorListener, t as NodeFunnelLogger } from "./node-logger-DQz_BGOD.js";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
//#region lib/engine/process/process-runner.ts
|
|
5
|
+
/**
|
|
6
|
+
* Process boundary covering one-shot runs, sync runs, foreground attach, and
|
|
7
|
+
* detached background spawns. Default is NodeFunnelProcessRunner (Bun.spawn);
|
|
8
|
+
* MemoryFunnelProcessRunner records calls and lets tests stub responses.
|
|
9
|
+
*/
|
|
10
|
+
var FunnelProcessRunner = class {};
|
|
11
|
+
//#endregion
|
|
12
|
+
//#region lib/engine/process/node-process-runner.ts
|
|
13
|
+
const toEnv = (env) => {
|
|
14
|
+
if (!env) return void 0;
|
|
15
|
+
const merged = {};
|
|
16
|
+
for (const [key, value] of Object.entries(process.env)) if (typeof value === "string") merged[key] = value;
|
|
17
|
+
for (const [key, value] of Object.entries(env)) merged[key] = value;
|
|
18
|
+
return merged;
|
|
19
|
+
};
|
|
20
|
+
var NodeFunnelProcessRunner = class extends FunnelProcessRunner {
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
Object.freeze(this);
|
|
24
|
+
}
|
|
25
|
+
runSync(command) {
|
|
26
|
+
const result = Bun.spawnSync(command, {
|
|
27
|
+
stdout: "pipe",
|
|
28
|
+
stderr: "pipe"
|
|
29
|
+
});
|
|
30
|
+
return {
|
|
31
|
+
exitCode: result.exitCode ?? 0,
|
|
32
|
+
stdout: result.stdout.toString(),
|
|
33
|
+
stderr: result.stderr.toString()
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async run(command, options = {}) {
|
|
37
|
+
const proc = Bun.spawn(command, {
|
|
38
|
+
cwd: options.cwd,
|
|
39
|
+
env: toEnv(options.env),
|
|
40
|
+
stdin: options.input !== void 0 ? "pipe" : "ignore",
|
|
41
|
+
stdout: "pipe",
|
|
42
|
+
stderr: "pipe"
|
|
43
|
+
});
|
|
44
|
+
if (options.input !== void 0 && proc.stdin) {
|
|
45
|
+
proc.stdin.write(options.input);
|
|
46
|
+
proc.stdin.end();
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
exitCode: await proc.exited,
|
|
50
|
+
stdout: await new Response(proc.stdout).text(),
|
|
51
|
+
stderr: await new Response(proc.stderr).text()
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
async attach(command, options = {}) {
|
|
55
|
+
return await Bun.spawn(command, {
|
|
56
|
+
cwd: options.cwd,
|
|
57
|
+
env: toEnv(options.env),
|
|
58
|
+
stdio: [
|
|
59
|
+
"inherit",
|
|
60
|
+
"inherit",
|
|
61
|
+
"inherit"
|
|
62
|
+
]
|
|
63
|
+
}).exited;
|
|
64
|
+
}
|
|
65
|
+
detach(command, options = {}) {
|
|
66
|
+
Bun.spawn(command, {
|
|
67
|
+
env: toEnv(options.env),
|
|
68
|
+
stdio: [
|
|
69
|
+
"ignore",
|
|
70
|
+
"ignore",
|
|
71
|
+
"ignore"
|
|
72
|
+
]
|
|
73
|
+
}).unref();
|
|
74
|
+
}
|
|
75
|
+
kill(pid, signal = "SIGTERM") {
|
|
76
|
+
try {
|
|
77
|
+
process.kill(pid, signal);
|
|
78
|
+
} catch {}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
//#endregion
|
|
82
|
+
//#region lib/connectors/gh-adapter.ts
|
|
83
|
+
const defaultProcess$1 = new NodeFunnelProcessRunner();
|
|
84
|
+
var FunnelGhAdapter = class extends FunnelConnectorAdapter {
|
|
85
|
+
process;
|
|
86
|
+
constructor(deps = {}) {
|
|
87
|
+
super();
|
|
88
|
+
this.process = deps.process ?? defaultProcess$1;
|
|
89
|
+
Object.freeze(this);
|
|
90
|
+
}
|
|
91
|
+
async call(input) {
|
|
92
|
+
const args = ["api", input.path];
|
|
93
|
+
if (input.method && input.method.toLowerCase() !== "get") args.push("-X", input.method.toUpperCase());
|
|
94
|
+
const hasBody = input.body && typeof input.body === "object" && Object.keys(input.body).length > 0;
|
|
95
|
+
if (hasBody) args.push("--input", "-");
|
|
96
|
+
const result = await this.process.run(["gh", ...args], { input: hasBody ? JSON.stringify(input.body) : void 0 });
|
|
97
|
+
if (result.exitCode !== 0) throw new Error(`gh api failed: ${result.stderr.trim() || result.stdout.trim()}`);
|
|
98
|
+
try {
|
|
99
|
+
return JSON.parse(result.stdout);
|
|
100
|
+
} catch {
|
|
101
|
+
return result.stdout;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
//#endregion
|
|
106
|
+
//#region lib/connectors/gh-listener.ts
|
|
107
|
+
const ghNotificationSchema = z.object({
|
|
108
|
+
id: z.string(),
|
|
109
|
+
reason: z.string(),
|
|
110
|
+
subject: z.object({
|
|
111
|
+
type: z.string(),
|
|
112
|
+
url: z.string(),
|
|
113
|
+
title: z.string()
|
|
114
|
+
}),
|
|
115
|
+
repository: z.object({ full_name: z.string() }),
|
|
116
|
+
updated_at: z.string()
|
|
117
|
+
});
|
|
118
|
+
const ghNotificationsSchema = z.array(ghNotificationSchema);
|
|
119
|
+
const defaultProcess = new NodeFunnelProcessRunner();
|
|
120
|
+
const defaultLogger = new NodeFunnelLogger();
|
|
121
|
+
const MAX_SEEN = 1e4;
|
|
122
|
+
const KEEP_SEEN = 5e3;
|
|
123
|
+
var FunnelGhListener = class extends FunnelConnectorListener {
|
|
124
|
+
config;
|
|
125
|
+
process;
|
|
126
|
+
logger;
|
|
127
|
+
now;
|
|
128
|
+
seen = /* @__PURE__ */ new Map();
|
|
129
|
+
bootstrapped = false;
|
|
130
|
+
since;
|
|
131
|
+
timer = null;
|
|
132
|
+
constructor(deps) {
|
|
133
|
+
super();
|
|
134
|
+
this.config = deps.config;
|
|
135
|
+
this.process = deps.process ?? defaultProcess;
|
|
136
|
+
this.logger = deps.logger ?? defaultLogger;
|
|
137
|
+
this.now = deps.now ?? (() => /* @__PURE__ */ new Date());
|
|
138
|
+
this.since = this.now().toISOString();
|
|
139
|
+
}
|
|
140
|
+
async start(notify) {
|
|
141
|
+
await this.pollOnce(notify);
|
|
142
|
+
const interval = this.config.pollInterval ?? 60;
|
|
143
|
+
this.timer = setInterval(() => void this.pollOnce(notify), interval * 1e3);
|
|
144
|
+
this.timer.unref();
|
|
145
|
+
}
|
|
146
|
+
async stop() {
|
|
147
|
+
if (!this.timer) return;
|
|
148
|
+
clearInterval(this.timer);
|
|
149
|
+
this.timer = null;
|
|
150
|
+
}
|
|
151
|
+
isAlive() {
|
|
152
|
+
return this.timer !== null;
|
|
153
|
+
}
|
|
154
|
+
async pollOnce(notify) {
|
|
155
|
+
const nextSince = this.now().toISOString();
|
|
156
|
+
const params = new URLSearchParams({
|
|
157
|
+
since: this.since,
|
|
158
|
+
all: "false"
|
|
159
|
+
});
|
|
160
|
+
try {
|
|
161
|
+
const result = await this.process.run([
|
|
162
|
+
"gh",
|
|
163
|
+
"api",
|
|
164
|
+
`/notifications?${params}`
|
|
165
|
+
]);
|
|
166
|
+
if (result.exitCode !== 0) {
|
|
167
|
+
this.logger.error("gh poll failed", { stderr: result.stderr });
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
const parsed = ghNotificationsSchema.safeParse(JSON.parse(result.stdout));
|
|
171
|
+
if (!parsed.success) {
|
|
172
|
+
this.logger.warn("gh response did not match schema", { error: parsed.error.message });
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const items = parsed.data;
|
|
176
|
+
for (const item of items) {
|
|
177
|
+
if (this.seen.get(item.id) === item.updated_at) continue;
|
|
178
|
+
this.seen.set(item.id, item.updated_at);
|
|
179
|
+
if (!this.bootstrapped) continue;
|
|
180
|
+
const meta = {
|
|
181
|
+
event_type: "gh",
|
|
182
|
+
reason: item.reason,
|
|
183
|
+
subject_type: item.subject.type,
|
|
184
|
+
subject_url: item.subject.url,
|
|
185
|
+
repository: item.repository.full_name,
|
|
186
|
+
thread_id: item.id,
|
|
187
|
+
updated_at: item.updated_at
|
|
188
|
+
};
|
|
189
|
+
await notify(JSON.stringify(item), meta);
|
|
190
|
+
}
|
|
191
|
+
if (this.seen.size > MAX_SEEN) {
|
|
192
|
+
const toDrop = this.seen.size - KEEP_SEEN;
|
|
193
|
+
let dropped = 0;
|
|
194
|
+
for (const key of this.seen.keys()) {
|
|
195
|
+
if (dropped >= toDrop) break;
|
|
196
|
+
this.seen.delete(key);
|
|
197
|
+
dropped++;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
this.since = nextSince;
|
|
201
|
+
this.bootstrapped = true;
|
|
202
|
+
} catch (error) {
|
|
203
|
+
this.logger.error("gh poll error", { error: error instanceof Error ? error.message : String(error) });
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
//#endregion
|
|
208
|
+
//#region lib/connectors/gh-connector-schema.ts
|
|
209
|
+
const ghConnectorSchema = z.object({
|
|
210
|
+
id: z.string(),
|
|
211
|
+
name: z.string(),
|
|
212
|
+
type: z.literal("gh"),
|
|
213
|
+
pollInterval: z.number().int().positive().optional(),
|
|
214
|
+
createdAt: z.string().datetime().optional(),
|
|
215
|
+
updatedAt: z.string().datetime().optional()
|
|
216
|
+
});
|
|
217
|
+
//#endregion
|
|
218
|
+
export { FunnelProcessRunner as a, NodeFunnelProcessRunner as i, FunnelGhListener as n, FunnelGhAdapter as r, ghConnectorSchema as t };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
//#region lib/engine/process/process-runner.d.ts
|
|
4
|
+
type RunOptions = {
|
|
5
|
+
cwd?: string;
|
|
6
|
+
env?: Record<string, string>;
|
|
7
|
+
input?: string;
|
|
8
|
+
};
|
|
9
|
+
type RunResult = {
|
|
10
|
+
exitCode: number;
|
|
11
|
+
stdout: string;
|
|
12
|
+
stderr: string;
|
|
13
|
+
};
|
|
14
|
+
type AttachOptions = {
|
|
15
|
+
cwd?: string;
|
|
16
|
+
env?: Record<string, string>;
|
|
17
|
+
};
|
|
18
|
+
type DetachOptions = {
|
|
19
|
+
env?: Record<string, string>;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Process boundary covering one-shot runs, sync runs, foreground attach, and
|
|
23
|
+
* detached background spawns. Default is NodeFunnelProcessRunner (Bun.spawn);
|
|
24
|
+
* MemoryFunnelProcessRunner records calls and lets tests stub responses.
|
|
25
|
+
*/
|
|
26
|
+
declare abstract class FunnelProcessRunner {
|
|
27
|
+
abstract run(command: string[], options?: RunOptions): Promise<RunResult>;
|
|
28
|
+
abstract runSync(command: string[]): RunResult;
|
|
29
|
+
abstract attach(command: string[], options?: AttachOptions): Promise<number>;
|
|
30
|
+
abstract detach(command: string[], options?: DetachOptions): void;
|
|
31
|
+
abstract kill(pid: number, signal?: string): void;
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
//#region lib/connectors/gh-connector-schema.d.ts
|
|
35
|
+
declare const ghConnectorSchema: z.ZodObject<{
|
|
36
|
+
id: z.ZodString;
|
|
37
|
+
name: z.ZodString;
|
|
38
|
+
type: z.ZodLiteral<"gh">;
|
|
39
|
+
pollInterval: z.ZodOptional<z.ZodNumber>;
|
|
40
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
41
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
type GhConnectorConfig = z.infer<typeof ghConnectorSchema>;
|
|
44
|
+
//#endregion
|
|
45
|
+
export { FunnelProcessRunner as a, DetachOptions as i, ghConnectorSchema as n, RunOptions as o, AttachOptions as r, RunResult as s, GhConnectorConfig as t };
|