@mono-agent/webhook-adapter 0.3.0 → 0.4.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 CHANGED
@@ -6,7 +6,11 @@ Category: `communication`
6
6
 
7
7
  ## Responsibility
8
8
 
9
- HTTP webhook invocation adapter for agent hosts. It starts a small HTTP server, validates JSON invocation requests, maps them into structural `AgentResponder` calls, and returns either a synchronous result or an in-memory async request status.
9
+ HTTP webhook invocation adapter for agent hosts. It starts a small HTTP server, validates JSON invocation requests, maps them into structural `AgentResponder` calls, and returns either a synchronous result or an in-memory async request status. One server can serve **multiple named endpoints**, each with its own path, mode, and optional `prompt`.
10
+
11
+ ## Port ownership
12
+
13
+ The adapter binds **its own** HTTP port — it is *not* inherited from a parent mono-agent process (mono-agent is not itself an HTTP server; each HTTP-bearing channel binds its own port). `port: 0` (the default) asks the OS for a random free port, so the resolved URL is unpredictable. **Set an explicit port** (e.g. `4310`) when you need a stable URL that skills or webhook `prompt`s can reference. The resolved invoke URL(s) are reported in the channel `summary` (visible via `mono-agent status` and logs).
10
14
 
11
15
  ## Install / Usage
12
16
 
@@ -20,11 +24,20 @@ import { startWebhookAdapter } from "@mono-agent/webhook-adapter";
20
24
  const webhook = await startWebhookAdapter({
21
25
  host: "127.0.0.1",
22
26
  port: 4310,
23
- path: "/webhook/invoke",
24
27
  responder,
28
+ endpoints: [
29
+ { name: "invoke", path: "/webhook/invoke" },
30
+ { name: "deep-research", path: "/webhook/deep-research", mode: "async", prompt: "Check deep-research/requests/*.md, match the incoming payload, address it, then move the file to deep-research/researched/." },
31
+ ],
25
32
  });
26
33
  ```
27
34
 
35
+ A single legacy endpoint still works (`path`/`defaultMode` are folded into a one-element `endpoints` list):
36
+
37
+ ```ts
38
+ await startWebhookAdapter({ host: "127.0.0.1", port: 4310, path: "/webhook/invoke", responder });
39
+ ```
40
+
28
41
  Send a sync invocation:
29
42
 
30
43
  ```bash
@@ -35,14 +48,37 @@ curl -X POST "$WEBHOOK_URL/webhook/invoke" \
35
48
 
36
49
  Async mode returns `202` with `requestId` and `statusUrl`; status is process-local memory and is not durable across restarts.
37
50
 
51
+ ## Per-webhook prompt
52
+
53
+ Each endpoint may carry a `prompt` (pre-instructions, same role as a cron job's prompt). When set, the adapter forms the agent's user message as `prompt` + `\n\n` + the posted `text`. The webhook imposes no correlation scheme of its own: it forwards the request's `conversationId` and arbitrary `metadata` through unchanged, so a `prompt` plus filesystem/skill conventions can drive any workflow (e.g. matching incoming results to request files on disk).
54
+
55
+ > Loopback note: a webhook is request/response — the resumed turn's output is returned on the POST's own HTTP response (sync) or status endpoint (async). History is in-memory per channel harness, and `createConfiguredAgentResponder` applies auto-compaction + daily session rollover, so a result returning long after it was scheduled may resume with compacted context. Skills that need durable correlation should record state in memory or on disk.
56
+
57
+ ## Configuring multiple endpoints (host config)
58
+
59
+ `loadWebhookAdapterConfig` reads endpoints from, in precedence order: `MONO_AGENT_WEBHOOK_ENDPOINTS_JSON`, the `webhook.endpoints` array, then the legacy single `webhook.path`/`webhook.prompt` fields. Endpoints can also be authored as `*.md` files in the `webhook` folder (override via `webhook.dir` / `MONO_AGENT_WEBHOOK_DIR`), mirroring cron jobs — frontmatter is routing, the body is the `prompt`:
60
+
61
+ ```markdown
62
+ ---
63
+ path: /webhook/deep-research
64
+ mode: async
65
+ ---
66
+ Check deep-research/requests/*.md, match the incoming payload to an existing
67
+ request, address it, then move that file to deep-research/researched/.
68
+ ```
69
+
70
+ Folder endpoints are merged with config endpoints; a duplicate `name` or `path` is a hard error.
71
+
38
72
  ## Public API
39
73
 
40
74
  - `startWebhookAdapter`
75
+ - `normalizePath`
76
+ - `loadWebhookEndpointsFromDirectory`, `parseWebhookEndpointMarkdown`
41
77
  - `WebhookAdapterError`
42
78
  - `loadWebhookAdapterConfig`
43
79
  - `redactWebhookAdapterConfig`
44
80
  - `webhookFieldGroup`
45
- - Webhook adapter, config, request metadata, invocation status, and logger types
81
+ - Webhook adapter, config, endpoint, request metadata, invocation status, and logger types
46
82
 
47
83
  ## Dependency Boundary
48
84
 
package/dist/config.d.ts CHANGED
@@ -1,20 +1,36 @@
1
1
  import type { FieldGroup, SettingsJson } from "@mono-agent/settings";
2
2
  import { type WebhookInvocationMode } from "./server.js";
3
+ /** One HTTP endpoint of the webhook server (shares the server's host + port). */
4
+ export interface WebhookEndpointConfig {
5
+ readonly name: string;
6
+ readonly path: string;
7
+ readonly mode: WebhookInvocationMode;
8
+ readonly enabled: boolean;
9
+ /** Pre-instructions prepended to the incoming request text. Same role as a cron job's prompt. */
10
+ readonly prompt?: string;
11
+ }
3
12
  export interface WebhookAdapterConfig {
4
13
  readonly enabled: boolean;
5
14
  readonly host: string;
6
15
  readonly port: number;
7
- readonly path: string;
8
16
  readonly allowNonLoopback: boolean;
9
- readonly defaultMode: WebhookInvocationMode;
10
17
  readonly retentionMs: number;
11
18
  readonly maxStoredRequests: number;
19
+ readonly endpoints: readonly WebhookEndpointConfig[];
20
+ /** Back-compat mirror of `endpoints[0].path`. */
21
+ readonly path: string;
22
+ /** Back-compat mirror of `endpoints[0].mode`. */
23
+ readonly defaultMode: WebhookInvocationMode;
12
24
  }
13
25
  export type RedactedWebhookAdapterConfig = WebhookAdapterConfig;
14
26
  export interface LoadWebhookAdapterConfigInput {
15
27
  readonly env: Record<string, string | undefined>;
16
28
  readonly json?: SettingsJson;
17
29
  readonly jsonPath?: string;
30
+ /** Base directory the webhook endpoints folder resolves against (usually the app cwd). */
31
+ readonly cwd?: string;
32
+ /** Overrides the endpoints folder; defaults to `webhook.dir` / `MONO_AGENT_WEBHOOK_DIR` / `webhook`. */
33
+ readonly dir?: string;
18
34
  }
19
35
  export declare const webhookFieldGroup: FieldGroup;
20
36
  export declare function loadWebhookAdapterConfig(input: LoadWebhookAdapterConfigInput): Promise<WebhookAdapterConfig>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEhE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAeD,eAAO,MAAM,iBAAiB,EAAE,UA6E9B,CAAC;AAEH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CAa/B;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,4BAA4B,CAErG"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAsC,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE7F,iFAAiF;AACjF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,iGAAiG;IACjG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACrD,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;CAC7C;AAED,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,CAAC;AAEhE,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,wGAAwG;IACxG,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAgBD,eAAO,MAAM,iBAAiB,EAAE,UA+F9B,CAAC;AAEH,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,oBAAoB,CAAC,CA4B/B;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,4BAA4B,CAErG"}
package/dist/config.js CHANGED
@@ -1,5 +1,7 @@
1
- import { defineFieldGroup, layerJsonOntoEnv, readBoolean, readChoice, readInteger, readJsonSection, readSettingsJson, readString, } from "@mono-agent/settings";
2
- import { WebhookAdapterError } from "./server.js";
1
+ import { resolve } from "node:path";
2
+ import { defineFieldGroup, layerJsonOntoEnv, normalizeOptionalString, readBoolean, readChoice, readInteger, readJsonSection, readSettingsJson, readString, } from "@mono-agent/settings";
3
+ import { loadWebhookEndpointsFromDirectory } from "./endpoints-dir.js";
4
+ import { normalizePath, WebhookAdapterError } from "./server.js";
3
5
  const DEFAULT_ENABLED = false;
4
6
  const DEFAULT_HOST = "127.0.0.1";
5
7
  const DEFAULT_PORT = 0;
@@ -7,12 +9,13 @@ const DEFAULT_PATH = "/webhook/invoke";
7
9
  const DEFAULT_MODE = "sync";
8
10
  const DEFAULT_RETENTION_MS = 300_000;
9
11
  const DEFAULT_MAX_STORED_REQUESTS = 100;
12
+ const DEFAULT_WEBHOOK_DIR = "webhook";
10
13
  const WEBHOOK_MODES = ["sync", "async"];
11
14
  const invalidConfig = (message, details) => new WebhookAdapterError("invalid_config", message, details);
12
15
  export const webhookFieldGroup = defineFieldGroup({
13
16
  id: "webhook",
14
17
  label: "Webhook",
15
- description: "Optional HTTP webhook invocation adapter configuration.",
18
+ description: "Optional HTTP webhook invocation adapter. Configures the default endpoint; use `webhook.endpoints` JSON or `webhook/*.md` files for multiple endpoints.",
16
19
  fields: [
17
20
  {
18
21
  id: "webhook.enabled",
@@ -32,7 +35,7 @@ export const webhookFieldGroup = defineFieldGroup({
32
35
  {
33
36
  id: "webhook.port",
34
37
  label: "Port",
35
- description: "Bind port. Use 0 to choose a free loopback port.",
38
+ description: "Bind port for this webhook server (independent of the parent process). Use 0 for a random free port, or set an explicit port for a stable URL.",
36
39
  kind: "integer",
37
40
  min: 0,
38
41
  max: 65535,
@@ -42,11 +45,26 @@ export const webhookFieldGroup = defineFieldGroup({
42
45
  {
43
46
  id: "webhook.path",
44
47
  label: "Path",
45
- description: "POST path for agent invocation.",
48
+ description: "POST path for the default endpoint.",
46
49
  kind: "string",
47
50
  placeholder: "/webhook/invoke",
48
51
  path: ["webhook", "path"],
49
52
  },
53
+ {
54
+ id: "webhook.prompt",
55
+ label: "Prompt",
56
+ description: "Pre-instructions prepended to the incoming request text for the default endpoint.",
57
+ kind: "string",
58
+ path: ["webhook", "prompt"],
59
+ },
60
+ {
61
+ id: "webhook.dir",
62
+ label: "Endpoints folder",
63
+ description: "Folder of `*.md` webhook endpoints (frontmatter routing + prompt body), resolved against the app working directory.",
64
+ kind: "string",
65
+ placeholder: "webhook",
66
+ path: ["webhook", "dir"],
67
+ },
50
68
  {
51
69
  id: "webhook.allowNonLoopback",
52
70
  label: "Allow non-loopback",
@@ -57,7 +75,7 @@ export const webhookFieldGroup = defineFieldGroup({
57
75
  {
58
76
  id: "webhook.defaultMode",
59
77
  label: "Default mode",
60
- description: "Invocation mode used when the request body omits mode.",
78
+ description: "Invocation mode used when an endpoint or request body omits mode.",
61
79
  kind: "select",
62
80
  options: [
63
81
  { value: "sync", label: "sync" },
@@ -90,19 +108,163 @@ export const webhookFieldGroup = defineFieldGroup({
90
108
  export async function loadWebhookAdapterConfig(input) {
91
109
  const json = input.json ?? (input.jsonPath === undefined ? {} : (await readSettingsJson(input.jsonPath)).json);
92
110
  const env = layerWebhookJsonOntoEnv(json, input.env);
111
+ const enabled = readBoolean(env.MONO_AGENT_WEBHOOK_ENABLED, "MONO_AGENT_WEBHOOK_ENABLED", DEFAULT_ENABLED, invalidConfig);
112
+ const host = readString(env.MONO_AGENT_WEBHOOK_HOST, DEFAULT_HOST);
113
+ const port = readInteger(env.MONO_AGENT_WEBHOOK_PORT, "MONO_AGENT_WEBHOOK_PORT", DEFAULT_PORT, invalidConfig, { min: 0, max: 65535 });
114
+ const allowNonLoopback = readBoolean(env.MONO_AGENT_WEBHOOK_ALLOW_NON_LOOPBACK, "MONO_AGENT_WEBHOOK_ALLOW_NON_LOOPBACK", false, invalidConfig);
115
+ const defaultMode = readChoice(env.MONO_AGENT_WEBHOOK_DEFAULT_MODE, "MONO_AGENT_WEBHOOK_DEFAULT_MODE", WEBHOOK_MODES, DEFAULT_MODE, invalidConfig);
116
+ const retentionMs = readInteger(env.MONO_AGENT_WEBHOOK_RETENTION_MS, "MONO_AGENT_WEBHOOK_RETENTION_MS", DEFAULT_RETENTION_MS, invalidConfig, { min: 1, max: 86_400_000 });
117
+ const maxStoredRequests = readInteger(env.MONO_AGENT_WEBHOOK_MAX_STORED_REQUESTS, "MONO_AGENT_WEBHOOK_MAX_STORED_REQUESTS", DEFAULT_MAX_STORED_REQUESTS, invalidConfig, { min: 1, max: 10_000 });
118
+ const configEndpoints = loadConfigEndpoints(json, env, defaultMode);
119
+ const directoryEndpoints = await loadDirectoryEndpoints(json, input, defaultMode);
120
+ const merged = mergeEndpoints(configEndpoints, directoryEndpoints);
121
+ const endpoints = merged.length > 0 ? merged : [defaultEndpoint(defaultMode)];
122
+ const primary = endpoints[0] ?? defaultEndpoint(defaultMode);
93
123
  return {
94
- enabled: readBoolean(env.MONO_AGENT_WEBHOOK_ENABLED, "MONO_AGENT_WEBHOOK_ENABLED", DEFAULT_ENABLED, invalidConfig),
95
- host: readString(env.MONO_AGENT_WEBHOOK_HOST, DEFAULT_HOST),
96
- port: readInteger(env.MONO_AGENT_WEBHOOK_PORT, "MONO_AGENT_WEBHOOK_PORT", DEFAULT_PORT, invalidConfig, { min: 0, max: 65535 }),
97
- path: readString(env.MONO_AGENT_WEBHOOK_PATH, DEFAULT_PATH),
98
- allowNonLoopback: readBoolean(env.MONO_AGENT_WEBHOOK_ALLOW_NON_LOOPBACK, "MONO_AGENT_WEBHOOK_ALLOW_NON_LOOPBACK", false, invalidConfig),
99
- defaultMode: readChoice(env.MONO_AGENT_WEBHOOK_DEFAULT_MODE, "MONO_AGENT_WEBHOOK_DEFAULT_MODE", WEBHOOK_MODES, DEFAULT_MODE, invalidConfig),
100
- retentionMs: readInteger(env.MONO_AGENT_WEBHOOK_RETENTION_MS, "MONO_AGENT_WEBHOOK_RETENTION_MS", DEFAULT_RETENTION_MS, invalidConfig, { min: 1, max: 86_400_000 }),
101
- maxStoredRequests: readInteger(env.MONO_AGENT_WEBHOOK_MAX_STORED_REQUESTS, "MONO_AGENT_WEBHOOK_MAX_STORED_REQUESTS", DEFAULT_MAX_STORED_REQUESTS, invalidConfig, { min: 1, max: 10_000 }),
124
+ enabled,
125
+ host,
126
+ port,
127
+ allowNonLoopback,
128
+ retentionMs,
129
+ maxStoredRequests,
130
+ endpoints,
131
+ path: primary.path,
132
+ defaultMode: primary.mode,
102
133
  };
103
134
  }
104
135
  export function redactWebhookAdapterConfig(config) {
105
- return { ...config };
136
+ return { ...config, endpoints: config.endpoints.map((endpoint) => ({ ...endpoint })) };
137
+ }
138
+ /**
139
+ * Endpoints defined inline in config: `MONO_AGENT_WEBHOOK_ENDPOINTS_JSON` (highest),
140
+ * then the `webhook.endpoints` array, then the single legacy `webhook.path`/`prompt`
141
+ * fields. Returns an empty list when nothing inline is configured (the webhook
142
+ * folder may still add endpoints, and a default endpoint is synthesized when both
143
+ * sources are empty).
144
+ */
145
+ function loadConfigEndpoints(json, env, defaultMode) {
146
+ const endpointsJson = normalizeOptionalString(env.MONO_AGENT_WEBHOOK_ENDPOINTS_JSON);
147
+ if (endpointsJson !== undefined) {
148
+ return [...readEndpointsJson(endpointsJson, defaultMode)];
149
+ }
150
+ const section = readJsonSection(json, "webhook");
151
+ if (section.endpoints !== undefined) {
152
+ if (!Array.isArray(section.endpoints)) {
153
+ throw invalidConfig("webhook.endpoints must be an array of endpoint objects.");
154
+ }
155
+ return section.endpoints.map((entry, index) => normalizeEndpointConfig(entry, index, defaultMode));
156
+ }
157
+ const path = normalizeOptionalString(env.MONO_AGENT_WEBHOOK_PATH);
158
+ const prompt = normalizeOptionalString(env.MONO_AGENT_WEBHOOK_PROMPT);
159
+ if (path === undefined && prompt === undefined) {
160
+ return [];
161
+ }
162
+ return [{
163
+ name: "default",
164
+ path: normalizePath(path ?? DEFAULT_PATH),
165
+ mode: defaultMode,
166
+ enabled: true,
167
+ ...(prompt === undefined ? {} : { prompt }),
168
+ }];
169
+ }
170
+ /**
171
+ * Endpoints authored as `*.md` files in the webhook folder. Skipped unless a
172
+ * base directory (`input.cwd`) is known, so a loader called without a host never
173
+ * scans the process working directory implicitly.
174
+ */
175
+ async function loadDirectoryEndpoints(json, input, defaultMode) {
176
+ if (input.cwd === undefined) {
177
+ return [];
178
+ }
179
+ const section = readJsonSection(json, "webhook");
180
+ if (section.dir !== undefined && typeof section.dir !== "string") {
181
+ throw invalidConfig("webhook.dir must be a string.");
182
+ }
183
+ const dirName = normalizeOptionalString(input.dir) ??
184
+ normalizeOptionalString(input.env.MONO_AGENT_WEBHOOK_DIR) ??
185
+ asOptionalString(section.dir) ??
186
+ DEFAULT_WEBHOOK_DIR;
187
+ return await loadWebhookEndpointsFromDirectory(resolve(input.cwd, dirName), defaultMode);
188
+ }
189
+ /** Combine inline-config endpoints with folder endpoints; duplicate name or path is a hard error. */
190
+ function mergeEndpoints(configEndpoints, directoryEndpoints) {
191
+ const merged = [];
192
+ const nameSource = new Map();
193
+ const pathSource = new Map();
194
+ const append = (endpoint, source) => {
195
+ const priorName = nameSource.get(endpoint.name);
196
+ if (priorName !== undefined) {
197
+ throw invalidConfig(`Duplicate webhook endpoint name "${endpoint.name}" from ${priorName} and ${source}.`, { name: endpoint.name });
198
+ }
199
+ const priorPath = pathSource.get(endpoint.path);
200
+ if (priorPath !== undefined) {
201
+ throw invalidConfig(`Duplicate webhook endpoint path "${endpoint.path}" from ${priorPath} and ${source}.`, { path: endpoint.path });
202
+ }
203
+ nameSource.set(endpoint.name, source);
204
+ pathSource.set(endpoint.path, source);
205
+ merged.push(endpoint);
206
+ };
207
+ for (const endpoint of configEndpoints) {
208
+ append(endpoint, "config");
209
+ }
210
+ for (const endpoint of directoryEndpoints) {
211
+ append(endpoint, "webhook folder");
212
+ }
213
+ return merged;
214
+ }
215
+ function defaultEndpoint(defaultMode) {
216
+ return { name: "default", path: DEFAULT_PATH, mode: defaultMode, enabled: true };
217
+ }
218
+ function readEndpointsJson(value, defaultMode) {
219
+ let parsed;
220
+ try {
221
+ parsed = JSON.parse(value);
222
+ }
223
+ catch (error) {
224
+ throw invalidConfig("MONO_AGENT_WEBHOOK_ENDPOINTS_JSON must contain valid JSON.", {
225
+ reason: error instanceof Error ? error.message : String(error),
226
+ });
227
+ }
228
+ if (!Array.isArray(parsed)) {
229
+ throw invalidConfig("MONO_AGENT_WEBHOOK_ENDPOINTS_JSON must be an array.");
230
+ }
231
+ return parsed.map((entry, index) => normalizeEndpointConfig(entry, index, defaultMode));
232
+ }
233
+ function normalizeEndpointConfig(entry, index, defaultMode) {
234
+ if (!isRecord(entry)) {
235
+ throw invalidConfig("Webhook endpoint entries must be objects.", { index });
236
+ }
237
+ const rawPath = asOptionalString(entry.path);
238
+ if (rawPath === undefined) {
239
+ throw invalidConfig("Webhook endpoints require a path.", { index });
240
+ }
241
+ const path = normalizePath(rawPath);
242
+ const mode = readEndpointMode(entry.mode, index, defaultMode);
243
+ const prompt = asOptionalString(entry.prompt);
244
+ const name = asOptionalString(entry.name) ?? deriveEndpointName(path);
245
+ const enabled = typeof entry.enabled === "boolean" ? entry.enabled : true;
246
+ return {
247
+ name,
248
+ path,
249
+ mode,
250
+ enabled,
251
+ ...(prompt === undefined ? {} : { prompt }),
252
+ };
253
+ }
254
+ function readEndpointMode(value, index, defaultMode) {
255
+ const mode = asOptionalString(value);
256
+ if (mode === undefined) {
257
+ return defaultMode;
258
+ }
259
+ if (mode !== "sync" && mode !== "async") {
260
+ throw invalidConfig("Webhook endpoint mode must be sync or async.", { index });
261
+ }
262
+ return mode;
263
+ }
264
+ /** Default an endpoint name to the last path segment (e.g. `/webhook/results` → `results`). */
265
+ function deriveEndpointName(path) {
266
+ const segments = path.split("/").filter((segment) => segment.length > 0);
267
+ return segments[segments.length - 1] ?? "default";
106
268
  }
107
269
  function layerWebhookJsonOntoEnv(json, env) {
108
270
  const section = readJsonSection(json, "webhook");
@@ -111,10 +273,18 @@ function layerWebhookJsonOntoEnv(json, env) {
111
273
  { env: "MONO_AGENT_WEBHOOK_HOST", value: section.host },
112
274
  { env: "MONO_AGENT_WEBHOOK_PORT", value: section.port, kind: "integer" },
113
275
  { env: "MONO_AGENT_WEBHOOK_PATH", value: section.path },
276
+ { env: "MONO_AGENT_WEBHOOK_PROMPT", value: section.prompt },
114
277
  { env: "MONO_AGENT_WEBHOOK_ALLOW_NON_LOOPBACK", value: section.allowNonLoopback, kind: "boolean" },
115
278
  { env: "MONO_AGENT_WEBHOOK_DEFAULT_MODE", value: section.defaultMode },
116
279
  { env: "MONO_AGENT_WEBHOOK_RETENTION_MS", value: section.retentionMs, kind: "integer" },
117
280
  { env: "MONO_AGENT_WEBHOOK_MAX_STORED_REQUESTS", value: section.maxStoredRequests, kind: "integer" },
118
281
  ]);
119
282
  }
283
+ /** Trim a JSON value to a non-empty string, treating non-strings as absent. */
284
+ function asOptionalString(value) {
285
+ return typeof value === "string" ? normalizeOptionalString(value) : undefined;
286
+ }
287
+ function isRecord(value) {
288
+ return value !== null && typeof value === "object" && !Array.isArray(value);
289
+ }
120
290
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { WebhookEndpointConfig } from "./config.js";
2
+ import { type WebhookInvocationMode } from "./server.js";
3
+ /**
4
+ * Load every `*.md` webhook endpoint in {@link dir}. A missing directory is not
5
+ * an error (returns `[]`); files are read in sorted filename order for a stable
6
+ * endpoint list. Two files that resolve to the same `name` are a hard error.
7
+ */
8
+ export declare function loadWebhookEndpointsFromDirectory(dir: string, defaultMode: WebhookInvocationMode): Promise<WebhookEndpointConfig[]>;
9
+ /**
10
+ * Parse one webhook endpoint markdown file: frontmatter holds the routing
11
+ * metadata and the markdown body is the `prompt` (pre-instructions). `name`
12
+ * defaults to the filename stem, `mode` to the shared default, and `enabled` to
13
+ * true. Unlike cron jobs, the body may be empty — an endpoint with no prompt
14
+ * just forwards the posted text unchanged.
15
+ */
16
+ export declare function parseWebhookEndpointMarkdown(fileName: string, content: string, defaultMode: WebhookInvocationMode): WebhookEndpointConfig;
17
+ //# sourceMappingURL=endpoints-dir.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints-dir.d.ts","sourceRoot":"","sources":["../src/endpoints-dir.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAsC,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAU7F;;;;GAIG;AACH,wBAAsB,iCAAiC,CACrD,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,qBAAqB,GACjC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAsClC;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,qBAAqB,GACjC,qBAAqB,CAwBvB"}
@@ -0,0 +1,136 @@
1
+ import { readdir, readFile } from "node:fs/promises";
2
+ import { join } from "node:path";
3
+ import { normalizeOptionalString, readBoolean } from "@mono-agent/settings";
4
+ import { normalizePath, WebhookAdapterError } from "./server.js";
5
+ // Matches a leading YAML-style frontmatter block (`---` … `---`). Mirrors the
6
+ // shape used by cron-adapter's job files; webhook-adapter keeps a self-contained
7
+ // parser so it takes on no extra dependency. Frontmatter is flat scalars only.
8
+ const FRONTMATTER_PATTERN = /^---\n([\s\S]*?)\n---[ \t]*(?:\n|$)/u;
9
+ const invalidConfig = (message, details) => new WebhookAdapterError("invalid_config", message, details);
10
+ /**
11
+ * Load every `*.md` webhook endpoint in {@link dir}. A missing directory is not
12
+ * an error (returns `[]`); files are read in sorted filename order for a stable
13
+ * endpoint list. Two files that resolve to the same `name` are a hard error.
14
+ */
15
+ export async function loadWebhookEndpointsFromDirectory(dir, defaultMode) {
16
+ let entries;
17
+ try {
18
+ entries = await readdir(dir, { withFileTypes: true });
19
+ }
20
+ catch (error) {
21
+ if (isErrno(error, "ENOENT")) {
22
+ return [];
23
+ }
24
+ throw invalidConfig("Unable to read webhook endpoints directory.", { dir, reason: errorToMessage(error) });
25
+ }
26
+ const files = entries
27
+ .filter((entry) => entry.isFile() && entry.name.toLowerCase().endsWith(".md"))
28
+ .map((entry) => entry.name)
29
+ .sort();
30
+ const endpoints = [];
31
+ const seenNames = new Map();
32
+ for (const name of files) {
33
+ const filePath = join(dir, name);
34
+ let content;
35
+ try {
36
+ content = await readFile(filePath, "utf8");
37
+ }
38
+ catch (error) {
39
+ throw invalidConfig("Unable to read webhook endpoint file.", { file: name, reason: errorToMessage(error) });
40
+ }
41
+ const endpoint = parseWebhookEndpointMarkdown(name, content, defaultMode);
42
+ const prior = seenNames.get(endpoint.name);
43
+ if (prior !== undefined) {
44
+ throw invalidConfig(`Duplicate webhook endpoint name "${endpoint.name}" defined by ${prior} and ${name}.`, {
45
+ name: endpoint.name,
46
+ file: name,
47
+ });
48
+ }
49
+ seenNames.set(endpoint.name, name);
50
+ endpoints.push(endpoint);
51
+ }
52
+ return endpoints;
53
+ }
54
+ /**
55
+ * Parse one webhook endpoint markdown file: frontmatter holds the routing
56
+ * metadata and the markdown body is the `prompt` (pre-instructions). `name`
57
+ * defaults to the filename stem, `mode` to the shared default, and `enabled` to
58
+ * true. Unlike cron jobs, the body may be empty — an endpoint with no prompt
59
+ * just forwards the posted text unchanged.
60
+ */
61
+ export function parseWebhookEndpointMarkdown(fileName, content, defaultMode) {
62
+ const normalized = content.replace(/\r\n?/g, "\n");
63
+ const match = FRONTMATTER_PATTERN.exec(normalized);
64
+ const frontmatter = match === null ? "" : (match[1] ?? "");
65
+ const body = match === null ? normalized : normalized.slice(match[0].length);
66
+ const meta = parseFrontmatter(frontmatter);
67
+ const rawPath = normalizeOptionalString(meta.path);
68
+ if (rawPath === undefined) {
69
+ throw invalidConfig("Webhook endpoint markdown requires a `path` in its frontmatter.", { file: fileName });
70
+ }
71
+ const path = normalizePath(rawPath);
72
+ const name = normalizeOptionalString(meta.name) ?? stripMarkdownExtension(fileName);
73
+ const mode = normalizeMode(meta.mode, fileName) ?? defaultMode;
74
+ const enabled = readBoolean(meta.enabled, `${fileName} frontmatter \`enabled\``, true, invalidConfig);
75
+ const prompt = body.trim().length === 0 ? undefined : body.trim();
76
+ return {
77
+ name,
78
+ path,
79
+ mode,
80
+ enabled,
81
+ ...(prompt === undefined ? {} : { prompt }),
82
+ };
83
+ }
84
+ function normalizeMode(value, fileName) {
85
+ const mode = normalizeOptionalString(value);
86
+ if (mode === undefined) {
87
+ return undefined;
88
+ }
89
+ if (mode !== "sync" && mode !== "async") {
90
+ throw invalidConfig("Webhook endpoint `mode` must be sync or async.", { file: fileName, mode });
91
+ }
92
+ return mode;
93
+ }
94
+ /**
95
+ * Parse flat `key: value` frontmatter lines, one layer of surrounding quotes
96
+ * stripped. Blank and `#` comment lines are ignored, as are lines without a
97
+ * colon. Null-prototype map so a `__proto__` key is inert data.
98
+ */
99
+ function parseFrontmatter(frontmatter) {
100
+ const meta = Object.create(null);
101
+ for (const rawLine of frontmatter.split("\n")) {
102
+ const line = rawLine.trim();
103
+ if (line.length === 0 || line.startsWith("#")) {
104
+ continue;
105
+ }
106
+ const colon = line.indexOf(":");
107
+ if (colon === -1) {
108
+ continue;
109
+ }
110
+ const key = line.slice(0, colon).trim();
111
+ if (key.length === 0) {
112
+ continue;
113
+ }
114
+ meta[key] = stripQuotes(line.slice(colon + 1).trim());
115
+ }
116
+ return meta;
117
+ }
118
+ function stripQuotes(value) {
119
+ if (value.length >= 2) {
120
+ const first = value[0];
121
+ if ((first === '"' || first === "'") && value[value.length - 1] === first) {
122
+ return value.slice(1, -1);
123
+ }
124
+ }
125
+ return value;
126
+ }
127
+ function stripMarkdownExtension(fileName) {
128
+ return fileName.replace(/\.md$/iu, "");
129
+ }
130
+ function errorToMessage(error) {
131
+ return error instanceof Error ? error.message : String(error);
132
+ }
133
+ function isErrno(error, code) {
134
+ return typeof error === "object" && error !== null && error.code === code;
135
+ }
136
+ //# sourceMappingURL=endpoints-dir.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoints-dir.js","sourceRoot":"","sources":["../src/endpoints-dir.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
- export { startWebhookAdapter, WebhookAdapterError, } from "./server.js";
2
- export type { WebhookAdapterErrorCode, WebhookAdapterErrorDetails, WebhookAdapterLogger, WebhookAdapterOptions, WebhookAdapterStartResult, WebhookBusyResponse, WebhookInvocationMode, WebhookInvocationRequest, WebhookInvocationStatus, WebhookRequestMetadata, } from "./server.js";
1
+ export { normalizePath, startWebhookAdapter, WebhookAdapterError, } from "./server.js";
2
+ export type { WebhookAdapterErrorCode, WebhookAdapterErrorDetails, WebhookAdapterLogger, WebhookAdapterOptions, WebhookAdapterStartResult, WebhookBusyResponse, WebhookEndpointOption, WebhookEndpointSummary, WebhookInvocationMode, WebhookInvocationRequest, WebhookInvocationStatus, WebhookRequestMetadata, } from "./server.js";
3
3
  export { loadWebhookAdapterConfig, redactWebhookAdapterConfig, webhookFieldGroup, } from "./config.js";
4
- export type { LoadWebhookAdapterConfigInput, RedactedWebhookAdapterConfig, WebhookAdapterConfig, } from "./config.js";
4
+ export type { LoadWebhookAdapterConfigInput, RedactedWebhookAdapterConfig, WebhookAdapterConfig, WebhookEndpointConfig, } from "./config.js";
5
+ export { loadWebhookEndpointsFromDirectory, parseWebhookEndpointMarkdown, } from "./endpoints-dir.js";
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
- export { startWebhookAdapter, WebhookAdapterError, } from "./server.js";
1
+ export { normalizePath, startWebhookAdapter, WebhookAdapterError, } from "./server.js";
2
2
  export { loadWebhookAdapterConfig, redactWebhookAdapterConfig, webhookFieldGroup, } from "./config.js";
3
+ export { loadWebhookEndpointsFromDirectory, parseWebhookEndpointMarkdown, } from "./endpoints-dir.js";
3
4
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAcrB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAgBrB,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,oBAAoB,CAAC"}
package/dist/server.d.ts CHANGED
@@ -2,6 +2,8 @@ import { type AgentMessageStream, type AgentRequestBase, type AgentResponder, ty
2
2
  export type WebhookInvocationMode = "sync" | "async";
3
3
  export interface WebhookRequestMetadata {
4
4
  readonly requestId: string;
5
+ /** Name of the endpoint that received the request (multi-endpoint routing). */
6
+ readonly endpointName: string;
5
7
  readonly mode: WebhookInvocationMode;
6
8
  readonly method: string;
7
9
  readonly path: string;
@@ -63,23 +65,48 @@ export interface WebhookAdapterLogger {
63
65
  warn?(message: string, metadata?: Record<string, unknown>): void;
64
66
  error?(message: string, metadata?: Record<string, unknown>): void;
65
67
  }
68
+ /**
69
+ * One HTTP endpoint of the webhook server. Multiple endpoints share one server,
70
+ * host and port; each has its own POST path, default mode, and optional `prompt`
71
+ * (pre-instructions prepended to the incoming request text).
72
+ */
73
+ export interface WebhookEndpointOption {
74
+ readonly name: string;
75
+ readonly path: string;
76
+ readonly mode?: WebhookInvocationMode;
77
+ readonly prompt?: string;
78
+ }
66
79
  export interface WebhookAdapterOptions {
67
80
  readonly host?: string;
68
81
  readonly port?: number;
69
- readonly path?: string;
70
82
  readonly allowNonLoopback?: boolean;
71
- readonly defaultMode?: WebhookInvocationMode;
72
83
  readonly retentionMs?: number;
73
84
  readonly maxStoredRequests?: number;
74
85
  readonly responder: AgentResponder<WebhookInvocationRequest, AgentMessageStream, AgentResponse>;
75
86
  readonly logger?: WebhookAdapterLogger;
87
+ /** Endpoints to serve. When omitted, a single legacy endpoint is built from `path`/`defaultMode`. */
88
+ readonly endpoints?: readonly WebhookEndpointOption[];
89
+ /** Legacy single-endpoint path. Folded into a one-element `endpoints` list when `endpoints` is omitted. */
90
+ readonly path?: string;
91
+ /** Default invocation mode for the legacy single endpoint and for endpoints that omit `mode`. */
92
+ readonly defaultMode?: WebhookInvocationMode;
93
+ }
94
+ export interface WebhookEndpointSummary {
95
+ readonly name: string;
96
+ readonly path: string;
97
+ readonly invokeUrl: string;
98
+ readonly statusBasePath: string;
99
+ readonly mode: WebhookInvocationMode;
76
100
  }
77
101
  export interface WebhookAdapterStartResult {
78
102
  readonly url: string;
103
+ /** Invoke URL of the first endpoint (back-compat). See `endpoints` for all of them. */
79
104
  readonly invokeUrl: string;
105
+ /** Status base path of the first endpoint (back-compat). */
80
106
  readonly statusBasePath: string;
81
107
  readonly host: string;
82
108
  readonly port: number;
109
+ readonly endpoints: readonly WebhookEndpointSummary[];
83
110
  readonly activeRequestCount: number;
84
111
  getStatus(requestId: string): WebhookInvocationStatus | undefined;
85
112
  stop(): Promise<void>;
@@ -96,4 +123,5 @@ export declare class WebhookAdapterError extends Error {
96
123
  constructor(code: WebhookAdapterErrorCode, message: string, details?: WebhookAdapterErrorDetails);
97
124
  }
98
125
  export declare function startWebhookAdapter(options: WebhookAdapterOptions): Promise<WebhookAdapterStartResult>;
126
+ export declare function normalizePath(path: string): string;
99
127
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -24,37 +24,44 @@ export async function startWebhookAdapter(options) {
24
24
  validateOptions(options);
25
25
  const host = options.host ?? DEFAULT_HOST;
26
26
  const port = options.port ?? DEFAULT_PORT;
27
- const path = normalizePath(options.path ?? DEFAULT_PATH);
28
27
  const retentionMs = options.retentionMs ?? DEFAULT_RETENTION_MS;
29
28
  const maxStoredRequests = options.maxStoredRequests ?? DEFAULT_MAX_STORED_REQUESTS;
30
- const defaultMode = options.defaultMode ?? DEFAULT_MODE;
29
+ const endpoints = resolveEndpoints(options);
31
30
  assertSafeBind(host, options.allowNonLoopback === true, (boundHost) => new WebhookAdapterError("unsafe_host", "Webhook adapter refuses to bind a non-loopback host unless allowNonLoopback is true.", { host: boundHost }));
32
31
  const app = express();
33
32
  const server = createServer(app);
34
- const activeByConversation = new Map();
33
+ // Active runs are keyed by `${endpoint.name}:${conversationId}` so the same
34
+ // conversation can be in-flight on two different endpoints without a false 409.
35
+ const activeByRun = new Map();
35
36
  const statuses = new Map();
36
- const statusBasePath = `${dirname(path) === "/" ? "" : dirname(path)}/requests`;
37
37
  app.use(express.json({ limit: "1mb" }));
38
- app.post(path, (req, res) => {
39
- void handleInvoke(req, res).catch((error) => {
40
- options.logger?.error?.("Webhook invocation failed before response.", {
41
- error: errorToMessage(error),
38
+ for (const endpoint of endpoints) {
39
+ app.post(endpoint.path, (req, res) => {
40
+ void handleInvoke(req, res, endpoint).catch((error) => {
41
+ options.logger?.error?.("Webhook invocation failed before response.", {
42
+ endpoint: endpoint.name,
43
+ error: errorToMessage(error),
44
+ });
45
+ if (!res.headersSent) {
46
+ res.status(500).json({ status: "failed", error: errorToMessage(error) });
47
+ }
42
48
  });
43
- if (!res.headersSent) {
44
- res.status(500).json({ status: "failed", error: errorToMessage(error) });
49
+ });
50
+ }
51
+ // Register one status route per UNIQUE base path (endpoints sharing a parent
52
+ // directory share a status route; lookups hit the shared, requestId-keyed store).
53
+ for (const statusBasePath of new Set(endpoints.map((endpoint) => endpoint.statusBasePath))) {
54
+ app.get(`${statusBasePath}/:requestId`, (req, res) => {
55
+ pruneStatuses(statuses, retentionMs, maxStoredRequests);
56
+ const requestId = req.params.requestId;
57
+ const stored = requestId === undefined ? undefined : statuses.get(requestId);
58
+ if (stored === undefined) {
59
+ res.status(404).json({ status: "not_found", requestId });
60
+ return;
45
61
  }
62
+ res.status(200).json(stored.status);
46
63
  });
47
- });
48
- app.get(`${statusBasePath}/:requestId`, (req, res) => {
49
- pruneStatuses(statuses, retentionMs, maxStoredRequests);
50
- const requestId = req.params.requestId;
51
- const stored = requestId === undefined ? undefined : statuses.get(requestId);
52
- if (stored === undefined) {
53
- res.status(404).json({ status: "not_found", requestId });
54
- return;
55
- }
56
- res.status(200).json(stored.status);
57
- });
64
+ }
58
65
  app.use((error, _req, res, next) => {
59
66
  if (res.headersSent) {
60
67
  next(error);
@@ -68,17 +75,18 @@ export async function startWebhookAdapter(options) {
68
75
  });
69
76
  const boundPort = address.port;
70
77
  const url = `http://${hostForUrl(host)}:${boundPort}`;
71
- async function handleInvoke(req, res) {
78
+ async function handleInvoke(req, res, endpoint) {
72
79
  pruneStatuses(statuses, retentionMs, maxStoredRequests);
73
80
  const requestId = randomUUID();
74
81
  const receivedAt = new Date().toISOString();
75
82
  const body = normalizeBody(req.body, {
76
83
  requestId,
77
- defaultMode,
84
+ defaultMode: endpoint.mode,
78
85
  });
79
- const statusUrl = `${statusBasePath}/${requestId}`;
86
+ const statusUrl = `${endpoint.statusBasePath}/${requestId}`;
87
+ const runKey = `${endpoint.name}:${body.conversationId}`;
80
88
  const controller = new AbortController();
81
- if (activeByConversation.has(body.conversationId)) {
89
+ if (activeByRun.has(runKey)) {
82
90
  const busy = {
83
91
  status: "busy",
84
92
  requestId,
@@ -89,7 +97,7 @@ export async function startWebhookAdapter(options) {
89
97
  return;
90
98
  }
91
99
  const active = { controller, requestId };
92
- activeByConversation.set(body.conversationId, active);
100
+ activeByRun.set(runKey, active);
93
101
  const startedAt = new Date().toISOString();
94
102
  const running = {
95
103
  status: "running",
@@ -102,11 +110,12 @@ export async function startWebhookAdapter(options) {
102
110
  setStatus(statuses, running, retentionMs, maxStoredRequests);
103
111
  const request = {
104
112
  conversationId: body.conversationId,
105
- text: body.text,
113
+ text: composePromptText(endpoint.prompt, body.text),
106
114
  abortSignal: controller.signal,
107
115
  metadata: {
108
116
  webhook: {
109
117
  requestId,
118
+ endpointName: endpoint.name,
110
119
  mode: body.mode,
111
120
  method: req.method,
112
121
  path: req.path,
@@ -125,7 +134,7 @@ export async function startWebhookAdapter(options) {
125
134
  statusUrl,
126
135
  receivedAt,
127
136
  });
128
- void runResponder({ request, statusUrl, receivedAt, startedAt, statuses, activeByConversation, active, options, retentionMs, maxStoredRequests });
137
+ void runResponder({ request, statusUrl, receivedAt, startedAt, statuses, activeByRun, runKey, active, options, retentionMs, maxStoredRequests });
129
138
  return;
130
139
  }
131
140
  res.once("close", () => {
@@ -133,7 +142,7 @@ export async function startWebhookAdapter(options) {
133
142
  controller.abort(new Error("Webhook client disconnected."));
134
143
  }
135
144
  });
136
- const status = await runResponder({ request, statusUrl, receivedAt, startedAt, statuses, activeByConversation, active, options, retentionMs, maxStoredRequests });
145
+ const status = await runResponder({ request, statusUrl, receivedAt, startedAt, statuses, activeByRun, runKey, active, options, retentionMs, maxStoredRequests });
137
146
  if (status.status === "succeeded") {
138
147
  res.status(200).json(status);
139
148
  return;
@@ -144,23 +153,31 @@ export async function startWebhookAdapter(options) {
144
153
  }
145
154
  res.status(500).json(status);
146
155
  }
156
+ const endpointSummaries = endpoints.map((endpoint) => ({
157
+ name: endpoint.name,
158
+ path: endpoint.path,
159
+ invokeUrl: `${url}${endpoint.path}`,
160
+ statusBasePath: endpoint.statusBasePath,
161
+ mode: endpoint.mode,
162
+ }));
147
163
  return {
148
164
  url,
149
- invokeUrl: `${url}${path}`,
150
- statusBasePath,
165
+ invokeUrl: endpointSummaries[0]?.invokeUrl ?? url,
166
+ statusBasePath: endpointSummaries[0]?.statusBasePath ?? "/requests",
151
167
  host,
152
168
  port: boundPort,
169
+ endpoints: endpointSummaries,
153
170
  get activeRequestCount() {
154
- return activeByConversation.size;
171
+ return activeByRun.size;
155
172
  },
156
173
  getStatus(requestId) {
157
174
  return statuses.get(requestId)?.status;
158
175
  },
159
176
  async stop() {
160
- for (const active of activeByConversation.values()) {
177
+ for (const active of activeByRun.values()) {
161
178
  active.controller.abort(new Error("Webhook adapter stopped."));
162
179
  }
163
- activeByConversation.clear();
180
+ activeByRun.clear();
164
181
  await close(server);
165
182
  },
166
183
  };
@@ -204,8 +221,8 @@ async function runResponder(input) {
204
221
  });
205
222
  }
206
223
  finally {
207
- if (input.activeByConversation.get(input.request.conversationId) === input.active) {
208
- input.activeByConversation.delete(input.request.conversationId);
224
+ if (input.activeByRun.get(input.runKey) === input.active) {
225
+ input.activeByRun.delete(input.runKey);
209
226
  }
210
227
  }
211
228
  setStatus(input.statuses, status, input.retentionMs, input.maxStoredRequests);
@@ -263,7 +280,46 @@ function validateOptions(options) {
263
280
  if (mode !== "sync" && mode !== "async") {
264
281
  throw new WebhookAdapterError("invalid_config", "Webhook defaultMode must be sync or async.");
265
282
  }
266
- normalizePath(options.path ?? DEFAULT_PATH);
283
+ }
284
+ /**
285
+ * Resolve the configured endpoints, applying defaults and validating uniqueness.
286
+ * When no `endpoints` are given, a single legacy endpoint is synthesized from
287
+ * `path`/`defaultMode` so existing single-webhook callers keep working.
288
+ */
289
+ function resolveEndpoints(options) {
290
+ const defaultMode = options.defaultMode ?? DEFAULT_MODE;
291
+ const source = options.endpoints !== undefined && options.endpoints.length > 0
292
+ ? options.endpoints
293
+ : [{ name: "default", path: options.path ?? DEFAULT_PATH, mode: defaultMode }];
294
+ const resolved = source.map((endpoint) => {
295
+ const path = normalizePath(endpoint.path);
296
+ return {
297
+ name: endpoint.name,
298
+ path,
299
+ mode: endpoint.mode ?? defaultMode,
300
+ statusBasePath: statusBasePathFor(path),
301
+ ...(endpoint.prompt === undefined ? {} : { prompt: endpoint.prompt }),
302
+ };
303
+ });
304
+ assertUnique(resolved.map((endpoint) => endpoint.name), "name");
305
+ assertUnique(resolved.map((endpoint) => endpoint.path), "path");
306
+ return resolved;
307
+ }
308
+ function assertUnique(values, label) {
309
+ const seen = new Set();
310
+ for (const value of values) {
311
+ if (seen.has(value)) {
312
+ throw new WebhookAdapterError("invalid_config", `Duplicate webhook endpoint ${label} "${value}".`, { [label]: value });
313
+ }
314
+ seen.add(value);
315
+ }
316
+ }
317
+ function statusBasePathFor(path) {
318
+ return `${dirname(path) === "/" ? "" : dirname(path)}/requests`;
319
+ }
320
+ /** Prepend an endpoint's `prompt` (pre-instructions) to the posted text, if any. */
321
+ function composePromptText(prompt, text) {
322
+ return prompt === undefined || prompt.length === 0 ? text : `${prompt}\n\n${text}`;
267
323
  }
268
324
  function validatePositiveInteger(value, name) {
269
325
  if (value === undefined) {
@@ -273,7 +329,7 @@ function validatePositiveInteger(value, name) {
273
329
  throw new WebhookAdapterError("invalid_config", `Webhook ${name} must be a positive integer.`);
274
330
  }
275
331
  }
276
- function normalizePath(path) {
332
+ export function normalizePath(path) {
277
333
  const normalized = path.trim();
278
334
  if (!normalized.startsWith("/") || normalized.includes("?") || normalized.includes("#")) {
279
335
  throw new WebhookAdapterError("invalid_config", "Webhook path must be an absolute path without query or hash.");
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAK9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,cAAc,EACd,KAAK,EACL,UAAU,EACV,MAAM,GACP,MAAM,sBAAsB,CAAC;AAC9B,OAAO,OAAO,EAAE,EAAkD,MAAM,SAAS,CAAC;AAoJlF,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,IAAI,CAA0B;IAC9B,OAAO,CAA6B;IAE7C,YAAY,IAA6B,EAAE,OAAe,EAAE,UAAsC,EAAE;QAClG,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,CAAC;CACF;AAmBD,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,YAAY,GAAG,iBAAiB,CAAC;AACvC,MAAM,YAAY,GAA0B,MAAM,CAAC;AACnD,MAAM,oBAAoB,GAAG,OAAO,CAAC;AACrC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAA8B;IACtE,eAAe,CAAC,OAAO,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;IAC1C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,MAAM,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAC;IACnF,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5C,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CACpE,IAAI,mBAAmB,CACrB,aAAa,EACb,sFAAsF,EACtF,EAAE,IAAI,EAAE,SAAS,EAAE,CACpB,CAAC,CAAC;IAEL,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,4EAA4E;IAC5E,gFAAgF;IAChF,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;IACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEjD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACxC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnC,KAAK,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBAC7D,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,4CAA4C,EAAE;oBACpE,QAAQ,EAAE,QAAQ,CAAC,IAAI;oBACvB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;iBAC7B,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;oBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IACD,6EAA6E;IAC7E,kFAAkF;IAClF,KAAK,MAAM,cAAc,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,GAAG,CAAC,GAAG,cAAc,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACnD,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;YACxD,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC;YACvC,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC7E,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;gBACzD,OAAO;YACT,CAAC;YACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,GAAG,CAAC,GAAG,CAAC,CAAC,KAAc,EAAE,IAAa,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;QAC3E,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,CAAC,CAAC;YACZ,OAAO;QACT,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/C,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE,CACvB,IAAI,mBAAmB,CAAC,cAAc,EAAE,mCAAmC,EAAE,EAAE,MAAM,EAAE,CAAC;QAC1F,SAAS,EAAE,GAAG,EAAE,CACd,IAAI,mBAAmB,CAAC,cAAc,EAAE,gDAAgD,CAAC;KAC5F,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,UAAU,UAAU,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;IAEtD,KAAK,UAAU,YAAY,CAAC,GAAY,EAAE,GAAa,EAAE,QAA0B;QACjF,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QACxD,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE;YACnC,SAAS;YACT,WAAW,EAAE,QAAQ,CAAC,IAAI;SAC3B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,cAAc,IAAI,SAAS,EAAE,CAAC;QAC5D,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QAEzC,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAwB;gBAChC,MAAM,EAAE,MAAM;gBACd,SAAS;gBACT,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,KAAK,EAAE,oDAAoD;aAC5D,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAc,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACpD,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,OAAO,GAA4B;YACvC,MAAM,EAAE,SAAS;YACjB,SAAS;YACT,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS;YACT,UAAU;YACV,SAAS;SACV,CAAC;QACF,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;QAE7D,MAAM,OAAO,GAA6B;YACxC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YACnD,WAAW,EAAE,UAAU,CAAC,MAAM;YAC9B,QAAQ,EAAE;gBACR,OAAO,EAAE;oBACP,SAAS;oBACT,YAAY,EAAE,QAAQ,CAAC,IAAI;oBAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,UAAU;oBACV,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAC9F,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBAC3E;aACF;SACF,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,MAAM,EAAE,UAAU;gBAClB,SAAS;gBACT,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,SAAS;gBACT,UAAU;aACX,CAAC,CAAC;YACH,KAAK,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACjJ,OAAO;QACT,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;YACrB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;gBACvB,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;QACjK,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,iBAAiB,GAAsC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACxF,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,SAAS,EAAE,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE;QACnC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,IAAI,EAAE,QAAQ,CAAC,IAAI;KACpB,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,GAAG;QACH,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,SAAS,IAAI,GAAG;QACjD,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,cAAc,IAAI,WAAW;QACnE,IAAI;QACJ,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,iBAAiB;QAC5B,IAAI,kBAAkB;YACpB,OAAO,WAAW,CAAC,IAAI,CAAC;QAC1B,CAAC;QACD,SAAS,CAAC,SAAiB;YACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QACzC,CAAC;QACD,KAAK,CAAC,IAAI;YACR,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,KAY3B;IACC,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;QACvC,QAAQ,EAAE,GAAG,EAAE,CACb,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;KAC1F,CAAC,CAAC;IACH,IAAI,MAA+B,CAAC;IACpC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9E,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,GAAG;YACP,MAAM,EAAE,WAAW;YACnB,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;YACjC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC1D,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;SAC5E,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,GAAG;YACP,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ;YAC1C,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;YACjC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;YAC5C,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;SAC7B,CAAC;QACF,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,2BAA2B,EAAE;YAClF,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;YACjC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;YAC5C,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACzD,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAa,EAAE,KAAkF;IACtH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,uCAAuC,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC;IACrE,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,qCAAqC,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACvE,OAAO;QACL,IAAI;QACJ,cAAc,EAAE,iBAAiB,IAAI,WAAW,KAAK,CAAC,SAAS,EAAE;QACjE,IAAI;QACJ,GAAG,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;KACpE,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,QAAmC,EACnC,MAA+B,EAC/B,WAAmB,EACnB,iBAAyB;IAEzB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpE,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,aAAa,CACpB,QAAmC,EACnC,WAAmB,EACnB,iBAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;IACxC,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,WAAW,GAAG,MAAM,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,GAAG,iBAAiB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAA2B,CAAC;QAClE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAA8B;IACrD,IAAI,OAAO,OAAO,CAAC,SAAS,EAAE,OAAO,KAAK,UAAU,EAAE,CAAC;QACrD,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,EAAE,uCAAuC,CAAC,CAAC;IACpG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC,GAAG,KAAK,EAAE,CAAC;QACpI,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,0DAA0D,CAAC,CAAC;IAC9G,CAAC;IACD,uBAAuB,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC5D,uBAAuB,CAAC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IACxE,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACjD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,4CAA4C,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,OAA8B;IACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,YAAY,CAAC;IACxD,MAAM,MAAM,GACV,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;QAC7D,CAAC,CAAC,OAAO,CAAC,SAAS;QACnB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;IAEnF,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAoB,EAAE;QACzD,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,IAAI,WAAW;YAClC,cAAc,EAAE,iBAAiB,CAAC,IAAI,CAAC;YACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;SACtE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,YAAY,CAAC,MAAyB,EAAE,KAAa;IAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,8BAA8B,KAAK,KAAK,KAAK,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACzH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AAClE,CAAC;AAED,oFAAoF;AACpF,SAAS,iBAAiB,CAAC,MAA0B,EAAE,IAAY;IACjE,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,IAAI,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAyB,EAAE,IAAY;IACtE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,WAAW,IAAI,8BAA8B,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,8DAA8D,CAAC,CAAC;IAClH,CAAC;IACD,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,OAAO,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AAC1D,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mono-agent/webhook-adapter",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "HTTP webhook invocation adapter for agent responders.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -18,8 +18,8 @@
18
18
  "README.md"
19
19
  ],
20
20
  "dependencies": {
21
- "@mono-agent/agent-contracts": "0.3.0",
22
- "@mono-agent/settings": "0.3.0",
21
+ "@mono-agent/agent-contracts": "0.4.0",
22
+ "@mono-agent/settings": "0.4.0",
23
23
  "express": "^5.1.0"
24
24
  },
25
25
  "devDependencies": {