@mono-agent/webhook-adapter 0.2.2 → 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 +39 -3
- package/dist/config.d.ts +18 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +185 -15
- package/dist/config.js.map +1 -1
- package/dist/endpoints-dir.d.ts +17 -0
- package/dist/endpoints-dir.d.ts.map +1 -0
- package/dist/endpoints-dir.js +136 -0
- package/dist/endpoints-dir.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +30 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +94 -38
- package/dist/server.js.map +1 -1
- package/package.json +3 -3
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>;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"
|
|
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 {
|
|
2
|
-
import {
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
95
|
-
host
|
|
96
|
-
port
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
package/dist/config.js.map
CHANGED
|
@@ -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":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAA8B,MAAM,aAAa,CAAC;AAE7F,8EAA8E;AAC9E,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,mBAAmB,GAAG,sCAAsC,CAAC;AAEnE,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,OAAiC,EAAuB,EAAE,CAChG,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAE9D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,GAAW,EACX,WAAkC;IAElC,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,aAAa,CAAC,6CAA6C,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IAED,MAAM,KAAK,GAAG,OAAO;SAClB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC7E,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC1B,IAAI,EAAE,CAAC;IAEV,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,aAAa,CAAC,uCAAuC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,MAAM,QAAQ,GAAG,4BAA4B,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,aAAa,CAAC,oCAAoC,QAAQ,CAAC,IAAI,gBAAgB,KAAK,QAAQ,IAAI,GAAG,EAAE;gBACzG,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAC1C,QAAgB,EAChB,OAAe,EACf,WAAkC;IAElC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,aAAa,CAAC,iEAAiE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IACpF,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAC;IAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,QAAQ,0BAA0B,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACtG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAElE,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,OAAO;QACP,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB,EAAE,QAAgB;IAChE,MAAM,IAAI,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACxC,MAAM,aAAa,CAAC,gDAAgD,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,MAAM,IAAI,GAAuC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC;YAC1E,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgB;IAC9C,OAAO,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACzC,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,OAAO,CAAC,KAAc,EAAE,IAAY;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAK,KAA4B,CAAC,IAAI,KAAK,IAAI,CAAC;AACpG,CAAC"}
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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
|
package/dist/server.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
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
|
-
|
|
44
|
-
|
|
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 (
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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:
|
|
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
|
|
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
|
|
177
|
+
for (const active of activeByRun.values()) {
|
|
161
178
|
active.controller.abort(new Error("Webhook adapter stopped."));
|
|
162
179
|
}
|
|
163
|
-
|
|
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.
|
|
208
|
-
input.
|
|
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
|
-
|
|
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.");
|
package/dist/server.js.map
CHANGED
|
@@ -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":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mono-agent/webhook-adapter",
|
|
3
|
-
"version": "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.
|
|
22
|
-
"@mono-agent/settings": "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": {
|