managed-deepagents 0.10.0-dev.9 → 0.10.0

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 (397) hide show
  1. package/README.md +864 -143
  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 +57 -0
  7. package/dist/channels/actor.d.ts.map +1 -0
  8. package/dist/channels/actor.js +24 -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 +81 -4
  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 +51 -0
  19. package/dist/channels/delivery.d.ts.map +1 -0
  20. package/dist/channels/delivery.js +424 -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 +5 -1
  27. package/dist/channels/github/index.d.ts.map +1 -1
  28. package/dist/channels/github/index.js +38 -46
  29. package/dist/channels/github/index.js.map +1 -1
  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 +271 -0
  35. package/dist/channels/github/schema.d.ts.map +1 -1
  36. package/dist/channels/github/schema.js +33 -0
  37. package/dist/channels/github/schema.js.map +1 -1
  38. package/dist/channels/github/types.d.ts +50 -26
  39. package/dist/channels/github/types.d.ts.map +1 -1
  40. package/dist/channels/http/endpoint.d.ts +137 -0
  41. package/dist/channels/http/endpoint.d.ts.map +1 -0
  42. package/dist/channels/http/endpoint.js +286 -0
  43. package/dist/channels/http/endpoint.js.map +1 -0
  44. package/dist/channels/http/http.d.ts.map +1 -1
  45. package/dist/channels/http/http.js +209 -89
  46. package/dist/channels/http/http.js.map +1 -1
  47. package/dist/channels/http/index.d.ts +7 -1
  48. package/dist/channels/http/index.d.ts.map +1 -1
  49. package/dist/channels/http/index.js +32 -23
  50. package/dist/channels/http/index.js.map +1 -1
  51. package/dist/channels/http/ingress.d.ts +30 -24
  52. package/dist/channels/http/ingress.d.ts.map +1 -1
  53. package/dist/channels/http/ingress.js +61 -57
  54. package/dist/channels/http/ingress.js.map +1 -1
  55. package/dist/channels/http/provider.d.ts +38 -15
  56. package/dist/channels/http/provider.d.ts.map +1 -1
  57. package/dist/channels/http/provider.js +54 -24
  58. package/dist/channels/http/provider.js.map +1 -1
  59. package/dist/channels/http/studio.d.ts +8 -1
  60. package/dist/channels/http/studio.d.ts.map +1 -1
  61. package/dist/channels/http/studio.js +13 -0
  62. package/dist/channels/http/studio.js.map +1 -1
  63. package/dist/channels/http/types.d.ts +95 -69
  64. package/dist/channels/http/types.d.ts.map +1 -1
  65. package/dist/channels/linear/app-setup.d.ts +29 -0
  66. package/dist/channels/linear/app-setup.d.ts.map +1 -0
  67. package/dist/channels/linear/app-setup.js +102 -0
  68. package/dist/channels/linear/app-setup.js.map +1 -0
  69. package/dist/channels/linear/index.d.ts +5 -1
  70. package/dist/channels/linear/index.d.ts.map +1 -1
  71. package/dist/channels/linear/index.js +65 -94
  72. package/dist/channels/linear/index.js.map +1 -1
  73. package/dist/channels/linear/schema.d.ts +11 -25
  74. package/dist/channels/linear/schema.d.ts.map +1 -1
  75. package/dist/channels/linear/schema.js +6 -0
  76. package/dist/channels/linear/schema.js.map +1 -1
  77. package/dist/channels/linear/types.d.ts +37 -31
  78. package/dist/channels/linear/types.d.ts.map +1 -1
  79. package/dist/channels/messaging-registry.d.ts +16 -0
  80. package/dist/channels/messaging-registry.d.ts.map +1 -1
  81. package/dist/channels/messaging-registry.js +29 -0
  82. package/dist/channels/messaging-registry.js.map +1 -1
  83. package/dist/channels/reserved-connections.d.ts.map +1 -1
  84. package/dist/channels/reserved-connections.js +10 -0
  85. package/dist/channels/reserved-connections.js.map +1 -1
  86. package/dist/channels/resolve-user-endpoint.d.ts +34 -0
  87. package/dist/channels/resolve-user-endpoint.d.ts.map +1 -0
  88. package/dist/channels/resolve-user-endpoint.js +51 -0
  89. package/dist/channels/resolve-user-endpoint.js.map +1 -0
  90. package/dist/channels/resolve-user.d.ts +95 -0
  91. package/dist/channels/resolve-user.d.ts.map +1 -0
  92. package/dist/channels/resolve-user.js +143 -0
  93. package/dist/channels/resolve-user.js.map +1 -0
  94. package/dist/channels/run-input.d.ts +46 -4
  95. package/dist/channels/run-input.d.ts.map +1 -1
  96. package/dist/channels/run-input.js +94 -30
  97. package/dist/channels/run-input.js.map +1 -1
  98. package/dist/channels/runtime.d.ts +5 -2
  99. package/dist/channels/runtime.d.ts.map +1 -1
  100. package/dist/channels/runtime.js +19 -10
  101. package/dist/channels/runtime.js.map +1 -1
  102. package/dist/channels/schedule-delivery.d.ts +2 -13
  103. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  104. package/dist/channels/schedule-delivery.js +9 -76
  105. package/dist/channels/schedule-delivery.js.map +1 -1
  106. package/dist/channels/slack/api.d.ts +2 -0
  107. package/dist/channels/slack/api.d.ts.map +1 -1
  108. package/dist/channels/slack/api.js +6 -0
  109. package/dist/channels/slack/api.js.map +1 -1
  110. package/dist/channels/slack/connections.d.ts +6 -0
  111. package/dist/channels/slack/connections.d.ts.map +1 -0
  112. package/dist/channels/slack/connections.js +6 -0
  113. package/dist/channels/slack/connections.js.map +1 -0
  114. package/dist/channels/slack/events.d.ts +278 -0
  115. package/dist/channels/slack/events.d.ts.map +1 -0
  116. package/dist/channels/slack/events.js +235 -0
  117. package/dist/channels/slack/events.js.map +1 -0
  118. package/dist/channels/slack/files.d.ts.map +1 -1
  119. package/dist/channels/slack/files.js +2 -3
  120. package/dist/channels/slack/files.js.map +1 -1
  121. package/dist/channels/slack/index.d.ts +90 -2
  122. package/dist/channels/slack/index.d.ts.map +1 -1
  123. package/dist/channels/slack/index.js +188 -6
  124. package/dist/channels/slack/index.js.map +1 -1
  125. package/dist/channels/slack/message-content.d.ts.map +1 -1
  126. package/dist/channels/slack/message-content.js +23 -28
  127. package/dist/channels/slack/message-content.js.map +1 -1
  128. package/dist/channels/slack/status.d.ts +76 -0
  129. package/dist/channels/slack/status.d.ts.map +1 -0
  130. package/dist/channels/slack/status.js +427 -0
  131. package/dist/channels/slack/status.js.map +1 -0
  132. package/dist/channels/trigger/client.d.ts.map +1 -1
  133. package/dist/channels/trigger/client.js +9 -11
  134. package/dist/channels/trigger/client.js.map +1 -1
  135. package/dist/channels/trigger/conversation.d.ts +11 -0
  136. package/dist/channels/trigger/conversation.d.ts.map +1 -0
  137. package/dist/channels/trigger/conversation.js +72 -0
  138. package/dist/channels/trigger/conversation.js.map +1 -0
  139. package/dist/channels/trigger/http.d.ts +130 -4
  140. package/dist/channels/trigger/http.d.ts.map +1 -1
  141. package/dist/channels/trigger/http.js +419 -82
  142. package/dist/channels/trigger/http.js.map +1 -1
  143. package/dist/channels/trigger/identity-context.d.ts +1 -1
  144. package/dist/channels/trigger/identity-context.d.ts.map +1 -1
  145. package/dist/channels/trigger/identity-context.js +3 -5
  146. package/dist/channels/trigger/identity-context.js.map +1 -1
  147. package/dist/channels/trigger/ingress.d.ts +70 -1
  148. package/dist/channels/trigger/ingress.d.ts.map +1 -1
  149. package/dist/channels/trigger/ingress.js +141 -9
  150. package/dist/channels/trigger/ingress.js.map +1 -1
  151. package/dist/channels/trigger/transport.d.ts +10 -0
  152. package/dist/channels/trigger/transport.d.ts.map +1 -1
  153. package/dist/channels/trigger/transport.js +25 -9
  154. package/dist/channels/trigger/transport.js.map +1 -1
  155. package/dist/channels/trigger/types.d.ts +92 -3
  156. package/dist/channels/trigger/types.d.ts.map +1 -1
  157. package/dist/channels/trigger/types.js +37 -0
  158. package/dist/channels/trigger/types.js.map +1 -1
  159. package/dist/channels/types.d.ts +53 -4
  160. package/dist/channels/types.d.ts.map +1 -1
  161. package/dist/channels/types.js +2 -0
  162. package/dist/channels/types.js.map +1 -1
  163. package/dist/concurrency/batch-processor.d.ts +51 -0
  164. package/dist/concurrency/batch-processor.d.ts.map +1 -0
  165. package/dist/concurrency/batch-processor.js +99 -0
  166. package/dist/concurrency/batch-processor.js.map +1 -0
  167. package/dist/connections.d.ts +5 -12
  168. package/dist/connections.d.ts.map +1 -1
  169. package/dist/connections.js +28 -30
  170. package/dist/connections.js.map +1 -1
  171. package/dist/connectors/mcp/langsmith-url.d.ts.map +1 -1
  172. package/dist/connectors/mcp/langsmith-url.js +0 -1
  173. package/dist/connectors/mcp/langsmith-url.js.map +1 -1
  174. package/dist/credential-gate.js +3 -3
  175. package/dist/credential-gate.js.map +1 -1
  176. package/dist/define-deep-agent.d.ts +2 -2
  177. package/dist/define-deep-agent.d.ts.map +1 -1
  178. package/dist/define-deep-agent.js +53 -2
  179. package/dist/define-deep-agent.js.map +1 -1
  180. package/dist/identity/index.d.ts.map +1 -1
  181. package/dist/identity/index.js +3 -1
  182. package/dist/identity/index.js.map +1 -1
  183. package/dist/identity/loopback.d.ts +7 -2
  184. package/dist/identity/loopback.d.ts.map +1 -1
  185. package/dist/identity/loopback.js +15 -4
  186. package/dist/identity/loopback.js.map +1 -1
  187. package/dist/identity/options.d.ts +9 -0
  188. package/dist/identity/options.d.ts.map +1 -1
  189. package/dist/identity/options.js +1 -1
  190. package/dist/identity/options.js.map +1 -1
  191. package/dist/identity/slack/links.js +3 -2
  192. package/dist/identity/slack/links.js.map +1 -1
  193. package/dist/identity/types.d.ts +3 -0
  194. package/dist/identity/types.d.ts.map +1 -1
  195. package/dist/index.d.ts +15 -5
  196. package/dist/index.d.ts.map +1 -1
  197. package/dist/index.js +2 -1
  198. package/dist/index.js.map +1 -1
  199. package/dist/ingress/index.d.ts +8 -0
  200. package/dist/ingress/index.d.ts.map +1 -1
  201. package/dist/ingress/index.js +32 -2
  202. package/dist/ingress/index.js.map +1 -1
  203. package/dist/ingress/loopback.d.ts +1 -0
  204. package/dist/ingress/loopback.d.ts.map +1 -1
  205. package/dist/ingress/loopback.js +7 -3
  206. package/dist/ingress/loopback.js.map +1 -1
  207. package/dist/ingress/runs.d.ts +27 -1
  208. package/dist/ingress/runs.d.ts.map +1 -1
  209. package/dist/ingress/runs.js +69 -6
  210. package/dist/ingress/runs.js.map +1 -1
  211. package/dist/managed-composition.d.ts +3 -0
  212. package/dist/managed-composition.d.ts.map +1 -1
  213. package/dist/managed-composition.js +29 -13
  214. package/dist/managed-composition.js.map +1 -1
  215. package/dist/memory/instructions-middleware.d.ts.map +1 -1
  216. package/dist/memory/instructions-middleware.js +6 -5
  217. package/dist/memory/instructions-middleware.js.map +1 -1
  218. package/dist/namespaces.d.ts +4 -21
  219. package/dist/namespaces.d.ts.map +1 -1
  220. package/dist/namespaces.js +0 -29
  221. package/dist/namespaces.js.map +1 -1
  222. package/dist/resilience/retry.d.ts +21 -0
  223. package/dist/resilience/retry.d.ts.map +1 -0
  224. package/dist/resilience/retry.js +40 -0
  225. package/dist/resilience/retry.js.map +1 -0
  226. package/dist/runtime/async-subagents.d.ts +27 -0
  227. package/dist/runtime/async-subagents.d.ts.map +1 -0
  228. package/dist/runtime/async-subagents.js +139 -0
  229. package/dist/runtime/async-subagents.js.map +1 -0
  230. package/dist/runtime/auth.d.ts +1 -2
  231. package/dist/runtime/auth.d.ts.map +1 -1
  232. package/dist/runtime/auth.js +138 -72
  233. package/dist/runtime/auth.js.map +1 -1
  234. package/dist/runtime/backend.d.ts +9 -1
  235. package/dist/runtime/backend.d.ts.map +1 -1
  236. package/dist/runtime/backend.js +36 -11
  237. package/dist/runtime/backend.js.map +1 -1
  238. package/dist/runtime/browser-facade.d.ts +10 -0
  239. package/dist/runtime/browser-facade.d.ts.map +1 -0
  240. package/dist/runtime/browser-facade.js +23 -0
  241. package/dist/runtime/browser-facade.js.map +1 -0
  242. package/dist/runtime/browser-langsmith.d.ts +143 -0
  243. package/dist/runtime/browser-langsmith.d.ts.map +1 -0
  244. package/dist/runtime/browser-langsmith.js +507 -0
  245. package/dist/runtime/browser-langsmith.js.map +1 -0
  246. package/dist/runtime/browser-recorder.py +831 -0
  247. package/dist/runtime/browser-selection.d.ts +10 -0
  248. package/dist/runtime/browser-selection.d.ts.map +1 -0
  249. package/dist/runtime/browser-selection.js +21 -0
  250. package/dist/runtime/browser-selection.js.map +1 -0
  251. package/dist/runtime/browser.d.ts +138 -0
  252. package/dist/runtime/browser.d.ts.map +1 -0
  253. package/dist/runtime/browser.js +802 -0
  254. package/dist/runtime/browser.js.map +1 -0
  255. package/dist/runtime/channel-icon.d.ts.map +1 -1
  256. package/dist/runtime/channel-icon.js +18 -7
  257. package/dist/runtime/channel-icon.js.map +1 -1
  258. package/dist/runtime/channel.d.ts +5 -0
  259. package/dist/runtime/channel.d.ts.map +1 -1
  260. package/dist/runtime/channel.js.map +1 -1
  261. package/dist/runtime/graph-build-timing.d.ts +30 -0
  262. package/dist/runtime/graph-build-timing.d.ts.map +1 -0
  263. package/dist/runtime/graph-build-timing.js +50 -0
  264. package/dist/runtime/graph-build-timing.js.map +1 -0
  265. package/dist/runtime/http.d.ts +15 -0
  266. package/dist/runtime/http.d.ts.map +1 -1
  267. package/dist/runtime/http.js +37 -0
  268. package/dist/runtime/http.js.map +1 -1
  269. package/dist/runtime/identity-http.d.ts.map +1 -1
  270. package/dist/runtime/identity-http.js +19 -7
  271. package/dist/runtime/identity-http.js.map +1 -1
  272. package/dist/runtime/identity-runtime.d.ts +4 -9
  273. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  274. package/dist/runtime/identity-runtime.js +12 -25
  275. package/dist/runtime/identity-runtime.js.map +1 -1
  276. package/dist/runtime/index.d.ts +38 -1
  277. package/dist/runtime/index.d.ts.map +1 -1
  278. package/dist/runtime/index.js +104 -52
  279. package/dist/runtime/index.js.map +1 -1
  280. package/dist/runtime/langsmith-env.d.ts +19 -0
  281. package/dist/runtime/langsmith-env.d.ts.map +1 -0
  282. package/dist/runtime/langsmith-env.js +38 -0
  283. package/dist/runtime/langsmith-env.js.map +1 -0
  284. package/dist/runtime/log.d.ts +8 -14
  285. package/dist/runtime/log.d.ts.map +1 -1
  286. package/dist/runtime/log.js +16 -7
  287. package/dist/runtime/log.js.map +1 -1
  288. package/dist/runtime/managed-middleware.d.ts.map +1 -1
  289. package/dist/runtime/managed-middleware.js +1 -14
  290. package/dist/runtime/managed-middleware.js.map +1 -1
  291. package/dist/runtime/managed-thread.d.ts +61 -0
  292. package/dist/runtime/managed-thread.d.ts.map +1 -0
  293. package/dist/runtime/managed-thread.js +76 -0
  294. package/dist/runtime/managed-thread.js.map +1 -0
  295. package/dist/runtime/managed-tools.d.ts +18 -2
  296. package/dist/runtime/managed-tools.d.ts.map +1 -1
  297. package/dist/runtime/managed-tools.js +26 -22
  298. package/dist/runtime/managed-tools.js.map +1 -1
  299. package/dist/runtime/memory/mounts.d.ts +82 -11
  300. package/dist/runtime/memory/mounts.d.ts.map +1 -1
  301. package/dist/runtime/memory/mounts.js +173 -34
  302. package/dist/runtime/memory/mounts.js.map +1 -1
  303. package/dist/runtime/memory/policy.d.ts.map +1 -1
  304. package/dist/runtime/memory/policy.js +1 -3
  305. package/dist/runtime/memory/policy.js.map +1 -1
  306. package/dist/runtime/parent-run.d.ts +33 -0
  307. package/dist/runtime/parent-run.d.ts.map +1 -0
  308. package/dist/runtime/parent-run.js +114 -0
  309. package/dist/runtime/parent-run.js.map +1 -0
  310. package/dist/runtime/run-input.d.ts +14 -1
  311. package/dist/runtime/run-input.d.ts.map +1 -1
  312. package/dist/runtime/run-input.js +118 -7
  313. package/dist/runtime/run-input.js.map +1 -1
  314. package/dist/runtime/sandbox-manager.d.ts +31 -17
  315. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  316. package/dist/runtime/sandbox-manager.js +112 -70
  317. package/dist/runtime/sandbox-manager.js.map +1 -1
  318. package/dist/runtime/schedule-auth.d.ts +79 -0
  319. package/dist/runtime/schedule-auth.d.ts.map +1 -1
  320. package/dist/runtime/schedule-auth.js +165 -7
  321. package/dist/runtime/schedule-auth.js.map +1 -1
  322. package/dist/runtime/selected-skills-backend.d.ts +3 -3
  323. package/dist/runtime/selected-skills-backend.d.ts.map +1 -1
  324. package/dist/runtime/selected-skills-backend.js +5 -5
  325. package/dist/runtime/selected-skills-backend.js.map +1 -1
  326. package/dist/runtime/static-entry.d.ts.map +1 -1
  327. package/dist/runtime/static-entry.js +1 -0
  328. package/dist/runtime/static-entry.js.map +1 -1
  329. package/dist/runtime/thread-record.d.ts +88 -0
  330. package/dist/runtime/thread-record.d.ts.map +1 -0
  331. package/dist/runtime/thread-record.js +213 -0
  332. package/dist/runtime/thread-record.js.map +1 -0
  333. package/dist/runtime/types.d.ts +12 -1
  334. package/dist/runtime/types.d.ts.map +1 -1
  335. package/dist/runtime-schedules.d.ts +15 -0
  336. package/dist/runtime-schedules.d.ts.map +1 -1
  337. package/dist/runtime-schedules.js +85 -23
  338. package/dist/runtime-schedules.js.map +1 -1
  339. package/dist/sandbox.d.ts +0 -6
  340. package/dist/sandbox.d.ts.map +1 -1
  341. package/dist/sandbox.js +3 -7
  342. package/dist/sandbox.js.map +1 -1
  343. package/dist/schedule-channel.d.ts +5 -2
  344. package/dist/schedule-channel.d.ts.map +1 -1
  345. package/dist/schedule-channel.js +13 -12
  346. package/dist/schedule-channel.js.map +1 -1
  347. package/dist/telemetry/lifecycle.d.ts +26 -0
  348. package/dist/telemetry/lifecycle.d.ts.map +1 -0
  349. package/dist/telemetry/lifecycle.js +49 -0
  350. package/dist/telemetry/lifecycle.js.map +1 -0
  351. package/dist/telemetry/metadata.d.ts.map +1 -1
  352. package/dist/telemetry/metadata.js +4 -4
  353. package/dist/telemetry/metadata.js.map +1 -1
  354. package/dist/telemetry/otel/context.d.ts +57 -0
  355. package/dist/telemetry/otel/context.d.ts.map +1 -0
  356. package/dist/telemetry/otel/context.js +122 -0
  357. package/dist/telemetry/otel/context.js.map +1 -0
  358. package/dist/telemetry/otel/exporter.d.ts +53 -0
  359. package/dist/telemetry/otel/exporter.d.ts.map +1 -0
  360. package/dist/telemetry/otel/exporter.js +190 -0
  361. package/dist/telemetry/otel/exporter.js.map +1 -0
  362. package/dist/telemetry/otel/index.d.ts +6 -0
  363. package/dist/telemetry/otel/index.d.ts.map +1 -0
  364. package/dist/telemetry/otel/index.js +3 -0
  365. package/dist/telemetry/otel/index.js.map +1 -0
  366. package/dist/telemetry/otel/otlp.d.ts +44 -0
  367. package/dist/telemetry/otel/otlp.d.ts.map +1 -0
  368. package/dist/telemetry/otel/otlp.js +7 -0
  369. package/dist/telemetry/otel/otlp.js.map +1 -0
  370. package/dist/telemetry/otel/truncate.d.ts +10 -0
  371. package/dist/telemetry/otel/truncate.d.ts.map +1 -0
  372. package/dist/telemetry/otel/truncate.js +39 -0
  373. package/dist/telemetry/otel/truncate.js.map +1 -0
  374. package/dist/telemetry/run-listener.d.ts +1 -1
  375. package/dist/telemetry/run-listener.d.ts.map +1 -1
  376. package/dist/telemetry/run-listener.js +32 -2
  377. package/dist/telemetry/run-listener.js.map +1 -1
  378. package/dist/telemetry/transport/posthog.d.ts +13 -1
  379. package/dist/telemetry/transport/posthog.d.ts.map +1 -1
  380. package/dist/telemetry/transport/posthog.js +68 -30
  381. package/dist/telemetry/transport/posthog.js.map +1 -1
  382. package/dist/types.d.ts +19 -2
  383. package/dist/types.d.ts.map +1 -1
  384. package/dist/types.js.map +1 -1
  385. package/dist/values.d.ts +15 -0
  386. package/dist/values.d.ts.map +1 -0
  387. package/dist/values.js +31 -0
  388. package/dist/values.js.map +1 -0
  389. package/package.json +26 -12
  390. package/dist/channels/http/forward.d.ts +0 -13
  391. package/dist/channels/http/forward.d.ts.map +0 -1
  392. package/dist/channels/http/forward.js +0 -128
  393. package/dist/channels/http/forward.js.map +0 -1
  394. package/dist/channels/http/reply.d.ts +0 -20
  395. package/dist/channels/http/reply.d.ts.map +0 -1
  396. package/dist/channels/http/reply.js +0 -116
  397. package/dist/channels/http/reply.js.map +0 -1
@@ -1,8 +1,11 @@
1
1
  import type { z } from "zod";
2
2
  import type { MultitaskStrategy } from "../../ingress/runs.js";
3
- import type { githubEventSchema } from "./schema.js";
3
+ import type { ENDPOINT_EVENT_FIELDS, githubEventSchema } from "./schema.js";
4
4
  import type { ChannelRunResult } from "../run-input.js";
5
- import type { EventForward, EventSettled } from "../http/provider.js";
5
+ import type { GitHubActor } from "../actor.js";
6
+ import type { ResolveUser } from "../resolve-user.js";
7
+ import type { EventFinished, EventReceived } from "../http/provider.js";
8
+ import type { EndpointRequest, EventEndpoint } from "../http/endpoint.js";
6
9
  /** Handwritten schema subsets; unmodeled provider fields remain unknown. */
7
10
  type EventUnion = z.output<typeof githubEventSchema>;
8
11
  export type SupportedEventKey = EventUnion["key"];
@@ -91,6 +94,11 @@ export interface GitHubChannelOptions {
91
94
  * ```
92
95
  */
93
96
  multitaskStrategy?: MultitaskStrategy;
97
+ /**
98
+ * Map the GitHub sender to one of your users, with a function or an endpoint MDA
99
+ * asks; overrides the identity's.
100
+ */
101
+ resolveUser?: ResolveUser<GitHubActor> | EventEndpoint;
94
102
  /**
95
103
  * Event handlers that start runs. Return a prompt (string, message, or
96
104
  * state), or nothing to skip. While a thread waits on an interrupt, events
@@ -98,49 +106,65 @@ export interface GitHubChannelOptions {
98
106
  * decide whether the issue or pull request is told to continue it in
99
107
  * LangSmith Studio.
100
108
  *
109
+ * A handler may also be an endpoint, a URL or a `Request` carrying headers,
110
+ * to have a service of yours decide: MDA POSTs it the event and its thread,
111
+ * and starts the run it answers with. See the README's "Asking your service
112
+ * what to start".
113
+ *
101
114
  * @example
102
115
  * ```ts
103
- * { "issues.opened": (e) => `Help with #${e.payload.issue.number}` }
116
+ * {
117
+ * "issues.opened": (e) => `Help with #${e.payload.issue.number}`,
118
+ * "issue_comment.created": new Request(`${BACKEND}/github/runs`, {
119
+ * headers: { "x-api-key": process.env.BACKEND_KEY! },
120
+ * }),
121
+ * }
104
122
  * ```
105
123
  */
106
124
  onEvent?: {
107
- [K in SupportedEventKey]?: GitHubEventCallback<K>;
125
+ [K in SupportedEventKey]?: GitHubEventCallback<K> | EventEndpoint;
108
126
  };
109
127
  /**
110
- * More events for the App to receive, beyond the handled ones, to forward
111
- * them: they start nothing here. Deploy subscribes the App to them too.
128
+ * A delivery of a handled event is done, once, with how, to switch on by
129
+ * `type`: the run it started and how that run ended, as LangGraph names it
130
+ * (`run`), why it started none (`skipped`, such as a handler that returned
131
+ * nothing), or that MDA lost it (`failed`); and the decisions the thread
132
+ * waits on. Called after the App's own notices, such
133
+ * as the comment that a decision is pending, in the background; failures
134
+ * are logged. See `channels.http`'s `onFinish` for its limits.
112
135
  *
113
136
  * @example
114
137
  * ```ts
115
- * { events: ["push"], forward: (request) => new Request(url, request) }
138
+ * onFinish: async (event, thread, finished) => {
139
+ * if (finished.type === "run" && finished.run.status === "success")
140
+ * await reportRun(thread.id, finished.run.id);
141
+ * }
116
142
  * ```
117
143
  */
118
- events?: SupportedEventKey[];
144
+ onFinish?: EventFinished<GitHubEvent, GitHubChannelThread>;
119
145
  /**
120
- * Send a delivery on to other services, besides acting on it here: return
121
- * a request, such as `new Request(url, request)`, several, or nothing. It
122
- * is called for every delivery of a handled or received event that the
123
- * channel's filters (repositories, the App's own) keep, with the delivery
124
- * as GitHub sent it, `X-Hub-Signature-256` included, and its parsed event.
125
- * Sent in the background, best effort; see `channels.http`'s `forward`.
126
- */
127
- forward?: EventForward<GitHubEvent>;
128
- /**
129
- * How a delivery of a handled event ended, once: the run it started
130
- * completed, stopped on interrupts, was cancelled, replaced, or failed, or
131
- * why it started none, such as `declined` when its handler returned
132
- * nothing. Called after the App's own notices, such as the comment that a
133
- * decision is pending, in the background; failures are logged. See
134
- * `channels.http`'s `onSettled` for its limits.
146
+ * A delivery of a handled event reached its thread, once, with the event
147
+ * and its thread, before MDA reads the thread or asks the handler: the
148
+ * moment to acknowledge it, such as with a 👀 reaction. It fires even when
149
+ * the thread then waits on an interrupt, or the handler declines, so apply
150
+ * your own filters, such as a mention check. In the background, before
151
+ * `onFinish`; failures are logged and don't stop the run.
135
152
  *
136
153
  * @example
137
154
  * ```ts
138
- * onSettled: async (event, thread, outcome) => {
139
- * if ("runId" in outcome) await reportRun(thread.id, outcome);
155
+ * onReceived: async (event) => {
156
+ * if (event.name === "issue_comment") await reactEyes(event);
140
157
  * }
141
158
  * ```
142
159
  */
143
- onSettled?: EventSettled<GitHubEvent, GitHubChannelThread>;
160
+ onReceived?: EventReceived<GitHubEvent, GitHubChannelThread>;
144
161
  }
162
+ /**
163
+ * What a GitHub channel POSTs an endpoint, for one event key or any: the
164
+ * event's key, delivery ID and payload, and, as a handler gets them, its
165
+ * `action`, `repository`, `sender` and the handles it `mentions`. Those are
166
+ * optional, so a receiver takes requests from older deployments.
167
+ */
168
+ export type GitHubEndpointRequest<K extends SupportedEventKey = SupportedEventKey> = EndpointRequest<GitHubEvent<K>, (typeof ENDPOINT_EVENT_FIELDS)[number]>;
145
169
  export {};
146
170
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/github/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEtE,4EAA4E;AAC5E,KAAK,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACrD,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAClD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,IACrE,OAAO,CAAC,UAAU,EAAE;IAAE,GAAG,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC;AAClC,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,iBAAiB,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,CAAC;AAE3E,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,iBAAiB,IAAI,CAC7D,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,mBAAmB,KACxB,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC;IAC/C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wFAAwF;AACxF,MAAM,WAAW,oBAAoB;IACnC,sEAAsE;IACtE,GAAG,CAAC,EAAE,gBAAgB,CAAC;IACvB;;;;;;;;;;;;;OAaG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,EAAE;SAAG,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;KAAE,CAAC;IAChE;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACpC;;;;;;;;;;;;;;OAcG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;CAC5D"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/channels/github/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ import { z } from "zod";
2
+ import type { ChannelRunResult } from "../run-input.js";
3
+ /**
4
+ * The deployment's env var holding the secret it shares with your services:
5
+ * every endpoint request is signed with it, as Standard Webhooks does.
6
+ * Several, separated by whitespace or commas, each sign the request, for
7
+ * rotation.
8
+ */
9
+ export declare const SERVICE_SECRET_ENV = "MDA_SERVICE_SECRET";
10
+ /**
11
+ * Where an `onEvent` key's events go when a service of yours decides what
12
+ * they start: its URL, or a `Request` that also carries headers, such as a
13
+ * credential the service checks. See {@link endpointHandler}.
14
+ *
15
+ * @experimental This may change in a minor release.
16
+ */
17
+ export type EventEndpoint = string | URL | Request;
18
+ /** The key a Standard Webhooks secret stands for; a malformed one throws. */
19
+ export declare function signingKey(secret: string): Buffer;
20
+ /**
21
+ * The Standard Webhooks headers that sign one request with `keys`: none
22
+ * without a key. Each key signs `<id>.<timestamp>.<body>`.
23
+ */
24
+ export declare function signatureHeaders(keys: readonly Buffer[], id: string, timestamp: number, body: string): Record<string, string>;
25
+ /** A channel's event, by the fields every endpoint is sent. */
26
+ type ChannelEvent = {
27
+ key: string;
28
+ deliveryId: string;
29
+ payload: unknown;
30
+ };
31
+ /** The fields of an event every endpoint is sent. */
32
+ declare const EVENT_FIELDS: readonly ["key", "deliveryId", "payload"];
33
+ /** A field any of a union of events has, such as a field of one kind only. */
34
+ export type EventField<E> = E extends unknown ? keyof E : never;
35
+ /**
36
+ * The event a channel sends its endpoint: the event key, the provider's
37
+ * delivery ID and its payload, and the channel's own fields `X`, such as
38
+ * GitHub's `repository` and `mentions`. A channel's own fields are optional,
39
+ * so a receiver takes requests from a deployment that sends fewer. For a
40
+ * union of events, each is typed by the key, with the fields of `X` it has.
41
+ *
42
+ * @experimental This may change in a minor release.
43
+ */
44
+ export type EndpointEvent<E extends ChannelEvent = ChannelEvent, X extends PropertyKey = never> = E extends unknown ? Pick<E, (typeof EVENT_FIELDS)[number]> & Partial<Pick<E, Extract<X, keyof E>>> : never;
45
+ /**
46
+ * The conversation's thread an endpoint request is about.
47
+ *
48
+ * @experimental This may change in a minor release.
49
+ */
50
+ export interface EndpointThread {
51
+ /** The thread the run starts on, or that waits on an interrupt. */
52
+ id: string;
53
+ channel: {
54
+ name: string;
55
+ };
56
+ /** Set when the thread waits on an interrupt: no run starts, whatever the answer. */
57
+ interrupted?: true;
58
+ }
59
+ /**
60
+ * What a channel POSTs its endpoint: the event, and the thread it belongs to.
61
+ *
62
+ * @experimental This may change in a minor release.
63
+ */
64
+ export interface EndpointRequest<E extends ChannelEvent = ChannelEvent, X extends PropertyKey = never> {
65
+ event: EndpointEvent<E, X>;
66
+ thread: EndpointThread;
67
+ }
68
+ declare const answerSchema: z.ZodObject<{
69
+ input: z.ZodUnion<readonly [z.ZodString, z.ZodRecord<z.ZodString, z.ZodCustom<import("../types.js").JsonValue, import("../types.js").JsonValue>>]>;
70
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodCustom<import("../types.js").JsonValue, import("../types.js").JsonValue>>>;
71
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodCustom<import("../types.js").JsonValue, import("../types.js").JsonValue>>>;
72
+ webhook: z.ZodOptional<z.ZodString>;
73
+ }, z.core.$strict>;
74
+ /**
75
+ * What an endpoint answers: the run's input, as a handler returns it (text,
76
+ * or state such as `{ messages }`), with the run options a handler may set,
77
+ * all JSON. An endpoint answers `null` (or HTTP 204) instead to start nothing.
78
+ * The channel checks an answer against the same schema.
79
+ *
80
+ * @experimental This may change in a minor release.
81
+ */
82
+ export type EndpointAnswer = z.infer<typeof answerSchema>;
83
+ /** The handler an endpoint stands for; see {@link endpointHandler}. */
84
+ export type EndpointCallback<E extends ChannelEvent = ChannelEvent> = (event: E, thread: EndpointThread) => Promise<ChannelRunResult | null>;
85
+ /** Whether a handler is one an endpoint stands for. */
86
+ export declare function isEndpointCallback(handler: unknown): boolean;
87
+ /** Whether an `onEvent` value is an endpoint rather than a handler function. */
88
+ export declare function isEventEndpoint(value: unknown): value is EventEndpoint;
89
+ /**
90
+ * The handler an endpoint stands for. When the event's thread takes a turn,
91
+ * MDA POSTs `{ event: { key, deliveryId, payload }, thread: { id, channel,
92
+ * interrupted? } }` as JSON to the endpoint's URL, with the event's `fields`,
93
+ * the channel's own, beside the payload, and a `Request`'s headers,
94
+ * signed when the deployment has `MDA_SERVICE_SECRET`, and starts the
95
+ * run the service answers with: `{ input, context?, metadata?, webhook? }`.
96
+ * `null` or HTTP 204 starts nothing. A network error before the answer, HTTP
97
+ * 429 or a 5xx is tried again, up to three attempts. Any other answer, one cut
98
+ * off, a redirect, or no answer within 60 seconds fails the handler, as a
99
+ * handler that throws does.
100
+ * The URL is https, or http to a loopback host for local development, without
101
+ * credentials in it.
102
+ *
103
+ * The webhook ID is `msg_<deliveryId>` for the call that starts the run, and
104
+ * `msg_<deliveryId>_interrupted` for the one that asks whether to tell the
105
+ * conversation its thread waits on a decision.
106
+ */
107
+ export declare function endpointHandler<E extends ChannelEvent = ChannelEvent, X extends EventField<E> & string = never>(endpoint: EventEndpoint, label: string, fields?: readonly X[]): EndpointCallback<E>;
108
+ /** How long a service of yours may take, and how often MDA asks it. */
109
+ export interface EndpointLimits {
110
+ /**
111
+ * How long the service may take to answer: each attempt, or, with `total`,
112
+ * all of them and the pauses between.
113
+ */
114
+ timeoutMs: number;
115
+ total?: boolean;
116
+ /**
117
+ * The pauses before trying again after a network error, HTTP 429 or a 5xx,
118
+ * each attempt with the same webhook ID, so a receiver that dedupes on it
119
+ * acts once.
120
+ */
121
+ retryDelaysMs: readonly number[];
122
+ }
123
+ /**
124
+ * Ask a service of yours: POST `body` as JSON, signed as webhook `id`, and
125
+ * return the JSON answer, or `null` for HTTP 204.
126
+ */
127
+ export type AskEndpoint = (id: string, body: string, limits: EndpointLimits) => Promise<unknown>;
128
+ /**
129
+ * The client of a service of yours that `endpoint` names, with a `Request`'s
130
+ * headers, signed when the deployment has `MDA_SERVICE_SECRET`. A bad URL or
131
+ * secret throws here, when the endpoint is declared. Any answer but JSON or
132
+ * HTTP 204, one cut off, a redirect, or a timeout throws; errors call the
133
+ * service `name`, such as `event endpoint`.
134
+ */
135
+ export declare function endpointClient(endpoint: EventEndpoint, label: string, name: string): AskEndpoint;
136
+ export {};
137
+ //# sourceMappingURL=endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../../src/channels/http/endpoint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,286 @@
1
+ /**
2
+ * Endpoints: an `onEvent` or `resolveUser` value that is a URL or a `Request`
3
+ * rather than a function. MDA asks that service of yours what the event starts,
4
+ * or who a delivery runs as, for logic that lives outside the deployment.
5
+ */
6
+ import { createHmac } from "node:crypto";
7
+ import { z } from "zod";
8
+ import { jsonValueSchema } from "../message-schema.js";
9
+ /** An event endpoint's limits: three attempts, each of up to a minute. */
10
+ const EVENT_LIMITS = {
11
+ timeoutMs: 60_000,
12
+ retryDelaysMs: [1_000, 5_000],
13
+ };
14
+ /** The largest answer read; run input may carry images. */
15
+ const MAX_RESPONSE_BYTES = 10 * 1024 * 1024;
16
+ const ANSWER_SHAPE = "event endpoint answer must be null or { input, context?, metadata?, webhook? }";
17
+ /**
18
+ * The deployment's env var holding the secret it shares with your services:
19
+ * every endpoint request is signed with it, as Standard Webhooks does.
20
+ * Several, separated by whitespace or commas, each sign the request, for
21
+ * rotation.
22
+ */
23
+ export const SERVICE_SECRET_ENV = "MDA_SERVICE_SECRET";
24
+ /** Standard Webhooks' optional secret prefix. */
25
+ const SECRET_PREFIX = "whsec_";
26
+ /** The key sizes Standard Webhooks allows, in bytes. */
27
+ const MIN_KEY_BYTES = 24;
28
+ const MAX_KEY_BYTES = 64;
29
+ const SECRET_SHAPE = `${SERVICE_SECRET_ENV} must hold Standard Webhooks secrets: padded base64 of 24 to 64 bytes, optionally prefixed with whsec_`;
30
+ let cachedKeys;
31
+ /** The signing keys `MDA_SERVICE_SECRET` holds; none when it's unset. */
32
+ function signingKeys() {
33
+ const secrets = process.env[SERVICE_SECRET_ENV]?.trim() ?? "";
34
+ if (cachedKeys?.secrets !== secrets)
35
+ cachedKeys = {
36
+ secrets,
37
+ // Stray separators, as rotation leaves behind, name no secret.
38
+ keys: secrets
39
+ .split(/[\s,]+/)
40
+ .filter(Boolean)
41
+ .map(signingKey),
42
+ };
43
+ return cachedKeys.keys;
44
+ }
45
+ /** The key a Standard Webhooks secret stands for; a malformed one throws. */
46
+ export function signingKey(secret) {
47
+ const encoded = secret.startsWith(SECRET_PREFIX)
48
+ ? secret.slice(SECRET_PREFIX.length)
49
+ : secret;
50
+ // Buffer.from skips characters that aren't base64 and missing padding; the
51
+ // round trip refuses both, as Standard Webhooks libraries' decoders do.
52
+ const key = Buffer.from(encoded, "base64");
53
+ if (!encoded ||
54
+ key.toString("base64") !== encoded ||
55
+ key.byteLength < MIN_KEY_BYTES ||
56
+ key.byteLength > MAX_KEY_BYTES)
57
+ throw new TypeError(SECRET_SHAPE);
58
+ return key;
59
+ }
60
+ /**
61
+ * The Standard Webhooks headers that sign one request with `keys`: none
62
+ * without a key. Each key signs `<id>.<timestamp>.<body>`.
63
+ */
64
+ export function signatureHeaders(keys, id, timestamp, body) {
65
+ if (!keys.length)
66
+ return {};
67
+ const signed = `${id}.${timestamp}.${body}`;
68
+ return {
69
+ "webhook-id": id,
70
+ "webhook-timestamp": String(timestamp),
71
+ "webhook-signature": keys
72
+ .map((key) => `v1,${createHmac("sha256", key).update(signed).digest("base64")}`)
73
+ .join(" "),
74
+ };
75
+ }
76
+ /** The fields of an event every endpoint is sent. */
77
+ const EVENT_FIELDS = ["key", "deliveryId", "payload"];
78
+ const answerSchema = z.strictObject({
79
+ /**
80
+ * The run's input: text, or state such as `{ messages }`. Never an array,
81
+ * which a handler's `[input, options]` would be read as.
82
+ */
83
+ input: z.union([z.string(), z.record(z.string(), jsonValueSchema)]),
84
+ /** Run context, as `agent.invoke(input, { context })` takes it. */
85
+ context: z.record(z.string(), jsonValueSchema).optional(),
86
+ /** Metadata for the run; see `ChannelRunOptions`. */
87
+ metadata: z.record(z.string(), jsonValueSchema).optional(),
88
+ /** A URL the Agent Server POSTs the finished run to; see `ChannelRunOptions`. */
89
+ webhook: z.string().optional(),
90
+ });
91
+ /** The handlers endpoints stand for, so a channel knows to answer first. */
92
+ const endpointCallbacks = new WeakSet();
93
+ /** Whether a handler is one an endpoint stands for. */
94
+ export function isEndpointCallback(handler) {
95
+ return typeof handler === "function" && endpointCallbacks.has(handler);
96
+ }
97
+ /** Whether an `onEvent` value is an endpoint rather than a handler function. */
98
+ export function isEventEndpoint(value) {
99
+ return (typeof value === "string" ||
100
+ value instanceof URL ||
101
+ value instanceof Request);
102
+ }
103
+ /**
104
+ * The handler an endpoint stands for. When the event's thread takes a turn,
105
+ * MDA POSTs `{ event: { key, deliveryId, payload }, thread: { id, channel,
106
+ * interrupted? } }` as JSON to the endpoint's URL, with the event's `fields`,
107
+ * the channel's own, beside the payload, and a `Request`'s headers,
108
+ * signed when the deployment has `MDA_SERVICE_SECRET`, and starts the
109
+ * run the service answers with: `{ input, context?, metadata?, webhook? }`.
110
+ * `null` or HTTP 204 starts nothing. A network error before the answer, HTTP
111
+ * 429 or a 5xx is tried again, up to three attempts. Any other answer, one cut
112
+ * off, a redirect, or no answer within 60 seconds fails the handler, as a
113
+ * handler that throws does.
114
+ * The URL is https, or http to a loopback host for local development, without
115
+ * credentials in it.
116
+ *
117
+ * The webhook ID is `msg_<deliveryId>` for the call that starts the run, and
118
+ * `msg_<deliveryId>_interrupted` for the one that asks whether to tell the
119
+ * conversation its thread waits on a decision.
120
+ */
121
+ export function endpointHandler(endpoint, label, fields = []) {
122
+ const ask = endpointClient(endpoint, label, "event endpoint");
123
+ const sent = [...EVENT_FIELDS, ...fields];
124
+ const callback = async (event, thread) => {
125
+ const request = {
126
+ event: pick(event, sent),
127
+ thread: {
128
+ id: thread.id,
129
+ channel: { name: thread.channel.name },
130
+ ...(thread.interrupted && { interrupted: true }),
131
+ },
132
+ };
133
+ const id = `msg_${event.deliveryId}${thread.interrupted ? "_interrupted" : ""}`;
134
+ return runResult(await ask(id, JSON.stringify(request), EVENT_LIMITS));
135
+ };
136
+ endpointCallbacks.add(callback);
137
+ return callback;
138
+ }
139
+ /**
140
+ * The client of a service of yours that `endpoint` names, with a `Request`'s
141
+ * headers, signed when the deployment has `MDA_SERVICE_SECRET`. A bad URL or
142
+ * secret throws here, when the endpoint is declared. Any answer but JSON or
143
+ * HTTP 204, one cut off, a redirect, or a timeout throws; errors call the
144
+ * service `name`, such as `event endpoint`.
145
+ */
146
+ export function endpointClient(endpoint, label, name) {
147
+ const template = endpoint instanceof Request ? endpoint : undefined;
148
+ const target = endpointUrl(template ? template.url : String(endpoint), label);
149
+ // A malformed secret throws when the endpoint is declared, not on each call.
150
+ signingKeys();
151
+ const baseHeaders = new Headers(template?.headers);
152
+ baseHeaders.set("content-type", "application/json");
153
+ baseHeaders.set("accept", "application/json");
154
+ return async (id, body, { timeoutMs, total, retryDelaysMs }) => {
155
+ const deadline = total ? AbortSignal.timeout(timeoutMs) : undefined;
156
+ for (let attempt = 0;; attempt++) {
157
+ const signal = deadline ?? AbortSignal.timeout(timeoutMs);
158
+ const response = await post(target, baseHeaders, id, body, signal).catch((error) => {
159
+ // A timeout isn't tried again: the service may still be acting on it.
160
+ if (attempt < retryDelaysMs.length && !isTimeout(error))
161
+ return undefined;
162
+ throw error;
163
+ });
164
+ if (response?.status === 204) {
165
+ await response.body?.cancel();
166
+ return null;
167
+ }
168
+ if (response?.ok)
169
+ return boundedJson(response, name);
170
+ await response?.body?.cancel();
171
+ if (response &&
172
+ (attempt >= retryDelaysMs.length || !retried(response.status)))
173
+ throw new Error(`${name} answered HTTP ${response.status}`);
174
+ await sleep(retryDelaysMs[attempt]);
175
+ }
176
+ };
177
+ }
178
+ /** The event's `fields`; an absent one stays absent. */
179
+ function pick(event, fields) {
180
+ const picked = {};
181
+ for (const field of fields)
182
+ if (event[field] !== undefined)
183
+ picked[field] = event[field];
184
+ // Every field of `EVENT_FIELDS` is one of `fields`.
185
+ return picked;
186
+ }
187
+ /** One attempt, signed afresh: Standard Webhooks timestamps each. */
188
+ function post(target, baseHeaders, id, body, signal) {
189
+ const headers = new Headers(baseHeaders);
190
+ const signature = signatureHeaders(signingKeys(), id, Math.floor(Date.now() / 1000), body);
191
+ for (const [name, value] of Object.entries(signature))
192
+ headers.set(name, value);
193
+ return fetch(target, {
194
+ method: "POST",
195
+ headers,
196
+ body,
197
+ redirect: "manual",
198
+ signal,
199
+ });
200
+ }
201
+ /** Whether an answer's status is worth trying again. */
202
+ function retried(status) {
203
+ return status === 429 || status >= 500;
204
+ }
205
+ function isTimeout(error) {
206
+ return error instanceof DOMException && error.name === "TimeoutError";
207
+ }
208
+ function sleep(ms) {
209
+ return new Promise((resolve) => setTimeout(resolve, ms));
210
+ }
211
+ /**
212
+ * The endpoint's URL. Plain http only reaches a loopback host: the answer
213
+ * isn't signed, so anyone on the path could write the run's input otherwise.
214
+ */
215
+ function endpointUrl(url, label) {
216
+ let parsed;
217
+ try {
218
+ parsed = new URL(url);
219
+ }
220
+ catch {
221
+ parsed = undefined;
222
+ }
223
+ if (!parsed ||
224
+ !(parsed.protocol === "https:" ||
225
+ (parsed.protocol === "http:" && isLoopback(parsed.hostname))) ||
226
+ parsed.username ||
227
+ parsed.password)
228
+ throw new TypeError(`${label} must be an absolute https URL, or http to localhost, without credentials in it`);
229
+ return parsed.href;
230
+ }
231
+ /** Whether a URL's hostname is this machine. */
232
+ function isLoopback(hostname) {
233
+ return (hostname === "localhost" ||
234
+ hostname.endsWith(".localhost") ||
235
+ hostname === "[::1]" ||
236
+ /^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(hostname));
237
+ }
238
+ /** The answer as JSON, read only up to `MAX_RESPONSE_BYTES`. */
239
+ async function boundedJson(response, name) {
240
+ const declared = Number(response.headers.get("content-length"));
241
+ if (declared > MAX_RESPONSE_BYTES) {
242
+ await response.body?.cancel();
243
+ throw new Error(`${name} answer is too large`);
244
+ }
245
+ const reader = response.body?.getReader();
246
+ const chunks = [];
247
+ let size = 0;
248
+ for (;;) {
249
+ const chunk = await reader?.read();
250
+ if (!chunk || chunk.done)
251
+ break;
252
+ size += chunk.value.byteLength;
253
+ if (size > MAX_RESPONSE_BYTES) {
254
+ await reader?.cancel();
255
+ throw new Error(`${name} answer is too large`);
256
+ }
257
+ chunks.push(chunk.value);
258
+ }
259
+ const text = new TextDecoder().decode(chunks.length === 1 ? chunks[0] : concat(chunks, size));
260
+ try {
261
+ return JSON.parse(text);
262
+ }
263
+ catch {
264
+ throw new Error(`${name} answer is not JSON`);
265
+ }
266
+ }
267
+ function concat(chunks, size) {
268
+ const joined = new Uint8Array(size);
269
+ let offset = 0;
270
+ for (const chunk of chunks) {
271
+ joined.set(chunk, offset);
272
+ offset += chunk.byteLength;
273
+ }
274
+ return joined;
275
+ }
276
+ /** The run the answer names; the channel checks the input and options as a handler's. */
277
+ function runResult(body) {
278
+ const parsed = answerSchema.nullable().safeParse(body);
279
+ if (!parsed.success)
280
+ throw new Error(ANSWER_SHAPE);
281
+ if (parsed.data === null)
282
+ return null;
283
+ const { input, ...options } = parsed.data;
284
+ return [input, options];
285
+ }
286
+ //# sourceMappingURL=endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.js","sourceRoot":"","sources":["../../../src/channels/http/endpoint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/http/http.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,kBAAkB,EAOnB,MAAM,YAAY,CAAC;AAapB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAwCrE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CA4UnB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../src/channels/http/http.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,kBAAkB,EAOnB,MAAM,YAAY,CAAC;AAmBpB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAyCrE,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,oBAAoB,EACzB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,QAAQ,CAAC,CA2cnB"}