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.
Files changed (257) hide show
  1. package/README.md +530 -83
  2. package/dist/browser.d.ts +37 -0
  3. package/dist/browser.d.ts.map +1 -0
  4. package/dist/browser.js +31 -0
  5. package/dist/browser.js.map +1 -0
  6. package/dist/channels/actor.d.ts +43 -0
  7. package/dist/channels/actor.d.ts.map +1 -0
  8. package/dist/channels/actor.js +2 -0
  9. package/dist/channels/actor.js.map +1 -0
  10. package/dist/channels/assistant-text.d.ts +29 -0
  11. package/dist/channels/assistant-text.d.ts.map +1 -1
  12. package/dist/channels/assistant-text.js +72 -1
  13. package/dist/channels/assistant-text.js.map +1 -1
  14. package/dist/channels/binding.d.ts +20 -1
  15. package/dist/channels/binding.d.ts.map +1 -1
  16. package/dist/channels/binding.js +44 -11
  17. package/dist/channels/binding.js.map +1 -1
  18. package/dist/channels/delivery.d.ts +36 -0
  19. package/dist/channels/delivery.d.ts.map +1 -0
  20. package/dist/channels/delivery.js +359 -0
  21. package/dist/channels/delivery.js.map +1 -0
  22. package/dist/channels/github/app-setup.d.ts +32 -0
  23. package/dist/channels/github/app-setup.d.ts.map +1 -0
  24. package/dist/channels/github/app-setup.js +146 -0
  25. package/dist/channels/github/app-setup.js.map +1 -0
  26. package/dist/channels/github/index.d.ts.map +1 -1
  27. package/dist/channels/github/index.js +21 -33
  28. package/dist/channels/github/index.js.map +1 -1
  29. package/dist/channels/github/schema.d.ts +50 -1
  30. package/dist/channels/github/schema.d.ts.map +1 -1
  31. package/dist/channels/github/schema.js +12 -0
  32. package/dist/channels/github/schema.js.map +1 -1
  33. package/dist/channels/http/endpoint.d.ts +6 -4
  34. package/dist/channels/http/endpoint.d.ts.map +1 -1
  35. package/dist/channels/http/endpoint.js.map +1 -1
  36. package/dist/channels/http/http.d.ts.map +1 -1
  37. package/dist/channels/http/http.js +4 -10
  38. package/dist/channels/http/http.js.map +1 -1
  39. package/dist/channels/http/index.d.ts +6 -0
  40. package/dist/channels/http/index.d.ts.map +1 -1
  41. package/dist/channels/http/index.js +32 -23
  42. package/dist/channels/http/index.js.map +1 -1
  43. package/dist/channels/http/ingress.d.ts +2 -2
  44. package/dist/channels/http/ingress.d.ts.map +1 -1
  45. package/dist/channels/http/ingress.js +9 -21
  46. package/dist/channels/http/ingress.js.map +1 -1
  47. package/dist/channels/http/provider.d.ts +10 -5
  48. package/dist/channels/http/provider.d.ts.map +1 -1
  49. package/dist/channels/http/provider.js +17 -10
  50. package/dist/channels/http/provider.js.map +1 -1
  51. package/dist/channels/http/studio.d.ts +5 -5
  52. package/dist/channels/http/studio.d.ts.map +1 -1
  53. package/dist/channels/http/studio.js +4 -6
  54. package/dist/channels/http/studio.js.map +1 -1
  55. package/dist/channels/http/types.d.ts +7 -1
  56. package/dist/channels/http/types.d.ts.map +1 -1
  57. package/dist/channels/linear/app-setup.d.ts +29 -0
  58. package/dist/channels/linear/app-setup.d.ts.map +1 -0
  59. package/dist/channels/linear/app-setup.js +102 -0
  60. package/dist/channels/linear/app-setup.js.map +1 -0
  61. package/dist/channels/linear/index.d.ts.map +1 -1
  62. package/dist/channels/linear/index.js +26 -65
  63. package/dist/channels/linear/index.js.map +1 -1
  64. package/dist/channels/linear/schema.d.ts +11 -25
  65. package/dist/channels/linear/schema.d.ts.map +1 -1
  66. package/dist/channels/linear/schema.js +6 -0
  67. package/dist/channels/linear/schema.js.map +1 -1
  68. package/dist/channels/linear/types.d.ts +9 -2
  69. package/dist/channels/linear/types.d.ts.map +1 -1
  70. package/dist/channels/messaging-registry.d.ts +16 -0
  71. package/dist/channels/messaging-registry.d.ts.map +1 -1
  72. package/dist/channels/messaging-registry.js +29 -0
  73. package/dist/channels/messaging-registry.js.map +1 -1
  74. package/dist/channels/reserved-connections.d.ts.map +1 -1
  75. package/dist/channels/reserved-connections.js +10 -0
  76. package/dist/channels/reserved-connections.js.map +1 -1
  77. package/dist/channels/run-input.d.ts +11 -0
  78. package/dist/channels/run-input.d.ts.map +1 -1
  79. package/dist/channels/run-input.js +18 -8
  80. package/dist/channels/run-input.js.map +1 -1
  81. package/dist/channels/runtime.d.ts +5 -2
  82. package/dist/channels/runtime.d.ts.map +1 -1
  83. package/dist/channels/runtime.js +19 -10
  84. package/dist/channels/runtime.js.map +1 -1
  85. package/dist/channels/schedule-delivery.d.ts +2 -13
  86. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  87. package/dist/channels/schedule-delivery.js +6 -73
  88. package/dist/channels/schedule-delivery.js.map +1 -1
  89. package/dist/channels/slack/api.d.ts +2 -0
  90. package/dist/channels/slack/api.d.ts.map +1 -1
  91. package/dist/channels/slack/api.js +6 -0
  92. package/dist/channels/slack/api.js.map +1 -1
  93. package/dist/channels/slack/connections.d.ts +6 -0
  94. package/dist/channels/slack/connections.d.ts.map +1 -0
  95. package/dist/channels/slack/connections.js +6 -0
  96. package/dist/channels/slack/connections.js.map +1 -0
  97. package/dist/channels/slack/events.d.ts +272 -0
  98. package/dist/channels/slack/events.d.ts.map +1 -0
  99. package/dist/channels/slack/events.js +235 -0
  100. package/dist/channels/slack/events.js.map +1 -0
  101. package/dist/channels/slack/files.d.ts.map +1 -1
  102. package/dist/channels/slack/files.js +2 -3
  103. package/dist/channels/slack/files.js.map +1 -1
  104. package/dist/channels/slack/index.d.ts +44 -2
  105. package/dist/channels/slack/index.d.ts.map +1 -1
  106. package/dist/channels/slack/index.js +127 -3
  107. package/dist/channels/slack/index.js.map +1 -1
  108. package/dist/channels/slack/message-content.d.ts.map +1 -1
  109. package/dist/channels/slack/message-content.js +23 -28
  110. package/dist/channels/slack/message-content.js.map +1 -1
  111. package/dist/channels/slack/status.d.ts +76 -0
  112. package/dist/channels/slack/status.d.ts.map +1 -0
  113. package/dist/channels/slack/status.js +427 -0
  114. package/dist/channels/slack/status.js.map +1 -0
  115. package/dist/channels/trigger/client.d.ts.map +1 -1
  116. package/dist/channels/trigger/client.js +6 -9
  117. package/dist/channels/trigger/client.js.map +1 -1
  118. package/dist/channels/trigger/conversation.d.ts +11 -0
  119. package/dist/channels/trigger/conversation.d.ts.map +1 -0
  120. package/dist/channels/trigger/conversation.js +72 -0
  121. package/dist/channels/trigger/conversation.js.map +1 -0
  122. package/dist/channels/trigger/http.d.ts +123 -4
  123. package/dist/channels/trigger/http.d.ts.map +1 -1
  124. package/dist/channels/trigger/http.js +331 -76
  125. package/dist/channels/trigger/http.js.map +1 -1
  126. package/dist/channels/trigger/ingress.d.ts +70 -1
  127. package/dist/channels/trigger/ingress.d.ts.map +1 -1
  128. package/dist/channels/trigger/ingress.js +136 -7
  129. package/dist/channels/trigger/ingress.js.map +1 -1
  130. package/dist/channels/trigger/transport.d.ts +10 -0
  131. package/dist/channels/trigger/transport.d.ts.map +1 -1
  132. package/dist/channels/trigger/transport.js +25 -9
  133. package/dist/channels/trigger/transport.js.map +1 -1
  134. package/dist/channels/trigger/types.d.ts +92 -3
  135. package/dist/channels/trigger/types.d.ts.map +1 -1
  136. package/dist/channels/trigger/types.js +36 -0
  137. package/dist/channels/trigger/types.js.map +1 -1
  138. package/dist/channels/types.d.ts +43 -4
  139. package/dist/channels/types.d.ts.map +1 -1
  140. package/dist/channels/types.js +2 -0
  141. package/dist/channels/types.js.map +1 -1
  142. package/dist/define-deep-agent.d.ts +2 -2
  143. package/dist/define-deep-agent.d.ts.map +1 -1
  144. package/dist/define-deep-agent.js +53 -8
  145. package/dist/define-deep-agent.js.map +1 -1
  146. package/dist/index.d.ts +9 -4
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +2 -1
  149. package/dist/index.js.map +1 -1
  150. package/dist/ingress/runs.d.ts +22 -0
  151. package/dist/ingress/runs.d.ts.map +1 -1
  152. package/dist/ingress/runs.js +45 -1
  153. package/dist/ingress/runs.js.map +1 -1
  154. package/dist/managed-composition.d.ts +3 -0
  155. package/dist/managed-composition.d.ts.map +1 -1
  156. package/dist/managed-composition.js +29 -13
  157. package/dist/managed-composition.js.map +1 -1
  158. package/dist/namespaces.d.ts +0 -21
  159. package/dist/namespaces.d.ts.map +1 -1
  160. package/dist/namespaces.js +0 -29
  161. package/dist/namespaces.js.map +1 -1
  162. package/dist/runtime/async-subagents.d.ts +27 -0
  163. package/dist/runtime/async-subagents.d.ts.map +1 -0
  164. package/dist/runtime/async-subagents.js +139 -0
  165. package/dist/runtime/async-subagents.js.map +1 -0
  166. package/dist/runtime/auth.d.ts +1 -2
  167. package/dist/runtime/auth.d.ts.map +1 -1
  168. package/dist/runtime/auth.js +125 -63
  169. package/dist/runtime/auth.js.map +1 -1
  170. package/dist/runtime/backend.d.ts +7 -0
  171. package/dist/runtime/backend.d.ts.map +1 -1
  172. package/dist/runtime/backend.js +32 -7
  173. package/dist/runtime/backend.js.map +1 -1
  174. package/dist/runtime/browser-facade.d.ts +10 -0
  175. package/dist/runtime/browser-facade.d.ts.map +1 -0
  176. package/dist/runtime/browser-facade.js +23 -0
  177. package/dist/runtime/browser-facade.js.map +1 -0
  178. package/dist/runtime/browser-langsmith.d.ts +108 -0
  179. package/dist/runtime/browser-langsmith.d.ts.map +1 -0
  180. package/dist/runtime/browser-langsmith.js +379 -0
  181. package/dist/runtime/browser-langsmith.js.map +1 -0
  182. package/dist/runtime/browser-selection.d.ts +10 -0
  183. package/dist/runtime/browser-selection.d.ts.map +1 -0
  184. package/dist/runtime/browser-selection.js +21 -0
  185. package/dist/runtime/browser-selection.js.map +1 -0
  186. package/dist/runtime/browser.d.ts +125 -0
  187. package/dist/runtime/browser.d.ts.map +1 -0
  188. package/dist/runtime/browser.js +606 -0
  189. package/dist/runtime/browser.js.map +1 -0
  190. package/dist/runtime/identity-runtime.d.ts +4 -9
  191. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  192. package/dist/runtime/identity-runtime.js +12 -25
  193. package/dist/runtime/identity-runtime.js.map +1 -1
  194. package/dist/runtime/index.d.ts +38 -1
  195. package/dist/runtime/index.d.ts.map +1 -1
  196. package/dist/runtime/index.js +74 -34
  197. package/dist/runtime/index.js.map +1 -1
  198. package/dist/runtime/managed-thread.d.ts +61 -0
  199. package/dist/runtime/managed-thread.d.ts.map +1 -0
  200. package/dist/runtime/managed-thread.js +76 -0
  201. package/dist/runtime/managed-thread.js.map +1 -0
  202. package/dist/runtime/managed-tools.d.ts +10 -2
  203. package/dist/runtime/managed-tools.d.ts.map +1 -1
  204. package/dist/runtime/managed-tools.js +10 -8
  205. package/dist/runtime/managed-tools.js.map +1 -1
  206. package/dist/runtime/memory/policy.d.ts.map +1 -1
  207. package/dist/runtime/memory/policy.js +1 -3
  208. package/dist/runtime/memory/policy.js.map +1 -1
  209. package/dist/runtime/parent-run.d.ts +33 -0
  210. package/dist/runtime/parent-run.d.ts.map +1 -0
  211. package/dist/runtime/parent-run.js +114 -0
  212. package/dist/runtime/parent-run.js.map +1 -0
  213. package/dist/runtime/run-input.d.ts +14 -1
  214. package/dist/runtime/run-input.d.ts.map +1 -1
  215. package/dist/runtime/run-input.js +75 -6
  216. package/dist/runtime/run-input.js.map +1 -1
  217. package/dist/runtime/sandbox-manager.d.ts +14 -1
  218. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  219. package/dist/runtime/sandbox-manager.js +34 -9
  220. package/dist/runtime/sandbox-manager.js.map +1 -1
  221. package/dist/runtime/schedule-auth.d.ts +79 -0
  222. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  223. package/dist/runtime/schedule-auth.js +163 -6
  224. package/dist/runtime/schedule-auth.js.map +1 -1
  225. package/dist/runtime/static-entry.d.ts.map +1 -1
  226. package/dist/runtime/static-entry.js +1 -0
  227. package/dist/runtime/static-entry.js.map +1 -1
  228. package/dist/runtime/thread-record.d.ts +88 -0
  229. package/dist/runtime/thread-record.d.ts.map +1 -0
  230. package/dist/runtime/thread-record.js +213 -0
  231. package/dist/runtime/thread-record.js.map +1 -0
  232. package/dist/runtime/types.d.ts +12 -1
  233. package/dist/runtime/types.d.ts.map +1 -1
  234. package/dist/runtime-schedules.d.ts +13 -0
  235. package/dist/runtime-schedules.d.ts.map +1 -1
  236. package/dist/runtime-schedules.js +83 -20
  237. package/dist/runtime-schedules.js.map +1 -1
  238. package/dist/sandbox.d.ts +0 -6
  239. package/dist/sandbox.d.ts.map +1 -1
  240. package/dist/sandbox.js +3 -7
  241. package/dist/sandbox.js.map +1 -1
  242. package/dist/schedule-channel.d.ts +5 -2
  243. package/dist/schedule-channel.d.ts.map +1 -1
  244. package/dist/schedule-channel.js +13 -12
  245. package/dist/schedule-channel.js.map +1 -1
  246. package/dist/types.d.ts +19 -2
  247. package/dist/types.d.ts.map +1 -1
  248. package/dist/types.js.map +1 -1
  249. package/dist/values.d.ts +15 -0
  250. package/dist/values.d.ts.map +1 -0
  251. package/dist/values.js +31 -0
  252. package/dist/values.js.map +1 -0
  253. package/package.json +22 -8
  254. package/dist/channels/http/reply.d.ts +0 -20
  255. package/dist/channels/http/reply.d.ts.map +0 -1
  256. package/dist/channels/http/reply.js +0 -116
  257. 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":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AASvD,0CAA0C;AAC1C,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC;AAE7E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEzC;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA2B9B;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;IACpC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU7B;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAU7B;AAED,iEAAiE;AACjE,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAc9B"}
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 { startIngressRun, resumeIngressRun, observeIngressRun, lookupStatus, } from "../../ingress/runs.js";
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
- * Parked interrupts on a thread. A thread that does not exist has none.
10
- *
11
- * Any other lookup failure propagates: reporting "nothing parked" would start a
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 ingressThreadInterrupts(input) {
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(input.threadId);
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":"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"}
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;AAErD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,iBAAiB,EACzB,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,uBAAuB,CA+BzB"}
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
- if (!target || typeof target !== "object" || Array.isArray(target))
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,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAChE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,MAIb,CAAC;YACF,IACE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ;gBACpC,OAAO,KAAK,CAAC,iBAAiB,KAAK,QAAQ;gBAC3C,CAAC,KAAK,CAAC,OAAO;gBACd,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBACjC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC;gBAE5B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,EAAE,GAAI,KAAK,CAAC,OAAmC,EAAE,CAAC;YAClE,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"}
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">], "type">;
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: TriggerChannelEvent, provider: string, name: string): ChannelBinding;
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":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/trigger/types.ts"],"names":[],"mappings":"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"}