managed-deepagents 0.10.0-dev.17 → 0.10.0-dev.19
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 +530 -83
- package/dist/browser.d.ts +37 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +31 -0
- package/dist/browser.js.map +1 -0
- 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 +44 -11
- package/dist/channels/binding.js.map +1 -1
- package/dist/channels/delivery.d.ts +36 -0
- package/dist/channels/delivery.d.ts.map +1 -0
- package/dist/channels/delivery.js +359 -0
- package/dist/channels/delivery.js.map +1 -0
- package/dist/channels/github/app-setup.d.ts +32 -0
- package/dist/channels/github/app-setup.d.ts.map +1 -0
- package/dist/channels/github/app-setup.js +146 -0
- package/dist/channels/github/app-setup.js.map +1 -0
- package/dist/channels/github/index.d.ts.map +1 -1
- package/dist/channels/github/index.js +21 -33
- package/dist/channels/github/index.js.map +1 -1
- package/dist/channels/github/schema.d.ts +50 -1
- package/dist/channels/github/schema.d.ts.map +1 -1
- package/dist/channels/github/schema.js +12 -0
- package/dist/channels/github/schema.js.map +1 -1
- package/dist/channels/http/endpoint.d.ts +6 -4
- package/dist/channels/http/endpoint.d.ts.map +1 -1
- package/dist/channels/http/endpoint.js.map +1 -1
- package/dist/channels/http/http.d.ts.map +1 -1
- package/dist/channels/http/http.js +4 -10
- package/dist/channels/http/http.js.map +1 -1
- package/dist/channels/http/index.d.ts +6 -0
- package/dist/channels/http/index.d.ts.map +1 -1
- package/dist/channels/http/index.js +32 -23
- package/dist/channels/http/index.js.map +1 -1
- package/dist/channels/http/ingress.d.ts +2 -2
- package/dist/channels/http/ingress.d.ts.map +1 -1
- package/dist/channels/http/ingress.js +9 -21
- package/dist/channels/http/ingress.js.map +1 -1
- package/dist/channels/http/provider.d.ts +10 -5
- package/dist/channels/http/provider.d.ts.map +1 -1
- package/dist/channels/http/provider.js +17 -10
- package/dist/channels/http/provider.js.map +1 -1
- package/dist/channels/http/studio.d.ts +5 -5
- package/dist/channels/http/studio.d.ts.map +1 -1
- package/dist/channels/http/studio.js +4 -6
- package/dist/channels/http/studio.js.map +1 -1
- package/dist/channels/http/types.d.ts +7 -1
- package/dist/channels/http/types.d.ts.map +1 -1
- package/dist/channels/linear/app-setup.d.ts +29 -0
- package/dist/channels/linear/app-setup.d.ts.map +1 -0
- package/dist/channels/linear/app-setup.js +102 -0
- package/dist/channels/linear/app-setup.js.map +1 -0
- package/dist/channels/linear/index.d.ts.map +1 -1
- package/dist/channels/linear/index.js +26 -65
- package/dist/channels/linear/index.js.map +1 -1
- package/dist/channels/linear/schema.d.ts +11 -25
- package/dist/channels/linear/schema.d.ts.map +1 -1
- package/dist/channels/linear/schema.js +6 -0
- package/dist/channels/linear/schema.js.map +1 -1
- package/dist/channels/linear/types.d.ts +9 -2
- package/dist/channels/linear/types.d.ts.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.map +1 -1
- package/dist/channels/reserved-connections.js +10 -0
- package/dist/channels/reserved-connections.js.map +1 -1
- package/dist/channels/run-input.d.ts +11 -0
- package/dist/channels/run-input.d.ts.map +1 -1
- package/dist/channels/run-input.js +18 -8
- package/dist/channels/run-input.js.map +1 -1
- package/dist/channels/runtime.d.ts +5 -2
- package/dist/channels/runtime.d.ts.map +1 -1
- package/dist/channels/runtime.js +19 -10
- package/dist/channels/runtime.js.map +1 -1
- package/dist/channels/schedule-delivery.d.ts +2 -13
- package/dist/channels/schedule-delivery.d.ts.map +1 -1
- package/dist/channels/schedule-delivery.js +6 -73
- 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 +44 -2
- package/dist/channels/slack/index.d.ts.map +1 -1
- package/dist/channels/slack/index.js +127 -3
- 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/trigger/client.d.ts.map +1 -1
- package/dist/channels/trigger/client.js +6 -9
- package/dist/channels/trigger/client.js.map +1 -1
- package/dist/channels/trigger/conversation.d.ts +11 -0
- package/dist/channels/trigger/conversation.d.ts.map +1 -0
- package/dist/channels/trigger/conversation.js +72 -0
- package/dist/channels/trigger/conversation.js.map +1 -0
- package/dist/channels/trigger/http.d.ts +123 -4
- package/dist/channels/trigger/http.d.ts.map +1 -1
- package/dist/channels/trigger/http.js +331 -76
- package/dist/channels/trigger/http.js.map +1 -1
- package/dist/channels/trigger/ingress.d.ts +70 -1
- package/dist/channels/trigger/ingress.d.ts.map +1 -1
- package/dist/channels/trigger/ingress.js +136 -7
- package/dist/channels/trigger/ingress.js.map +1 -1
- package/dist/channels/trigger/transport.d.ts +10 -0
- package/dist/channels/trigger/transport.d.ts.map +1 -1
- package/dist/channels/trigger/transport.js +25 -9
- package/dist/channels/trigger/transport.js.map +1 -1
- package/dist/channels/trigger/types.d.ts +92 -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 +43 -4
- 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/define-deep-agent.d.ts +2 -2
- package/dist/define-deep-agent.d.ts.map +1 -1
- package/dist/define-deep-agent.js +53 -8
- package/dist/define-deep-agent.js.map +1 -1
- package/dist/index.d.ts +9 -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 +22 -0
- package/dist/ingress/runs.d.ts.map +1 -1
- package/dist/ingress/runs.js +45 -1
- package/dist/ingress/runs.js.map +1 -1
- package/dist/managed-composition.d.ts +3 -0
- package/dist/managed-composition.d.ts.map +1 -1
- package/dist/managed-composition.js +29 -13
- package/dist/managed-composition.js.map +1 -1
- package/dist/namespaces.d.ts +0 -21
- package/dist/namespaces.d.ts.map +1 -1
- package/dist/namespaces.js +0 -29
- package/dist/namespaces.js.map +1 -1
- package/dist/runtime/async-subagents.d.ts +27 -0
- package/dist/runtime/async-subagents.d.ts.map +1 -0
- package/dist/runtime/async-subagents.js +139 -0
- package/dist/runtime/async-subagents.js.map +1 -0
- package/dist/runtime/auth.d.ts +1 -2
- package/dist/runtime/auth.d.ts.map +1 -1
- package/dist/runtime/auth.js +125 -63
- package/dist/runtime/auth.js.map +1 -1
- package/dist/runtime/backend.d.ts +7 -0
- package/dist/runtime/backend.d.ts.map +1 -1
- package/dist/runtime/backend.js +32 -7
- package/dist/runtime/backend.js.map +1 -1
- package/dist/runtime/browser-facade.d.ts +10 -0
- package/dist/runtime/browser-facade.d.ts.map +1 -0
- package/dist/runtime/browser-facade.js +23 -0
- package/dist/runtime/browser-facade.js.map +1 -0
- package/dist/runtime/browser-langsmith.d.ts +108 -0
- package/dist/runtime/browser-langsmith.d.ts.map +1 -0
- package/dist/runtime/browser-langsmith.js +379 -0
- package/dist/runtime/browser-langsmith.js.map +1 -0
- package/dist/runtime/browser-selection.d.ts +10 -0
- package/dist/runtime/browser-selection.d.ts.map +1 -0
- package/dist/runtime/browser-selection.js +21 -0
- package/dist/runtime/browser-selection.js.map +1 -0
- package/dist/runtime/browser.d.ts +125 -0
- package/dist/runtime/browser.d.ts.map +1 -0
- package/dist/runtime/browser.js +606 -0
- package/dist/runtime/browser.js.map +1 -0
- 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 +38 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +74 -34
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/managed-thread.d.ts +61 -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/parent-run.d.ts +33 -0
- package/dist/runtime/parent-run.d.ts.map +1 -0
- package/dist/runtime/parent-run.js +114 -0
- package/dist/runtime/parent-run.js.map +1 -0
- package/dist/runtime/run-input.d.ts +14 -1
- package/dist/runtime/run-input.d.ts.map +1 -1
- package/dist/runtime/run-input.js +75 -6
- package/dist/runtime/run-input.js.map +1 -1
- package/dist/runtime/sandbox-manager.d.ts +14 -1
- package/dist/runtime/sandbox-manager.d.ts.map +1 -1
- package/dist/runtime/sandbox-manager.js +34 -9
- package/dist/runtime/sandbox-manager.js.map +1 -1
- package/dist/runtime/schedule-auth.d.ts +79 -0
- package/dist/runtime/schedule-auth.d.ts.map +1 -1
- package/dist/runtime/schedule-auth.js +163 -6
- package/dist/runtime/schedule-auth.js.map +1 -1
- package/dist/runtime/static-entry.d.ts.map +1 -1
- package/dist/runtime/static-entry.js +1 -0
- package/dist/runtime/static-entry.js.map +1 -1
- package/dist/runtime/thread-record.d.ts +88 -0
- package/dist/runtime/thread-record.d.ts.map +1 -0
- package/dist/runtime/thread-record.js +213 -0
- package/dist/runtime/thread-record.js.map +1 -0
- package/dist/runtime/types.d.ts +12 -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/types.d.ts +19 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.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 +22 -8
- package/dist/channels/http/reply.d.ts +0 -20
- package/dist/channels/http/reply.d.ts.map +0 -1
- package/dist/channels/http/reply.js +0 -116
- package/dist/channels/http/reply.js.map +0 -1
|
@@ -2,7 +2,7 @@ import type { Run } from "@langchain/langgraph-sdk";
|
|
|
2
2
|
import type { Interrupt } from "langchain";
|
|
3
3
|
import type { ManagedRunContext } from "../../run-context.js";
|
|
4
4
|
import type { ChannelBinding } from "../binding.js";
|
|
5
|
-
import { type StartedIngressRun } from "../../ingress/runs.js";
|
|
5
|
+
import { type MultitaskStrategy, type StartedIngressRun } from "../../ingress/runs.js";
|
|
6
6
|
import type { TriggerChannelResume } from "./types.js";
|
|
7
7
|
/** A terminal Agent Server run status. */
|
|
8
8
|
export type IngressRunStatus = Exclude<Run["status"], "pending" | "running">;
|
|
@@ -15,6 +15,29 @@ export interface ObservedIngressRun {
|
|
|
15
15
|
* except for correlation.
|
|
16
16
|
*/
|
|
17
17
|
export type PendingInterrupt = Interrupt;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the agent has run on a thread: ingress creates a thread only to
|
|
20
|
+
* start a run on it, so one that does not exist never ran. Any other lookup
|
|
21
|
+
* failure propagates.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ingressThreadExists(input: {
|
|
24
|
+
threadId: string;
|
|
25
|
+
sourceProvider: string;
|
|
26
|
+
sourceThreadKey: string;
|
|
27
|
+
userId: string;
|
|
28
|
+
}): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Whether a newer run than `runId` started on its thread, as one does when a
|
|
31
|
+
* newer message replaces it under `interrupt` or `rollback`. Agent Server
|
|
32
|
+
* lists a thread's runs newest first.
|
|
33
|
+
*/
|
|
34
|
+
export declare function newerIngressRun(input: {
|
|
35
|
+
threadId: string;
|
|
36
|
+
runId: string;
|
|
37
|
+
sourceProvider: string;
|
|
38
|
+
sourceThreadKey: string;
|
|
39
|
+
userId: string;
|
|
40
|
+
}): Promise<boolean>;
|
|
18
41
|
/**
|
|
19
42
|
* Parked interrupts on a thread. A thread that does not exist has none.
|
|
20
43
|
*
|
|
@@ -27,6 +50,27 @@ export declare function ingressThreadInterrupts(input: {
|
|
|
27
50
|
sourceThreadKey: string;
|
|
28
51
|
userId: string;
|
|
29
52
|
}): Promise<PendingInterrupt[]>;
|
|
53
|
+
/** The thread an approval answer resumes, and its assistant. */
|
|
54
|
+
export interface ResumeTarget {
|
|
55
|
+
threadId: string;
|
|
56
|
+
assistantId: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The thread whose parked interrupts an answer resumes, and its assistant.
|
|
60
|
+
*
|
|
61
|
+
* A paused async subagent's approval is shown in its lead's channel thread, so
|
|
62
|
+
* its answer arrives for the lead's thread. When the lead holds none of the
|
|
63
|
+
* answered interrupts, a paused subagent thread of the lead's that holds them
|
|
64
|
+
* all is resumed instead. The search runs as the channel's principal.
|
|
65
|
+
*/
|
|
66
|
+
export declare function ingressResumeTarget(input: {
|
|
67
|
+
threadId: string;
|
|
68
|
+
assistantId: string;
|
|
69
|
+
interruptIds: string[];
|
|
70
|
+
sourceProvider: string;
|
|
71
|
+
sourceThreadKey: string;
|
|
72
|
+
userId: string;
|
|
73
|
+
}): Promise<ResumeTarget>;
|
|
30
74
|
/** Create a Trigger-addressed thread and enqueue its run. */
|
|
31
75
|
export declare function startIngressAgent(input: {
|
|
32
76
|
threadId: string;
|
|
@@ -38,6 +82,13 @@ export declare function startIngressAgent(input: {
|
|
|
38
82
|
sourceThreadKey: string;
|
|
39
83
|
/** Agent Auth principal UUID from Trigger `identity_context`. */
|
|
40
84
|
userId: string;
|
|
85
|
+
/** Other state keys to start with. */
|
|
86
|
+
state?: Record<string, unknown>;
|
|
87
|
+
metadata?: Record<string, unknown>;
|
|
88
|
+
/** Where the Agent Server POSTs the finished run. */
|
|
89
|
+
webhook?: string;
|
|
90
|
+
/** What the run does to a run already active on the thread. */
|
|
91
|
+
multitaskStrategy?: MultitaskStrategy;
|
|
41
92
|
}): Promise<StartedIngressRun>;
|
|
42
93
|
/** Resume a Trigger-addressed thread with a keyed interrupt response. */
|
|
43
94
|
export declare function resumeIngressAgent(input: {
|
|
@@ -51,6 +102,24 @@ export declare function resumeIngressAgent(input: {
|
|
|
51
102
|
/** Agent Auth principal UUID from Trigger `identity_context`. */
|
|
52
103
|
userId: string;
|
|
53
104
|
}): Promise<StartedIngressRun>;
|
|
105
|
+
/** Interrupt a Trigger thread's queued and active runs as its owning principal. */
|
|
106
|
+
export declare function cancelIngressThreadRuns(input: {
|
|
107
|
+
threadId: string;
|
|
108
|
+
sourceProvider: string;
|
|
109
|
+
sourceThreadKey: string;
|
|
110
|
+
userId: string;
|
|
111
|
+
}): Promise<number>;
|
|
112
|
+
/**
|
|
113
|
+
* The thread a Trigger conversation runs on: the thread a scheduled run handed
|
|
114
|
+
* to it, else the one its source thread key names.
|
|
115
|
+
*/
|
|
116
|
+
export declare function conversationThreadId(input: {
|
|
117
|
+
sourceProvider: string;
|
|
118
|
+
sourceThreadKey: string;
|
|
119
|
+
userId: string;
|
|
120
|
+
}): Promise<string>;
|
|
121
|
+
/** The thread id a source thread key names. */
|
|
122
|
+
export declare function sourceThreadId(sourceThreadKey: string): string;
|
|
54
123
|
/** Join an accepted Trigger run and read its terminal status. */
|
|
55
124
|
export declare function observeIngressAgent(input: {
|
|
56
125
|
threadId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingress.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/ingress.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ingress.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/ingress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +1,80 @@
|
|
|
1
1
|
/** Trigger principal authentication and status policy for shared ingress runs. */
|
|
2
2
|
import { Client } from "@langchain/langgraph-sdk";
|
|
3
|
+
import { v5 as uuidv5 } from "uuid";
|
|
3
4
|
import { buildIngressRunContext } from "../../ingress/index.js";
|
|
4
5
|
import { resolveLoopbackApiUrl } from "../../identity/loopback.js";
|
|
5
|
-
import {
|
|
6
|
+
import { isRecord } from "../../runtime/managed-thread.js";
|
|
7
|
+
import { cancelIngressRuns, startIngressRun, resumeIngressRun, observeIngressRun, lookupStatus, } from "../../ingress/runs.js";
|
|
6
8
|
import { ChannelError } from "../errors.js";
|
|
9
|
+
import { THREAD_CONVERSATION_METADATA } from "../../runtime/thread-record.js";
|
|
7
10
|
import { USER_HEADER, LANGCHAIN_API_KEY_ENV, AGENT_AUTH_PRINCIPAL_HEADER, SOURCE_PROVIDER_HEADER, SOURCE_THREAD_HEADER, } from "../../runtime/auth.js";
|
|
8
11
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* fresh turn and abandon the checkpoint the answer was meant to resume.
|
|
12
|
+
* Whether the agent has run on a thread: ingress creates a thread only to
|
|
13
|
+
* start a run on it, so one that does not exist never ran. Any other lookup
|
|
14
|
+
* failure propagates.
|
|
13
15
|
*/
|
|
14
|
-
export async function
|
|
16
|
+
export async function ingressThreadExists(input) {
|
|
17
|
+
const client = createTriggerIngressLoopbackClient({
|
|
18
|
+
provider: input.sourceProvider,
|
|
19
|
+
threadKey: input.sourceThreadKey,
|
|
20
|
+
userId: input.userId,
|
|
21
|
+
});
|
|
22
|
+
try {
|
|
23
|
+
await client.threads.get(input.threadId);
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (lookupStatus(error) === 404)
|
|
28
|
+
return false;
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Whether a newer run than `runId` started on its thread, as one does when a
|
|
34
|
+
* newer message replaces it under `interrupt` or `rollback`. Agent Server
|
|
35
|
+
* lists a thread's runs newest first.
|
|
36
|
+
*/
|
|
37
|
+
export async function newerIngressRun(input) {
|
|
15
38
|
const client = createTriggerIngressLoopbackClient({
|
|
16
39
|
provider: input.sourceProvider,
|
|
17
40
|
threadKey: input.sourceThreadKey,
|
|
18
41
|
userId: input.userId,
|
|
19
42
|
});
|
|
43
|
+
const [latest] = await client.runs.list(input.threadId, { limit: 1 });
|
|
44
|
+
return latest !== undefined && latest.run_id !== input.runId;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Parked interrupts on a thread. A thread that does not exist has none.
|
|
48
|
+
*
|
|
49
|
+
* Any other lookup failure propagates: reporting "nothing parked" would start a
|
|
50
|
+
* fresh turn and abandon the checkpoint the answer was meant to resume.
|
|
51
|
+
*/
|
|
52
|
+
export async function ingressThreadInterrupts(input) {
|
|
53
|
+
return threadInterrupts(loopbackClientFor(input), input.threadId);
|
|
54
|
+
}
|
|
55
|
+
async function threadInterrupts(client, threadId) {
|
|
20
56
|
let thread;
|
|
21
57
|
try {
|
|
22
|
-
thread = await client.threads.get(
|
|
58
|
+
thread = await client.threads.get(threadId);
|
|
23
59
|
}
|
|
24
60
|
catch (error) {
|
|
25
61
|
if (lookupStatus(error) === 404)
|
|
26
62
|
return [];
|
|
27
63
|
throw error;
|
|
28
64
|
}
|
|
65
|
+
return parkedInterrupts(thread);
|
|
66
|
+
}
|
|
67
|
+
function parkedIds(interrupts) {
|
|
68
|
+
return new Set(interrupts.flatMap(({ id }) => (id ? [id] : [])));
|
|
69
|
+
}
|
|
70
|
+
function loopbackClientFor(input) {
|
|
71
|
+
return createTriggerIngressLoopbackClient({
|
|
72
|
+
provider: input.sourceProvider,
|
|
73
|
+
threadKey: input.sourceThreadKey,
|
|
74
|
+
userId: input.userId,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function parkedInterrupts(thread) {
|
|
29
78
|
const pending = [];
|
|
30
79
|
// Keyed by task id; resume keys on the interrupt id alone.
|
|
31
80
|
for (const entries of Object.values(thread.interrupts ?? {})) {
|
|
@@ -39,6 +88,55 @@ export async function ingressThreadInterrupts(input) {
|
|
|
39
88
|
}
|
|
40
89
|
return pending;
|
|
41
90
|
}
|
|
91
|
+
/** Thread metadata deepagents sets on an async subagent's thread, naming its lead's thread. */
|
|
92
|
+
const PARENT_THREAD_METADATA_KEY = "parent_thread_id";
|
|
93
|
+
/** Most paused subagent threads of one lead searched for an answered interrupt. */
|
|
94
|
+
const SUBAGENT_SEARCH_LIMIT = 100;
|
|
95
|
+
/**
|
|
96
|
+
* The thread whose parked interrupts an answer resumes, and its assistant.
|
|
97
|
+
*
|
|
98
|
+
* A paused async subagent's approval is shown in its lead's channel thread, so
|
|
99
|
+
* its answer arrives for the lead's thread. When the lead holds none of the
|
|
100
|
+
* answered interrupts, a paused subagent thread of the lead's that holds them
|
|
101
|
+
* all is resumed instead. The search runs as the channel's principal.
|
|
102
|
+
*/
|
|
103
|
+
export async function ingressResumeTarget(input) {
|
|
104
|
+
const lead = { threadId: input.threadId, assistantId: input.assistantId };
|
|
105
|
+
const answered = new Set(input.interruptIds);
|
|
106
|
+
if (answered.size === 0)
|
|
107
|
+
return lead;
|
|
108
|
+
const client = loopbackClientFor(input);
|
|
109
|
+
const leadIds = parkedIds(await threadInterrupts(client, input.threadId));
|
|
110
|
+
if ([...answered].some((id) => leadIds.has(id)))
|
|
111
|
+
return lead;
|
|
112
|
+
const threads = await client.threads.search({
|
|
113
|
+
metadata: { [PARENT_THREAD_METADATA_KEY]: input.threadId },
|
|
114
|
+
status: "interrupted",
|
|
115
|
+
limit: SUBAGENT_SEARCH_LIMIT,
|
|
116
|
+
});
|
|
117
|
+
for (const thread of threads) {
|
|
118
|
+
const target = subagentTarget(thread, input.threadId, answered);
|
|
119
|
+
if (target)
|
|
120
|
+
return target;
|
|
121
|
+
}
|
|
122
|
+
return lead;
|
|
123
|
+
}
|
|
124
|
+
/** A searched thread as a resume target, if it is the lead's and holds every answer. */
|
|
125
|
+
function subagentTarget(thread, leadThreadId, answered) {
|
|
126
|
+
const metadata = isRecord(thread.metadata) ? thread.metadata : {};
|
|
127
|
+
if (metadata[PARENT_THREAD_METADATA_KEY] !== leadThreadId ||
|
|
128
|
+
thread.thread_id === leadThreadId) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
const parked = parkedIds(parkedInterrupts(thread));
|
|
132
|
+
if (![...answered].every((id) => parked.has(id)))
|
|
133
|
+
return undefined;
|
|
134
|
+
// The Agent Server stamps the thread with the assistant of its latest run.
|
|
135
|
+
const assistant = metadata.assistant_id || metadata.graph_id;
|
|
136
|
+
return typeof assistant === "string" && assistant.trim()
|
|
137
|
+
? { threadId: thread.thread_id, assistantId: assistant }
|
|
138
|
+
: undefined;
|
|
139
|
+
}
|
|
42
140
|
/** Create a Trigger-addressed thread and enqueue its run. */
|
|
43
141
|
export async function startIngressAgent(input) {
|
|
44
142
|
const client = createTriggerIngressLoopbackClient({
|
|
@@ -49,6 +147,7 @@ export async function startIngressAgent(input) {
|
|
|
49
147
|
return startIngressRun(client, {
|
|
50
148
|
...input,
|
|
51
149
|
...buildIngressRunContext(input),
|
|
150
|
+
threadOrigin: { binding: input.binding, senderId: input.userId },
|
|
52
151
|
});
|
|
53
152
|
}
|
|
54
153
|
/** Resume a Trigger-addressed thread with a keyed interrupt response. */
|
|
@@ -61,8 +160,38 @@ export async function resumeIngressAgent(input) {
|
|
|
61
160
|
return resumeIngressRun(client, {
|
|
62
161
|
...input,
|
|
63
162
|
...buildIngressRunContext(input),
|
|
163
|
+
threadOrigin: { binding: input.binding, senderId: input.userId },
|
|
64
164
|
});
|
|
65
165
|
}
|
|
166
|
+
/** Interrupt a Trigger thread's queued and active runs as its owning principal. */
|
|
167
|
+
export async function cancelIngressThreadRuns(input) {
|
|
168
|
+
const client = createTriggerIngressLoopbackClient({
|
|
169
|
+
provider: input.sourceProvider,
|
|
170
|
+
threadKey: input.sourceThreadKey,
|
|
171
|
+
userId: input.userId,
|
|
172
|
+
});
|
|
173
|
+
return (await cancelIngressRuns(client, input.threadId)).length;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* The thread a Trigger conversation runs on: the thread a scheduled run handed
|
|
177
|
+
* to it, else the one its source thread key names.
|
|
178
|
+
*/
|
|
179
|
+
export async function conversationThreadId(input) {
|
|
180
|
+
const client = createTriggerIngressLoopbackClient({
|
|
181
|
+
provider: input.sourceProvider,
|
|
182
|
+
threadKey: input.sourceThreadKey,
|
|
183
|
+
userId: input.userId,
|
|
184
|
+
});
|
|
185
|
+
const [handed] = await client.threads.search({
|
|
186
|
+
metadata: { [THREAD_CONVERSATION_METADATA]: input.sourceThreadKey },
|
|
187
|
+
limit: 1,
|
|
188
|
+
});
|
|
189
|
+
return handed?.thread_id ?? sourceThreadId(input.sourceThreadKey);
|
|
190
|
+
}
|
|
191
|
+
/** The thread id a source thread key names. */
|
|
192
|
+
export function sourceThreadId(sourceThreadKey) {
|
|
193
|
+
return uuidv5(sourceThreadKey, uuidv5.URL);
|
|
194
|
+
}
|
|
66
195
|
/** Join an accepted Trigger run and read its terminal status. */
|
|
67
196
|
export async function observeIngressAgent(input) {
|
|
68
197
|
const client = createTriggerIngressLoopbackClient({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/channels/trigger/ingress.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/channels/trigger/ingress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { type ChannelMessagingAdapter } from "../runtime.js";
|
|
2
2
|
import type { TriggerClientLike } from "./client.js";
|
|
3
|
+
import type { TriggerStartedThread } from "./types.js";
|
|
3
4
|
export declare function createTriggerTransport(client: TriggerClientLike, options?: {
|
|
4
5
|
actionId?: string;
|
|
5
6
|
}): ChannelMessagingAdapter;
|
|
7
|
+
/**
|
|
8
|
+
* Post the first message of a new thread in the target's conversation, and
|
|
9
|
+
* have Trigger follow it. Returns the new thread, unless Trigger cannot name it.
|
|
10
|
+
*/
|
|
11
|
+
export declare function startTriggerThread(client: TriggerClientLike, input: {
|
|
12
|
+
target: unknown;
|
|
13
|
+
text: string;
|
|
14
|
+
actionId: string;
|
|
15
|
+
}): Promise<TriggerStartedThread | undefined>;
|
|
6
16
|
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/transport.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/transport.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,uBAAuB,CAiBzB;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACzD,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,CAY3C"}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
1
|
/** Adapt bound text posts to TriggerClient.postAction; the client owns HTTP. */
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { requireTextContent, } from "../runtime.js";
|
|
4
|
+
import { triggerTargetSchema } from "../../runtime/thread-record.js";
|
|
4
5
|
export function createTriggerTransport(client, options = {}) {
|
|
5
6
|
return {
|
|
6
7
|
async post({ message, target, newThread }) {
|
|
7
8
|
const text = requireTextContent(message);
|
|
8
|
-
|
|
9
|
-
throw new Error("invalid Trigger target");
|
|
10
|
-
const route = target;
|
|
11
|
-
if (typeof route.channel_id !== "string" ||
|
|
12
|
-
typeof route.source_thread_key !== "string" ||
|
|
13
|
-
!route.address ||
|
|
14
|
-
typeof route.address !== "object" ||
|
|
15
|
-
Array.isArray(route.address))
|
|
16
|
-
throw new Error("invalid Trigger target");
|
|
9
|
+
const route = triggerRoute(target);
|
|
17
10
|
const address = { ...route.address };
|
|
18
11
|
if (newThread)
|
|
19
12
|
delete address.thread_id;
|
|
@@ -28,4 +21,27 @@ export function createTriggerTransport(client, options = {}) {
|
|
|
28
21
|
},
|
|
29
22
|
};
|
|
30
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Post the first message of a new thread in the target's conversation, and
|
|
26
|
+
* have Trigger follow it. Returns the new thread, unless Trigger cannot name it.
|
|
27
|
+
*/
|
|
28
|
+
export async function startTriggerThread(client, input) {
|
|
29
|
+
const route = triggerRoute(input.target);
|
|
30
|
+
const address = { ...route.address };
|
|
31
|
+
delete address.thread_id;
|
|
32
|
+
const result = await client.postAction(route.channel_id, {
|
|
33
|
+
type: "post",
|
|
34
|
+
action_id: input.actionId,
|
|
35
|
+
address,
|
|
36
|
+
follow_thread: true,
|
|
37
|
+
message: { text: input.text },
|
|
38
|
+
});
|
|
39
|
+
return result.thread;
|
|
40
|
+
}
|
|
41
|
+
function triggerRoute(target) {
|
|
42
|
+
const route = triggerTargetSchema.safeParse(target);
|
|
43
|
+
if (!route.success)
|
|
44
|
+
throw new Error("invalid Trigger target");
|
|
45
|
+
return route.data;
|
|
46
|
+
}
|
|
31
47
|
//# sourceMappingURL=transport.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/channels/trigger/transport.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAGvB,MAAM,UAAU,sBAAsB,CACpC,MAAyB,EACzB,OAAO,GAA0B,EAAE;IAEnC,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;YACvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACzC,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/channels/trigger/transport.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EACL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAErE,MAAM,UAAU,sBAAsB,CACpC,MAAyB,EACzB,OAAO,GAA0B,EAAE;IAEnC,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;YACvC,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,SAAS;gBAAE,OAAO,OAAO,CAAC,SAAS,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE;gBACvD,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,OAAO,CAAC,QAAQ,IAAI,UAAU,EAAE;gBAC3C,OAAO;gBACP,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBACpE,OAAO,EAAE,EAAE,IAAI,EAAE;aAClB,CAAC,CAAC;YACH,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAyB,EACzB,KAA0D;IAE1D,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,OAAO,OAAO,CAAC,SAAS,CAAC;IACzB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE;QACvD,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,KAAK,CAAC,QAAQ;QACzB,OAAO;QACP,aAAa,EAAE,IAAI;QACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;KAC9B,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;AACvB,CAAC;AAED,SAAS,YAAY,CAAC,MAAe;IACnC,MAAM,KAAK,GAAG,mBAAmB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC"}
|
|
@@ -3,6 +3,8 @@ import type { Interrupt } from "langchain";
|
|
|
3
3
|
import type { ChannelBinding } from "../binding.js";
|
|
4
4
|
import type { NormalizedChannelEvent } from "../../run-context.js";
|
|
5
5
|
import { z } from "zod";
|
|
6
|
+
import type { triggerTargetSchema } from "../../runtime/thread-record.js";
|
|
7
|
+
import type { ChannelActor } from "../actor.js";
|
|
6
8
|
export declare const TRIGGER_SERVICE_KEY_HEADER = "x-service-key";
|
|
7
9
|
/** Preserve provider-owned fields without imposing a provider schema. */
|
|
8
10
|
declare const opaqueObject: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
@@ -16,6 +18,7 @@ declare const messageEventSchema: z.ZodObject<{
|
|
|
16
18
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
17
19
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
18
20
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
21
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
19
22
|
type: z.ZodLiteral<"message">;
|
|
20
23
|
input: z.ZodObject<{
|
|
21
24
|
messages: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
@@ -31,6 +34,7 @@ declare const interruptResumeEventSchema: z.ZodObject<{
|
|
|
31
34
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
32
35
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
33
36
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
37
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
34
38
|
type: z.ZodLiteral<"interrupt_resume">;
|
|
35
39
|
interaction: z.ZodObject<{
|
|
36
40
|
type: z.ZodLiteral<"interrupt_resume">;
|
|
@@ -47,6 +51,7 @@ declare const slackUserPromptResponseEventSchema: z.ZodObject<{
|
|
|
47
51
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
48
52
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
49
53
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
54
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
50
55
|
type: z.ZodLiteral<"user_prompt_response">;
|
|
51
56
|
provider: z.ZodLiteral<"slack">;
|
|
52
57
|
interaction: z.ZodObject<{
|
|
@@ -65,6 +70,7 @@ declare const userPromptResponseEventSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
65
70
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
66
71
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
67
72
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
73
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
68
74
|
type: z.ZodLiteral<"user_prompt_response">;
|
|
69
75
|
provider: z.ZodLiteral<"slack">;
|
|
70
76
|
interaction: z.ZodObject<{
|
|
@@ -73,6 +79,23 @@ declare const userPromptResponseEventSchema: z.ZodDiscriminatedUnion<[z.ZodObjec
|
|
|
73
79
|
correlation_id: z.ZodOptional<z.ZodString>;
|
|
74
80
|
}, z.core.$strip>;
|
|
75
81
|
}, z.core.$strip>], "provider">;
|
|
82
|
+
/** A person in the source conversation asked to stop its runs (Slack Stop). */
|
|
83
|
+
declare const runCancelEventSchema: z.ZodObject<{
|
|
84
|
+
version: z.ZodLiteral<"1">;
|
|
85
|
+
event_id: z.ZodString;
|
|
86
|
+
delivery_id: z.ZodString;
|
|
87
|
+
created_at: z.ZodString;
|
|
88
|
+
channel_id: z.ZodString;
|
|
89
|
+
source_thread_key: z.ZodString;
|
|
90
|
+
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
91
|
+
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
92
|
+
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
93
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
94
|
+
type: z.ZodLiteral<"run_cancel">;
|
|
95
|
+
interaction: z.ZodObject<{
|
|
96
|
+
type: z.ZodLiteral<"run_cancel">;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
}, z.core.$strip>;
|
|
76
99
|
declare const eventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
77
100
|
version: z.ZodLiteral<"1">;
|
|
78
101
|
event_id: z.ZodString;
|
|
@@ -83,6 +106,7 @@ declare const eventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
83
106
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
84
107
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
85
108
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
109
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
86
110
|
type: z.ZodLiteral<"message">;
|
|
87
111
|
input: z.ZodObject<{
|
|
88
112
|
messages: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
@@ -97,6 +121,7 @@ declare const eventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
97
121
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
98
122
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
99
123
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
124
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
100
125
|
type: z.ZodLiteral<"interrupt_resume">;
|
|
101
126
|
interaction: z.ZodObject<{
|
|
102
127
|
type: z.ZodLiteral<"interrupt_resume">;
|
|
@@ -112,6 +137,7 @@ declare const eventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
112
137
|
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
113
138
|
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
114
139
|
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
140
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
115
141
|
type: z.ZodLiteral<"user_prompt_response">;
|
|
116
142
|
provider: z.ZodLiteral<"slack">;
|
|
117
143
|
interaction: z.ZodObject<{
|
|
@@ -119,7 +145,22 @@ declare const eventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
119
145
|
value: z.ZodOptional<z.ZodUnknown>;
|
|
120
146
|
correlation_id: z.ZodOptional<z.ZodString>;
|
|
121
147
|
}, z.core.$strip>;
|
|
122
|
-
}, z.core.$strip>], "provider"
|
|
148
|
+
}, z.core.$strip>], "provider">, z.ZodObject<{
|
|
149
|
+
version: z.ZodLiteral<"1">;
|
|
150
|
+
event_id: z.ZodString;
|
|
151
|
+
delivery_id: z.ZodString;
|
|
152
|
+
created_at: z.ZodString;
|
|
153
|
+
channel_id: z.ZodString;
|
|
154
|
+
source_thread_key: z.ZodString;
|
|
155
|
+
address: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
156
|
+
raw_event: z.ZodOptional<z.ZodNullable<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
|
|
157
|
+
identity_context: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
158
|
+
actor: z.ZodOptional<z.ZodUnknown>;
|
|
159
|
+
type: z.ZodLiteral<"run_cancel">;
|
|
160
|
+
interaction: z.ZodObject<{
|
|
161
|
+
type: z.ZodLiteral<"run_cancel">;
|
|
162
|
+
}, z.core.$strip>;
|
|
163
|
+
}, z.core.$strip>], "type">;
|
|
123
164
|
export type TriggerChannelAddress = z.infer<typeof opaqueObject>;
|
|
124
165
|
export type TriggerChannelMessageInput = z.infer<typeof messageEventSchema.shape.input>;
|
|
125
166
|
export type TriggerChannelMessageEvent = z.infer<typeof messageEventSchema>;
|
|
@@ -130,7 +171,10 @@ export type TriggerChannelSlackUserPromptResponseEvent = z.infer<typeof slackUse
|
|
|
130
171
|
export type TriggerChannelUserPromptResponseEvent = z.infer<typeof userPromptResponseEventSchema>;
|
|
131
172
|
export type TriggerChannelUserPromptResponseInteraction = TriggerChannelSlackUserPromptResponseEvent["interaction"];
|
|
132
173
|
export type TriggerChannelRawEvent = z.infer<typeof opaqueObject>;
|
|
174
|
+
export type TriggerChannelRunCancelEvent = z.infer<typeof runCancelEventSchema>;
|
|
133
175
|
export type TriggerChannelEvent = z.infer<typeof eventSchema>;
|
|
176
|
+
/** Events that start or resume a run on the source thread. */
|
|
177
|
+
export type TriggerChannelRunEvent = Exclude<TriggerChannelEvent, TriggerChannelRunCancelEvent>;
|
|
134
178
|
interface TriggerChannelActionBase {
|
|
135
179
|
action_id: string;
|
|
136
180
|
address: TriggerChannelAddress;
|
|
@@ -142,6 +186,11 @@ export interface TriggerChannelPostAction extends TriggerChannelActionBase {
|
|
|
142
186
|
message: {
|
|
143
187
|
text: string;
|
|
144
188
|
};
|
|
189
|
+
/**
|
|
190
|
+
* On a post that starts a thread, Trigger runs later replies in it, and
|
|
191
|
+
* their input starts after this post.
|
|
192
|
+
*/
|
|
193
|
+
follow_thread?: boolean;
|
|
145
194
|
}
|
|
146
195
|
/**
|
|
147
196
|
* React to the message that triggered the run.
|
|
@@ -159,10 +208,40 @@ export interface TriggerChannelReactAction extends TriggerChannelActionBase {
|
|
|
159
208
|
};
|
|
160
209
|
}
|
|
161
210
|
export type TriggerChannelActionRequest = TriggerChannelPostAction | TriggerChannelReactAction;
|
|
211
|
+
/** The Trigger target of a thread a top-level post started. */
|
|
212
|
+
export type TriggerStartedThread = z.infer<typeof triggerTargetSchema>;
|
|
162
213
|
export interface TriggerChannelActionResponse {
|
|
163
214
|
id: string;
|
|
215
|
+
/** The thread the post started, when it was a top-level post. */
|
|
216
|
+
thread?: TriggerStartedThread;
|
|
217
|
+
}
|
|
218
|
+
export type TriggerChannelRuntimeEventType = "run.started" | "run.completed" | "run.interrupted" | "run.failed"
|
|
219
|
+
/** The run was cancelled (Slack Stop, Studio, or the API) before it finished. */
|
|
220
|
+
| "run.cancelled"
|
|
221
|
+
/** The run's status changed while it works; see {@link TriggerChannelRuntimeStatus}. */
|
|
222
|
+
| "run.thinking";
|
|
223
|
+
/** One step of a run's status, as Slack's plan shows it. */
|
|
224
|
+
export interface TriggerChannelStatusStep {
|
|
225
|
+
title: string;
|
|
226
|
+
status: "pending" | "in_progress" | "complete" | "error";
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* The status a channel set for a run, on `run.started` and `run.thinking`:
|
|
230
|
+
* a line (`message.text`), steps, or both. An older Trigger Server ignores
|
|
231
|
+
* `steps` and `display`.
|
|
232
|
+
*/
|
|
233
|
+
export interface TriggerChannelRuntimeStatus {
|
|
234
|
+
message?: {
|
|
235
|
+
text: string;
|
|
236
|
+
};
|
|
237
|
+
/** At most 50, each title one line of at most 256 characters. */
|
|
238
|
+
steps?: TriggerChannelStatusStep[];
|
|
239
|
+
/**
|
|
240
|
+
* How Slack shows the run's progress, fixed by the event that opens it:
|
|
241
|
+
* `plan` groups it under the status line.
|
|
242
|
+
*/
|
|
243
|
+
display?: "timeline" | "plan";
|
|
164
244
|
}
|
|
165
|
-
export type TriggerChannelRuntimeEventType = "run.started" | "run.completed" | "run.interrupted" | "run.failed";
|
|
166
245
|
/**
|
|
167
246
|
* One pending LangGraph interrupt, forwarded verbatim on `run.interrupted`.
|
|
168
247
|
*
|
|
@@ -187,6 +266,8 @@ export interface TriggerChannelRuntimeEventRequest {
|
|
|
187
266
|
message?: {
|
|
188
267
|
text: string;
|
|
189
268
|
};
|
|
269
|
+
steps?: TriggerChannelRuntimeStatus["steps"];
|
|
270
|
+
display?: TriggerChannelRuntimeStatus["display"];
|
|
190
271
|
/**
|
|
191
272
|
* Present on `run.interrupted`. The Trigger Server cannot read the
|
|
192
273
|
* deployment's threads, so pending interrupts travel on the event itself.
|
|
@@ -205,8 +286,16 @@ export interface TriggerChannelRuntimeEventResponse {
|
|
|
205
286
|
/** Validate the envelope while retaining all original opaque object identities. */
|
|
206
287
|
export declare function parseTriggerChannelEvent(value: unknown): TriggerChannelEvent;
|
|
207
288
|
/** The provider-neutral view of a prompt response, also used as its resume value. */
|
|
289
|
+
/**
|
|
290
|
+
* Who a delivery came from, as Trigger Server verified them from the
|
|
291
|
+
* provider's signed request: for Slack, the user (`subject`) and their own
|
|
292
|
+
* team (`issuer`). `undefined` when the delivery names no one, or someone
|
|
293
|
+
* malformed, or a provider Trigger Server doesn't serve: an older Trigger
|
|
294
|
+
* Server sends none, and a delivery never fails over it.
|
|
295
|
+
*/
|
|
296
|
+
export declare function triggerEventActor(event: TriggerChannelEvent): ChannelActor | undefined;
|
|
208
297
|
export declare function normalizedUserPromptResponse(event: TriggerChannelUserPromptResponseEvent): NormalizedChannelEvent;
|
|
209
298
|
/** Current typed event and private route, without identity tokens. */
|
|
210
|
-
export declare function triggerChannelBinding(event:
|
|
299
|
+
export declare function triggerChannelBinding(event: TriggerChannelRunEvent, provider: string, name: string): ChannelBinding;
|
|
211
300
|
export {};
|
|
212
301
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,IAAI,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/types.ts"],"names":[],"mappings":"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"}
|