managed-deepagents 0.9.6-dev.14 → 0.9.6-dev.15

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 (336) hide show
  1. package/README.md +953 -57
  2. package/dist/agent-auth.d.ts +1 -1
  3. package/dist/agent-auth.d.ts.map +1 -1
  4. package/dist/agent-auth.js +36 -12
  5. package/dist/agent-auth.js.map +1 -1
  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 +24 -0
  11. package/dist/channels/assistant-text.d.ts.map +1 -1
  12. package/dist/channels/assistant-text.js +65 -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 +39 -10
  17. package/dist/channels/binding.js.map +1 -1
  18. package/dist/channels/delivery.d.ts +21 -0
  19. package/dist/channels/delivery.d.ts.map +1 -0
  20. package/dist/channels/delivery.js +196 -0
  21. package/dist/channels/delivery.js.map +1 -0
  22. package/dist/channels/github/connections.d.ts +11 -0
  23. package/dist/channels/github/connections.d.ts.map +1 -0
  24. package/dist/channels/github/connections.js +14 -0
  25. package/dist/channels/github/connections.js.map +1 -0
  26. package/dist/channels/github/index.d.ts +8 -0
  27. package/dist/channels/github/index.d.ts.map +1 -0
  28. package/dist/channels/github/index.js +274 -0
  29. package/dist/channels/github/index.js.map +1 -0
  30. package/dist/channels/github/mentions.d.ts +12 -0
  31. package/dist/channels/github/mentions.d.ts.map +1 -0
  32. package/dist/channels/github/mentions.js +185 -0
  33. package/dist/channels/github/mentions.js.map +1 -0
  34. package/dist/channels/github/schema.d.ts +4165 -0
  35. package/dist/channels/github/schema.d.ts.map +1 -0
  36. package/dist/channels/github/schema.js +221 -0
  37. package/dist/channels/github/schema.js.map +1 -0
  38. package/dist/channels/github/types.d.ts +163 -0
  39. package/dist/channels/github/types.d.ts.map +1 -0
  40. package/dist/channels/github/types.js +2 -0
  41. package/dist/channels/github/types.js.map +1 -0
  42. package/dist/channels/http/endpoint.d.ts +95 -0
  43. package/dist/channels/http/endpoint.d.ts.map +1 -0
  44. package/dist/channels/http/endpoint.js +276 -0
  45. package/dist/channels/http/endpoint.js.map +1 -0
  46. package/dist/channels/http/http.d.ts.map +1 -1
  47. package/dist/channels/http/http.js +386 -65
  48. package/dist/channels/http/http.js.map +1 -1
  49. package/dist/channels/http/index.d.ts +2 -1
  50. package/dist/channels/http/index.d.ts.map +1 -1
  51. package/dist/channels/http/index.js +14 -10
  52. package/dist/channels/http/index.js.map +1 -1
  53. package/dist/channels/http/ingress.d.ts +65 -5
  54. package/dist/channels/http/ingress.d.ts.map +1 -1
  55. package/dist/channels/http/ingress.js +149 -33
  56. package/dist/channels/http/ingress.js.map +1 -1
  57. package/dist/channels/http/provider.d.ts +119 -0
  58. package/dist/channels/http/provider.d.ts.map +1 -0
  59. package/dist/channels/http/provider.js +227 -0
  60. package/dist/channels/http/provider.js.map +1 -0
  61. package/dist/channels/http/studio.d.ts +24 -0
  62. package/dist/channels/http/studio.d.ts.map +1 -0
  63. package/dist/channels/http/studio.js +95 -0
  64. package/dist/channels/http/studio.js.map +1 -0
  65. package/dist/channels/http/threads.d.ts +7 -0
  66. package/dist/channels/http/threads.d.ts.map +1 -0
  67. package/dist/channels/http/threads.js +10 -0
  68. package/dist/channels/http/threads.js.map +1 -0
  69. package/dist/channels/http/types.d.ts +143 -2
  70. package/dist/channels/http/types.d.ts.map +1 -1
  71. package/dist/channels/linear/connections.d.ts +11 -0
  72. package/dist/channels/linear/connections.d.ts.map +1 -0
  73. package/dist/channels/linear/connections.js +14 -0
  74. package/dist/channels/linear/connections.js.map +1 -0
  75. package/dist/channels/linear/graphql.d.ts +57 -0
  76. package/dist/channels/linear/graphql.d.ts.map +1 -0
  77. package/dist/channels/linear/graphql.js +167 -0
  78. package/dist/channels/linear/graphql.js.map +1 -0
  79. package/dist/channels/linear/index.d.ts +9 -0
  80. package/dist/channels/linear/index.d.ts.map +1 -0
  81. package/dist/channels/linear/index.js +489 -0
  82. package/dist/channels/linear/index.js.map +1 -0
  83. package/dist/channels/linear/schema.d.ts +1050 -0
  84. package/dist/channels/linear/schema.d.ts.map +1 -0
  85. package/dist/channels/linear/schema.js +255 -0
  86. package/dist/channels/linear/schema.js.map +1 -0
  87. package/dist/channels/linear/types.d.ts +162 -0
  88. package/dist/channels/linear/types.d.ts.map +1 -0
  89. package/dist/channels/linear/types.js +2 -0
  90. package/dist/channels/linear/types.js.map +1 -0
  91. package/dist/channels/message-schema.d.ts +2 -0
  92. package/dist/channels/message-schema.d.ts.map +1 -1
  93. package/dist/channels/message-schema.js +4 -0
  94. package/dist/channels/message-schema.js.map +1 -1
  95. package/dist/channels/messaging-registry.d.ts +16 -0
  96. package/dist/channels/messaging-registry.d.ts.map +1 -1
  97. package/dist/channels/messaging-registry.js +29 -0
  98. package/dist/channels/messaging-registry.js.map +1 -1
  99. package/dist/channels/reserved-connections.d.ts +12 -0
  100. package/dist/channels/reserved-connections.d.ts.map +1 -0
  101. package/dist/channels/reserved-connections.js +55 -0
  102. package/dist/channels/reserved-connections.js.map +1 -0
  103. package/dist/channels/run-input.d.ts +71 -0
  104. package/dist/channels/run-input.d.ts.map +1 -0
  105. package/dist/channels/run-input.js +155 -0
  106. package/dist/channels/run-input.js.map +1 -0
  107. package/dist/channels/runtime.d.ts +1 -1
  108. package/dist/channels/runtime.d.ts.map +1 -1
  109. package/dist/channels/runtime.js +1 -1
  110. package/dist/channels/runtime.js.map +1 -1
  111. package/dist/channels/schedule-delivery.d.ts +1 -1
  112. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  113. package/dist/channels/schedule-delivery.js +12 -23
  114. package/dist/channels/schedule-delivery.js.map +1 -1
  115. package/dist/channels/slack/api.d.ts +2 -0
  116. package/dist/channels/slack/api.d.ts.map +1 -1
  117. package/dist/channels/slack/api.js +6 -0
  118. package/dist/channels/slack/api.js.map +1 -1
  119. package/dist/channels/slack/connections.d.ts +6 -0
  120. package/dist/channels/slack/connections.d.ts.map +1 -0
  121. package/dist/channels/slack/connections.js +6 -0
  122. package/dist/channels/slack/connections.js.map +1 -0
  123. package/dist/channels/slack/events.d.ts +272 -0
  124. package/dist/channels/slack/events.d.ts.map +1 -0
  125. package/dist/channels/slack/events.js +235 -0
  126. package/dist/channels/slack/events.js.map +1 -0
  127. package/dist/channels/slack/files.d.ts.map +1 -1
  128. package/dist/channels/slack/files.js +2 -3
  129. package/dist/channels/slack/files.js.map +1 -1
  130. package/dist/channels/slack/index.d.ts +76 -2
  131. package/dist/channels/slack/index.d.ts.map +1 -1
  132. package/dist/channels/slack/index.js +177 -6
  133. package/dist/channels/slack/index.js.map +1 -1
  134. package/dist/channels/slack/message-content.d.ts.map +1 -1
  135. package/dist/channels/slack/message-content.js +23 -28
  136. package/dist/channels/slack/message-content.js.map +1 -1
  137. package/dist/channels/slack/status.d.ts +76 -0
  138. package/dist/channels/slack/status.d.ts.map +1 -0
  139. package/dist/channels/slack/status.js +427 -0
  140. package/dist/channels/slack/status.js.map +1 -0
  141. package/dist/channels/source-providers.js +1 -1
  142. package/dist/channels/source-providers.js.map +1 -1
  143. package/dist/channels/trigger/client.d.ts.map +1 -1
  144. package/dist/channels/trigger/client.js +6 -15
  145. package/dist/channels/trigger/client.js.map +1 -1
  146. package/dist/channels/trigger/http.d.ts +114 -3
  147. package/dist/channels/trigger/http.d.ts.map +1 -1
  148. package/dist/channels/trigger/http.js +314 -82
  149. package/dist/channels/trigger/http.js.map +1 -1
  150. package/dist/channels/trigger/identity-context.d.ts +1 -1
  151. package/dist/channels/trigger/identity-context.d.ts.map +1 -1
  152. package/dist/channels/trigger/identity-context.js +2 -3
  153. package/dist/channels/trigger/identity-context.js.map +1 -1
  154. package/dist/channels/trigger/ingress.d.ts +38 -1
  155. package/dist/channels/trigger/ingress.d.ts.map +1 -1
  156. package/dist/channels/trigger/ingress.js +49 -23
  157. package/dist/channels/trigger/ingress.js.map +1 -1
  158. package/dist/channels/trigger/types.d.ts +82 -3
  159. package/dist/channels/trigger/types.d.ts.map +1 -1
  160. package/dist/channels/trigger/types.js +36 -0
  161. package/dist/channels/trigger/types.js.map +1 -1
  162. package/dist/channels/types.d.ts +19 -3
  163. package/dist/channels/types.d.ts.map +1 -1
  164. package/dist/channels/types.js +2 -0
  165. package/dist/channels/types.js.map +1 -1
  166. package/dist/connections.d.ts +31 -0
  167. package/dist/connections.d.ts.map +1 -1
  168. package/dist/connections.js +108 -11
  169. package/dist/connections.js.map +1 -1
  170. package/dist/credential-gate.d.ts +2 -0
  171. package/dist/credential-gate.d.ts.map +1 -1
  172. package/dist/credential-gate.js +37 -3
  173. package/dist/credential-gate.js.map +1 -1
  174. package/dist/define-deep-agent.d.ts.map +1 -1
  175. package/dist/define-deep-agent.js +6 -0
  176. package/dist/define-deep-agent.js.map +1 -1
  177. package/dist/identity/loopback.d.ts +2 -14
  178. package/dist/identity/loopback.d.ts.map +1 -1
  179. package/dist/identity/loopback.js +4 -25
  180. package/dist/identity/loopback.js.map +1 -1
  181. package/dist/identity/slack/links.js +3 -3
  182. package/dist/identity/slack/links.js.map +1 -1
  183. package/dist/index.d.ts +15 -4
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +2 -1
  186. package/dist/index.js.map +1 -1
  187. package/dist/ingress/index.d.ts +0 -8
  188. package/dist/ingress/index.d.ts.map +1 -1
  189. package/dist/ingress/index.js +2 -32
  190. package/dist/ingress/index.js.map +1 -1
  191. package/dist/ingress/loopback.js +4 -4
  192. package/dist/ingress/loopback.js.map +1 -1
  193. package/dist/ingress/runs.d.ts +74 -1
  194. package/dist/ingress/runs.d.ts.map +1 -1
  195. package/dist/ingress/runs.js +176 -16
  196. package/dist/ingress/runs.js.map +1 -1
  197. package/dist/managed-composition.d.ts.map +1 -1
  198. package/dist/managed-composition.js +8 -13
  199. package/dist/managed-composition.js.map +1 -1
  200. package/dist/memory/instructions-middleware.d.ts.map +1 -1
  201. package/dist/memory/instructions-middleware.js +5 -6
  202. package/dist/memory/instructions-middleware.js.map +1 -1
  203. package/dist/namespaces.d.ts +21 -21
  204. package/dist/namespaces.d.ts.map +1 -1
  205. package/dist/namespaces.js +4 -29
  206. package/dist/namespaces.js.map +1 -1
  207. package/dist/runtime/auth.d.ts.map +1 -1
  208. package/dist/runtime/auth.js +151 -21
  209. package/dist/runtime/auth.js.map +1 -1
  210. package/dist/runtime/channel-icon.d.ts +22 -0
  211. package/dist/runtime/channel-icon.d.ts.map +1 -0
  212. package/dist/runtime/channel-icon.js +70 -0
  213. package/dist/runtime/channel-icon.js.map +1 -0
  214. package/dist/runtime/channel.d.ts +6 -0
  215. package/dist/runtime/channel.d.ts.map +1 -1
  216. package/dist/runtime/channel.js.map +1 -1
  217. package/dist/runtime/http.d.ts +0 -15
  218. package/dist/runtime/http.d.ts.map +1 -1
  219. package/dist/runtime/http.js +0 -37
  220. package/dist/runtime/http.js.map +1 -1
  221. package/dist/runtime/identity-http.d.ts +2 -0
  222. package/dist/runtime/identity-http.d.ts.map +1 -1
  223. package/dist/runtime/identity-http.js +40 -16
  224. package/dist/runtime/identity-http.js.map +1 -1
  225. package/dist/runtime/identity-runtime.d.ts +10 -0
  226. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  227. package/dist/runtime/identity-runtime.js +22 -0
  228. package/dist/runtime/identity-runtime.js.map +1 -1
  229. package/dist/runtime/index.d.ts.map +1 -1
  230. package/dist/runtime/index.js +46 -47
  231. package/dist/runtime/index.js.map +1 -1
  232. package/dist/runtime/log.d.ts +14 -8
  233. package/dist/runtime/log.d.ts.map +1 -1
  234. package/dist/runtime/log.js +7 -16
  235. package/dist/runtime/log.js.map +1 -1
  236. package/dist/runtime/managed-middleware.d.ts.map +1 -1
  237. package/dist/runtime/managed-middleware.js +14 -1
  238. package/dist/runtime/managed-middleware.js.map +1 -1
  239. package/dist/runtime/managed-thread.d.ts +60 -0
  240. package/dist/runtime/managed-thread.d.ts.map +1 -0
  241. package/dist/runtime/managed-thread.js +76 -0
  242. package/dist/runtime/managed-thread.js.map +1 -0
  243. package/dist/runtime/managed-tools.d.ts +10 -10
  244. package/dist/runtime/managed-tools.d.ts.map +1 -1
  245. package/dist/runtime/managed-tools.js +24 -24
  246. package/dist/runtime/managed-tools.js.map +1 -1
  247. package/dist/runtime/memory/mounts.d.ts +11 -82
  248. package/dist/runtime/memory/mounts.d.ts.map +1 -1
  249. package/dist/runtime/memory/mounts.js +34 -173
  250. package/dist/runtime/memory/mounts.js.map +1 -1
  251. package/dist/runtime/memory/policy.d.ts.map +1 -1
  252. package/dist/runtime/memory/policy.js +1 -3
  253. package/dist/runtime/memory/policy.js.map +1 -1
  254. package/dist/runtime/run-input.d.ts +10 -0
  255. package/dist/runtime/run-input.d.ts.map +1 -1
  256. package/dist/runtime/run-input.js +47 -19
  257. package/dist/runtime/run-input.js.map +1 -1
  258. package/dist/runtime/sandbox-manager.d.ts +1 -1
  259. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  260. package/dist/runtime/sandbox-manager.js +9 -7
  261. package/dist/runtime/sandbox-manager.js.map +1 -1
  262. package/dist/runtime/schedule-auth.d.ts +17 -0
  263. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  264. package/dist/runtime/schedule-auth.js +41 -3
  265. package/dist/runtime/schedule-auth.js.map +1 -1
  266. package/dist/runtime/selected-skills-backend.d.ts +3 -3
  267. package/dist/runtime/selected-skills-backend.d.ts.map +1 -1
  268. package/dist/runtime/selected-skills-backend.js +5 -5
  269. package/dist/runtime/selected-skills-backend.js.map +1 -1
  270. package/dist/runtime/thread-record.d.ts +81 -0
  271. package/dist/runtime/thread-record.d.ts.map +1 -0
  272. package/dist/runtime/thread-record.js +205 -0
  273. package/dist/runtime/thread-record.js.map +1 -0
  274. package/dist/runtime/types.d.ts +5 -1
  275. package/dist/runtime/types.d.ts.map +1 -1
  276. package/dist/runtime-schedules.d.ts +13 -0
  277. package/dist/runtime-schedules.d.ts.map +1 -1
  278. package/dist/runtime-schedules.js +86 -22
  279. package/dist/runtime-schedules.js.map +1 -1
  280. package/dist/sandbox.d.ts +0 -6
  281. package/dist/sandbox.d.ts.map +1 -1
  282. package/dist/sandbox.js +3 -7
  283. package/dist/sandbox.js.map +1 -1
  284. package/dist/schedule-channel.d.ts +5 -2
  285. package/dist/schedule-channel.d.ts.map +1 -1
  286. package/dist/schedule-channel.js +13 -12
  287. package/dist/schedule-channel.js.map +1 -1
  288. package/dist/telemetry/run-listener.d.ts +1 -1
  289. package/dist/telemetry/run-listener.d.ts.map +1 -1
  290. package/dist/telemetry/run-listener.js +2 -32
  291. package/dist/telemetry/run-listener.js.map +1 -1
  292. package/dist/telemetry/transport/posthog.d.ts +1 -13
  293. package/dist/telemetry/transport/posthog.d.ts.map +1 -1
  294. package/dist/telemetry/transport/posthog.js +30 -68
  295. package/dist/telemetry/transport/posthog.js.map +1 -1
  296. package/dist/values.d.ts +15 -0
  297. package/dist/values.d.ts.map +1 -0
  298. package/dist/values.js +31 -0
  299. package/dist/values.js.map +1 -0
  300. package/package.json +11 -11
  301. package/dist/concurrency/batch-processor.d.ts +0 -51
  302. package/dist/concurrency/batch-processor.d.ts.map +0 -1
  303. package/dist/concurrency/batch-processor.js +0 -99
  304. package/dist/concurrency/batch-processor.js.map +0 -1
  305. package/dist/resilience/retry.d.ts +0 -21
  306. package/dist/resilience/retry.d.ts.map +0 -1
  307. package/dist/resilience/retry.js +0 -40
  308. package/dist/resilience/retry.js.map +0 -1
  309. package/dist/runtime/graph-build-timing.d.ts +0 -30
  310. package/dist/runtime/graph-build-timing.d.ts.map +0 -1
  311. package/dist/runtime/graph-build-timing.js +0 -50
  312. package/dist/runtime/graph-build-timing.js.map +0 -1
  313. package/dist/telemetry/lifecycle.d.ts +0 -26
  314. package/dist/telemetry/lifecycle.d.ts.map +0 -1
  315. package/dist/telemetry/lifecycle.js +0 -49
  316. package/dist/telemetry/lifecycle.js.map +0 -1
  317. package/dist/telemetry/otel/context.d.ts +0 -57
  318. package/dist/telemetry/otel/context.d.ts.map +0 -1
  319. package/dist/telemetry/otel/context.js +0 -122
  320. package/dist/telemetry/otel/context.js.map +0 -1
  321. package/dist/telemetry/otel/exporter.d.ts +0 -53
  322. package/dist/telemetry/otel/exporter.d.ts.map +0 -1
  323. package/dist/telemetry/otel/exporter.js +0 -190
  324. package/dist/telemetry/otel/exporter.js.map +0 -1
  325. package/dist/telemetry/otel/index.d.ts +0 -6
  326. package/dist/telemetry/otel/index.d.ts.map +0 -1
  327. package/dist/telemetry/otel/index.js +0 -3
  328. package/dist/telemetry/otel/index.js.map +0 -1
  329. package/dist/telemetry/otel/otlp.d.ts +0 -44
  330. package/dist/telemetry/otel/otlp.d.ts.map +0 -1
  331. package/dist/telemetry/otel/otlp.js +0 -7
  332. package/dist/telemetry/otel/otlp.js.map +0 -1
  333. package/dist/telemetry/otel/truncate.d.ts +0 -10
  334. package/dist/telemetry/otel/truncate.d.ts.map +0 -1
  335. package/dist/telemetry/otel/truncate.js +0 -39
  336. package/dist/telemetry/otel/truncate.js.map +0 -1
@@ -1,6 +1,10 @@
1
+ import type { Interrupt } from "@langchain/langgraph-sdk";
2
+ import type { MultitaskStrategy } from "../../ingress/runs.js";
1
3
  import { type MessageContent } from "@langchain/core/messages";
2
- import type { ChannelBinding } from "../binding.js";
4
+ import { type ChannelBinding } from "../binding.js";
3
5
  import { type StartedIngressRun } from "../../ingress/runs.js";
6
+ import { type NormalizedRunInput } from "../run-input.js";
7
+ import type { HttpRunStatus } from "./types.js";
4
8
  interface HttpIngressSource {
5
9
  userId: string;
6
10
  sourceThreadKey: string;
@@ -10,12 +14,68 @@ interface HttpIngressSource {
10
14
  interface StartHttpIngressInput extends HttpIngressSource {
11
15
  threadId: string;
12
16
  assistantId: string;
13
- input: MessageContent;
17
+ /** What a new run starts with. */
18
+ input?: MessageContent;
19
+ /** What a new run starts with when there is no `input`, asked only then. */
20
+ prepare?: () => Promise<NormalizedRunInput | undefined>;
14
21
  context?: Record<string, unknown>;
22
+ /** The provider's delivery ID; a thread runs each delivery once. */
23
+ deliveryKey?: string;
24
+ /**
25
+ * What a new turn does while the thread runs: wait for the run
26
+ * (`enqueue`, the default), cancel it (`interrupt` keeps its progress,
27
+ * `rollback` discards it), or start nothing (`reject`).
28
+ */
29
+ multitaskStrategy?: MultitaskStrategy;
15
30
  }
16
- export declare function startHttpIngressAgent(input: StartHttpIngressInput): Promise<StartedIngressRun>;
17
- export declare function observeHttpIngressAgent(input: HttpIngressSource & StartedIngressRun): Promise<StartedIngressRun & {
18
- replyContent: MessageContent | null;
31
+ /** A started run, or why the thread took none: `ignored` when there is nothing to start. */
32
+ export type HttpIngressStart = StartedIngressRun | {
33
+ skipped: "paused";
34
+ /** The paused thread's assistant, for links into LangSmith Studio. */
35
+ assistantId?: string;
36
+ /** What the thread waits on. */
37
+ interrupts: Interrupt[];
38
+ } | {
39
+ skipped: "duplicate" | "busy" | "rejected" | "ignored";
40
+ };
41
+ /** Wait until the thread's queued and running runs have finished. */
42
+ export declare function waitForHttpIngressThread(input: HttpIngressSource & {
43
+ threadId: string;
44
+ }): Promise<void>;
45
+ /** What the thread waits on now, and its assistant, for links into LangSmith Studio. */
46
+ export declare function httpIngressThreadWaitsOn(input: {
47
+ userId: string;
48
+ sourceThreadKey: string;
49
+ sourceProvider: string;
50
+ threadId: string;
51
+ }): Promise<{
52
+ interrupts: Interrupt[];
53
+ assistantId?: string;
19
54
  }>;
55
+ /**
56
+ * Cancel the thread's queued and running runs, keeping their progress.
57
+ * Returns the IDs of the runs it cancelled.
58
+ */
59
+ export declare function cancelHttpIngressRuns(input: {
60
+ userId: string;
61
+ sourceThreadKey: string;
62
+ sourceProvider: string;
63
+ threadId: string;
64
+ }): Promise<string[]>;
65
+ export declare function startHttpIngressAgent(input: StartHttpIngressInput): Promise<HttpIngressStart>;
66
+ /** How a run a channel started ended, in LangGraph's terms. */
67
+ export interface HttpIngressOutcome {
68
+ /** The run's status; one a newer message's `rollback` deleted reads as `interrupted`. */
69
+ status: HttpRunStatus;
70
+ /** The thread's pending interrupts once it ended: what it now waits on. */
71
+ interrupts: Interrupt[];
72
+ /** The thread's assistant, for links into LangSmith Studio. */
73
+ assistantId?: string;
74
+ }
75
+ /**
76
+ * How the run ended, or `undefined` when it hasn't, as observing it stopped
77
+ * while it was still `pending` or `running`: it may still answer.
78
+ */
79
+ export declare function observeHttpIngressAgent(input: HttpIngressSource & StartedIngressRun): Promise<HttpIngressOutcome | undefined>;
20
80
  export {};
21
81
  //# sourceMappingURL=ingress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingress.d.ts","sourceRoot":"","sources":["../../../src/channels/http/ingress.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAKpD,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,cAAc,CAAC;IACxB,cAAc,CAAC,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,UAAU,qBAAsB,SAAQ,iBAAiB;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAiC5B;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,iBAAiB,GAAG,iBAAiB,GAC3C,OAAO,CAAC,iBAAiB,GAAG;IAAE,YAAY,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CAAC,CAmCtE"}
1
+ {"version":3,"file":"ingress.d.ts","sourceRoot":"","sources":["../../../src/channels/http/ingress.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,39 @@
1
1
  /** HTTP content and reply handling around the shared ingress run lifecycle. */
2
2
  import { INTERRUPT } from "@langchain/langgraph";
3
3
  import { HumanMessage, } from "@langchain/core/messages";
4
- import { extractAssistantContent } from "../assistant-text.js";
4
+ import { logger } from "../../runtime/log.js";
5
5
  import { buildIngressRunContext } from "../../ingress/index.js";
6
6
  import { ChannelError } from "../errors.js";
7
- import { validateMessage } from "../runtime.js";
7
+ import { bindingWithMessages } from "../binding.js";
8
8
  import { createIngressLoopbackClient, hasLoopbackCredential, } from "../../ingress/loopback.js";
9
- import { startIngressRun, observeIngressRun, } from "../../ingress/runs.js";
9
+ import { DELIVERY_KEY_METADATA, cancelIngressRuns, ingressThreadState, lookupStatus, rejectedAsBusy, startIngressRun, waitForIdleThread, observeIngressRun, recordThreadDelivery, } from "../../ingress/runs.js";
10
+ import { runStartOptions } from "../run-input.js";
11
+ /** Wait until the thread's queued and running runs have finished. */
12
+ export async function waitForHttpIngressThread(input) {
13
+ const client = createIngressLoopbackClient({
14
+ userId: input.userId,
15
+ sourceThreadKey: input.sourceThreadKey,
16
+ sourceProvider: input.sourceProvider ?? input.binding.provider,
17
+ });
18
+ await waitForIdleThread(client, input.threadId);
19
+ }
20
+ /** What the thread waits on now, and its assistant, for links into LangSmith Studio. */
21
+ export async function httpIngressThreadWaitsOn(input) {
22
+ const client = createIngressLoopbackClient(input);
23
+ const { interrupts, assistantId } = await ingressThreadState(client, input.threadId);
24
+ return { interrupts, ...(assistantId !== undefined && { assistantId }) };
25
+ }
26
+ /**
27
+ * Cancel the thread's queued and running runs, keeping their progress.
28
+ * Returns the IDs of the runs it cancelled.
29
+ */
30
+ export async function cancelHttpIngressRuns(input) {
31
+ if (!hasLoopbackCredential()) {
32
+ throw new ChannelError("channel_run_failed", "managed loopback authentication is not configured");
33
+ }
34
+ const client = createIngressLoopbackClient(input);
35
+ return cancelIngressRuns(client, input.threadId);
36
+ }
10
37
  export async function startHttpIngressAgent(input) {
11
38
  if (!hasLoopbackCredential()) {
12
39
  throw new ChannelError("channel_run_failed", "managed loopback authentication is not configured");
@@ -16,14 +43,81 @@ export async function startHttpIngressAgent(input) {
16
43
  sourceThreadKey: input.sourceThreadKey,
17
44
  sourceProvider: input.sourceProvider ?? input.binding.provider,
18
45
  });
19
- const message = typeof input.input === "string"
20
- ? new HumanMessage(input.input)
46
+ const { state, assistantId, interrupts } = await ingressThreadState(client, input.threadId, input.deliveryKey);
47
+ // A new turn would abandon the decision the thread waits on.
48
+ if (state === "paused")
49
+ return {
50
+ skipped: "paused",
51
+ ...(assistantId !== undefined && { assistantId }),
52
+ interrupts,
53
+ };
54
+ const strategy = input.multitaskStrategy ?? "enqueue";
55
+ // `interrupt` and `rollback` start now and cancel the active run.
56
+ const cancelsActiveRun = strategy === "interrupt" || strategy === "rollback";
57
+ if (state === "busy" && strategy === "reject")
58
+ return { skipped: "rejected" };
59
+ if (state !== "ready" && !(state === "busy" && cancelsActiveRun))
60
+ return { skipped: state };
61
+ const prepared = input.input !== undefined
62
+ ? contentRunInput(input.input)
63
+ : await input.prepare?.();
64
+ if (!prepared)
65
+ return { skipped: "ignored" };
66
+ let started;
67
+ try {
68
+ started = await startIngressRun(client, {
69
+ threadId: input.threadId,
70
+ assistantId: input.assistantId,
71
+ multitaskStrategy: strategy,
72
+ ...runStartOptions(prepared, input.deliveryKey === undefined
73
+ ? {}
74
+ : { [DELIVERY_KEY_METADATA]: input.deliveryKey }),
75
+ threadOrigin: { binding: input.binding, senderId: input.userId },
76
+ ...buildIngressRunContext({
77
+ // The binding already holds a message's content; prepared input
78
+ // replaces it.
79
+ binding: input.input !== undefined
80
+ ? input.binding
81
+ : bindingWithMessages(input.binding, prepared.messages),
82
+ context: prepared.context ?? input.context,
83
+ }),
84
+ });
85
+ }
86
+ catch (error) {
87
+ if (rejectedAsBusy(strategy, error))
88
+ return { skipped: "rejected" };
89
+ throw error;
90
+ }
91
+ await recordRollbackDelivery(client, input);
92
+ return started;
93
+ }
94
+ /**
95
+ * Under `rollback`, record the delivery on its thread: a later message
96
+ * deletes this run with its delivery key, but the thread keeps the key, so a
97
+ * redelivery stays a duplicate.
98
+ */
99
+ async function recordRollbackDelivery(client, input) {
100
+ if (input.multitaskStrategy !== "rollback" || input.deliveryKey === undefined)
101
+ return;
102
+ try {
103
+ await recordThreadDelivery(client, input.threadId, input.deliveryKey);
104
+ }
105
+ catch (error) {
106
+ // The run started; only a redelivery after its rollback would repeat it.
107
+ logger.warn(`channel delivery was not recorded on its thread ${JSON.stringify({
108
+ threadId: input.threadId,
109
+ status: lookupStatus(error),
110
+ })}`);
111
+ }
112
+ }
113
+ /** A message's content as run input. */
114
+ function contentRunInput(content) {
115
+ const message = typeof content === "string"
116
+ ? new HumanMessage(content)
21
117
  : new HumanMessage({
22
- contentBlocks: input.input,
118
+ contentBlocks: content,
23
119
  });
24
- return startIngressRun(client, {
25
- threadId: input.threadId,
26
- assistantId: input.assistantId,
120
+ return {
27
121
  messages: [
28
122
  {
29
123
  role: "human",
@@ -31,41 +125,63 @@ export async function startHttpIngressAgent(input) {
31
125
  response_metadata: message.response_metadata,
32
126
  },
33
127
  ],
34
- ...buildIngressRunContext({
35
- binding: input.binding,
36
- context: input.context,
37
- }),
38
- });
128
+ state: {},
129
+ };
130
+ }
131
+ const ENDED_STATUSES = new Set([
132
+ "success",
133
+ "error",
134
+ "timeout",
135
+ "interrupted",
136
+ ]);
137
+ function isRunStatus(status) {
138
+ return ENDED_STATUSES.has(status);
39
139
  }
140
+ /**
141
+ * How the run ended, or `undefined` when it hasn't, as observing it stopped
142
+ * while it was still `pending` or `running`: it may still answer.
143
+ */
40
144
  export async function observeHttpIngressAgent(input) {
41
145
  const client = createIngressLoopbackClient({
42
146
  userId: input.userId,
43
147
  sourceThreadKey: input.sourceThreadKey,
44
148
  sourceProvider: input.sourceProvider ?? input.binding.provider,
45
149
  });
46
- const { values, status } = await observeIngressRun(client, input);
47
- if (status === "interrupted") {
48
- return { replyContent: null, threadId: input.threadId, runId: input.runId };
150
+ // What the thread waits on now, read only when the run may have stopped on it.
151
+ const waitingOn = async (status) => {
152
+ const { interrupts, assistantId } = await ingressThreadState(client, input.threadId);
153
+ return {
154
+ status,
155
+ interrupts,
156
+ ...(assistantId !== undefined && { assistantId }),
157
+ };
158
+ };
159
+ let observed;
160
+ try {
161
+ observed = await observeIngressRun(client, input);
49
162
  }
50
- if (status !== "success") {
51
- throw new ChannelError("channel_run_failed", "channel run did not complete successfully");
163
+ catch (error) {
164
+ // `rollback` cancels, then deletes, the run a newer message replaced.
165
+ if (lookupStatus(error) !== 404)
166
+ throw error;
167
+ logger.info(`channel run was replaced ${JSON.stringify({ threadId: input.threadId })}`);
168
+ // It was cancelled; what the thread waits on now is the newer run's.
169
+ return waitingOn("interrupted");
52
170
  }
171
+ const { values, status } = observed;
172
+ if (!isRunStatus(status)) {
173
+ logger.warn(`channel run had not ended when observed ${JSON.stringify({ threadId: input.threadId, status })}`);
174
+ return undefined;
175
+ }
176
+ const ended = status;
53
177
  const state = values && typeof values === "object" && !Array.isArray(values)
54
178
  ? values
55
179
  : {};
56
- const interrupts = state[INTERRUPT];
57
- const interrupted = interrupts &&
58
- typeof interrupts === "object" &&
59
- Object.keys(interrupts).length > 0;
60
- const content = interrupted ? null : extractAssistantContent(state);
61
- if (content === null)
62
- return { replyContent: null, threadId: input.threadId, runId: input.runId };
63
- const reply = { type: "content", content };
64
- validateMessage(reply);
65
- return {
66
- replyContent: reply.content,
67
- threadId: input.threadId,
68
- runId: input.runId,
69
- };
180
+ const raised = state[INTERRUPT];
181
+ // A run that stops on `interrupt()` can still end `success`.
182
+ if (ended === "interrupted" ||
183
+ (raised && typeof raised === "object" && Object.keys(raised).length > 0))
184
+ return waitingOn(ended);
185
+ return { status: ended, interrupts: [] };
70
186
  }
71
187
  //# sourceMappingURL=ingress.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/channels/http/ingress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ingress.js","sourceRoot":"","sources":["../../../src/channels/http/ingress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ import type { JsonObject } from "../manifest.js";
2
+ import type { JsonValue } from "../types.js";
3
+ import type { ChannelRunResult } from "../run-input.js";
4
+ import type { HttpChannel } from "./index.js";
5
+ import type { HttpChannelAdapter, HttpFinish, HttpFinishedDelivery } from "./types.js";
6
+ import { type EndpointEvent, type EndpointThread, type EventEndpoint, type EventField } from "./endpoint.js";
7
+ /** The channel's name in the project, or its provider before it has one. */
8
+ export declare function channelName(channel: HttpChannel): string;
9
+ /**
10
+ * Check a channel's `onEvent` keys. The types limit them, but a JavaScript
11
+ * caller or a cast gets no error, and a key nothing dispatches never runs.
12
+ */
13
+ export declare function checkEventKeys(provider: string, handlers: object, supported: ReadonlySet<string>): void;
14
+ /** A channel's event handler, as the channel calls it with the event's thread. */
15
+ export type EventCallback<E, T> = (event: E, thread: T) => EventHandlerResult | Promise<EventHandlerResult>;
16
+ /**
17
+ * A channel's `onEvent` with each endpoint, a URL or `Request`, replaced by
18
+ * the handler it stands for, so the channel calls handlers alone. A bad
19
+ * endpoint, or a value that is neither a handler nor an endpoint, throws when
20
+ * the channel is declared. The endpoint's handler is
21
+ * typed as the channel's own: `E` and `T` carry what it sends, and `fields`
22
+ * are the channel's own fields of `E` it sends beside key, delivery ID and
23
+ * payload, listed in one place per channel.
24
+ */
25
+ export declare function resolveEndpoints<E extends EndpointEvent, T extends EndpointThread, X extends EventField<E> & string = never>(provider: string, onEvent: Readonly<Record<string, EventCallback<E, T> | EventEndpoint | undefined>> | undefined, fields?: readonly X[]): Partial<Record<string, EventCallback<E, T>>>;
26
+ /**
27
+ * A provider channel's `onFinish`: a delivery of one of its events is done,
28
+ * with the event, its thread, and how it finished, to switch on by `type`:
29
+ * the run it started, why it started none, or that MDA lost it; see
30
+ * {@link HttpFinish}.
31
+ */
32
+ export type EventFinished<E, T = EventThread> = (event: E, thread: T, finished: HttpFinish) => void | Promise<void>;
33
+ /** The thread a provider channel's hooks hear about. */
34
+ export interface EventThread {
35
+ id: string;
36
+ channel: {
37
+ name: string;
38
+ };
39
+ }
40
+ /** The thread of a delivery to the channel named `name`. */
41
+ export declare function eventThread(delivery: {
42
+ threadId: string;
43
+ }, name: string): EventThread;
44
+ /**
45
+ * The HTTP channel's `onFinish` for a provider channel: the channel's own
46
+ * notice first, such as a link to a pending decision, then the user's hook,
47
+ * for the deliveries whose event the channel parsed. A failing notice is
48
+ * logged and doesn't keep the user's hook from running.
49
+ */
50
+ export declare function finishEvents<E, T = EventThread>(notice: NonNullable<HttpChannelAdapter["onFinish"]>, onFinish: EventFinished<E, T> | undefined, parse: (rawEvent: JsonValue | undefined) => E | undefined | Promise<E | undefined>, thread: (delivery: HttpFinishedDelivery) => T): HttpChannelAdapter["onFinish"];
51
+ /**
52
+ * A provider channel's `onReceived`: a delivery of one of its events reached
53
+ * its thread, before MDA reads the thread; see `channels.http`'s `onReceived`.
54
+ */
55
+ export type EventReceived<E, T = EventThread> = (event: E, thread: T) => void | Promise<void>;
56
+ /**
57
+ * The HTTP channel's `onReceived` for a provider channel's user hook, for the
58
+ * deliveries whose event the channel parsed.
59
+ */
60
+ export declare function receiveEvents<E>(onReceived: EventReceived<E> | undefined, parse: (rawEvent: JsonValue | undefined) => E | undefined, name: () => string): HttpChannelAdapter["onReceived"];
61
+ /** The events deploy subscribes the provider's webhook to: the handled ones. */
62
+ export declare function handledEventKeys(handlers: object): string[];
63
+ /**
64
+ * The connection `mda deploy` stores for the provider's app, or one of the
65
+ * values stored beside it, such as `webhook-secret`, when `suffix` is given.
66
+ */
67
+ export declare function appConnectionSlug(provider: string, deploymentId: string, suffix?: string): string;
68
+ /**
69
+ * A frozen copy of a parsed event, kept as the delivery's raw event so a
70
+ * handler that changes its argument can't change what MDA keeps.
71
+ */
72
+ export declare function eventSnapshot(event: unknown, provider: string): JsonValue;
73
+ /** App options for deploy, without unset fields. */
74
+ export declare function definedFields(fields: Record<string, JsonValue | undefined>): JsonObject;
75
+ /**
76
+ * Whether `signature`, a hex HMAC-SHA256 the caller checked the format of,
77
+ * signs `rawBody` with `secret`. Compared in constant time.
78
+ */
79
+ export declare function verifyHmacSha256(secret: string, rawBody: Uint8Array, signature: string): boolean;
80
+ /**
81
+ * A value read at most every `ttlMs(value)` milliseconds. Concurrent callers
82
+ * share the read in flight; a failed read is not kept, so the next call reads
83
+ * again.
84
+ */
85
+ export declare class CachedRead<T> {
86
+ #private;
87
+ private readonly read;
88
+ private readonly ttlMs;
89
+ constructor(read: () => Promise<T>, ttlMs: (value: T) => number);
90
+ get(): Promise<T>;
91
+ /** Read again on the next call. */
92
+ reset(): void;
93
+ }
94
+ /**
95
+ * A value `mda deploy` stored for the deployment, such as a webhook secret:
96
+ * the `env` override when set, otherwise the agent secret Agent Auth keeps at
97
+ * `slug(deploymentId)`. Only a missing connection reads as `undefined`, and is
98
+ * logged as `label`; credential store failures propagate.
99
+ */
100
+ export declare function readDeploymentSecret(env: string, slug: (deploymentId: string) => string, label: string): Promise<string | undefined>;
101
+ /** Forget values read from Agent Auth; for tests. */
102
+ export declare function resetDeploymentSecrets(): void;
103
+ /** What an event's handler did: returned run input, skipped, or threw. */
104
+ export type EventHandlerOutcome = {
105
+ type: "input";
106
+ input: ChannelRunResult;
107
+ } | {
108
+ type: "skipped";
109
+ } | {
110
+ type: "failed";
111
+ };
112
+ /** What an event handler returns: run input, or nothing to skip. */
113
+ export type EventHandlerResult = ChannelRunResult | null | undefined | void;
114
+ /** Run an event's handler. A throw is logged, not raised. */
115
+ export declare function runEventHandler(provider: string, event: {
116
+ key: string;
117
+ deliveryId: string;
118
+ }, call: () => EventHandlerResult | Promise<EventHandlerResult>): Promise<EventHandlerOutcome>;
119
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/channels/http/provider.ts"],"names":[],"mappings":"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"}