managed-deepagents 0.5.4-dev.2 → 0.5.4-dev.21
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 +76 -18
- package/dist/channels/manifest.d.ts +2 -0
- package/dist/channels/manifest.d.ts.map +1 -1
- package/dist/channels/slack/index.d.ts +25 -71
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +47 -115
- package/dist/channels/slack/index.js.map +1 -1
- package/dist/channels/trigger/client.d.ts +30 -0
- package/dist/channels/trigger/client.d.ts.map +1 -0
- package/dist/channels/trigger/client.js +118 -0
- package/dist/channels/trigger/client.js.map +1 -0
- package/dist/channels/trigger/http.d.ts +24 -0
- package/dist/channels/trigger/http.d.ts.map +1 -0
- package/dist/channels/trigger/http.js +138 -0
- package/dist/channels/trigger/http.js.map +1 -0
- package/dist/channels/trigger/types.d.ts +46 -0
- package/dist/channels/trigger/types.d.ts.map +1 -0
- package/dist/channels/trigger/types.js +28 -0
- package/dist/channels/trigger/types.js.map +1 -0
- package/dist/channels/trigger/uuid.d.ts +3 -0
- package/dist/channels/trigger/uuid.d.ts.map +1 -0
- package/dist/channels/trigger/uuid.js +22 -0
- package/dist/channels/trigger/uuid.js.map +1 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/ingress/index.d.ts +20 -0
- package/dist/ingress/index.d.ts.map +1 -1
- package/dist/ingress/index.js +44 -1
- package/dist/ingress/index.js.map +1 -1
- package/dist/namespaces.d.ts +8 -6
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +1 -1
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/auth.d.ts +3 -0
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +20 -10
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +0 -1
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +39 -8
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/channel.d.ts +5 -4
- package/dist/runtime/channel.d.ts.map +1 -1
- package/dist/runtime/channel.js.map +1 -1
- package/dist/runtime/identity-http.d.ts +3 -3
- package/dist/runtime/identity-http.d.ts.map +1 -1
- package/dist/runtime/identity-http.js +53 -12
- package/dist/runtime/identity-http.js.map +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -2
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +41 -45
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +143 -135
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/sandbox-names.d.ts +9 -0
- package/dist/runtime/sandbox-names.d.ts.map +1 -0
- package/dist/runtime/sandbox-names.js +9 -0
- package/dist/runtime/sandbox-names.js.map +1 -0
- package/dist/runtime/types.d.ts +0 -5
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandbox.d.ts +61 -15
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +25 -7
- package/dist/sandbox.js.map +1 -1
- package/package.json +8 -7
- package/dist/runtime/sandbox-stream-retry.d.ts +0 -18
- package/dist/runtime/sandbox-stream-retry.d.ts.map +0 -1
- package/dist/runtime/sandbox-stream-retry.js +0 -90
- package/dist/runtime/sandbox-stream-retry.js.map +0 -1
- package/dist/runtime/setup-script.d.ts +0 -18
- package/dist/runtime/setup-script.d.ts.map +0 -1
- package/dist/runtime/setup-script.js +0 -49
- package/dist/runtime/setup-script.js.map +0 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
|
|
2
|
+
import { normalizeUuid } from "./uuid.js";
|
|
3
|
+
export const LANGSMITH_MDA_TRIGGER_SERVER_URL_ENV = "LANGSMITH_MDA_TRIGGER_SERVER_URL";
|
|
4
|
+
export const TRIGGER_HTTP_TIMEOUT_MS = PROVIDER_HTTP_TIMEOUT_MS;
|
|
5
|
+
/** Fixed-message callback error safe for logs and diagnostics. */
|
|
6
|
+
export class TriggerClientError extends Error {
|
|
7
|
+
operation;
|
|
8
|
+
status;
|
|
9
|
+
constructor(operation, status) {
|
|
10
|
+
super(`Trigger Server ${operation} request failed${status === undefined ? "" : ` with status ${status}`}`);
|
|
11
|
+
this.operation = operation;
|
|
12
|
+
this.status = status;
|
|
13
|
+
this.name = "TriggerClientError";
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Minimal Trigger Server client authenticated by the hosted server key. */
|
|
17
|
+
export class TriggerClient {
|
|
18
|
+
#apiBase;
|
|
19
|
+
#apiKey;
|
|
20
|
+
#userId;
|
|
21
|
+
#fetch;
|
|
22
|
+
#timeoutMs;
|
|
23
|
+
constructor(options = {}) {
|
|
24
|
+
const env = options.env ?? process.env;
|
|
25
|
+
this.#apiBase = triggerServerApiBase(configuredTriggerServerUrl(env));
|
|
26
|
+
const apiKey = env.LANGSMITH_API_KEY?.trim();
|
|
27
|
+
if (!apiKey) {
|
|
28
|
+
throw new Error("LANGSMITH_API_KEY is required for Trigger Server calls");
|
|
29
|
+
}
|
|
30
|
+
this.#apiKey = apiKey;
|
|
31
|
+
this.#userId = normalizeUuid(options.userId);
|
|
32
|
+
this.#fetch = options.fetch ?? fetch;
|
|
33
|
+
this.#timeoutMs = options.timeoutMs ?? TRIGGER_HTTP_TIMEOUT_MS;
|
|
34
|
+
}
|
|
35
|
+
async postAction(channelId, body) {
|
|
36
|
+
const response = await this.#post("actions", channelId, body);
|
|
37
|
+
if (!isRecord(response) || !nonblank(response.id)) {
|
|
38
|
+
throw new TriggerClientError("actions");
|
|
39
|
+
}
|
|
40
|
+
return { id: response.id };
|
|
41
|
+
}
|
|
42
|
+
async postRuntimeEvent(channelId, body) {
|
|
43
|
+
const response = await this.#post("events", channelId, body);
|
|
44
|
+
if (!isRecord(response) || typeof response.status !== "string") {
|
|
45
|
+
throw new TriggerClientError("events");
|
|
46
|
+
}
|
|
47
|
+
return { status: response.status };
|
|
48
|
+
}
|
|
49
|
+
async #post(operation, channelId, body) {
|
|
50
|
+
let response;
|
|
51
|
+
try {
|
|
52
|
+
response = await fetchWithTimeout(`${this.#apiBase}/channels/${encodeURIComponent(channelId)}/${operation}`, {
|
|
53
|
+
method: "POST",
|
|
54
|
+
redirect: "error",
|
|
55
|
+
headers: {
|
|
56
|
+
"content-type": "application/json",
|
|
57
|
+
"x-api-key": this.#apiKey,
|
|
58
|
+
...(this.#userId ? { "x-user-id": this.#userId } : {}),
|
|
59
|
+
},
|
|
60
|
+
body: JSON.stringify(body),
|
|
61
|
+
}, this.#timeoutMs, this.#fetch);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
throw new TriggerClientError(operation);
|
|
65
|
+
}
|
|
66
|
+
if (!response.ok) {
|
|
67
|
+
throw new TriggerClientError(operation, response.status);
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
return await response.json();
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new TriggerClientError(operation);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export function createTriggerClient(options = {}) {
|
|
78
|
+
const env = options.env ?? process.env;
|
|
79
|
+
if (!configuredTriggerServerUrl(env) || !env.LANGSMITH_API_KEY?.trim()) {
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
return new TriggerClient(options);
|
|
83
|
+
}
|
|
84
|
+
function configuredTriggerServerUrl(env) {
|
|
85
|
+
return env[LANGSMITH_MDA_TRIGGER_SERVER_URL_ENV]?.trim() || undefined;
|
|
86
|
+
}
|
|
87
|
+
function triggerServerApiBase(raw) {
|
|
88
|
+
if (!raw) {
|
|
89
|
+
throw new Error(`${LANGSMITH_MDA_TRIGGER_SERVER_URL_ENV} is required`);
|
|
90
|
+
}
|
|
91
|
+
if (!/^https:\/\/[^/\\?#]+(?:\/|\/v1\/?)?$/i.test(raw)) {
|
|
92
|
+
throw new Error("Trigger Server URL must be an HTTPS API base");
|
|
93
|
+
}
|
|
94
|
+
let url;
|
|
95
|
+
try {
|
|
96
|
+
url = new URL(raw);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
throw new Error("Trigger Server URL must be an HTTPS API base");
|
|
100
|
+
}
|
|
101
|
+
if (url.protocol !== "https:" ||
|
|
102
|
+
!url.hostname ||
|
|
103
|
+
url.username ||
|
|
104
|
+
url.password ||
|
|
105
|
+
!["/", "/v1", "/v1/"].includes(url.pathname) ||
|
|
106
|
+
url.search ||
|
|
107
|
+
url.hash) {
|
|
108
|
+
throw new Error("Trigger Server URL must be an HTTPS API base");
|
|
109
|
+
}
|
|
110
|
+
return `${url.origin}/v1`;
|
|
111
|
+
}
|
|
112
|
+
function isRecord(value) {
|
|
113
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
114
|
+
}
|
|
115
|
+
function nonblank(value) {
|
|
116
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/channels/trigger/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ObservedIngressRun, type StartedIngressRun } from "../../ingress/index.js";
|
|
2
|
+
import { type TriggerClientLike } from "./client.js";
|
|
3
|
+
export { TRIGGER_SERVICE_KEY_HEADER } from "./types.js";
|
|
4
|
+
export declare const ASSISTANT_ID_ENV = "MDA_ASSISTANT_ID";
|
|
5
|
+
type StartAgent = (input: {
|
|
6
|
+
threadId: string;
|
|
7
|
+
assistantId: string;
|
|
8
|
+
messages: Record<string, unknown>[];
|
|
9
|
+
}) => Promise<StartedIngressRun>;
|
|
10
|
+
type ObserveAgent = (input: {
|
|
11
|
+
threadId: string;
|
|
12
|
+
runId: string;
|
|
13
|
+
}) => Promise<ObservedIngressRun>;
|
|
14
|
+
export interface TriggerChannelHttpOptions {
|
|
15
|
+
assistantId?: string;
|
|
16
|
+
rawBody?: string | Uint8Array;
|
|
17
|
+
schedule?: (work: () => Promise<void>) => void;
|
|
18
|
+
startAgent?: StartAgent;
|
|
19
|
+
observeAgent?: ObserveAgent;
|
|
20
|
+
triggerClient?: TriggerClientLike;
|
|
21
|
+
}
|
|
22
|
+
/** Validate one Trigger message, start its run, and enqueue observation. */
|
|
23
|
+
export declare function handleTriggerChannelEventRequest(request: Request, options?: TriggerChannelHttpOptions): Promise<Response>;
|
|
24
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/http.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AASrB,OAAO,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAExD,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAEnD,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACrC,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEjC,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAElC,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,4EAA4E;AAC5E,wBAAsB,gCAAgC,CACpD,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,QAAQ,CAAC,CAsEnB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { v5 as uuidv5 } from "uuid";
|
|
3
|
+
import { extractAssistantText } from "../assistant-text.js";
|
|
4
|
+
import { observeIngressAgent, scheduleIngressWork, startIngressAgent, } from "../../ingress/index.js";
|
|
5
|
+
import { createTriggerClient, TriggerClientError, } from "./client.js";
|
|
6
|
+
import { parseTriggerChannelEvent, TRIGGER_SERVICE_KEY_HEADER, } from "./types.js";
|
|
7
|
+
export { TRIGGER_SERVICE_KEY_HEADER } from "./types.js";
|
|
8
|
+
export const ASSISTANT_ID_ENV = "MDA_ASSISTANT_ID";
|
|
9
|
+
/** Validate one Trigger message, start its run, and enqueue observation. */
|
|
10
|
+
export async function handleTriggerChannelEventRequest(request, options = {}) {
|
|
11
|
+
if (!request.headers.get(TRIGGER_SERVICE_KEY_HEADER)?.trim()) {
|
|
12
|
+
return Response.json({ error: "unauthorized" }, { status: 401 });
|
|
13
|
+
}
|
|
14
|
+
let event;
|
|
15
|
+
try {
|
|
16
|
+
const raw = await requestBody(request, options.rawBody);
|
|
17
|
+
event = parseTriggerChannelEvent(JSON.parse(raw));
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return Response.json({ error: "invalid channel event" }, { status: 400 });
|
|
21
|
+
}
|
|
22
|
+
let client = options.triggerClient;
|
|
23
|
+
if (!client) {
|
|
24
|
+
try {
|
|
25
|
+
client = createTriggerClient({
|
|
26
|
+
userId: request.headers.get("x-user-id") ?? undefined,
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
client = undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (!client) {
|
|
34
|
+
return Response.json({ error: "channel transport is not configured" }, { status: 500 });
|
|
35
|
+
}
|
|
36
|
+
const assistantId = resolveAssistantId(options.assistantId);
|
|
37
|
+
if (!assistantId) {
|
|
38
|
+
console.error(`[mda] ${ASSISTANT_ID_ENV} is not configured`);
|
|
39
|
+
return Response.json({ error: "channel runtime is not configured" }, { status: 500 });
|
|
40
|
+
}
|
|
41
|
+
let started;
|
|
42
|
+
try {
|
|
43
|
+
started = await (options.startAgent ?? startIngressAgent)({
|
|
44
|
+
threadId: triggerThreadId(event.source_thread_key),
|
|
45
|
+
assistantId,
|
|
46
|
+
messages: event.input.messages,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return Response.json({ error: "channel run could not be started" }, { status: 500 });
|
|
51
|
+
}
|
|
52
|
+
scheduleIngressWork(() => observeAcceptedRun({
|
|
53
|
+
event,
|
|
54
|
+
started,
|
|
55
|
+
client,
|
|
56
|
+
observeAgent: options.observeAgent,
|
|
57
|
+
}), {
|
|
58
|
+
label: "Trigger channel run observation",
|
|
59
|
+
schedule: options.schedule,
|
|
60
|
+
});
|
|
61
|
+
return Response.json({ status: "accepted", delivery_id: event.delivery_id }, { status: 202 });
|
|
62
|
+
}
|
|
63
|
+
async function observeAcceptedRun(input) {
|
|
64
|
+
const { event, started, client } = input;
|
|
65
|
+
const lifecycle = (type) => bestEffort(client.postRuntimeEvent(event.channel_id, runtimeEvent(type, event, started)));
|
|
66
|
+
await lifecycle("run.started");
|
|
67
|
+
let observed;
|
|
68
|
+
try {
|
|
69
|
+
observed = await (input.observeAgent ?? observeIngressAgent)({
|
|
70
|
+
threadId: started.threadId,
|
|
71
|
+
runId: started.runId,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
await lifecycle("run.failed");
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (observed.status !== "success") {
|
|
79
|
+
await lifecycle("run.failed");
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const text = extractAssistantText(isRecord(observed.values) ? observed.values : {});
|
|
83
|
+
if (text) {
|
|
84
|
+
const action = await bestEffort(client.postAction(event.channel_id, {
|
|
85
|
+
type: "post",
|
|
86
|
+
action_id: randomUUID(),
|
|
87
|
+
address: event.address,
|
|
88
|
+
source_thread_key: event.source_thread_key,
|
|
89
|
+
message: { text },
|
|
90
|
+
}));
|
|
91
|
+
if (action === undefined) {
|
|
92
|
+
await lifecycle("run.failed");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
await lifecycle("run.completed");
|
|
97
|
+
}
|
|
98
|
+
function runtimeEvent(type, event, started) {
|
|
99
|
+
return {
|
|
100
|
+
id: randomUUID(),
|
|
101
|
+
type,
|
|
102
|
+
delivery_id: event.delivery_id,
|
|
103
|
+
source_thread_key: event.source_thread_key,
|
|
104
|
+
address: event.address,
|
|
105
|
+
run_thread_id: started.threadId,
|
|
106
|
+
run_id: started.runId,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function triggerThreadId(sourceThreadKey) {
|
|
110
|
+
return uuidv5(sourceThreadKey, uuidv5.URL);
|
|
111
|
+
}
|
|
112
|
+
function resolveAssistantId(override) {
|
|
113
|
+
return override?.trim() || process.env[ASSISTANT_ID_ENV]?.trim() || undefined;
|
|
114
|
+
}
|
|
115
|
+
async function requestBody(request, rawBody) {
|
|
116
|
+
if (typeof rawBody === "string")
|
|
117
|
+
return rawBody;
|
|
118
|
+
const bytes = rawBody ?? new Uint8Array(await request.arrayBuffer());
|
|
119
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
|
|
120
|
+
}
|
|
121
|
+
async function bestEffort(promise) {
|
|
122
|
+
try {
|
|
123
|
+
return await promise;
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
if (error instanceof TriggerClientError) {
|
|
127
|
+
console.warn(`[mda] Trigger Server ${error.operation} callback failed${error.status === undefined ? "" : ` (HTTP ${error.status})`}`);
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
console.warn("[mda] Trigger Server callback failed");
|
|
131
|
+
}
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function isRecord(value) {
|
|
136
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../../src/channels/trigger/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const TRIGGER_SERVICE_KEY_HEADER = "x-service-key";
|
|
2
|
+
/** Provider-owned address fields are opaque to MDA. */
|
|
3
|
+
export type TriggerChannelAddress = Record<string, unknown>;
|
|
4
|
+
export interface TriggerChannelMessageInput {
|
|
5
|
+
messages: Record<string, unknown>[];
|
|
6
|
+
}
|
|
7
|
+
export interface TriggerChannelMessageEvent {
|
|
8
|
+
version: "1";
|
|
9
|
+
type: "message";
|
|
10
|
+
event_id: string;
|
|
11
|
+
delivery_id: string;
|
|
12
|
+
created_at: string;
|
|
13
|
+
channel_id: string;
|
|
14
|
+
source_thread_key: string;
|
|
15
|
+
address: TriggerChannelAddress;
|
|
16
|
+
input: TriggerChannelMessageInput;
|
|
17
|
+
}
|
|
18
|
+
export type TriggerChannelEvent = TriggerChannelMessageEvent;
|
|
19
|
+
export interface TriggerChannelActionRequest {
|
|
20
|
+
type: "post";
|
|
21
|
+
action_id: string;
|
|
22
|
+
address: TriggerChannelAddress;
|
|
23
|
+
source_thread_key: string;
|
|
24
|
+
message: {
|
|
25
|
+
text: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export interface TriggerChannelActionResponse {
|
|
29
|
+
id: string;
|
|
30
|
+
}
|
|
31
|
+
export type TriggerChannelRuntimeEventType = "run.started" | "run.completed" | "run.failed";
|
|
32
|
+
export interface TriggerChannelRuntimeEventRequest {
|
|
33
|
+
id: string;
|
|
34
|
+
type: TriggerChannelRuntimeEventType;
|
|
35
|
+
delivery_id: string;
|
|
36
|
+
source_thread_key: string;
|
|
37
|
+
address: TriggerChannelAddress;
|
|
38
|
+
run_thread_id: string;
|
|
39
|
+
run_id: string;
|
|
40
|
+
}
|
|
41
|
+
export interface TriggerChannelRuntimeEventResponse {
|
|
42
|
+
status: string;
|
|
43
|
+
}
|
|
44
|
+
/** Validate the envelope while retaining all original opaque object identities. */
|
|
45
|
+
export declare function parseTriggerChannelEvent(value: unknown): TriggerChannelEvent;
|
|
46
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/types.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B,kBAAkB,CAAC;AAE1D,uDAAuD;AACvD,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5D,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,KAAK,EAAE,0BAA0B,CAAC;CACnC;AAED,MAAM,MAAM,mBAAmB,GAAG,0BAA0B,CAAC;AAE7D,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,8BAA8B,GACtC,aAAa,GACb,eAAe,GACf,YAAY,CAAC;AAEjB,MAAM,WAAW,iCAAiC;IAChD,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,8BAA8B,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD,mFAAmF;AACnF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,mBAAmB,CAG5E"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { normalizeUuid } from "./uuid.js";
|
|
3
|
+
export const TRIGGER_SERVICE_KEY_HEADER = "x-service-key";
|
|
4
|
+
const nonblankString = z.string().refine((value) => value.trim().length > 0, {
|
|
5
|
+
message: "must be nonblank",
|
|
6
|
+
});
|
|
7
|
+
const opaqueObject = z.record(z.string(), z.unknown());
|
|
8
|
+
const messageEventSchema = z.object({
|
|
9
|
+
version: z.literal("1"),
|
|
10
|
+
type: z.literal("message"),
|
|
11
|
+
event_id: nonblankString,
|
|
12
|
+
delivery_id: nonblankString,
|
|
13
|
+
created_at: nonblankString,
|
|
14
|
+
channel_id: z.string().refine((value) => normalizeUuid(value) !== undefined, {
|
|
15
|
+
message: "Invalid UUID",
|
|
16
|
+
}),
|
|
17
|
+
source_thread_key: nonblankString,
|
|
18
|
+
address: opaqueObject,
|
|
19
|
+
input: z.object({
|
|
20
|
+
messages: z.array(opaqueObject),
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
/** Validate the envelope while retaining all original opaque object identities. */
|
|
24
|
+
export function parseTriggerChannelEvent(value) {
|
|
25
|
+
messageEventSchema.parse(value);
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/channels/trigger/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,0BAA0B,GAAG,eAAe,CAAC;AAsD1D,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;IAC3E,OAAO,EAAE,kBAAkB;CAC5B,CAAC,CAAC;AACH,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,cAAc;IACxB,WAAW,EAAE,cAAc;IAC3B,UAAU,EAAE,cAAc;IAC1B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;QAC3E,OAAO,EAAE,cAAc;KACxB,CAAC;IACF,iBAAiB,EAAE,cAAc;IACjC,OAAO,EAAE,YAAY;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC;KAChC,CAAC;CACH,CAAC,CAAC;AAEH,mFAAmF;AACnF,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,KAA4B,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/uuid.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAmBhE"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** Match Python's `uuid.UUID(string)` spellings and return canonical text. */
|
|
2
|
+
export function normalizeUuid(value) {
|
|
3
|
+
if (typeof value !== "string")
|
|
4
|
+
return undefined;
|
|
5
|
+
const compact = value
|
|
6
|
+
.replaceAll("urn:", "")
|
|
7
|
+
.replaceAll("uuid:", "")
|
|
8
|
+
.replace(/^[{}]+/, "")
|
|
9
|
+
.replace(/[{}]+$/, "")
|
|
10
|
+
.replaceAll("-", "");
|
|
11
|
+
if (!/^[0-9a-fA-F]{32}$/.test(compact))
|
|
12
|
+
return undefined;
|
|
13
|
+
const hex = compact.toLowerCase();
|
|
14
|
+
return [
|
|
15
|
+
hex.slice(0, 8),
|
|
16
|
+
hex.slice(8, 12),
|
|
17
|
+
hex.slice(12, 16),
|
|
18
|
+
hex.slice(16, 20),
|
|
19
|
+
hex.slice(20),
|
|
20
|
+
].join("-");
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../../src/channels/trigger/uuid.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,OAAO,GAAG,KAAK;SAClB,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;SACtB,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACvB,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAC;IAEzD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO;QACL,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACf,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;QACjB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;KACd,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACd,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -39,7 +39,8 @@ export type { ScheduleConfig, ScheduleDefinition, ScheduleDeliveryTarget, Schedu
|
|
|
39
39
|
export type { ClaimMapping, CredentialScope, HttpIngress, IdentityAuth, IdentityConfig, IdentityDefinition, IdentityOptions, LangSmithApiKeyIngress, RuntimeIdentity, ValidatedTokenIngress, ValidatedTokenProvider, } from "./identity/index.js";
|
|
40
40
|
export type { MemoryConfig, MemoryDefinition, MemoryOptions, MemoryScope, MemoryScopeInput, MemorySliceInput, MemorySliceKind, ResolvedMemorySlice, } from "./memory/index.js";
|
|
41
41
|
export type { HttpMcpServerConfig, McpServersConfig, McpServersDefinition, McpToolSelectionConfig, RemoteMcpServerBaseConfig, RemoteMcpServerConfig, SseMcpServerConfig, } from "./connectors/mcp/index.js";
|
|
42
|
-
export type { ChannelManifest
|
|
43
|
-
export type {
|
|
42
|
+
export type { ChannelManifest } from "./channels/manifest.js";
|
|
43
|
+
export type { RequiredTriggerSlackChannelConfig, SlackChannel, SlackChannelConfig, } from "./channels/slack/index.js";
|
|
44
|
+
export type { SandboxDefinition, SandboxOptions } from "./sandbox.js";
|
|
44
45
|
export type { ManagedDeepAgentRuntime, ManagedRuntimeExtras, } from "./runtime/managed-tools.js";
|
|
45
46
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,EAAE,OAAO,YAAY,CAAC;CAC1B;AAED,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,UAExB,CAAC;AAEF,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,GAAG,EAAE,OAAO,YAAY,CAAC;CAC1B;AAED,+DAA+D;AAC/D,eAAO,MAAM,UAAU,EAAE,UAExB,CAAC;AAEF,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,iCAAiC,EACjC,YAAY,EACZ,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEtE,YAAY,EACV,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,4BAA4B,CAAC"}
|
package/dist/ingress/index.d.ts
CHANGED
|
@@ -26,6 +26,15 @@ export interface InvokeIngressAgentResult {
|
|
|
26
26
|
runId?: string;
|
|
27
27
|
threadId: string;
|
|
28
28
|
}
|
|
29
|
+
export interface StartedIngressRun {
|
|
30
|
+
threadId: string;
|
|
31
|
+
runId: string;
|
|
32
|
+
}
|
|
33
|
+
export type IngressRunStatus = "error" | "success" | "timeout" | "interrupted";
|
|
34
|
+
export interface ObservedIngressRun {
|
|
35
|
+
values: unknown;
|
|
36
|
+
status: IngressRunStatus;
|
|
37
|
+
}
|
|
29
38
|
/**
|
|
30
39
|
* Schedule background work after the provider ACK. Defaults to fire-and-forget
|
|
31
40
|
* with error logging; tests pass an inline runner.
|
|
@@ -47,6 +56,17 @@ export declare function ingressSourceThreadExists(input: SourceThreadExistsInput
|
|
|
47
56
|
* Only this path may set `x-mda-source-provider` / `x-mda-source-thread-id`.
|
|
48
57
|
*/
|
|
49
58
|
export declare function invokeIngressAgent(input: InvokeIngressAgentInput): Promise<InvokeIngressAgentResult>;
|
|
59
|
+
/** Create a Trigger-addressed thread and enqueue its run. */
|
|
60
|
+
export declare function startIngressAgent(input: {
|
|
61
|
+
threadId: string;
|
|
62
|
+
assistantId: string;
|
|
63
|
+
messages: Record<string, unknown>[];
|
|
64
|
+
}): Promise<StartedIngressRun>;
|
|
65
|
+
/** Join an accepted Trigger run and read its terminal status. */
|
|
66
|
+
export declare function observeIngressAgent(input: {
|
|
67
|
+
threadId: string;
|
|
68
|
+
runId: string;
|
|
69
|
+
}): Promise<ObservedIngressRun>;
|
|
50
70
|
/** Deterministic LangGraph thread id from a provider source-thread key. */
|
|
51
71
|
export declare function stableThreadId(sourceThreadKey: string): string;
|
|
52
72
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ingress/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ingress/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,wBAAwB,CAAC;AAoBhC,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,aAAa,CAAC;AAE/E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACzB,OAAO,EAAE;IACP,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;CAChD,GACA,IAAI,CASN;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAelB;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CA6CnC;AAED,6DAA6D;AAC7D,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACrC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiB7B;AAED,iEAAiE;AACjE,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAW9B;AAoED,2EAA2E;AAC3E,wBAAgB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAS9D"}
|
package/dist/ingress/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { extractAssistantText } from "../channels/assistant-text.js";
|
|
|
12
12
|
import { CHANNEL_BINDING_KEY, } from "../channels/binding.js";
|
|
13
13
|
import { ChannelError } from "../channels/errors.js";
|
|
14
14
|
import { isLoopbackUrl, resolveLoopbackApiKey, resolveLoopbackApiUrl, } from "../identity/loopback.js";
|
|
15
|
-
import { HANDOFF_SECRET_ENV, HANDOFF_SECRET_HEADER, USER_HEADER, INGRESS_SECRET_ENV, INGRESS_SECRET_HEADER, LANGSMITH_API_KEY_ENV, SOURCE_PROVIDER_HEADER, SOURCE_THREAD_HEADER, } from "../runtime/auth.js";
|
|
15
|
+
import { CHANNEL_SERVICE_USER, HANDOFF_SECRET_ENV, HANDOFF_SECRET_HEADER, USER_HEADER, INGRESS_SECRET_ENV, INGRESS_SECRET_HEADER, LANGCHAIN_API_KEY_ENV, LANGSMITH_API_KEY_ENV, SOURCE_PROVIDER_HEADER, SOURCE_THREAD_HEADER, } from "../runtime/auth.js";
|
|
16
16
|
/**
|
|
17
17
|
* Schedule background work after the provider ACK. Defaults to fire-and-forget
|
|
18
18
|
* with error logging; tests pass an inline runner.
|
|
@@ -90,6 +90,49 @@ export async function invokeIngressAgent(input) {
|
|
|
90
90
|
threadId,
|
|
91
91
|
};
|
|
92
92
|
}
|
|
93
|
+
/** Create a Trigger-addressed thread and enqueue its run. */
|
|
94
|
+
export async function startIngressAgent(input) {
|
|
95
|
+
const client = createTriggerIngressLoopbackClient();
|
|
96
|
+
await client.threads.create({
|
|
97
|
+
threadId: input.threadId,
|
|
98
|
+
ifExists: "do_nothing",
|
|
99
|
+
});
|
|
100
|
+
const run = await client.runs.create(input.threadId, input.assistantId, {
|
|
101
|
+
input: { messages: input.messages },
|
|
102
|
+
multitaskStrategy: "enqueue",
|
|
103
|
+
});
|
|
104
|
+
if (typeof run.run_id !== "string" || !run.run_id.trim()) {
|
|
105
|
+
throw new ChannelError("channel_run_failed", "Agent Server did not return run_id");
|
|
106
|
+
}
|
|
107
|
+
return { threadId: input.threadId, runId: run.run_id };
|
|
108
|
+
}
|
|
109
|
+
/** Join an accepted Trigger run and read its terminal status. */
|
|
110
|
+
export async function observeIngressAgent(input) {
|
|
111
|
+
const client = createTriggerIngressLoopbackClient();
|
|
112
|
+
const values = await client.runs.join(input.threadId, input.runId);
|
|
113
|
+
const run = await client.runs.get(input.threadId, input.runId);
|
|
114
|
+
if (!isIngressRunStatus(run.status)) {
|
|
115
|
+
throw new ChannelError("channel_run_failed", "Agent Server returned an unknown run status");
|
|
116
|
+
}
|
|
117
|
+
return { values, status: run.status };
|
|
118
|
+
}
|
|
119
|
+
function createTriggerIngressLoopbackClient() {
|
|
120
|
+
const apiKey = process.env[LANGCHAIN_API_KEY_ENV]?.trim();
|
|
121
|
+
if (!apiKey) {
|
|
122
|
+
throw new ChannelError("channel_run_failed", "managed loopback authentication is not configured");
|
|
123
|
+
}
|
|
124
|
+
return new Client({
|
|
125
|
+
apiUrl: resolveLoopbackApiUrl(),
|
|
126
|
+
apiKey,
|
|
127
|
+
defaultHeaders: { [USER_HEADER]: CHANNEL_SERVICE_USER },
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
function isIngressRunStatus(value) {
|
|
131
|
+
return (value === "error" ||
|
|
132
|
+
value === "success" ||
|
|
133
|
+
value === "timeout" ||
|
|
134
|
+
value === "interrupted");
|
|
135
|
+
}
|
|
93
136
|
function createIngressLoopbackClient(input) {
|
|
94
137
|
const apiUrl = resolveLoopbackApiUrl();
|
|
95
138
|
const apiKey = resolveLoopbackApiKey();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ingress/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EACL,mBAAmB,GAEpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ingress/index.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* and providers can be added without growing the barrel:
|
|
7
7
|
*
|
|
8
8
|
* ```ts
|
|
9
|
-
* channels.slack();
|
|
9
|
+
* channels.slack({ name: "Support Bot" });
|
|
10
10
|
* connectors.mcp({ mcpServers: { docs: { transport: "http", url: "https://docs.example.com/mcp" } } });
|
|
11
11
|
* defineSandbox({ defaultTimeout: 600 });
|
|
12
12
|
* auth.supabase({ projectRef: "abc" });
|
|
@@ -56,20 +56,22 @@ export interface Connectors {
|
|
|
56
56
|
*/
|
|
57
57
|
export declare const connectors: Connectors;
|
|
58
58
|
/**
|
|
59
|
-
* Inbound messaging surfaces
|
|
60
|
-
* from `channels/*`. Slack-only for now.
|
|
59
|
+
* Inbound messaging surfaces. Exported from `channels/*`. Slack-only for now.
|
|
61
60
|
*
|
|
62
61
|
* Docs live on this interface so IDE hover on `channels.<name>` stays useful.
|
|
63
62
|
*/
|
|
64
63
|
export interface Channels {
|
|
65
64
|
/**
|
|
66
|
-
* Slack
|
|
65
|
+
* Slack ingress through Trigger Server and deploy requirements.
|
|
67
66
|
*
|
|
68
|
-
* Mounts public Events at `/channels/{name}/events`.
|
|
67
|
+
* Mounts public Events at `/v1/channels/{name}/events`.
|
|
69
68
|
*
|
|
70
69
|
* @example
|
|
71
70
|
* ```ts
|
|
72
|
-
* export const channel = channels.slack(
|
|
71
|
+
* export const channel = channels.slack({
|
|
72
|
+
* name: "Support Bot",
|
|
73
|
+
* description: "Answers support questions",
|
|
74
|
+
* });
|
|
73
75
|
* ```
|
|
74
76
|
*
|
|
75
77
|
* @see {@link slackChannel}
|
package/dist/namespaces.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;;OAcG;IACH,GAAG,EAAE,OAAO,YAAY,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,UAExB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"namespaces.d.ts","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3C;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;;OAcG;IACH,GAAG,EAAE,OAAO,YAAY,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,UAExB,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;;;;;;;;;;;OAcG;IACH,KAAK,EAAE,OAAO,YAAY,CAAC;CAC5B;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,QAEtB,CAAC"}
|
package/dist/namespaces.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* and providers can be added without growing the barrel:
|
|
7
7
|
*
|
|
8
8
|
* ```ts
|
|
9
|
-
* channels.slack();
|
|
9
|
+
* channels.slack({ name: "Support Bot" });
|
|
10
10
|
* connectors.mcp({ mcpServers: { docs: { transport: "http", url: "https://docs.example.com/mcp" } } });
|
|
11
11
|
* defineSandbox({ defaultTimeout: 600 });
|
|
12
12
|
* auth.supabase({ projectRef: "abc" });
|
package/dist/namespaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AA+B3C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,GAAG,EAAE,YAAY;CAClB,CAAC;
|
|
1
|
+
{"version":3,"file":"namespaces.js","sourceRoot":"","sources":["../src/namespaces.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AA+B3C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAe;IACpC,GAAG,EAAE,YAAY;CAClB,CAAC;AA0BF;;;GAGG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAa;IAChC,KAAK,EAAE,YAAY;CACpB,CAAC"}
|