managed-deepagents 0.10.0-dev.16 → 0.10.0-dev.18
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 +809 -71
- package/dist/channels/actor.d.ts +43 -0
- package/dist/channels/actor.d.ts.map +1 -0
- package/dist/channels/actor.js +2 -0
- package/dist/channels/actor.js.map +1 -0
- package/dist/channels/assistant-text.d.ts +29 -0
- package/dist/channels/assistant-text.d.ts.map +1 -1
- package/dist/channels/assistant-text.js +72 -1
- package/dist/channels/assistant-text.js.map +1 -1
- package/dist/channels/binding.d.ts +20 -1
- package/dist/channels/binding.d.ts.map +1 -1
- package/dist/channels/binding.js +39 -10
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +21 -0
- package/dist/channels/delivery.d.ts.map +1 -0
- package/dist/channels/delivery.js +196 -0
- package/dist/channels/delivery.js.map +1 -0
- package/dist/channels/github/connections.d.ts.map +1 -1
- package/dist/channels/github/connections.js +2 -2
- package/dist/channels/github/connections.js.map +1 -1
- package/dist/channels/github/index.d.ts +1 -8
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +46 -139
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/github/mentions.d.ts +12 -0
- package/dist/channels/github/mentions.d.ts.map +1 -0
- package/dist/channels/github/mentions.js +185 -0
- package/dist/channels/github/mentions.js.map +1 -0
- package/dist/channels/github/schema.d.ts +271 -0
- package/dist/channels/github/schema.d.ts.map +1 -1
- package/dist/channels/github/schema.js +34 -3
- package/dist/channels/github/schema.js.map +1 -1
- package/dist/channels/github/types.d.ts +57 -4
- package/dist/channels/github/types.d.ts.map +1 -1
- package/dist/channels/http/endpoint.d.ts +95 -0
- package/dist/channels/http/endpoint.d.ts.map +1 -0
- package/dist/channels/http/endpoint.js +276 -0
- package/dist/channels/http/endpoint.js.map +1 -0
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +322 -86
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +1 -1
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +10 -16
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +40 -5
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +63 -40
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +119 -0
- package/dist/channels/http/provider.d.ts.map +1 -0
- package/dist/channels/http/provider.js +227 -0
- package/dist/channels/http/provider.js.map +1 -0
- package/dist/channels/http/studio.d.ts +24 -0
- package/dist/channels/http/studio.d.ts.map +1 -0
- package/dist/channels/http/studio.js +95 -0
- package/dist/channels/http/studio.js.map +1 -0
- package/dist/channels/http/types.d.ts +107 -7
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/connections.d.ts +11 -0
- package/dist/channels/linear/connections.d.ts.map +1 -0
- package/dist/channels/linear/connections.js +14 -0
- package/dist/channels/linear/connections.js.map +1 -0
- package/dist/channels/linear/graphql.d.ts +57 -0
- package/dist/channels/linear/graphql.d.ts.map +1 -0
- package/dist/channels/linear/graphql.js +167 -0
- package/dist/channels/linear/graphql.js.map +1 -0
- package/dist/channels/linear/index.d.ts +9 -0
- package/dist/channels/linear/index.d.ts.map +1 -0
- package/dist/channels/linear/index.js +489 -0
- package/dist/channels/linear/index.js.map +1 -0
- package/dist/channels/linear/schema.d.ts +1050 -0
- package/dist/channels/linear/schema.d.ts.map +1 -0
- package/dist/channels/linear/schema.js +255 -0
- package/dist/channels/linear/schema.js.map +1 -0
- package/dist/channels/linear/types.d.ts +162 -0
- package/dist/channels/linear/types.d.ts.map +1 -0
- package/dist/channels/linear/types.js +2 -0
- package/dist/channels/linear/types.js.map +1 -0
- package/dist/channels/message-schema.d.ts +2 -0
- package/dist/channels/message-schema.d.ts.map +1 -1
- package/dist/channels/message-schema.js +4 -0
- package/dist/channels/message-schema.js.map +1 -1
- package/dist/channels/messaging-registry.d.ts +16 -0
- package/dist/channels/messaging-registry.d.ts.map +1 -1
- package/dist/channels/messaging-registry.js +29 -0
- package/dist/channels/messaging-registry.js.map +1 -1
- package/dist/channels/reserved-connections.d.ts +2 -2
- package/dist/channels/reserved-connections.d.ts.map +1 -1
- package/dist/channels/reserved-connections.js +36 -9
- package/dist/channels/reserved-connections.js.map +1 -1
- package/dist/channels/run-input.d.ts +35 -2
- package/dist/channels/run-input.d.ts.map +1 -1
- package/dist/channels/run-input.js +74 -14
- package/dist/channels/run-input.js.map +1 -1
- package/dist/channels/runtime.d.ts +1 -1
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +1 -1
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +1 -1
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +9 -20
- package/dist/channels/schedule-delivery.js.map +1 -1
- package/dist/channels/slack/api.d.ts +2 -0
- package/dist/channels/slack/api.d.ts.map +1 -1
- package/dist/channels/slack/api.js +6 -0
- package/dist/channels/slack/api.js.map +1 -1
- package/dist/channels/slack/connections.d.ts +6 -0
- package/dist/channels/slack/connections.d.ts.map +1 -0
- package/dist/channels/slack/connections.js +6 -0
- package/dist/channels/slack/connections.js.map +1 -0
- package/dist/channels/slack/events.d.ts +272 -0
- package/dist/channels/slack/events.d.ts.map +1 -0
- package/dist/channels/slack/events.js +235 -0
- package/dist/channels/slack/events.js.map +1 -0
- package/dist/channels/slack/files.d.ts.map +1 -1
- package/dist/channels/slack/files.js +2 -3
- package/dist/channels/slack/files.js.map +1 -1
- package/dist/channels/slack/index.d.ts +76 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +177 -6
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/slack/message-content.d.ts.map +1 -1
- package/dist/channels/slack/message-content.js +23 -28
- package/dist/channels/slack/message-content.js.map +1 -1
- package/dist/channels/slack/status.d.ts +76 -0
- package/dist/channels/slack/status.d.ts.map +1 -0
- package/dist/channels/slack/status.js +427 -0
- package/dist/channels/slack/status.js.map +1 -0
- package/dist/channels/source-providers.js +1 -1
- package/dist/channels/source-providers.js.map +1 -1
- package/dist/channels/trigger/client.d.ts.map +1 -1
- package/dist/channels/trigger/client.js +4 -9
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/http.d.ts +114 -3
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +310 -71
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +38 -1
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +47 -1
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +82 -3
- package/dist/channels/trigger/types.d.ts.map +1 -1
- package/dist/channels/trigger/types.js +36 -0
- package/dist/channels/trigger/types.js.map +1 -1
- package/dist/channels/types.d.ts +19 -3
- package/dist/channels/types.d.ts.map +1 -1
- package/dist/channels/types.js +2 -0
- package/dist/channels/types.js.map +1 -1
- package/dist/connections.d.ts +5 -0
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +14 -1
- package/dist/connections.js.map +1 -1
- package/dist/index.d.ts +13 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ingress/runs.d.ts +32 -1
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +85 -5
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +8 -13
- package/dist/managed-composition.js.map +1 -1
- package/dist/namespaces.d.ts +15 -21
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +2 -29
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts +1 -2
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +94 -48
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/channel-icon.d.ts +22 -0
- package/dist/runtime/channel-icon.d.ts.map +1 -0
- package/dist/runtime/channel-icon.js +70 -0
- package/dist/runtime/channel-icon.js.map +1 -0
- package/dist/runtime/channel.d.ts +6 -0
- package/dist/runtime/channel.d.ts.map +1 -1
- package/dist/runtime/channel.js.map +1 -1
- package/dist/runtime/identity-http.d.ts +2 -0
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +35 -0
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/identity-runtime.d.ts +4 -9
- package/dist/runtime/identity-runtime.d.ts.map +1 -1
- package/dist/runtime/identity-runtime.js +12 -25
- package/dist/runtime/identity-runtime.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +32 -21
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/managed-thread.d.ts +60 -0
- package/dist/runtime/managed-thread.d.ts.map +1 -0
- package/dist/runtime/managed-thread.js +76 -0
- package/dist/runtime/managed-thread.js.map +1 -0
- package/dist/runtime/managed-tools.d.ts +10 -2
- package/dist/runtime/managed-tools.d.ts.map +1 -1
- package/dist/runtime/managed-tools.js +10 -8
- package/dist/runtime/managed-tools.js.map +1 -1
- package/dist/runtime/memory/policy.d.ts.map +1 -1
- package/dist/runtime/memory/policy.js +1 -3
- package/dist/runtime/memory/policy.js.map +1 -1
- package/dist/runtime/run-input.d.ts +10 -0
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +48 -2
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +1 -1
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +17 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +39 -1
- package/dist/runtime/schedule-auth.js.map +1 -1
- package/dist/runtime/thread-record.d.ts +81 -0
- package/dist/runtime/thread-record.d.ts.map +1 -0
- package/dist/runtime/thread-record.js +205 -0
- package/dist/runtime/thread-record.js.map +1 -0
- package/dist/runtime/types.d.ts +5 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime-schedules.d.ts +13 -0
- package/dist/runtime-schedules.d.ts.map +1 -1
- package/dist/runtime-schedules.js +83 -20
- package/dist/runtime-schedules.js.map +1 -1
- package/dist/sandbox.d.ts +0 -6
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +3 -7
- package/dist/sandbox.js.map +1 -1
- package/dist/schedule-channel.d.ts +5 -2
- package/dist/schedule-channel.d.ts.map +1 -1
- package/dist/schedule-channel.js +13 -12
- package/dist/schedule-channel.js.map +1 -1
- package/dist/values.d.ts +15 -0
- package/dist/values.d.ts.map +1 -0
- package/dist/values.js +31 -0
- package/dist/values.js.map +1 -0
- package/package.json +7 -7
|
@@ -2,10 +2,42 @@ import { channelContextSchema } from "../../run-context.js";
|
|
|
2
2
|
import { immutableCopy, validateMessage } from "../runtime.js";
|
|
3
3
|
import { isJsonValue } from "../message-schema.js";
|
|
4
4
|
import { normalizeRunInput } from "../run-input.js";
|
|
5
|
-
import { startHttpIngressAgent, observeHttpIngressAgent, waitForHttpIngressThread, } from "./ingress.js";
|
|
5
|
+
import { cancelHttpIngressRuns, httpIngressThreadWaitsOn, startHttpIngressAgent, observeHttpIngressAgent, waitForHttpIngressThread, } from "./ingress.js";
|
|
6
|
+
import { ChannelError } from "../errors.js";
|
|
6
7
|
import { scheduleIngressWork } from "../../ingress/index.js";
|
|
7
8
|
import { logger } from "../../runtime/log.js";
|
|
9
|
+
import { requireNonblank } from "../../values.js";
|
|
8
10
|
const ASSISTANT_ID_ENV = "MDA_ASSISTANT_ID";
|
|
11
|
+
/**
|
|
12
|
+
* Messages in this process that may still wait for their thread, by thread.
|
|
13
|
+
* A message waiting for its busy thread (the default `enqueue` strategy) is
|
|
14
|
+
* no server-side run yet, so the server's cancel can't reach it: a cancel
|
|
15
|
+
* marks the thread's waiters, and they drop themselves. A message joins
|
|
16
|
+
* before its first start and leaves once its fate is settled, so only
|
|
17
|
+
* threads with messages in flight are kept. Messages waiting in another
|
|
18
|
+
* replica aren't reached.
|
|
19
|
+
*
|
|
20
|
+
* This is not durable: a waiting message lives only in this process, so a
|
|
21
|
+
* restart loses it after the provider was already told it arrived. It waits
|
|
22
|
+
* here rather than queueing on the server because a queued run starts as soon
|
|
23
|
+
* as the run before it stops on `interrupt()`, and its new input discards the
|
|
24
|
+
* decision the thread waits on. A server-side queue that holds messages while
|
|
25
|
+
* a thread waits on an interrupt would replace this; see
|
|
26
|
+
* https://github.com/langchain-ai/langgraph/issues/8838.
|
|
27
|
+
*/
|
|
28
|
+
const threadWaiters = new Map();
|
|
29
|
+
function joinThreadWaiters(threadId) {
|
|
30
|
+
const waiter = { cancelled: false };
|
|
31
|
+
const waiters = threadWaiters.get(threadId) ?? new Set();
|
|
32
|
+
threadWaiters.set(threadId, waiters.add(waiter));
|
|
33
|
+
return waiter;
|
|
34
|
+
}
|
|
35
|
+
function leaveThreadWaiters(threadId, waiter) {
|
|
36
|
+
const waiters = threadWaiters.get(threadId);
|
|
37
|
+
waiters?.delete(waiter);
|
|
38
|
+
if (waiters?.size === 0)
|
|
39
|
+
threadWaiters.delete(threadId);
|
|
40
|
+
}
|
|
9
41
|
export async function handleHttpRequest(ctx, adapter) {
|
|
10
42
|
const rawBody = requestBytes(ctx);
|
|
11
43
|
function adapterRequest() {
|
|
@@ -39,6 +71,35 @@ export async function handleHttpRequest(ctx, adapter) {
|
|
|
39
71
|
if (result.type === "ignore") {
|
|
40
72
|
return (result.response ?? Response.json({ status: "ignored" }, { status: 202 }));
|
|
41
73
|
}
|
|
74
|
+
const assistantId = process.env[ASSISTANT_ID_ENV]?.trim();
|
|
75
|
+
if (!assistantId) {
|
|
76
|
+
return jsonError(500, "channel runtime is not configured");
|
|
77
|
+
}
|
|
78
|
+
if (result.type === "cancel") {
|
|
79
|
+
let stop;
|
|
80
|
+
try {
|
|
81
|
+
validateCancelMessage(result.message);
|
|
82
|
+
stop = immutableCopy(result.message);
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return jsonError(400, "invalid channel message");
|
|
86
|
+
}
|
|
87
|
+
const threadId = stop.threadId.toLowerCase();
|
|
88
|
+
return cancelThreadRuns(ctx, adapter, {
|
|
89
|
+
userId: stop.userId,
|
|
90
|
+
sourceThreadKey: `http:v1:${JSON.stringify([ctx.name, threadId])}`,
|
|
91
|
+
threadId,
|
|
92
|
+
target: stop.target,
|
|
93
|
+
delivery: {
|
|
94
|
+
threadId,
|
|
95
|
+
assistantId,
|
|
96
|
+
...(result.rawEvent !== undefined && {
|
|
97
|
+
rawEvent: structuredClone(result.rawEvent),
|
|
98
|
+
}),
|
|
99
|
+
},
|
|
100
|
+
...(result.response !== undefined && { response: result.response }),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
42
103
|
let message = result.message;
|
|
43
104
|
try {
|
|
44
105
|
validateInboundMessage(message, adapter.input !== undefined);
|
|
@@ -47,10 +108,6 @@ export async function handleHttpRequest(ctx, adapter) {
|
|
|
47
108
|
catch {
|
|
48
109
|
return jsonError(400, "invalid channel message");
|
|
49
110
|
}
|
|
50
|
-
const assistantId = process.env[ASSISTANT_ID_ENV]?.trim();
|
|
51
|
-
if (!assistantId) {
|
|
52
|
-
return jsonError(500, "channel runtime is not configured");
|
|
53
|
-
}
|
|
54
111
|
const deliveryId = crypto.randomUUID();
|
|
55
112
|
const threadId = message.threadId.toLowerCase();
|
|
56
113
|
const sourceThreadKey = `http:v1:${JSON.stringify([ctx.name, threadId])}`;
|
|
@@ -83,22 +140,34 @@ export async function handleHttpRequest(ctx, adapter) {
|
|
|
83
140
|
assistantId,
|
|
84
141
|
};
|
|
85
142
|
const rawEvent = result.rawEvent;
|
|
86
|
-
const
|
|
143
|
+
const delivery = (assistantId) => ({
|
|
87
144
|
threadId,
|
|
88
145
|
...(assistantId !== undefined && { assistantId }),
|
|
89
146
|
...(result.rawEvent !== undefined && {
|
|
90
147
|
rawEvent: structuredClone(result.rawEvent),
|
|
91
148
|
}),
|
|
92
149
|
});
|
|
150
|
+
// Joined before the first start, so a cancel during it reaches the message.
|
|
151
|
+
const waiter = joinThreadWaiters(threadId);
|
|
152
|
+
/** Set when a cancel dropped the message while its input was decided. */
|
|
153
|
+
let dropped = false;
|
|
93
154
|
const inputHook = adapter.input?.bind(adapter);
|
|
94
155
|
async function prepare() {
|
|
156
|
+
let prepared;
|
|
95
157
|
try {
|
|
96
|
-
|
|
158
|
+
prepared = normalizeRunInput(await inputHook?.(immutableCopy(message), rawEvent === undefined ? undefined : structuredClone(rawEvent)));
|
|
97
159
|
}
|
|
98
160
|
catch (error) {
|
|
99
161
|
logger.error(`channel input failed (${logger.safeErrorLabel(error)})`);
|
|
100
162
|
return undefined;
|
|
101
163
|
}
|
|
164
|
+
// A slow input, such as an endpoint's, may outlast a cancel.
|
|
165
|
+
if (prepared && waiter.cancelled) {
|
|
166
|
+
logger.info(`channel run dropped: its thread was cancelled while its input was decided ${JSON.stringify({ threadId })}`);
|
|
167
|
+
dropped = true;
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
return prepared;
|
|
102
171
|
}
|
|
103
172
|
const startInput = {
|
|
104
173
|
...input,
|
|
@@ -112,105 +181,199 @@ export async function handleHttpRequest(ctx, adapter) {
|
|
|
112
181
|
multitaskStrategy: adapter.multitaskStrategy,
|
|
113
182
|
}),
|
|
114
183
|
};
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
184
|
+
// Every message gets one `onReceived` and, once it is done, `onFinish`.
|
|
185
|
+
const onReceived = adapter.onReceived?.bind(adapter);
|
|
186
|
+
const received = new Promise((resolve) => {
|
|
187
|
+
if (!onReceived)
|
|
188
|
+
return resolve();
|
|
189
|
+
scheduleIngressWork(async () => {
|
|
190
|
+
try {
|
|
191
|
+
await onReceived(immutableCopy(message.target), delivery(assistantId));
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
logger.error(`channel received notice failed (${logger.safeErrorLabel(error)})`);
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
resolve();
|
|
198
|
+
}
|
|
199
|
+
}, { label: `channel "${ctx.name}" received notice` });
|
|
200
|
+
});
|
|
201
|
+
const onFinish = adapter.onFinish?.bind(adapter);
|
|
202
|
+
/** Tell the adapter the message is done; the thread's assistant lets a notice link to it. */
|
|
203
|
+
async function finish(done, threadAssistantId) {
|
|
204
|
+
if (!onFinish)
|
|
127
205
|
return;
|
|
206
|
+
await received;
|
|
128
207
|
try {
|
|
129
|
-
|
|
130
|
-
|
|
208
|
+
await onFinish(immutableCopy(message.target), immutableCopy({
|
|
209
|
+
...delivery(threadAssistantId ?? assistantId),
|
|
210
|
+
...done,
|
|
211
|
+
}));
|
|
131
212
|
}
|
|
132
213
|
catch (error) {
|
|
133
|
-
logger.error(`channel
|
|
214
|
+
logger.error(`channel finish notice failed (${logger.safeErrorLabel(error)})`);
|
|
134
215
|
}
|
|
135
216
|
}
|
|
217
|
+
const label = `channel "${ctx.name}" delivery`;
|
|
136
218
|
const post = adapter.post?.bind(adapter);
|
|
137
219
|
const onError = adapter.onError?.bind(adapter);
|
|
138
|
-
async function
|
|
139
|
-
logger.info(`channel run started ${JSON.stringify({ threadId, runId: logger.logIdentifier(started.runId) })}`);
|
|
140
|
-
let replyAttempted = false;
|
|
220
|
+
async function notifyFailed(error) {
|
|
141
221
|
try {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
222
|
+
if (onError) {
|
|
223
|
+
await onError(error, immutableCopy(message.target));
|
|
224
|
+
}
|
|
225
|
+
else if (post) {
|
|
226
|
+
await post(immutableCopy({
|
|
227
|
+
type: "content",
|
|
228
|
+
content: "Something went wrong while processing your request.",
|
|
229
|
+
target: message.target,
|
|
230
|
+
}));
|
|
148
231
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
};
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
232
|
+
}
|
|
233
|
+
catch (replyError) {
|
|
234
|
+
const action = onError ? "callback" : "reply";
|
|
235
|
+
logger.error(`channel error ${action} failed (${logger.safeErrorLabel(replyError)})`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// The run posts its own answer (see `./reply.ts`): this reports how it
|
|
239
|
+
// ended, which the run can't say itself.
|
|
240
|
+
async function deliver(started) {
|
|
241
|
+
const { runId } = started;
|
|
242
|
+
logger.info(`channel run started ${JSON.stringify({ threadId, runId: logger.logIdentifier(runId) })}`);
|
|
243
|
+
let outcome;
|
|
244
|
+
try {
|
|
245
|
+
outcome = await observeHttpIngressAgent({ ...input, ...started });
|
|
156
246
|
}
|
|
157
247
|
catch (error) {
|
|
158
|
-
logger.error(`channel
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
target: message.target,
|
|
168
|
-
}));
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
catch (replyError) {
|
|
172
|
-
const action = onError ? "callback" : "reply";
|
|
173
|
-
logger.error(`channel error ${action} failed (${logger.safeErrorLabel(replyError)})`);
|
|
174
|
-
}
|
|
248
|
+
logger.error(`channel run could not be observed (${logger.safeErrorLabel(error)})`);
|
|
249
|
+
}
|
|
250
|
+
// The run may have answered already, or may still, so no error is
|
|
251
|
+
// reported; how it ended is unknown.
|
|
252
|
+
if (!outcome)
|
|
253
|
+
return finish({ type: "failed", reason: "observe", interrupts: [] });
|
|
254
|
+
if (outcome.status === "error" || outcome.status === "timeout") {
|
|
255
|
+
logger.error(`channel run failed ${JSON.stringify({ threadId })}`);
|
|
256
|
+
await notifyFailed(new ChannelError("channel_run_failed", "channel run failed"));
|
|
175
257
|
}
|
|
258
|
+
return finish({
|
|
259
|
+
type: "run",
|
|
260
|
+
run: { id: runId, status: outcome.status },
|
|
261
|
+
interrupts: outcome.interrupts,
|
|
262
|
+
}, outcome.assistantId);
|
|
176
263
|
}
|
|
177
264
|
// The thread's current run may still stop for a decision, so the message
|
|
178
265
|
// waits for that run instead of queueing behind it, then checks again.
|
|
266
|
+
// A cancel while the message waits drops it.
|
|
179
267
|
async function startWhenIdle() {
|
|
180
268
|
let next = { skipped: "busy" };
|
|
181
269
|
try {
|
|
182
270
|
while ("skipped" in next && next.skipped === "busy") {
|
|
183
271
|
await waitForHttpIngressThread(input);
|
|
272
|
+
if (waiter.cancelled) {
|
|
273
|
+
logger.info(`channel run dropped: its thread was cancelled while it waited ${JSON.stringify({ threadId })}`);
|
|
274
|
+
return await finish({
|
|
275
|
+
type: "skipped",
|
|
276
|
+
reason: "dropped",
|
|
277
|
+
interrupts: [],
|
|
278
|
+
});
|
|
279
|
+
}
|
|
184
280
|
next = await startHttpIngressAgent(startInput);
|
|
185
281
|
}
|
|
186
282
|
}
|
|
187
283
|
catch (error) {
|
|
188
284
|
logger.error(`channel run could not be started (${logger.safeErrorLabel(error)})`);
|
|
189
|
-
return;
|
|
285
|
+
return await finish({ type: "failed", reason: "start", interrupts: [] });
|
|
286
|
+
}
|
|
287
|
+
finally {
|
|
288
|
+
leaveThreadWaiters(threadId, waiter);
|
|
190
289
|
}
|
|
191
290
|
if (!("skipped" in next))
|
|
192
291
|
return deliver(next);
|
|
193
292
|
logger.info(`channel run skipped ${JSON.stringify({ threadId, reason: next.skipped })}`);
|
|
194
|
-
|
|
195
|
-
|
|
293
|
+
await finishSkipped(next);
|
|
294
|
+
}
|
|
295
|
+
/** A message the thread took no run for is done, with why; one that waits says on what. */
|
|
296
|
+
function finishSkipped(skipped) {
|
|
297
|
+
switch (skipped.skipped) {
|
|
298
|
+
case "paused":
|
|
299
|
+
return finish({
|
|
300
|
+
type: "skipped",
|
|
301
|
+
reason: "waiting",
|
|
302
|
+
interrupts: skipped.interrupts,
|
|
303
|
+
}, skipped.assistantId);
|
|
304
|
+
case "ignored":
|
|
305
|
+
return finish({
|
|
306
|
+
type: "skipped",
|
|
307
|
+
reason: dropped ? "dropped" : "ignored",
|
|
308
|
+
interrupts: [],
|
|
309
|
+
});
|
|
310
|
+
case "busy":
|
|
311
|
+
throw new Error("a busy thread's message is not done");
|
|
312
|
+
default:
|
|
313
|
+
return finish({
|
|
314
|
+
type: "skipped",
|
|
315
|
+
reason: skipped.skipped,
|
|
316
|
+
interrupts: [],
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** Start the message's run; `undefined` when that failed. */
|
|
321
|
+
async function startFirst() {
|
|
322
|
+
let outcome;
|
|
323
|
+
try {
|
|
324
|
+
outcome = await startHttpIngressAgent(startInput);
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
leaveThreadWaiters(threadId, waiter);
|
|
328
|
+
logger.error(`channel run could not be started (${logger.safeErrorLabel(error)})`);
|
|
329
|
+
// Answered with an error, the provider may redeliver it, as a new
|
|
330
|
+
// delivery: only one it already accepted is done for good.
|
|
331
|
+
if (onFinish)
|
|
332
|
+
scheduleIngressWork(() => finish({
|
|
333
|
+
type: "failed",
|
|
334
|
+
reason: message.background ? "start" : "retry",
|
|
335
|
+
interrupts: [],
|
|
336
|
+
}), { label });
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
// Only a message that waits for its busy thread stays.
|
|
340
|
+
if (!("skipped" in outcome && outcome.skipped === "busy"))
|
|
341
|
+
leaveThreadWaiters(threadId, waiter);
|
|
342
|
+
return outcome;
|
|
196
343
|
}
|
|
197
|
-
|
|
344
|
+
/** What follows the first start, in the background. */
|
|
345
|
+
function followUp(outcome) {
|
|
346
|
+
if (!("skipped" in outcome)) {
|
|
347
|
+
scheduleIngressWork(() => deliver(outcome), { label });
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
198
350
|
logger.info(`channel run skipped ${JSON.stringify({ threadId, reason: outcome.skipped })}`);
|
|
199
|
-
|
|
351
|
+
const skipped = outcome;
|
|
352
|
+
if (skipped.skipped === "busy")
|
|
200
353
|
scheduleIngressWork(startWhenIdle, { label });
|
|
201
|
-
else if (
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
354
|
+
else if (onFinish)
|
|
355
|
+
scheduleIngressWork(() => finishSkipped(skipped), { label });
|
|
356
|
+
}
|
|
357
|
+
const accepted = () => result.response ??
|
|
358
|
+
Response.json({ status: "accepted", deliveryId }, { status: 202 });
|
|
359
|
+
// Input that may take longer than the provider waits, such as an
|
|
360
|
+
// endpoint's, is decided after it has its answer.
|
|
361
|
+
if (message.background) {
|
|
362
|
+
scheduleIngressWork(async () => {
|
|
363
|
+
const outcome = await startFirst();
|
|
364
|
+
if (outcome)
|
|
365
|
+
followUp(outcome);
|
|
366
|
+
}, { label });
|
|
367
|
+
return accepted();
|
|
209
368
|
}
|
|
210
|
-
const
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
369
|
+
const outcome = await startFirst();
|
|
370
|
+
if (!outcome)
|
|
371
|
+
return jsonError(500, "channel run could not be started");
|
|
372
|
+
followUp(outcome);
|
|
373
|
+
return "skipped" in outcome
|
|
374
|
+
? (result.response ??
|
|
375
|
+
Response.json({ status: outcome.skipped }, { status: 202 }))
|
|
376
|
+
: accepted();
|
|
214
377
|
}
|
|
215
378
|
function requestBytes(ctx) {
|
|
216
379
|
if (typeof ctx.rawBody === "string") {
|
|
@@ -231,26 +394,106 @@ function validParseResult(value) {
|
|
|
231
394
|
if (result.rawEvent !== undefined && !isJsonValue(result.rawEvent)) {
|
|
232
395
|
return false;
|
|
233
396
|
}
|
|
234
|
-
return result.type === "ignore" ||
|
|
397
|
+
return (result.type === "ignore" ||
|
|
398
|
+
result.type === "message" ||
|
|
399
|
+
result.type === "cancel");
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Cancel the thread's runs for a `cancel` result, then finish it in the
|
|
403
|
+
* background. Messages waiting here for the thread are dropped too.
|
|
404
|
+
*/
|
|
405
|
+
async function cancelThreadRuns(ctx, adapter, input) {
|
|
406
|
+
// Before the server's cancel, so waiters it wakes see it.
|
|
407
|
+
for (const waiter of threadWaiters.get(input.threadId) ?? [])
|
|
408
|
+
waiter.cancelled = true;
|
|
409
|
+
let cancelled;
|
|
410
|
+
try {
|
|
411
|
+
cancelled = (await cancelHttpIngressRuns({
|
|
412
|
+
userId: input.userId,
|
|
413
|
+
sourceThreadKey: input.sourceThreadKey,
|
|
414
|
+
sourceProvider: ctx.channel.kind,
|
|
415
|
+
threadId: input.threadId,
|
|
416
|
+
})).length;
|
|
417
|
+
}
|
|
418
|
+
catch (error) {
|
|
419
|
+
logger.error(`channel run could not be cancelled (${logger.safeErrorLabel(error)})`);
|
|
420
|
+
return jsonError(500, "channel run could not be cancelled");
|
|
421
|
+
}
|
|
422
|
+
logger.info(`channel runs cancelled ${JSON.stringify({ threadId: input.threadId, cancelled })}`);
|
|
423
|
+
const onFinish = adapter.onFinish?.bind(adapter);
|
|
424
|
+
if (onFinish)
|
|
425
|
+
scheduleIngressWork(async () => {
|
|
426
|
+
try {
|
|
427
|
+
// A thread that waits on a decision still does after the cancel.
|
|
428
|
+
let waitsOn = {
|
|
429
|
+
interrupts: [],
|
|
430
|
+
};
|
|
431
|
+
try {
|
|
432
|
+
waitsOn = await httpIngressThreadWaitsOn({
|
|
433
|
+
userId: input.userId,
|
|
434
|
+
sourceThreadKey: input.sourceThreadKey,
|
|
435
|
+
sourceProvider: ctx.channel.kind,
|
|
436
|
+
threadId: input.threadId,
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
catch (error) {
|
|
440
|
+
logger.error(`channel thread could not be read (${logger.safeErrorLabel(error)})`);
|
|
441
|
+
}
|
|
442
|
+
await onFinish(immutableCopy(input.target), immutableCopy({
|
|
443
|
+
...input.delivery,
|
|
444
|
+
...(waitsOn.assistantId !== undefined && {
|
|
445
|
+
assistantId: waitsOn.assistantId,
|
|
446
|
+
}),
|
|
447
|
+
type: "skipped",
|
|
448
|
+
reason: "cancel",
|
|
449
|
+
interrupts: waitsOn.interrupts,
|
|
450
|
+
}));
|
|
451
|
+
}
|
|
452
|
+
catch (error) {
|
|
453
|
+
logger.error(`channel finish notice failed (${logger.safeErrorLabel(error)})`);
|
|
454
|
+
}
|
|
455
|
+
}, { label: `channel "${ctx.name}" finish notice` });
|
|
456
|
+
return (input.response ??
|
|
457
|
+
Response.json({ status: "cancelled", cancelled }, { status: 202 }));
|
|
458
|
+
}
|
|
459
|
+
const CANCEL_MESSAGE_KEYS = new Set([
|
|
460
|
+
"userId",
|
|
461
|
+
"threadId",
|
|
462
|
+
"target",
|
|
463
|
+
]);
|
|
464
|
+
/** A cancel names a thread and who to tell; it starts nothing. */
|
|
465
|
+
function validateCancelMessage(message) {
|
|
466
|
+
if (!message || typeof message !== "object")
|
|
467
|
+
throw new Error("channel cancel must be an object");
|
|
468
|
+
for (const key of Object.keys(message))
|
|
469
|
+
if (!CANCEL_MESSAGE_KEYS.has(key))
|
|
470
|
+
throw new Error("channel cancel takes only userId, threadId and target");
|
|
471
|
+
validateAddress(message);
|
|
235
472
|
}
|
|
236
473
|
function validateInboundMessage(message, adapterInput) {
|
|
237
|
-
nonblank(message.userId, "channel userId");
|
|
238
474
|
if (message.deliveryKey !== undefined)
|
|
239
|
-
|
|
475
|
+
requireNonblank(message.deliveryKey, "channel deliveryKey");
|
|
476
|
+
if (message.background !== undefined &&
|
|
477
|
+
typeof message.background !== "boolean")
|
|
478
|
+
throw new Error("channel background must be a boolean");
|
|
479
|
+
validateAddress(message);
|
|
480
|
+
// The adapter's `input` supplies what a message without content starts.
|
|
481
|
+
if (message.content !== undefined || !adapterInput)
|
|
482
|
+
validateMessageContent(message.content);
|
|
483
|
+
}
|
|
484
|
+
function validateAddress(message) {
|
|
485
|
+
requireNonblank(message.userId, "channel userId");
|
|
240
486
|
if (typeof message.threadId !== "string" ||
|
|
241
487
|
!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(message.threadId)) {
|
|
242
488
|
throw new Error("channel threadId must be a UUID");
|
|
243
489
|
}
|
|
244
490
|
if (!isJsonValue(message.target))
|
|
245
491
|
throw new Error("channel target must be JSON");
|
|
246
|
-
// The adapter's `input` supplies what a message without content starts.
|
|
247
|
-
if (message.content !== undefined || !adapterInput)
|
|
248
|
-
validateMessageContent(message.content);
|
|
249
492
|
}
|
|
250
493
|
function validateMessageContent(content) {
|
|
251
494
|
validateMessage({ type: "content", content });
|
|
252
495
|
if (typeof content === "string") {
|
|
253
|
-
|
|
496
|
+
requireNonblank(content, "channel message content");
|
|
254
497
|
return;
|
|
255
498
|
}
|
|
256
499
|
if (!Array.isArray(content) ||
|
|
@@ -262,13 +505,6 @@ function validateMessageContent(content) {
|
|
|
262
505
|
throw new Error("channel message must contain content blocks");
|
|
263
506
|
}
|
|
264
507
|
}
|
|
265
|
-
function nonblank(value, label) {
|
|
266
|
-
const normalized = value.trim();
|
|
267
|
-
if (!normalized) {
|
|
268
|
-
throw new Error(`${label} must be a non-empty string`);
|
|
269
|
-
}
|
|
270
|
-
return normalized;
|
|
271
|
-
}
|
|
272
508
|
function jsonError(status, message) {
|
|
273
509
|
return Response.json({ error: message }, { status });
|
|
274
510
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/channels/http/http.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/channels/http/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { HttpChannelAdapter } from "./types.js";
|
|
2
2
|
import { type Channel } from "../../runtime/channel.js";
|
|
3
|
-
export type { HttpChannelAdapter, HttpChannelInboundMessage, HttpChannelParseResult, HttpChannelRequest,
|
|
3
|
+
export type { HttpChannelAdapter, HttpChannelCancelMessage, HttpChannelInboundMessage, HttpChannelParseResult, HttpChannelRequest, HttpChannelPostInput, HttpDelivery, HttpFinish, HttpFinishedDelivery, HttpFinishedRun, HttpPostedMessage, HttpRunStatus, HttpSkipReason, } from "./types.js";
|
|
4
4
|
export { channelThreadId } from "./threads.js";
|
|
5
5
|
export type HttpChannel = Channel & {
|
|
6
6
|
readonly kind: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/http/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/channels/http/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAEL,KAAK,OAAO,EAEb,MAAM,0BAA0B,CAAC;AAIlC,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAM9D,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAyCpE"}
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { immutableCopy } from "../runtime.js";
|
|
2
2
|
import { handleHttpRequest } from "./http.js";
|
|
3
|
+
import { MULTITASK_STRATEGIES } from "../../ingress/runs.js";
|
|
3
4
|
import { CHANNEL_BRAND, } from "../../runtime/channel.js";
|
|
5
|
+
import { requireNonblank } from "../../values.js";
|
|
6
|
+
import { CHANNEL_REPLIES } from "../types.js";
|
|
4
7
|
export { channelThreadId } from "./threads.js";
|
|
5
|
-
const
|
|
6
|
-
"enqueue",
|
|
7
|
-
"interrupt",
|
|
8
|
-
"rollback",
|
|
9
|
-
"reject",
|
|
10
|
-
]);
|
|
8
|
+
const STRATEGIES = new Set(Object.values(MULTITASK_STRATEGIES));
|
|
11
9
|
export function httpChannel(adapter) {
|
|
12
|
-
const provider =
|
|
10
|
+
const provider = requireNonblank(adapter.provider, "channels.http provider");
|
|
13
11
|
if (adapter.multitaskStrategy !== undefined &&
|
|
14
|
-
!
|
|
12
|
+
!STRATEGIES.has(adapter.multitaskStrategy))
|
|
15
13
|
throw new TypeError("channel multitaskStrategy must be enqueue, interrupt, rollback or reject");
|
|
14
|
+
if (adapter.reply !== undefined && !CHANNEL_REPLIES.includes(adapter.reply))
|
|
15
|
+
throw new TypeError("channel reply must be auto or none");
|
|
16
16
|
const channel = { kind: provider };
|
|
17
17
|
hide(channel, CHANNEL_BRAND, true);
|
|
18
|
+
hide(channel, "reply", adapter.reply ?? "auto");
|
|
18
19
|
hide(channel, "events", (ctx) => handleHttpRequest(ctx, adapter));
|
|
19
20
|
const post = adapter.post?.bind(adapter);
|
|
20
21
|
if (post) {
|
|
@@ -30,20 +31,13 @@ export function httpChannel(adapter) {
|
|
|
30
31
|
name,
|
|
31
32
|
provider,
|
|
32
33
|
eventsPath: `/channels/${name}/events`,
|
|
33
|
-
autoReply: post !== undefined,
|
|
34
|
+
autoReply: post !== undefined && adapter.reply !== "none",
|
|
34
35
|
requiredPermissions: [],
|
|
35
36
|
requiredEnv: [],
|
|
36
37
|
providerConfig: immutableCopy(adapter.providerConfig ?? {}),
|
|
37
38
|
}));
|
|
38
39
|
return channel;
|
|
39
40
|
}
|
|
40
|
-
function nonblank(value, label) {
|
|
41
|
-
const normalized = value.trim();
|
|
42
|
-
if (!normalized) {
|
|
43
|
-
throw new Error(`${label} must be a non-empty string`);
|
|
44
|
-
}
|
|
45
|
-
return normalized;
|
|
46
|
-
}
|
|
47
41
|
function hide(target, key, value) {
|
|
48
42
|
Object.defineProperty(target, key, { value, enumerable: false });
|
|
49
43
|
}
|