botmux 3.18.6 → 3.18.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.runtime-build-id +1 -1
- package/dist/adapters/backend/riff-backend.d.ts +158 -0
- package/dist/adapters/backend/riff-backend.d.ts.map +1 -1
- package/dist/adapters/backend/riff-backend.js +330 -7
- package/dist/adapters/backend/riff-backend.js.map +1 -1
- package/dist/adapters/backend/sandbox.d.ts +42 -0
- package/dist/adapters/backend/sandbox.d.ts.map +1 -1
- package/dist/adapters/backend/sandbox.js +95 -5
- package/dist/adapters/backend/sandbox.js.map +1 -1
- package/dist/adapters/cli/codex-app.d.ts.map +1 -1
- package/dist/adapters/cli/codex-app.js +2 -1
- package/dist/adapters/cli/codex-app.js.map +1 -1
- package/dist/adapters/cli/dsh.d.ts.map +1 -1
- package/dist/adapters/cli/dsh.js +2 -1
- package/dist/adapters/cli/dsh.js.map +1 -1
- package/dist/adapters/cli/mir.d.ts.map +1 -1
- package/dist/adapters/cli/mir.js +2 -1
- package/dist/adapters/cli/mir.js.map +1 -1
- package/dist/adapters/cli/mira.d.ts.map +1 -1
- package/dist/adapters/cli/mira.js +2 -1
- package/dist/adapters/cli/mira.js.map +1 -1
- package/dist/adapters/hook-command.d.ts +3 -5
- package/dist/adapters/hook-command.d.ts.map +1 -1
- package/dist/adapters/hook-command.js +59 -13
- package/dist/adapters/hook-command.js.map +1 -1
- package/dist/autostart.d.ts +76 -0
- package/dist/autostart.d.ts.map +1 -1
- package/dist/autostart.js +105 -28
- package/dist/autostart.js.map +1 -1
- package/dist/bot-registry.d.ts +12 -0
- package/dist/bot-registry.d.ts.map +1 -1
- package/dist/bot-registry.js +43 -3
- package/dist/bot-registry.js.map +1 -1
- package/dist/cli/dashboard-command.d.ts +142 -0
- package/dist/cli/dashboard-command.d.ts.map +1 -1
- package/dist/cli/dashboard-command.js +160 -0
- package/dist/cli/dashboard-command.js.map +1 -1
- package/dist/cli/dashboard-endpoint.d.ts +66 -0
- package/dist/cli/dashboard-endpoint.d.ts.map +1 -1
- package/dist/cli/dashboard-endpoint.js +144 -30
- package/dist/cli/dashboard-endpoint.js.map +1 -1
- package/dist/cli/send-dispatch.d.ts +2 -0
- package/dist/cli/send-dispatch.d.ts.map +1 -1
- package/dist/cli/send-dispatch.js +8 -2
- package/dist/cli/send-dispatch.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +270 -38
- package/dist/cli.js.map +1 -1
- package/dist/core/binary-self-update.d.ts +7 -0
- package/dist/core/binary-self-update.d.ts.map +1 -1
- package/dist/core/binary-self-update.js +17 -0
- package/dist/core/binary-self-update.js.map +1 -1
- package/dist/core/command-handler.d.ts.map +1 -1
- package/dist/core/command-handler.js +52 -1
- package/dist/core/command-handler.js.map +1 -1
- package/dist/core/cost-calculator.d.ts +9 -1
- package/dist/core/cost-calculator.d.ts.map +1 -1
- package/dist/core/cost-calculator.js +5 -0
- package/dist/core/cost-calculator.js.map +1 -1
- package/dist/core/passthrough-commands.d.ts.map +1 -1
- package/dist/core/passthrough-commands.js +1 -1
- package/dist/core/passthrough-commands.js.map +1 -1
- package/dist/core/self-spawn.d.ts +46 -1
- package/dist/core/self-spawn.d.ts.map +1 -1
- package/dist/core/self-spawn.js +57 -0
- package/dist/core/self-spawn.js.map +1 -1
- package/dist/core/worker-pool.d.ts.map +1 -1
- package/dist/core/worker-pool.js +81 -5
- package/dist/core/worker-pool.js.map +1 -1
- package/dist/daemon.d.ts.map +1 -1
- package/dist/daemon.js +93 -0
- package/dist/daemon.js.map +1 -1
- package/dist/dashboard/autostart-api.d.ts.map +1 -1
- package/dist/dashboard/autostart-api.js +16 -3
- package/dist/dashboard/autostart-api.js.map +1 -1
- package/dist/dashboard/bot-onboarding.d.ts +2 -1
- package/dist/dashboard/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/bot-onboarding.js +22 -6
- package/dist/dashboard/bot-onboarding.js.map +1 -1
- package/dist/dashboard/bot-payload.d.ts +1 -0
- package/dist/dashboard/bot-payload.d.ts.map +1 -1
- package/dist/dashboard/bot-payload.js +3 -0
- package/dist/dashboard/bot-payload.js.map +1 -1
- package/dist/dashboard/connector-api.d.ts.map +1 -1
- package/dist/dashboard/connector-api.js +28 -0
- package/dist/dashboard/connector-api.js.map +1 -1
- package/dist/dashboard/trigger-api.d.ts.map +1 -1
- package/dist/dashboard/trigger-api.js +33 -21
- package/dist/dashboard/trigger-api.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.js +12 -2
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -1
- package/dist/dashboard/web/bot-defaults.d.ts +2 -0
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/bot-onboarding.d.ts +40 -1
- package/dist/dashboard/web/bot-onboarding.d.ts.map +1 -1
- package/dist/dashboard/web/bot-onboarding.js +52 -2
- package/dist/dashboard/web/bot-onboarding.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +2 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/webhook-routes.d.ts.map +1 -1
- package/dist/dashboard/webhook-routes.js +272 -30
- package/dist/dashboard/webhook-routes.js.map +1 -1
- package/dist/dashboard-web/app.js +1 -1
- package/dist/dashboard-web/chunks/{agent-workbench-dock-page-XHJUYFGN.js → agent-workbench-dock-page-6LC422N6.js} +1 -1
- package/dist/dashboard-web/chunks/{agent-workbench-page-FLKTLIRM.js → agent-workbench-page-RSAWY7O2.js} +1 -1
- package/dist/dashboard-web/chunks/{bot-defaults-page-XMGLZZ2E.js → bot-defaults-page-67RAWCSQ.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-TLG45URB.js → chunk-IA5KMD5O.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-BU3Q6XC6.js → chunk-K232GT3M.js} +2 -2
- package/dist/dashboard-web/chunks/chunk-MMLTCXHP.js +10 -0
- package/dist/dashboard-web/chunks/{chunk-ECFC7UG2.js → chunk-R3LJUCEO.js} +1 -1
- package/dist/dashboard-web/chunks/{chunk-Z67OSM5P.js → chunk-YJA3KY3J.js} +1 -1
- package/dist/dashboard-web/chunks/{connectors-page-WDM4CEAU.js → connectors-page-DJCTHSFB.js} +1 -1
- package/dist/dashboard-web/chunks/{feedback-page-GMJ4FLJ4.js → feedback-page-O7SZRKNM.js} +1 -1
- package/dist/dashboard-web/chunks/{groups-page-L4ZJNWVR.js → groups-page-7PONUYHE.js} +1 -1
- package/dist/dashboard-web/chunks/{insights-page-7LUJU2CX.js → insights-page-J6DAAJ6D.js} +1 -1
- package/dist/dashboard-web/chunks/{monitor-room-7LZUJQPF.js → monitor-room-F3QNEW7N.js} +1 -1
- package/dist/dashboard-web/chunks/{monitoring-page-AUSXMPYO.js → monitoring-page-JHDD2VS2.js} +1 -1
- package/dist/dashboard-web/chunks/{office-page-6ZU6MAZN.js → office-page-MMTN4IKD.js} +1 -1
- package/dist/dashboard-web/chunks/{overview-page-QBC5CIYH.js → overview-page-IQ2UJAJP.js} +1 -1
- package/dist/dashboard-web/chunks/{roles-page-QO3YCA7D.js → roles-page-FNI4MGX6.js} +1 -1
- package/dist/dashboard-web/chunks/{schedules-page-YNGSKDQW.js → schedules-page-6PUU63KS.js} +1 -1
- package/dist/dashboard-web/chunks/{sessions-page-BWR4UB6X.js → sessions-page-O4N72EXT.js} +4 -4
- package/dist/dashboard-web/chunks/{settings-page-2IRIS3FP.js → settings-page-G7B3STUF.js} +1 -1
- package/dist/dashboard-web/chunks/{skills-page-5RZPM6HJ.js → skills-page-CEWKQOIG.js} +1 -1
- package/dist/dashboard-web/chunks/{team-federation-page-KERG6LKC.js → team-federation-page-NUP4VK4H.js} +1 -1
- package/dist/dashboard-web/chunks/{v3-page-766CBD7H.js → v3-page-M4XF6D5Z.js} +1 -1
- package/dist/dashboard-web/chunks/{whiteboards-page-2M6XZD5C.js → whiteboards-page-L755NZX6.js} +1 -1
- package/dist/dashboard-web/style.css +13 -0
- package/dist/dashboard.js +3 -0
- package/dist/dashboard.js.map +1 -1
- package/dist/global-config.d.ts +3 -0
- package/dist/global-config.d.ts.map +1 -1
- package/dist/global-config.js +10 -3
- package/dist/global-config.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +19 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +19 -1
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/api-gate.d.ts +53 -0
- package/dist/im/lark/api-gate.d.ts.map +1 -0
- package/dist/im/lark/api-gate.js +322 -0
- package/dist/im/lark/api-gate.js.map +1 -0
- package/dist/im/lark/audio-transcribe.d.ts +23 -0
- package/dist/im/lark/audio-transcribe.d.ts.map +1 -0
- package/dist/im/lark/audio-transcribe.js +126 -0
- package/dist/im/lark/audio-transcribe.js.map +1 -0
- package/dist/im/lark/card-builder.d.ts +6 -0
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +53 -1
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/card-handler.d.ts +10 -0
- package/dist/im/lark/card-handler.d.ts.map +1 -1
- package/dist/im/lark/card-handler.js +68 -1
- package/dist/im/lark/card-handler.js.map +1 -1
- package/dist/im/lark/client.d.ts.map +1 -1
- package/dist/im/lark/client.js +247 -224
- package/dist/im/lark/client.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +34 -3
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/message-parser.d.ts +16 -0
- package/dist/im/lark/message-parser.d.ts.map +1 -1
- package/dist/im/lark/message-parser.js +31 -0
- package/dist/im/lark/message-parser.js.map +1 -1
- package/dist/services/budget-tracker.d.ts +61 -0
- package/dist/services/budget-tracker.d.ts.map +1 -0
- package/dist/services/budget-tracker.js +306 -0
- package/dist/services/budget-tracker.js.map +1 -0
- package/dist/services/connector-store.d.ts +16 -0
- package/dist/services/connector-store.d.ts.map +1 -1
- package/dist/services/connector-store.js.map +1 -1
- package/dist/services/failed-turn-retry.d.ts +43 -0
- package/dist/services/failed-turn-retry.d.ts.map +1 -0
- package/dist/services/failed-turn-retry.js +50 -0
- package/dist/services/failed-turn-retry.js.map +1 -0
- package/dist/services/model-pricing.d.ts +80 -0
- package/dist/services/model-pricing.d.ts.map +1 -0
- package/dist/services/model-pricing.js +182 -0
- package/dist/services/model-pricing.js.map +1 -0
- package/dist/services/session-store.d.ts.map +1 -1
- package/dist/services/session-store.js +13 -3
- package/dist/services/session-store.js.map +1 -1
- package/dist/services/trigger-types.d.ts +10 -0
- package/dist/services/trigger-types.d.ts.map +1 -1
- package/dist/services/trigger-types.js.map +1 -1
- package/dist/services/usage-ledger.d.ts +10 -0
- package/dist/services/usage-ledger.d.ts.map +1 -1
- package/dist/services/usage-ledger.js +36 -0
- package/dist/services/usage-ledger.js.map +1 -1
- package/dist/services/voice/asr.d.ts +17 -0
- package/dist/services/voice/asr.d.ts.map +1 -0
- package/dist/services/voice/asr.js +64 -0
- package/dist/services/voice/asr.js.map +1 -0
- package/dist/services/voice/index.d.ts +17 -2
- package/dist/services/voice/index.d.ts.map +1 -1
- package/dist/services/voice/index.js +43 -0
- package/dist/services/voice/index.js.map +1 -1
- package/dist/services/voice/types.d.ts +15 -0
- package/dist/services/voice/types.d.ts.map +1 -1
- package/dist/services/webhook-idempotency.d.ts +134 -0
- package/dist/services/webhook-idempotency.d.ts.map +1 -0
- package/dist/services/webhook-idempotency.js +265 -0
- package/dist/services/webhook-idempotency.js.map +1 -0
- package/dist/setup/app-name.d.ts +1 -0
- package/dist/setup/app-name.d.ts.map +1 -1
- package/dist/setup/app-name.js +7 -0
- package/dist/setup/app-name.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts +28 -0
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +73 -0
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/setup/open-platform-automation.d.ts +26 -0
- package/dist/setup/open-platform-automation.d.ts.map +1 -1
- package/dist/setup/open-platform-automation.js +90 -1
- package/dist/setup/open-platform-automation.js.map +1 -1
- package/dist/setup/open-platform-outcome.d.ts.map +1 -1
- package/dist/setup/open-platform-outcome.js +8 -2
- package/dist/setup/open-platform-outcome.js.map +1 -1
- package/dist/types.d.ts +20 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/usage-limit-tracker.d.ts +29 -9
- package/dist/utils/usage-limit-tracker.d.ts.map +1 -1
- package/dist/utils/usage-limit-tracker.js +122 -14
- package/dist/utils/usage-limit-tracker.js.map +1 -1
- package/dist/worker.js +27 -6
- package/dist/worker.js.map +1 -1
- package/dist/workflows/definition.d.ts +56 -56
- package/dist/workflows/events/payloads.d.ts +2 -2
- package/dist/workflows/events/schema.d.ts +430 -430
- package/dist/workflows/migration/v2-run-archive-schema.d.ts +2 -2
- package/dist/workflows/v3/run-envelope.d.ts +56 -56
- package/package.json +9 -8
- package/scripts/postinstall-bin.mjs +25 -0
- package/dist/dashboard-web/chunks/chunk-NJCJR3U2.js +0 -10
|
@@ -3,10 +3,12 @@ import { getConnector, listConnectors } from '../services/connector-store.js';
|
|
|
3
3
|
import { getWebhookSecret } from '../services/webhook-key.js';
|
|
4
4
|
import { appendTriggerLog, pruneTriggerLogsByConnectorRetention, } from '../services/trigger-log-store.js';
|
|
5
5
|
import { extractDedupKey } from '../services/webhook-lifecycle-extractors.js';
|
|
6
|
+
import { dispatchDidRun, inspectWebhookIdempotency, settleWebhookIdempotency, } from '../services/webhook-idempotency.js';
|
|
6
7
|
import { renderConnectorTopicTemplate, } from '../services/connector-topic-template.js';
|
|
7
8
|
import { webhookAuditRequest, webhookAuditResponse, webhookAuditTarget, withWebhookAuditPayload, } from '../services/webhook-audit.js';
|
|
8
9
|
import { activateWebhookLifecycleGroup, beginWebhookLifecycleFiring, failWebhookLifecycleGroup, } from '../services/webhook-lifecycle-store.js';
|
|
9
10
|
import { jsonRes } from './http.js';
|
|
11
|
+
import { logger } from '../utils/logger.js';
|
|
10
12
|
import { dispatchTriggerRequest, newTriggerId, queryTriggerResult } from './trigger-api.js';
|
|
11
13
|
const replayNonces = new Map();
|
|
12
14
|
const rateBuckets = new Map();
|
|
@@ -108,21 +110,50 @@ function claimNonce(connectorId, nonce, ttlSeconds) {
|
|
|
108
110
|
replayNonces.set(key, now + ttlSeconds * 1000);
|
|
109
111
|
return true;
|
|
110
112
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
/** Two-stage limiting, because one bucket cannot serve both purposes.
|
|
114
|
+
*
|
|
115
|
+
* `admission` runs at the very edge (before the body is read or the signature is
|
|
116
|
+
* checked) and meters EVERY request, so an unauthenticated flood cannot make the
|
|
117
|
+
* gateway do unbounded body reads and audit writes. Moving the single old limiter
|
|
118
|
+
* behind verification — to stop a collapsed duplicate from being answered 429 —
|
|
119
|
+
* silently removed that protection: a bad-token flood then returned 401 forever
|
|
120
|
+
* with the limiter never engaging (verified by probe).
|
|
121
|
+
*
|
|
122
|
+
* `dispatch` meters only deliveries that will actually reach a daemon. A
|
|
123
|
+
* duplicate we are going to collapse consumes no downstream resource, so it must
|
|
124
|
+
* not spend this quota (and must never be answered 429, which an at-least-once
|
|
125
|
+
* sender reads as "not delivered").
|
|
126
|
+
*
|
|
127
|
+
* Both stages share the connector's configured limit; the admission bucket is
|
|
128
|
+
* deliberately more permissive (x4) so an honest sender that trips a retry never
|
|
129
|
+
* gets rejected at the edge before its duplicate can be recognised and folded. */
|
|
130
|
+
const rateBucketsAdmission = new Map();
|
|
131
|
+
function consumeBucket(buckets, key, windowSeconds, maxRequests) {
|
|
115
132
|
const now = Date.now();
|
|
116
|
-
const cur =
|
|
117
|
-
if (!cur || now - cur.windowStart >=
|
|
118
|
-
|
|
133
|
+
const cur = buckets.get(key);
|
|
134
|
+
if (!cur || now - cur.windowStart >= windowSeconds * 1000) {
|
|
135
|
+
buckets.set(key, { windowStart: now, count: 1 });
|
|
119
136
|
return true;
|
|
120
137
|
}
|
|
121
|
-
if (cur.count >=
|
|
138
|
+
if (cur.count >= maxRequests)
|
|
122
139
|
return false;
|
|
123
140
|
cur.count += 1;
|
|
124
141
|
return true;
|
|
125
142
|
}
|
|
143
|
+
/** Edge admission: metered before any body read / signature verification. */
|
|
144
|
+
function admissionAllowed(connector) {
|
|
145
|
+
const rl = connector.rateLimit;
|
|
146
|
+
if (!rl || rl.windowSeconds <= 0 || rl.maxRequests <= 0)
|
|
147
|
+
return true;
|
|
148
|
+
return consumeBucket(rateBucketsAdmission, connector.id, rl.windowSeconds, rl.maxRequests * 4);
|
|
149
|
+
}
|
|
150
|
+
/** Dispatch quota: consumed only by a delivery that will really be dispatched. */
|
|
151
|
+
function rateAllowed(connector) {
|
|
152
|
+
const rl = connector.rateLimit;
|
|
153
|
+
if (!rl || rl.windowSeconds <= 0 || rl.maxRequests <= 0)
|
|
154
|
+
return true;
|
|
155
|
+
return consumeBucket(rateBuckets, connector.id, rl.windowSeconds, rl.maxRequests);
|
|
156
|
+
}
|
|
126
157
|
function parsePayload(rawBody) {
|
|
127
158
|
const rawText = rawBody.toString('utf-8');
|
|
128
159
|
try {
|
|
@@ -189,6 +220,38 @@ export async function resolveConnectorTriggerPresentation(connector, payload, re
|
|
|
189
220
|
const topicMessage = await renderConnectorTopicTemplate(connector, payload, resolveMentions);
|
|
190
221
|
return topicMessage ? { topicMessage } : undefined;
|
|
191
222
|
}
|
|
223
|
+
/** Headers accepted as an inbound idempotency key, in priority order.
|
|
224
|
+
*
|
|
225
|
+
* Deliberately a SET rather than one botmux-specific name. The webhook gateway's
|
|
226
|
+
* stated design goal is near-zero adaptation for a new upstream, so requiring
|
|
227
|
+
* senders to emit a botmux-private header would invert it — and an upstream that
|
|
228
|
+
* already has a unique delivery id emits it under a vendor-neutral name, never
|
|
229
|
+
* ours. Order: our own control-plane name first (explicit, matches
|
|
230
|
+
* `x-botmux-chat-id` / `-session-id` / `-root-message-id`), then the
|
|
231
|
+
* IETF-draft/Stripe spelling that this repo itself sends OUTBOUND from
|
|
232
|
+
* `platform/device-enroll.ts`, then the `x-` prefixed variant real senders use
|
|
233
|
+
* (EventHub emits exactly this today, so it needs no change at all). */
|
|
234
|
+
const IDEMPOTENCY_KEY_HEADERS = [
|
|
235
|
+
'x-botmux-idempotency-key',
|
|
236
|
+
'idempotency-key',
|
|
237
|
+
'x-idempotency-key',
|
|
238
|
+
];
|
|
239
|
+
/** Resolve the caller's idempotency key: header > query > connector-configured
|
|
240
|
+
* body path. The body path exists because plenty of real senders (alert
|
|
241
|
+
* platforms that only let you paste a URL) cannot add a header — for them the
|
|
242
|
+
* unique id is a field inside the event JSON. */
|
|
243
|
+
function idempotencyKeyOf(req, url, payload, connector) {
|
|
244
|
+
for (const name of IDEMPOTENCY_KEY_HEADERS) {
|
|
245
|
+
const v = headerValue(req, name)?.trim();
|
|
246
|
+
if (v)
|
|
247
|
+
return v;
|
|
248
|
+
}
|
|
249
|
+
const fromQuery = url.searchParams.get('idempotencyKey')?.trim();
|
|
250
|
+
if (fromQuery)
|
|
251
|
+
return fromQuery;
|
|
252
|
+
const path = connector.idempotency?.keyPath;
|
|
253
|
+
return path ? extractDedupKey(payload, path) : undefined;
|
|
254
|
+
}
|
|
192
255
|
function dynamicChatId(req, url, payload) {
|
|
193
256
|
const fromQuery = url.searchParams.get('chatId') ?? undefined;
|
|
194
257
|
if (fromQuery)
|
|
@@ -273,20 +336,40 @@ function webhookError(res, status, connectorId, errorCode, error, meta) {
|
|
|
273
336
|
}
|
|
274
337
|
function webhookOkLog(connectorId, action, message, status, meta) {
|
|
275
338
|
const triggerId = newTriggerId();
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
339
|
+
// Best-effort audit: a log-write failure must not turn a successful
|
|
340
|
+
// suppression into a 5xx, which an at-least-once sender would read as "not
|
|
341
|
+
// delivered" and retry forever (the exact storm this path exists to stop).
|
|
342
|
+
try {
|
|
343
|
+
appendTriggerLog({
|
|
344
|
+
triggerId,
|
|
345
|
+
connectorId,
|
|
346
|
+
...(meta.requestId ? { requestId: meta.requestId } : {}),
|
|
347
|
+
action,
|
|
348
|
+
status: 'ok',
|
|
349
|
+
request: meta.request,
|
|
350
|
+
...(meta.target ? { target: meta.target } : {}),
|
|
351
|
+
response: webhookAuditResponse(status, meta.startedAtMs),
|
|
352
|
+
createdAt: meta.createdAt,
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
catch (err) {
|
|
356
|
+
logger.warn(`[webhook] audit log write failed (delivery unaffected): ${err.message}`);
|
|
357
|
+
}
|
|
287
358
|
return { ok: true, triggerId, action, message };
|
|
288
359
|
}
|
|
289
360
|
export async function handleWebhookRoute(req, res, url, deps) {
|
|
361
|
+
const guard = {};
|
|
362
|
+
try {
|
|
363
|
+
return await handleWebhookRouteImpl(req, res, url, deps, guard);
|
|
364
|
+
}
|
|
365
|
+
finally {
|
|
366
|
+
// Runs on every exit — normal return, early return, or throw. A dispatch that
|
|
367
|
+
// resolved the reservation clears this first, so the only thing released here
|
|
368
|
+
// is a reservation whose event never actually ran.
|
|
369
|
+
guard.release?.();
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
async function handleWebhookRouteImpl(req, res, url, deps, guard) {
|
|
290
373
|
// Second path segment (optional) carries the bearer token for `token` mode:
|
|
291
374
|
// /webhook/<connectorId> → token via query / Authorization header
|
|
292
375
|
// /webhook/<connectorId>/<token> → token baked into the URL (default)
|
|
@@ -377,7 +460,10 @@ export async function handleWebhookRoute(req, res, url, deps) {
|
|
|
377
460
|
jsonRes(res, result.status, result.body);
|
|
378
461
|
return true;
|
|
379
462
|
}
|
|
380
|
-
|
|
463
|
+
// Edge admission: meters EVERY POST before the body is read or the signature
|
|
464
|
+
// checked, so an unauthenticated flood stays bounded. The narrower dispatch
|
|
465
|
+
// quota is charged later, only for deliveries that really reach a daemon.
|
|
466
|
+
if (!admissionAllowed(connector)) {
|
|
381
467
|
fail(429, 'rate_limited', 'connector rate limit exceeded');
|
|
382
468
|
return true;
|
|
383
469
|
}
|
|
@@ -415,18 +501,174 @@ export async function handleWebhookRoute(req, res, url, deps) {
|
|
|
415
501
|
fail(401, 'replay', 'timestamp outside tolerance window');
|
|
416
502
|
return true;
|
|
417
503
|
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}
|
|
504
|
+
// Signature BEFORE the nonce claim: an unauthenticated caller must not be able
|
|
505
|
+
// to write into `replayNonces` (uncapped, TTL-only) with a bogus signature, nor
|
|
506
|
+
// poison a nonce the real sender is about to use.
|
|
422
507
|
const secret = getWebhookSecret(verify.secretRef);
|
|
423
508
|
if (!secret || !verifyWebhookSignature(secret, ts, rawBody, sig)) {
|
|
424
509
|
fail(401, 'invalid_signature', 'signature verification failed');
|
|
425
510
|
return true;
|
|
426
511
|
}
|
|
512
|
+
// The nonce is claimed HERE, before the idempotency gate. Consequence, and it
|
|
513
|
+
// is a deliberate scope decision: a gateway that replays the IDENTICAL signed
|
|
514
|
+
// request (same timestamp/nonce/signature) is answered 409 replay rather than
|
|
515
|
+
// folded as a duplicate. HMAC senders must mint a fresh nonce and re-sign for
|
|
516
|
+
// each retry — documented in the webhook guide.
|
|
517
|
+
//
|
|
518
|
+
// Deferring the claim past the gate (so verbatim retries could fold) only works
|
|
519
|
+
// for a first delivery that SUCCEEDS: if it fails, the nonce is already spent
|
|
520
|
+
// and the retry that should take over is refused 409 instead (verified by
|
|
521
|
+
// probe). Making it correct needs a second reserve/settle state machine for
|
|
522
|
+
// nonces, CAS-bound to a full dispatch-affecting fingerprint — because the HMAC
|
|
523
|
+
// covers only `timestamp.rawBody`, NOT the idempotency key, query string, or the
|
|
524
|
+
// `x-botmux-chat-id` / `-session-id` / `-root-message-id` routing headers, so a
|
|
525
|
+
// releasable nonce would otherwise let a captured signature be replayed with
|
|
526
|
+
// altered routing. That is a bigger, security-sensitive change than the problem
|
|
527
|
+
// this PR set out to fix (token-mode fixed group), so it stays out.
|
|
528
|
+
if (!claimNonce(connector.id, nonce, verify.toleranceSeconds)) {
|
|
529
|
+
fail(409, 'replay', 'nonce replay detected');
|
|
530
|
+
return true;
|
|
531
|
+
}
|
|
427
532
|
requestId = nonce;
|
|
428
533
|
}
|
|
429
534
|
const responseOptions = parseTriggerResponseOptions(req, url);
|
|
535
|
+
// ── Inbound idempotency (duplicate-delivery suppression) ──
|
|
536
|
+
// Ordering matters in three ways:
|
|
537
|
+
// * AFTER verification — an unauthenticated request must never be able to burn
|
|
538
|
+
// a key and get a real later delivery dropped.
|
|
539
|
+
// * BEFORE the rate limiter — a duplicate we are going to collapse consumes no
|
|
540
|
+
// downstream resource, so it must not be answered 429. It used to be: the
|
|
541
|
+
// limiter ran first, a duplicate got 429, and an at-least-once sender read
|
|
542
|
+
// that as "not delivered" and retried, which then hit the limiter again — the
|
|
543
|
+
// suppression path was unreachable exactly when it was needed most.
|
|
544
|
+
// * BEFORE every dispatch branch — fixed / dynamic / new-group / wait / async
|
|
545
|
+
// are all covered by this one gate instead of four separate ones.
|
|
546
|
+
//
|
|
547
|
+
// dryRun is exempt: it dispatches nothing, so it has no duplicate to suppress
|
|
548
|
+
// and must not consume the key that the real delivery will present.
|
|
549
|
+
const idempotencyKey = connector.idempotency?.disabled
|
|
550
|
+
? undefined
|
|
551
|
+
: idempotencyKeyOf(req, url, parsed.payload, connector);
|
|
552
|
+
let idempotency = { kind: 'disabled' };
|
|
553
|
+
const suppressDuplicate = (key, firstTriggerId) => {
|
|
554
|
+
// 200 + action:'ignored', never 4xx: an at-least-once sender treats a non-2xx
|
|
555
|
+
// as "not delivered" and keeps retrying, so answering an already-handled
|
|
556
|
+
// duplicate with an error would manufacture the retry storm this feature
|
|
557
|
+
// exists to stop. `firstTriggerId` lets the sender reconcile the suppressed
|
|
558
|
+
// retry against the turn that actually ran.
|
|
559
|
+
jsonRes(res, 200, {
|
|
560
|
+
...webhookOkLog(connector.id, 'ignored', 'duplicate delivery suppressed by idempotency key', 200, auditMeta()),
|
|
561
|
+
idempotency: { key, action: 'duplicate', ...(firstTriggerId ? { firstTriggerId } : {}) },
|
|
562
|
+
});
|
|
563
|
+
return true;
|
|
564
|
+
};
|
|
565
|
+
if (idempotencyKey && !responseOptions.dryRun) {
|
|
566
|
+
// Resolve to a terminal verdict. An `in_flight` verdict means a delivery of
|
|
567
|
+
// this same event is mid-flight and its outcome is unknown; we must not ACK
|
|
568
|
+
// that as handled (if it then fails, a sender that stopped retrying has lost
|
|
569
|
+
// the event), so we join it and re-inspect. The loop is bounded because each
|
|
570
|
+
// pass either returns, becomes `first`, or the owner reservation's deadline
|
|
571
|
+
// has passed and the slot is reclaimed.
|
|
572
|
+
for (;;) {
|
|
573
|
+
idempotency = inspectWebhookIdempotency(connector.id, idempotencyKey, rawBody);
|
|
574
|
+
if (idempotency.kind !== 'in_flight')
|
|
575
|
+
break;
|
|
576
|
+
// Tie the wait to THIS request's lifetime: if our client hangs up we stop
|
|
577
|
+
// holding a resolver on the owner's entry. This cancels only our own waiter —
|
|
578
|
+
// the owner reservation is untouched.
|
|
579
|
+
const waitAbort = new AbortController();
|
|
580
|
+
const onClose = () => waitAbort.abort();
|
|
581
|
+
res.once('close', onClose);
|
|
582
|
+
let outcome;
|
|
583
|
+
try {
|
|
584
|
+
outcome = await idempotency.join(waitAbort.signal);
|
|
585
|
+
}
|
|
586
|
+
finally {
|
|
587
|
+
res.removeListener('close', onClose);
|
|
588
|
+
}
|
|
589
|
+
if (outcome.kind === 'ran')
|
|
590
|
+
return suppressDuplicate(idempotency.key, outcome.triggerId);
|
|
591
|
+
if (outcome.kind === 'aborted') {
|
|
592
|
+
// Our client is gone. Stop here: re-inspecting could make a disconnected
|
|
593
|
+
// request become the new owner and dispatch, which is the opposite of
|
|
594
|
+
// cancelling. Nothing was reserved by us, so there is nothing to release.
|
|
595
|
+
return true;
|
|
596
|
+
}
|
|
597
|
+
// 'released' — the first delivery failed or its slot was reclaimed, so the
|
|
598
|
+
// event did NOT run. Re-inspect rather than dispatching straight away:
|
|
599
|
+
// several waiters can wake together and only one may take over as `first`.
|
|
600
|
+
}
|
|
601
|
+
if (idempotency.kind === 'overloaded') {
|
|
602
|
+
// Too many duplicates of this same event are already parked. Answer a
|
|
603
|
+
// RETRYABLE 503 (never 2xx: nothing has been confirmed, and an
|
|
604
|
+
// at-least-once sender must come back) and do not dispatch.
|
|
605
|
+
fail(503, 'trigger_failed', 'too many concurrent duplicate deliveries for this idempotency key; retry shortly');
|
|
606
|
+
return true;
|
|
607
|
+
}
|
|
608
|
+
if (idempotency.kind === 'duplicate')
|
|
609
|
+
return suppressDuplicate(idempotency.key, idempotency.firstTriggerId);
|
|
610
|
+
if (idempotency.kind === 'conflict') {
|
|
611
|
+
// Same key, different body ⇒ the sender's key is not a reliable unique id.
|
|
612
|
+
// Fail OPEN (dispatch anyway): silently dropping what may be a distinct
|
|
613
|
+
// production alert is worse than running a duplicate turn. Recorded so the
|
|
614
|
+
// anomaly is visible in the call log instead of being invisible.
|
|
615
|
+
logger.warn(`[webhook] connector ${connector.id} reused idempotency key ${idempotency.key} with a different body; dispatching anyway (key is not a reliable unique id)`);
|
|
616
|
+
}
|
|
617
|
+
if (idempotency.kind === 'first') {
|
|
618
|
+
// `inspect` RESERVED the key for this request. Hand the release duty to the
|
|
619
|
+
// wrapper's `finally` (see ReservationGuard): it must outlive every early
|
|
620
|
+
// return, throw, AND a client hang-up, because the handler can be parked on
|
|
621
|
+
// a pre-effect await and later resume into real side effects.
|
|
622
|
+
const reserved = idempotency;
|
|
623
|
+
guard.release = () => settleWebhookIdempotency(connector.id, reserved.key, reserved.token, undefined);
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
// The limiter runs only for deliveries we are actually going to act on, so a
|
|
627
|
+
// collapsed duplicate never consumes quota (and never gets a retry-provoking
|
|
628
|
+
// 429). Placed after the idempotency gate for exactly that reason.
|
|
629
|
+
if (!rateAllowed(connector)) {
|
|
630
|
+
fail(429, 'rate_limited', 'connector rate limit exceeded');
|
|
631
|
+
return true;
|
|
632
|
+
}
|
|
633
|
+
/** Dispatch, and resolve the idempotency reservation from the real outcome.
|
|
634
|
+
*
|
|
635
|
+
* Ran (see `dispatchDidRun`) → keep the reservation as a dedup record carrying
|
|
636
|
+
* the turn's id, so later retries fold onto it. This is NOT `body.ok`: a
|
|
637
|
+
* `wait_timeout` reports ok:false about a turn that was already dispatched and
|
|
638
|
+
* is probably still running, and releasing there let a retry run it twice.
|
|
639
|
+
*
|
|
640
|
+
* Otherwise → release (clear the guard's duty by settling it here), so an
|
|
641
|
+
* at-least-once sender's retry can still run an event that never happened. */
|
|
642
|
+
const dispatchWithIdempotency = async (trigger) => {
|
|
643
|
+
try {
|
|
644
|
+
const result = await dispatchTriggerRequest(trigger, deps, auditMeta());
|
|
645
|
+
if (idempotency.kind === 'first') {
|
|
646
|
+
guard.release = undefined;
|
|
647
|
+
settleWebhookIdempotency(connector.id, idempotency.key, idempotency.token, dispatchDidRun(result.body) ? (result.body.triggerId ?? newTriggerId()) : undefined);
|
|
648
|
+
}
|
|
649
|
+
return result;
|
|
650
|
+
}
|
|
651
|
+
catch (err) {
|
|
652
|
+
// An unexpected throw is commit-unknown; stay fail-open (release) so the
|
|
653
|
+
// event is not permanently swallowed. The guard's finally would do this
|
|
654
|
+
// anyway — doing it here keeps the intent explicit.
|
|
655
|
+
if (idempotency.kind === 'first') {
|
|
656
|
+
guard.release = undefined;
|
|
657
|
+
settleWebhookIdempotency(connector.id, idempotency.key, idempotency.token, undefined);
|
|
658
|
+
}
|
|
659
|
+
throw err;
|
|
660
|
+
}
|
|
661
|
+
};
|
|
662
|
+
/** Echo the key back on a first (dispatched) delivery, so a caller can tell
|
|
663
|
+
* that suppression is actually armed for this connector — otherwise a sender
|
|
664
|
+
* cannot distinguish "key honoured" from "key silently ignored". */
|
|
665
|
+
const withIdempotencyEcho = (body) =>
|
|
666
|
+
// Only claim 'accepted' when the turn actually ran. A failed dispatch (e.g.
|
|
667
|
+
// daemon_offline) has already RELEASED the key, so echoing accepted there would
|
|
668
|
+
// contradict both the type's meaning ("dispatched") and the store's state.
|
|
669
|
+
(idempotency.kind === 'first' && dispatchDidRun(body)
|
|
670
|
+
? { ...body, idempotency: { key: idempotency.key, action: 'accepted' } }
|
|
671
|
+
: body);
|
|
430
672
|
// Stored workflow connectors are tombstones only after the v2 runtime
|
|
431
673
|
// retirement. Fail before lifecycle state or group creation; dispatching to
|
|
432
674
|
// a daemon would make the safety property depend on daemon version/skew.
|
|
@@ -477,8 +719,8 @@ export async function handleWebhookRoute(req, res, url, deps) {
|
|
|
477
719
|
...(presentation ? { presentation } : {}),
|
|
478
720
|
options: responseOptions,
|
|
479
721
|
};
|
|
480
|
-
const result = await
|
|
481
|
-
jsonRes(res, result.status, result.body);
|
|
722
|
+
const result = await dispatchWithIdempotency(trigger);
|
|
723
|
+
jsonRes(res, result.status, withIdempotencyEcho(result.body));
|
|
482
724
|
return true;
|
|
483
725
|
}
|
|
484
726
|
if (connector.target.mode === 'new-group') {
|
|
@@ -594,8 +836,8 @@ export async function handleWebhookRoute(req, res, url, deps) {
|
|
|
594
836
|
...(connector.suppressFinalOutput ? { suppressFinalOutput: true } : {}),
|
|
595
837
|
},
|
|
596
838
|
};
|
|
597
|
-
const result = await
|
|
598
|
-
jsonRes(res, result.status, { ...result.body, lifecycle: { ...(dedupKey ? { dedupKey } : {}), action, chatId } });
|
|
839
|
+
const result = await dispatchWithIdempotency(trigger);
|
|
840
|
+
jsonRes(res, result.status, { ...withIdempotencyEcho(result.body), lifecycle: { ...(dedupKey ? { dedupKey } : {}), action, chatId } });
|
|
599
841
|
return true;
|
|
600
842
|
}
|
|
601
843
|
const chatId = connector.target.mode === 'fixed'
|
|
@@ -645,8 +887,8 @@ export async function handleWebhookRoute(req, res, url, deps) {
|
|
|
645
887
|
...(connector.suppressFinalOutput ? { suppressFinalOutput: true } : {}),
|
|
646
888
|
},
|
|
647
889
|
};
|
|
648
|
-
const result = await
|
|
649
|
-
jsonRes(res, result.status, result.body);
|
|
890
|
+
const result = await dispatchWithIdempotency(trigger);
|
|
891
|
+
jsonRes(res, result.status, withIdempotencyEcho(result.body));
|
|
650
892
|
return true;
|
|
651
893
|
}
|
|
652
894
|
//# sourceMappingURL=webhook-routes.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook-routes.js","sourceRoot":"","sources":["../../src/dashboard/webhook-routes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"webhook-routes.js","sourceRoot":"","sources":["../../src/dashboard/webhook-routes.ts"],"names":[],"mappings":"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"}
|