managed-deepagents 0.10.0-dev.7 → 0.10.0-dev.9

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.
Files changed (36) hide show
  1. package/README.md +69 -17
  2. package/dist/channels/github/index.d.ts.map +1 -1
  3. package/dist/channels/github/index.js +33 -21
  4. package/dist/channels/github/index.js.map +1 -1
  5. package/dist/channels/github/types.d.ts +36 -0
  6. package/dist/channels/github/types.d.ts.map +1 -1
  7. package/dist/channels/http/forward.d.ts +13 -0
  8. package/dist/channels/http/forward.d.ts.map +1 -0
  9. package/dist/channels/http/forward.js +128 -0
  10. package/dist/channels/http/forward.js.map +1 -0
  11. package/dist/channels/http/http.d.ts.map +1 -1
  12. package/dist/channels/http/http.js +79 -52
  13. package/dist/channels/http/http.js.map +1 -1
  14. package/dist/channels/http/index.d.ts +1 -1
  15. package/dist/channels/http/index.d.ts.map +1 -1
  16. package/dist/channels/http/index.js +0 -9
  17. package/dist/channels/http/index.js.map +1 -1
  18. package/dist/channels/http/provider.d.ts +35 -1
  19. package/dist/channels/http/provider.d.ts.map +1 -1
  20. package/dist/channels/http/provider.js +51 -3
  21. package/dist/channels/http/provider.js.map +1 -1
  22. package/dist/channels/http/studio.d.ts +7 -5
  23. package/dist/channels/http/studio.d.ts.map +1 -1
  24. package/dist/channels/http/studio.js +7 -5
  25. package/dist/channels/http/studio.js.map +1 -1
  26. package/dist/channels/http/types.d.ts +84 -30
  27. package/dist/channels/http/types.d.ts.map +1 -1
  28. package/dist/channels/linear/index.d.ts.map +1 -1
  29. package/dist/channels/linear/index.js +50 -24
  30. package/dist/channels/linear/index.js.map +1 -1
  31. package/dist/channels/linear/types.d.ts +39 -2
  32. package/dist/channels/linear/types.d.ts.map +1 -1
  33. package/dist/index.d.ts +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/package.json +7 -7
package/README.md CHANGED
@@ -659,29 +659,81 @@ has no runtime `post` method. The webhook path is `/channels/<name>/events`, whe
659
659
  `<name>` is the channel file name. An existing Photon webhook needs no URL change
660
660
  when the deployment host and channel name stay the same.
661
661
 
662
- If a run or its observation fails, MDA uses `post` to send “Something went wrong
662
+ If a run fails, MDA uses `post` to send “Something went wrong
663
663
  while processing your request.” A failed send is logged without another attempt.
664
664
  Optional async `onError(error, target)` replaces this default. MDA supplies the
665
665
  reply target; pass it to your adapter's `post` to send a custom error message.
666
666
 
667
- Optional async hooks tell the adapter what happened to a message:
667
+ Two optional async hooks follow each message through its lifecycle:
668
668
 
669
- - `onDelivered(target, run)` runs for every verified message that reaches its
670
- thread, before MDA starts or queues anything for it, for providers that
669
+ - `onReceived(target, delivery)` runs for every verified message that reaches
670
+ its thread, before MDA starts or queues anything for it, for providers that
671
671
  expect a prompt acknowledgement.
672
- - `onInterrupted(target, run, reason)` runs when the thread waits on a decision.
673
- `reason` is `"waiting"` when a message arrives while it waits, which starts
674
- nothing, and `"stopped"` right after the run a message started stops on
675
- interrupts. `interruptedReasons` lists the reasons it hears, only `["waiting"]`
676
- by default. Point the sender to Studio, where the interrupts can be resumed.
677
- - A `parse` result of `{ type: "cancel", message: { userId, threadId, target } }`
678
- cancels the thread's queued and running runs, keeping their progress, and
679
- drops messages waiting for the thread. `onCancelled(target, { ...run, cancelled })`
680
- then reports how many runs were active.
681
- - A run that fails calls `onError`, or `post`s an apology. A run that answers
682
- posts its own answer.
683
-
684
- Each runs in the background; failures are logged.
672
+ - `onSettled(target, { ...delivery, outcome })` runs once each message has
673
+ ended, after `onReceived` and after `onError`. `outcome.type` says how. A
674
+ message that started a run carries its `runId`: `completed`, `interrupted`
675
+ (it stopped on interrupts, so the thread waits on a decision; point the
676
+ sender to Studio, where the interrupts can be resumed), `cancelled`,
677
+ `replaced` (a newer message's `rollback` deleted it), `failed` (without a
678
+ `runId` when no run could be started) or `unknown` (MDA lost track of it).
679
+ A message that started none is `waiting` (the thread waits on a decision),
680
+ `rejected` (the thread was busy under `reject`), `declined` (`input`
681
+ returned nothing), `dropped` (a cancel stopped the thread while it waited)
682
+ or `duplicate`.
683
+
684
+ A `parse` result of `{ type: "cancel", message: { userId, threadId, target } }`
685
+ cancels the thread's queued and running runs, keeping their progress, and
686
+ drops messages waiting for the thread. It settles at once as
687
+ `{ type: "stopped", cancelled }`, with how many runs were active.
688
+
689
+ ```ts
690
+ onSettled: async (target, { threadId, outcome }) => {
691
+ if (outcome.type === "interrupted" || outcome.type === "waiting")
692
+ await notify(target, `A decision is pending: ${studioLink(threadId)}`);
693
+ },
694
+ ```
695
+
696
+ The hooks run in the background, in the process that took the delivery;
697
+ failures are logged. A restart while a run is in flight loses its
698
+ `onSettled`, and a run Studio resumes has no delivery, so it gets none: keep a
699
+ reconciliation for anything that must not miss one. The run posts its own
700
+ answer.
701
+
702
+ GitHub and Linear take `onSettled(event, thread, outcome)`, with their parsed
703
+ event and the thread its handler saw, called after their own notices, such as
704
+ the comment or the session elicitation that a decision is pending, or Linear's
705
+ "Stopped.".
706
+
707
+ ### Forwarding deliveries
708
+
709
+ Any HTTP channel can send each verified delivery on to other services, as the
710
+ provider sent it, besides acting on it here. `forward(request, delivery)`
711
+ gets a copy of the delivery, with its raw body and headers (the provider's
712
+ signature and delivery ID included, the platform's own headers removed), and
713
+ returns a request to send, such as `new Request(url, request)`, several, or
714
+ nothing. The receiver can check the provider's signature itself.
715
+
716
+ GitHub and Linear take the same `forward`, with their parsed event as its
717
+ second argument, and `events`: more event keys to receive without a handler,
718
+ only to forward them. Deploy subscribes the app to them too.
719
+
720
+ ```ts
721
+ export const channel = channels.linear({
722
+ onEvent: { "AgentSessionEvent.created": startRun },
723
+ events: ["Issue.create", "Issue.update", "Comment.create"],
724
+ forward: (request, event) =>
725
+ event.type === "AgentSessionEvent"
726
+ ? null
727
+ : new Request(`${process.env.BACKEND_URL}/webhooks/linear`, request),
728
+ });
729
+ ```
730
+
731
+ A delivery is forwarded once the channel's filters (teams or repositories,
732
+ other bots, the app's own activity) keep it. MDA sends the requests in the
733
+ background, at most 10 per delivery, each within 10 seconds and without
734
+ following redirects, and logs failures. The provider's answer never waits for
735
+ them, so forwarding is best effort: a receiver should dedupe by the
736
+ provider's delivery ID.
685
737
 
686
738
  ## Project Shape
687
739
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,kBAAkB,CAAC;AAyB1B,OAAO,KAAK,EAEV,oBAAoB,EAKrB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAKpB,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,WAAW,CAuD7E;AA2BD,qDAAqD;AACrD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EAKjB,MAAM,kBAAkB,CAAC;AA4B1B,OAAO,KAAK,EAEV,oBAAoB,EAKrB,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAKpB,wEAAwE;AACxE,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,WAAW,CAuD7E;AAoDD,qDAAqD;AACrD,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -1,5 +1,5 @@
1
1
  import { channelThreadId, httpChannel, } from "../http/index.js";
2
- import { channelName, checkEventKeys, definedFields, eventSnapshot, handledEventKeys, readDeploymentSecret, resetDeploymentSecrets, runEventHandler, verifyHmacSha256, } from "../http/provider.js";
2
+ import { channelName, checkEventKeys, definedFields, eventSnapshot, forwardEvents, receivedEventKeys, handledEventKeys, readDeploymentSecret, resetDeploymentSecrets, runEventHandler, settleEvents, verifyHmacSha256, } from "../http/provider.js";
3
3
  import { interruptedNotice } from "../http/studio.js";
4
4
  import { logger } from "../../runtime/log.js";
5
5
  import { connections } from "../../connections.js";
@@ -11,6 +11,7 @@ const EVENT_KEYS = new Set(SUPPORTED_EVENT_KEYS);
11
11
  export function githubChannel(options = {}) {
12
12
  const handlers = { ...options.onEvent };
13
13
  checkEventKeys("GitHub", handlers, EVENT_KEYS);
14
+ const received = receivedEventKeys("GitHub", options.events, EVENT_KEYS);
14
15
  // A misspelled option would silently widen what the agent's token reaches.
15
16
  const unknown = Object.keys(options.app ?? {}).filter((key) => key !== "permissions" && key !== "repositories");
16
17
  if (unknown.length)
@@ -26,31 +27,38 @@ export function githubChannel(options = {}) {
26
27
  }),
27
28
  providerConfig: {
28
29
  // Deploy subscribes the GitHub App to the handled events.
29
- events: handledEventKeys(handlers),
30
+ events: [...new Set([...handledEventKeys(handlers), ...received])].sort(),
30
31
  ...(options.app && { app: appConfig(options.app) }),
31
32
  },
32
33
  verify: verifyGitHubRequest,
33
- parse: (context) => parseGitHubRequest(context, handlers, channelName(channel), repositories),
34
+ parse: (context) => parseGitHubRequest(context, handlers, channelName(channel), repositories, received),
34
35
  input: (message, rawEvent) => handlerInput(handlers, rawEvent, {
35
36
  id: message.threadId,
36
37
  channel: { name: channelName(channel) },
37
38
  }),
38
- interruptedReasons: ["waiting", "stopped"],
39
- // Only for an event its handler would act on, so the handler's filters,
40
- // such as trusted senders or mentions, decide who gets a notice. The
41
- // handler knows it is only asked, so it can skip side effects.
42
- onInterrupted: async (target, run, reason) => {
43
- if ((await handlerInput(handlers, run.rawEvent, {
44
- id: run.threadId,
45
- channel: { name: channelName(channel) },
46
- interrupted: true,
47
- })) === undefined)
48
- return;
49
- await postInterruptedNotice(target, run, reason);
50
- },
39
+ onSettled: settleEvents((target, delivery) => notifyInterrupted(handlers, target, delivery, channelName(channel)), options.onSettled, githubEvent, () => channelName(channel)),
40
+ forward: forwardEvents(options.forward, githubEvent),
51
41
  });
52
42
  return channel;
53
43
  }
44
+ /**
45
+ * Tell the issue or pull request when its thread waits on a decision. Only
46
+ * for an event its handler would act on, so the handler's filters, such as
47
+ * trusted senders or mentions, decide who gets a notice. The handler knows it
48
+ * is only asked, so it can skip side effects.
49
+ */
50
+ async function notifyInterrupted(handlers, target, delivery, name) {
51
+ const { type } = delivery.outcome;
52
+ if (type !== "interrupted" && type !== "waiting")
53
+ return;
54
+ if ((await handlerInput(handlers, delivery.rawEvent, {
55
+ id: delivery.threadId,
56
+ channel: { name },
57
+ interrupted: true,
58
+ })) === undefined)
59
+ return;
60
+ await postInterruptedNotice(target, delivery, type);
61
+ }
54
62
  /** The App options deploy reads, without unset fields. */
55
63
  function appConfig(app) {
56
64
  return definedFields({
@@ -103,7 +111,7 @@ async function verifyGitHubRequest({ request, rawBody, }) {
103
111
  return false;
104
112
  return verifyHmacSha256(secret, rawBody, signature.slice(7));
105
113
  }
106
- async function parseGitHubRequest({ request }, handlers, channelName, repositories) {
114
+ async function parseGitHubRequest({ request }, handlers, channelName, repositories, received) {
107
115
  const envelope = githubReceiptSchema.parse({
108
116
  event: request.headers.get("x-github-event"),
109
117
  deliveryId: request.headers.get("x-github-delivery"),
@@ -112,10 +120,11 @@ async function parseGitHubRequest({ request }, handlers, channelName, repositori
112
120
  const { event, deliveryId, payload } = envelope;
113
121
  logReceipt(envelope);
114
122
  const response = Response.json({ status: "received" }, { status: event === "ping" ? 200 : 202 });
115
- // Events nothing handles stop here, before run creation.
123
+ // Events nothing handles or forwards stop here, before run creation.
116
124
  // Events without an action, such as `push`, are keyed by their name.
117
125
  const key = (payload.action === undefined ? event : `${event}.${payload.action}`);
118
- if (!Object.hasOwn(handlers, key) || handlers[key] === undefined)
126
+ const handled = Object.hasOwn(handlers, key) && handlers[key] !== undefined;
127
+ if (!handled && !received.has(key))
119
128
  return { type: "ignore", response };
120
129
  const parsedEvent = githubEventSchema.parse({ key, payload, deliveryId });
121
130
  // Events from repositories the channel is not limited to start nothing.
@@ -131,6 +140,9 @@ async function parseGitHubRequest({ request }, handlers, channelName, repositori
131
140
  return { type: "ignore", response };
132
141
  // Preserve the original event even if a callback modifies its argument.
133
142
  const snapshot = eventSnapshot(parsedEvent, "GitHub");
143
+ // Received only to forward: it starts nothing.
144
+ if (!handled)
145
+ return { type: "ignore", response, rawEvent: snapshot };
134
146
  // One thread per issue or pull request, so the agent keeps the
135
147
  // conversation. Other events get their own thread, keyed by the delivery so
136
148
  // a redelivery still finds the run it started.
@@ -211,7 +223,7 @@ const GITHUB_API_TIMEOUT_MS = 10_000;
211
223
  * The thread waits on an interrupt, so tell the issue or pull request where
212
224
  * to continue it. Posts as the App; the notice is fixed text.
213
225
  */
214
- async function postInterruptedNotice(target, run, reason) {
226
+ async function postInterruptedNotice(target, delivery, outcome) {
215
227
  if (!isGitHubTarget(target))
216
228
  return;
217
229
  const [owner, name] = target.repository.split("/");
@@ -225,7 +237,7 @@ async function postInterruptedNotice(target, run, reason) {
225
237
  "X-GitHub-Api-Version": "2022-11-28",
226
238
  },
227
239
  body: JSON.stringify({
228
- body: interruptedNotice(reason, run, "comment again"),
240
+ body: interruptedNotice(outcome, delivery, "comment again"),
229
241
  }),
230
242
  signal: AbortSignal.timeout(GITHUB_API_TIMEOUT_MS),
231
243
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/channels/github/index.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ import type { z } from "zod";
2
2
  import type { MultitaskStrategy } from "../../ingress/runs.js";
3
3
  import type { githubEventSchema } from "./schema.js";
4
4
  import type { ChannelRunResult } from "../run-input.js";
5
+ import type { EventForward, EventSettled } from "../http/provider.js";
5
6
  /** Handwritten schema subsets; unmodeled provider fields remain unknown. */
6
7
  type EventUnion = z.output<typeof githubEventSchema>;
7
8
  export type SupportedEventKey = EventUnion["key"];
@@ -105,6 +106,41 @@ export interface GitHubChannelOptions {
105
106
  onEvent?: {
106
107
  [K in SupportedEventKey]?: GitHubEventCallback<K>;
107
108
  };
109
+ /**
110
+ * More events for the App to receive, beyond the handled ones, to forward
111
+ * them: they start nothing here. Deploy subscribes the App to them too.
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * { events: ["push"], forward: (request) => new Request(url, request) }
116
+ * ```
117
+ */
118
+ events?: SupportedEventKey[];
119
+ /**
120
+ * Send a delivery on to other services, besides acting on it here: return
121
+ * a request, such as `new Request(url, request)`, several, or nothing. It
122
+ * is called for every delivery of a handled or received event that the
123
+ * channel's filters (repositories, the App's own) keep, with the delivery
124
+ * as GitHub sent it, `X-Hub-Signature-256` included, and its parsed event.
125
+ * Sent in the background, best effort; see `channels.http`'s `forward`.
126
+ */
127
+ forward?: EventForward<GitHubEvent>;
128
+ /**
129
+ * How a delivery of a handled event ended, once: the run it started
130
+ * completed, stopped on interrupts, was cancelled, replaced, or failed, or
131
+ * why it started none, such as `declined` when its handler returned
132
+ * nothing. Called after the App's own notices, such as the comment that a
133
+ * decision is pending, in the background; failures are logged. See
134
+ * `channels.http`'s `onSettled` for its limits.
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * onSettled: async (event, thread, outcome) => {
139
+ * if ("runId" in outcome) await reportRun(thread.id, outcome);
140
+ * }
141
+ * ```
142
+ */
143
+ onSettled?: EventSettled<GitHubEvent, GitHubChannelThread>;
108
144
  }
109
145
  export {};
110
146
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/github/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,4EAA4E;AAC5E,KAAK,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAClD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IACrE,OAAO,CAAC,UAAU,EAAE;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAClC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,iBAAiB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3E,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,IAAI,CAC7D,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,mBAAmB,KACxB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;KAAE,CAAC;CACjE"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/github/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,4EAA4E;AAC5E,KAAK,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAClD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IACrE,OAAO,CAAC,UAAU,EAAE;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAClC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,iBAAiB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3E,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,IAAI,CAC7D,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,mBAAmB,KACxB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;KAAE,CAAC;IAChE;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACpC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;CAC5D"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Forwarding: an HTTP channel's adapter may send each verified delivery on to
3
+ * other services, as the provider sent it, besides acting on it here.
4
+ */
5
+ import type { ChannelEventsContext } from "../../runtime/channel.js";
6
+ import type { HttpChannelAdapter, HttpChannelParseResult } from "./types.js";
7
+ /**
8
+ * Forward a verified delivery as the adapter's `forward` asks, in the
9
+ * background: the provider gets its answer without waiting, and a failure is
10
+ * logged, never raised.
11
+ */
12
+ export declare function scheduleForwards(ctx: ChannelEventsContext, adapter: HttpChannelAdapter, rawBody: Uint8Array, result: HttpChannelParseResult): void;
13
+ //# sourceMappingURL=forward.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forward.d.ts","sourceRoot":"","sources":["../../../src/channels/http/forward.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGrE,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EAGvB,MAAM,YAAY,CAAC;AAgHpB;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,sBAAsB,GAC7B,IAAI,CA2BN"}
@@ -0,0 +1,128 @@
1
+ import { scheduleIngressWork } from "../../ingress/index.js";
2
+ import { logger } from "../../runtime/log.js";
3
+ /** How long one forwarded request may take. */
4
+ const FORWARD_TIMEOUT_MS = 10_000;
5
+ /** The most requests one delivery is forwarded as. */
6
+ const MAX_FORWARDS = 10;
7
+ /**
8
+ * Headers the platform in front of the deployment adds, or that describe the
9
+ * connection rather than the delivery. The provider's own headers, such as its
10
+ * signature and delivery ID, are kept, so the receiver can verify it.
11
+ */
12
+ const DROPPED_HEADERS = new Set([
13
+ "authorization",
14
+ "connection",
15
+ "content-length",
16
+ "cookie",
17
+ "forwarded",
18
+ "host",
19
+ "keep-alive",
20
+ "proxy-authorization",
21
+ "te",
22
+ "trailer",
23
+ "transfer-encoding",
24
+ "upgrade",
25
+ "x-api-key",
26
+ "x-auth-scheme",
27
+ "x-real-ip",
28
+ "x-request-id",
29
+ ]);
30
+ const DROPPED_HEADER_PREFIXES = ["x-forwarded-", "x-mda-", "x-langsmith-"];
31
+ function forwardedHeaders(headers) {
32
+ const kept = new Headers();
33
+ headers.forEach((value, name) => {
34
+ const key = name.toLowerCase();
35
+ if (DROPPED_HEADERS.has(key))
36
+ return;
37
+ if (DROPPED_HEADER_PREFIXES.some((prefix) => key.startsWith(prefix)))
38
+ return;
39
+ kept.append(name, value);
40
+ });
41
+ return kept;
42
+ }
43
+ /** What the adapter's `forward` learns about the delivery. */
44
+ function forwardContext(result) {
45
+ return {
46
+ result: result.type,
47
+ ...("rawEvent" in result &&
48
+ result.rawEvent !== undefined && { rawEvent: result.rawEvent }),
49
+ ...(result.type !== "ignore" && {
50
+ threadId: result.message.threadId.toLowerCase(),
51
+ }),
52
+ };
53
+ }
54
+ /** The requests `forward` returned, checked; anything else is logged. */
55
+ function forwardRequests(value) {
56
+ const requests = (Array.isArray(value) ? value : [value]).filter((request) => request !== null && request !== undefined);
57
+ if (requests.length > MAX_FORWARDS) {
58
+ logger.error(`channel forward returned more than ${MAX_FORWARDS} requests; sending the first ${MAX_FORWARDS}`);
59
+ }
60
+ return requests.slice(0, MAX_FORWARDS).filter((request) => {
61
+ if (!(request instanceof Request)) {
62
+ logger.error("channel forward returned something other than a Request");
63
+ return false;
64
+ }
65
+ let url;
66
+ try {
67
+ url = new URL(request.url);
68
+ }
69
+ catch {
70
+ logger.error("channel forward returned a request without a valid URL");
71
+ return false;
72
+ }
73
+ if ((url.protocol !== "https:" && url.protocol !== "http:") ||
74
+ url.username ||
75
+ url.password) {
76
+ logger.error("channel forward URLs must be http(s), without credentials in them");
77
+ return false;
78
+ }
79
+ return true;
80
+ });
81
+ }
82
+ async function send(request) {
83
+ const host = logger.logIdentifier(new URL(request.url).host);
84
+ try {
85
+ const response = await fetch(request, {
86
+ redirect: "manual",
87
+ signal: AbortSignal.timeout(FORWARD_TIMEOUT_MS),
88
+ });
89
+ // Only the status matters; the body is never read.
90
+ await response.body?.cancel();
91
+ if (!response.ok)
92
+ logger.warn(`channel forward to ${host} answered HTTP ${response.status}`);
93
+ }
94
+ catch (error) {
95
+ logger.error(`channel forward to ${host} failed (${logger.safeErrorLabel(error)})`);
96
+ }
97
+ }
98
+ /**
99
+ * Forward a verified delivery as the adapter's `forward` asks, in the
100
+ * background: the provider gets its answer without waiting, and a failure is
101
+ * logged, never raised.
102
+ */
103
+ export function scheduleForwards(ctx, adapter, rawBody, result) {
104
+ const forward = adapter.forward?.bind(adapter);
105
+ if (!forward)
106
+ return;
107
+ const headers = forwardedHeaders(ctx.request.headers);
108
+ const body = new Uint8Array(rawBody);
109
+ const context = forwardContext(result);
110
+ scheduleIngressWork(async () => {
111
+ const method = ctx.request.method;
112
+ const delivery = new Request(ctx.request.url, {
113
+ method,
114
+ headers,
115
+ ...(method !== "GET" && method !== "HEAD" && { body }),
116
+ });
117
+ let requests;
118
+ try {
119
+ requests = forwardRequests(await forward(delivery, context));
120
+ }
121
+ catch (error) {
122
+ logger.error(`channel forward failed (${logger.safeErrorLabel(error)})`);
123
+ return;
124
+ }
125
+ await Promise.all(requests.map(send));
126
+ }, { label: `channel "${ctx.name}" forward` });
127
+ }
128
+ //# sourceMappingURL=forward.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forward.js","sourceRoot":"","sources":["../../../src/channels/http/forward.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/http/http.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,kBAAkB,EAOnB,MAAM,YAAY,CAAC;AAYpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwCrE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CAuTnB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/http/http.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,kBAAkB,EAOnB,MAAM,YAAY,CAAC;AAapB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwCrE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CA4UnB"}