managed-deepagents 0.10.0-dev.9 → 0.10.1-dev.1

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
@@ -7,8 +7,22 @@
7
7
  */
8
8
  import type { JsonObject } from "./manifest.js";
9
9
  import type { ChannelMessagingAdapter } from "./runtime.js";
10
+ import type { HttpDelivery } from "./http/types.js";
11
+ import type { JsonValue } from "./types.js";
10
12
  import type { Channel } from "../runtime/channel.js";
11
13
  import type { Connector } from "../runtime/connector.js";
14
+ /**
15
+ * Tells a conversation that its thread waits on a decision. Internal: the
16
+ * built-in GitHub and Linear channels set it; `channels.http()` has none.
17
+ */
18
+ export type PausedNotice = (target: JsonValue, delivery: HttpDelivery, outcome: "interrupted" | "waiting") => Promise<void>;
19
+ /** Give a built-in channel its paused notice. */
20
+ export declare function withPausedNotice<T extends object>(channel: T, notice: PausedNotice): T;
21
+ /**
22
+ * Whether the channel posts a run's final answer: `false` only for one
23
+ * declared with `reply: "none"`, which leaves replying to the agent.
24
+ */
25
+ export declare function channelAutoRepliesForName(name: string): boolean;
12
26
  export declare function channelProviderForName(name: string): string | undefined;
13
27
  export declare function channelProviderConfigForName(name: string): JsonObject | undefined;
14
28
  /** Register messaging factories from collected channels. */
@@ -17,4 +31,6 @@ export declare function registerChannelMessaging(channels: readonly Channel[]):
17
31
  export declare function registerConnectorMessaging(connectors: readonly Connector[]): void;
18
32
  /** Build a transport for a channel/connector file-stem name. */
19
33
  export declare function messagingTransportForName(name: string, env?: NodeJS.ProcessEnv): ChannelMessagingAdapter | undefined;
34
+ /** The paused notice of a channel by file-stem name, if it has one. */
35
+ export declare function pausedNoticeForName(name: string): PausedNotice | undefined;
20
36
  //# sourceMappingURL=messaging-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-registry.d.ts","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAmBzD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX,UAAU,GAAG,SAAS,CAExB;AA+BD,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAE3E;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,IAAI,CAEN;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,GAAG,SAAS,CAErC"}
1
+ {"version":3,"file":"messaging-registry.d.ts","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMzD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,aAAa,GAAG,SAAS,KAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;AAKnB,iDAAiD;AACjD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAC/C,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,YAAY,GACnB,CAAC,CAGH;AAiBD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE/D;AAGD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEvE;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,GACX,UAAU,GAAG,SAAS,CAExB;AAqCD,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI,CAE3E;AAED,4EAA4E;AAC5E,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,SAAS,SAAS,EAAE,GAC/B,IAAI,CAEN;AAED,gEAAgE;AAChE,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,uBAAuB,GAAG,SAAS,CAErC;AAED,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE1E"}
@@ -6,7 +6,22 @@
6
6
  * delivery look up transports by file-stem name.
7
7
  */
8
8
  import { registerDeclaredSourceProviders } from "./source-providers.js";
9
+ /** Where a channel keeps its paused notice, out of its public shape. */
10
+ const PAUSED_NOTICE = Symbol("mda.pausedNotice");
11
+ /** Give a built-in channel its paused notice. */
12
+ export function withPausedNotice(channel, notice) {
13
+ Object.defineProperty(channel, PAUSED_NOTICE, { value: notice });
14
+ return channel;
15
+ }
9
16
  const providerByName = new Map();
17
+ const repliesNoneByName = new Set();
18
+ /**
19
+ * Whether the channel posts a run's final answer: `false` only for one
20
+ * declared with `reply: "none"`, which leaves replying to the agent.
21
+ */
22
+ export function channelAutoRepliesForName(name) {
23
+ return !repliesNoneByName.has(name);
24
+ }
10
25
  const providerConfigByName = new Map();
11
26
  export function channelProviderForName(name) {
12
27
  return providerByName.get(name);
@@ -15,6 +30,7 @@ export function channelProviderConfigForName(name) {
15
30
  return providerConfigByName.get(name);
16
31
  }
17
32
  const byName = new Map();
33
+ const pausedNoticeByName = new Map();
18
34
  function registerMessagingSources(sources) {
19
35
  registerDeclaredSourceProviders(sources);
20
36
  for (const source of sources) {
@@ -27,6 +43,11 @@ function registerMessagingSources(sources) {
27
43
  else {
28
44
  byName.delete(source.name);
29
45
  }
46
+ const notice = source[PAUSED_NOTICE];
47
+ if (notice)
48
+ pausedNoticeByName.set(source.name, notice);
49
+ else
50
+ pausedNoticeByName.delete(source.name);
30
51
  if (source.kind)
31
52
  providerByName.set(source.name, source.kind);
32
53
  const requirements = typeof source.requirements === "function"
@@ -35,6 +56,10 @@ function registerMessagingSources(sources) {
35
56
  if (requirements?.provider) {
36
57
  providerByName.set(source.name, requirements.provider);
37
58
  }
59
+ if (source.reply === "none")
60
+ repliesNoneByName.add(source.name);
61
+ else
62
+ repliesNoneByName.delete(source.name);
38
63
  if (requirements?.providerConfig) {
39
64
  providerConfigByName.set(source.name, requirements.providerConfig);
40
65
  }
@@ -55,4 +80,8 @@ export function registerConnectorMessaging(connectors) {
55
80
  export function messagingTransportForName(name, env = process.env) {
56
81
  return byName.get(name)?.(env);
57
82
  }
83
+ /** The paused notice of a channel by file-stem name, if it has one. */
84
+ export function pausedNoticeForName(name) {
85
+ return pausedNoticeByName.get(name);
86
+ }
58
87
  //# sourceMappingURL=messaging-registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging-registry.js","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAoBxE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;AACjD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE3D,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAY;IAEZ,OAAO,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEnD,SAAS,wBAAwB,CAAC,OAAmC;IACnE,+BAA+B,CAAC,OAAO,CAAC,CAAC;IACzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YAC3C,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,MAAM,CAAC,IAAI;YAAE,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,YAAY,GAChB,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;YACvC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,SAAS,CAAC;QAChB,IAAI,YAAY,EAAE,QAAQ,EAAE,CAAC;YAC3B,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,YAAY,EAAE,cAAc,EAAE,CAAC;YACjC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,wBAAwB,CAAC,QAA4B;IACnE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,0BAA0B,CACxC,UAAgC;IAEhC,wBAAwB,CAAC,UAAU,CAAC,CAAC;AACvC,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,yBAAyB,CACvC,IAAY,EACZ,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"messaging-registry.js","sourceRoot":"","sources":["../../src/channels/messaging-registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reserved-connections.d.ts","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAuCA;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS5E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,CAGR"}
1
+ {"version":3,"file":"reserved-connections.d.ts","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAiDA;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS5E;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,GAAG,SAAS,GAC/B,MAAM,CAGR"}
@@ -1,5 +1,6 @@
1
1
  import { GITHUB_TOKEN_SLUG, githubAppConnectionSlug, } from "./github/connections.js";
2
2
  import { LINEAR_TOKEN_SLUG, linearAppConnectionSlug, } from "./linear/connections.js";
3
+ import { SLACK_BOT_TOKEN_SLUG } from "./slack/connections.js";
3
4
  // First-party channels' reserved agent connection names, listed here so
4
5
  // resolution does not depend on adapter modules being loaded.
5
6
  const builtinReservedConnections = new Map([
@@ -19,6 +20,15 @@ const builtinReservedConnections = new Map([
19
20
  actsAs: "act in Linear as the app",
20
21
  },
21
22
  ],
23
+ [
24
+ SLACK_BOT_TOKEN_SLUG,
25
+ {
26
+ // The Slack app's connection has the reserved name itself.
27
+ resolve: () => SLACK_BOT_TOKEN_SLUG,
28
+ token: "the Slack app's bot token",
29
+ actsAs: "act in Slack as the app",
30
+ },
31
+ ],
22
32
  ]);
23
33
  /**
24
34
  * Why a channel's reserved agent connection cannot be read as a user
@@ -1 +1 @@
1
- {"version":3,"file":"reserved-connections.js","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,wEAAwE;AACxE,8DAA8D;AAC9D,MAAM,0BAA0B,GAAG,IAAI,GAAG,CASxC;IACA;QACE,iBAAiB;QACjB;YACE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,qCAAqC;YAC5C,MAAM,EAAE,0BAA0B;SACnC;KACF;IACD;QACE,iBAAiB;QACjB;YACE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,0BAA0B;SACnC;KACF;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CACL,GAAG,IAAI,qDAAqD,QAAQ,CAAC,KAAK,IAAI;QAC9E,4CAA4C,IAAI,0BAA0B;QAC1E,GAAG,QAAQ,CAAC,MAAM,GAAG,CACtB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,YAAgC;IAEhC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"reserved-connections.js","sourceRoot":"","sources":["../../src/channels/reserved-connections.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,wEAAwE;AACxE,8DAA8D;AAC9D,MAAM,0BAA0B,GAAG,IAAI,GAAG,CASxC;IACA;QACE,iBAAiB;QACjB;YACE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,qCAAqC;YAC5C,MAAM,EAAE,0BAA0B;SACnC;KACF;IACD;QACE,iBAAiB;QACjB;YACE,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,wBAAwB;YAC/B,MAAM,EAAE,0BAA0B;SACnC;KACF;IACD;QACE,oBAAoB;QACpB;YACE,2DAA2D;YAC3D,OAAO,EAAE,GAAG,EAAE,CAAC,oBAAoB;YACnC,KAAK,EAAE,2BAA2B;YAClC,MAAM,EAAE,yBAAyB;SAClC;KACF;CACF,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IACtD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,OAAO,CACL,GAAG,IAAI,qDAAqD,QAAQ,CAAC,KAAK,IAAI;QAC9E,4CAA4C,IAAI,0BAA0B;QAC1E,GAAG,QAAQ,CAAC,MAAM,GAAG,CACtB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,IAAY,EACZ,YAAgC;IAEhC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,OAAO,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * A `resolveUser` that is an endpoint. Kept apart from `resolve-user.ts`, which
3
+ * reaches Agent Auth, so `defineIdentity` can check one with no runtime
4
+ * dependency.
5
+ */
6
+ import { type EventEndpoint } from "./http/endpoint.js";
7
+ import type { ResolveUser, ResolveUserRequest } from "./resolve-user.js";
8
+ /**
9
+ * A `resolveUser` that is an endpoint: a URL, or a `Request` that also carries
10
+ * headers, such as a credential the service checks. Before a delivery starts a
11
+ * run, MDA POSTs the {@link ResolveUserRequest} as JSON to the URL, with the
12
+ * `Request`'s headers, signed when the deployment has `MDA_SERVICE_SECRET`,
13
+ * with the webhook ID `msg_<deliveryId>_resolve_user`. The service answers
14
+ * with a `ResolveUserResult`, checked as a function's; `null` or HTTP 204
15
+ * keeps the channel's own principal. A network error, HTTP 429 or a 5xx is
16
+ * tried again once. Any other answer, a redirect, or no answer within 5
17
+ * seconds fails the delivery, as a function that throws does. A retry and a
18
+ * redelivery keep the webhook ID, so the service answers each request and
19
+ * never dedupes on it.
20
+ */
21
+ export declare class ResolveUserEndpoint {
22
+ #private;
23
+ constructor(endpoint: EventEndpoint, label: string);
24
+ /** The service's answer about one delivery's sender, not yet checked. */
25
+ ask(request: ResolveUserRequest, deliveryId: string): Promise<unknown>;
26
+ }
27
+ /** A declared `resolveUser`: a function, or the service an endpoint names. */
28
+ export type ChannelResolveUser = ResolveUser | ResolveUserEndpoint;
29
+ /**
30
+ * A declared `resolveUser`, with an endpoint's URL and the deployment's secret
31
+ * checked; one that is neither a function nor an endpoint throws.
32
+ */
33
+ export declare function checkedResolveUser(resolveUser: unknown, owner: string): ChannelResolveUser | undefined;
34
+ //# sourceMappingURL=resolve-user-endpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-user-endpoint.d.ts","sourceRoot":"","sources":["../../src/channels/resolve-user-endpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAKL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAazE;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAmB;;IAG9B,YAAY,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAEjD;IAED,yEAAyE;IACzE,GAAG,CAAC,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAMrE;CACF;AAED,8EAA8E;AAC9E,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,mBAAmB,CAAC;AAEnE;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,MAAM,GACZ,kBAAkB,GAAG,SAAS,CAQhC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * A `resolveUser` that is an endpoint. Kept apart from `resolve-user.ts`, which
3
+ * reaches Agent Auth, so `defineIdentity` can check one with no runtime
4
+ * dependency.
5
+ */
6
+ import { endpointClient, isEventEndpoint, } from "./http/endpoint.js";
7
+ /**
8
+ * The limits of a `resolveUser` endpoint. The delivery waits on it before MDA
9
+ * acknowledges it, and Trigger Server gives up on a delivery after 10 seconds,
10
+ * so two attempts share 5 seconds.
11
+ */
12
+ const ENDPOINT_LIMITS = {
13
+ timeoutMs: 5_000,
14
+ total: true,
15
+ retryDelaysMs: [500],
16
+ };
17
+ /**
18
+ * A `resolveUser` that is an endpoint: a URL, or a `Request` that also carries
19
+ * headers, such as a credential the service checks. Before a delivery starts a
20
+ * run, MDA POSTs the {@link ResolveUserRequest} as JSON to the URL, with the
21
+ * `Request`'s headers, signed when the deployment has `MDA_SERVICE_SECRET`,
22
+ * with the webhook ID `msg_<deliveryId>_resolve_user`. The service answers
23
+ * with a `ResolveUserResult`, checked as a function's; `null` or HTTP 204
24
+ * keeps the channel's own principal. A network error, HTTP 429 or a 5xx is
25
+ * tried again once. Any other answer, a redirect, or no answer within 5
26
+ * seconds fails the delivery, as a function that throws does. A retry and a
27
+ * redelivery keep the webhook ID, so the service answers each request and
28
+ * never dedupes on it.
29
+ */
30
+ export class ResolveUserEndpoint {
31
+ #ask;
32
+ constructor(endpoint, label) {
33
+ this.#ask = endpointClient(endpoint, label, "resolveUser endpoint");
34
+ }
35
+ /** The service's answer about one delivery's sender, not yet checked. */
36
+ ask(request, deliveryId) {
37
+ return this.#ask(`msg_${deliveryId}_resolve_user`, JSON.stringify(request), ENDPOINT_LIMITS);
38
+ }
39
+ }
40
+ /**
41
+ * A declared `resolveUser`, with an endpoint's URL and the deployment's secret
42
+ * checked; one that is neither a function nor an endpoint throws.
43
+ */
44
+ export function checkedResolveUser(resolveUser, owner) {
45
+ if (resolveUser === undefined || typeof resolveUser === "function")
46
+ return resolveUser;
47
+ if (isEventEndpoint(resolveUser))
48
+ return new ResolveUserEndpoint(resolveUser, `${owner}(...) resolveUser`);
49
+ throw new TypeError(`${owner}(...) resolveUser must be a function or an endpoint URL`);
50
+ }
51
+ //# sourceMappingURL=resolve-user-endpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-user-endpoint.js","sourceRoot":"","sources":["../../src/channels/resolve-user-endpoint.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EACL,cAAc,EACd,eAAe,GAIhB,MAAM,oBAAoB,CAAC;AAG5B;;;;GAIG;AACH,MAAM,eAAe,GAAmB;IACtC,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,CAAC,GAAG,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAmB;IACrB,IAAI,CAAc;IAE3B,YAAY,QAAuB,EAAE,KAAa;QAChD,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,yEAAyE;IACzE,GAAG,CAAC,OAA2B,EAAE,UAAkB;QACjD,OAAO,IAAI,CAAC,IAAI,CACd,OAAO,UAAU,eAAe,EAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EACvB,eAAe,CAChB,CAAC;IACJ,CAAC;CACF;AAKD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,WAAoB,EACpB,KAAa;IAEb,IAAI,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,UAAU;QAChE,OAAO,WAAsC,CAAC;IAChD,IAAI,eAAe,CAAC,WAAW,CAAC;QAC9B,OAAO,IAAI,mBAAmB,CAAC,WAAW,EAAE,GAAG,KAAK,mBAAmB,CAAC,CAAC;IAC3E,MAAM,IAAI,SAAS,CACjB,GAAG,KAAK,yDAAyD,CAClE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { type ResolvePrincipalIdentity } from "../agent-auth.js";
2
+ import { type ChannelActor } from "./actor.js";
3
+ import { type ChannelResolveUser } from "./resolve-user-endpoint.js";
4
+ import { type ChannelMessagingAdapter } from "./runtime.js";
5
+ import type { ChannelMessage, JsonValue } from "./types.js";
6
+ /**
7
+ * What `resolveUser` gets: the verified sender of a channel delivery. An
8
+ * endpoint is POSTed it as JSON.
9
+ *
10
+ * @experimental This may change in a minor release.
11
+ */
12
+ export interface ResolveUserRequest<A extends ChannelActor = ChannelActor> {
13
+ /** Absent when the channel could not verify who sent the delivery. */
14
+ actor?: A;
15
+ channel: {
16
+ name: string;
17
+ };
18
+ }
19
+ /**
20
+ * Who a channel delivery runs as.
21
+ *
22
+ * - `user`: one of your users. The run gets the principal a backend call with
23
+ * `auth: "backend"` gets for the same `id`.
24
+ * - `identity`: an exact Agent Auth identity, such as the IdP `sub` your web
25
+ * users sign in with.
26
+ * - `reply`: start nothing, and post `message` where the delivery came from, as
27
+ * `runtime.channel.post` would.
28
+ * - `ignore`: start nothing.
29
+ *
30
+ * `null` or `undefined` keeps the channel's own principal.
31
+ *
32
+ * @experimental This may change in a minor release.
33
+ */
34
+ export type ResolveUserResult = {
35
+ type: "user";
36
+ id: string;
37
+ } | {
38
+ type: "identity";
39
+ provider: string;
40
+ issuer: string;
41
+ subject: string;
42
+ } | {
43
+ type: "reply";
44
+ message: ChannelMessage;
45
+ } | {
46
+ type: "ignore";
47
+ } | null | undefined;
48
+ /**
49
+ * Map a channel's verified sender to one of your users.
50
+ *
51
+ * @experimental This may change in a minor release.
52
+ */
53
+ export type ResolveUser<A extends ChannelActor = ChannelActor> = (request: ResolveUserRequest<A>) => ResolveUserResult | Promise<ResolveUserResult>;
54
+ /**
55
+ * What a delivery does after `resolveUser`.
56
+ *
57
+ * @experimental This may change in a minor release.
58
+ */
59
+ export type ChannelUser = {
60
+ type: "principal";
61
+ id: string;
62
+ } | {
63
+ type: "reply";
64
+ message: ChannelMessage;
65
+ } | {
66
+ type: "ignore";
67
+ };
68
+ /**
69
+ * Ask `resolveUser` about the actor of delivery `deliveryId`; `undefined` keeps
70
+ * the channel's principal.
71
+ */
72
+ export declare function resolveChannelUser(resolveUser: ChannelResolveUser | undefined, actor: ChannelActor | undefined, channelName: string, deliveryId: string, resolvePrincipal?: (identity: ResolvePrincipalIdentity) => Promise<string>): Promise<ChannelUser | undefined>;
73
+ /**
74
+ * The principal a webhook channel's sender runs as when no `resolveUser` maps
75
+ * them, from {@link actorIdentity}; `undefined` runs the delivery as the
76
+ * channel. Unlike a mapped user's, it owns no user connections: whoever
77
+ * completes a connection's sign-in from a public thread would attach their
78
+ * account to it. Without Agent Auth (`mda dev` without a LangSmith key) the
79
+ * channel's own user ID stays.
80
+ */
81
+ export declare function senderPrincipalId(actor: ChannelActor | undefined, resolvePrincipal?: (identity: ResolvePrincipalIdentity) => Promise<string>): Promise<string | undefined>;
82
+ /** Set a channel's own `resolveUser`, which overrides the identity's. */
83
+ export declare function withResolveUser<C extends object>(channel: C, resolveUser: unknown, owner: string): C;
84
+ /**
85
+ * Post `resolveUser`'s reply through the path `runtime.channel.post` takes,
86
+ * once per `deliveryKey`.
87
+ */
88
+ export declare function postReply(message: ChannelMessage, channel: {
89
+ name: string;
90
+ provider: string;
91
+ target: JsonValue;
92
+ transport: ChannelMessagingAdapter | undefined;
93
+ deliveryKey?: string;
94
+ }): Promise<void>;
95
+ //# sourceMappingURL=resolve-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-user.d.ts","sourceRoot":"","sources":["../../src/channels/resolve-user.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAK9D,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IACvE,sEAAsE;IACtE,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB,IAAI,GACJ,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,CAC/D,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAC3B,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAiBpD;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,kBAAkB,GAAG,SAAS,EAC3C,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,gBAAgB,GAAE,CAChB,QAAQ,EAAE,wBAAwB,KAC/B,OAAO,CAAC,MAAM,CAA8B,GAChD,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAqClC;AAKD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,YAAY,GAAG,SAAS,EAC/B,gBAAgB,GAAE,CAChB,QAAQ,EAAE,wBAAwB,KAC/B,OAAO,CAAC,MAAM,CAA8B,GAChD,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAe7B;AAED,yEAAyE;AACzE,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,OAAO,EACpB,KAAK,EAAE,MAAM,GACZ,CAAC,CAQH;AAMD;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GACA,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -0,0 +1,143 @@
1
+ import { z } from "zod";
2
+ import { ConnectionsNotConfiguredError, WORKSPACE_SETTING, } from "../agent-auth.js";
3
+ import { resolveExternalPrincipalId, TRUSTED_BACKEND_PROVIDER, } from "../connections.js";
4
+ import { resolveWorkspaceId } from "../runtime/langsmith-env.js";
5
+ import { logger } from "../runtime/log.js";
6
+ import { actorIdentity } from "./actor.js";
7
+ import { channelMessageSchema, nonblankStringSchema, } from "./message-schema.js";
8
+ import { checkedResolveUser, ResolveUserEndpoint, } from "./resolve-user-endpoint.js";
9
+ import { createRuntimeChannel, } from "./runtime.js";
10
+ /** A result `resolveUser` returns, or an endpoint answers, other than `null`. */
11
+ const resultSchema = z.discriminatedUnion("type", [
12
+ z.strictObject({ type: z.literal("user"), id: nonblankStringSchema }),
13
+ z.strictObject({
14
+ type: z.literal("identity"),
15
+ provider: nonblankStringSchema,
16
+ issuer: nonblankStringSchema,
17
+ subject: nonblankStringSchema,
18
+ }),
19
+ z.strictObject({ type: z.literal("reply"), message: channelMessageSchema }),
20
+ z.strictObject({ type: z.literal("ignore") }),
21
+ ]);
22
+ const RESULT_SHAPE = 'resolveUser must return { type: "user", id }, { type: "identity", provider, issuer, subject }, { type: "reply", message }, { type: "ignore" } or null';
23
+ /**
24
+ * Ask `resolveUser` about the actor of delivery `deliveryId`; `undefined` keeps
25
+ * the channel's principal.
26
+ */
27
+ export async function resolveChannelUser(resolveUser, actor, channelName, deliveryId, resolvePrincipal = resolveExternalPrincipalId) {
28
+ if (!resolveUser)
29
+ return undefined;
30
+ const request = {
31
+ ...(actor && { actor }),
32
+ channel: { name: channelName },
33
+ };
34
+ const answer = resolveUser instanceof ResolveUserEndpoint
35
+ ? await resolveUser.ask(request, deliveryId)
36
+ : await resolveUser(request);
37
+ if (answer === null || answer === undefined)
38
+ return undefined;
39
+ // An endpoint's answer is any JSON, and a function's is checked the same way.
40
+ const parsed = resultSchema.safeParse(answer);
41
+ if (!parsed.success)
42
+ throw new TypeError(RESULT_SHAPE);
43
+ const result = parsed.data;
44
+ switch (result.type) {
45
+ case "user":
46
+ return {
47
+ type: "principal",
48
+ id: await resolvePrincipal(appUserIdentity(result.id)),
49
+ };
50
+ case "identity":
51
+ return {
52
+ type: "principal",
53
+ id: await resolvePrincipal({
54
+ provider: result.provider,
55
+ issuer: result.issuer,
56
+ subject: result.subject,
57
+ }),
58
+ };
59
+ case "reply":
60
+ return { type: "reply", message: result.message };
61
+ case "ignore":
62
+ return { type: "ignore" };
63
+ default:
64
+ throw new TypeError(RESULT_SHAPE);
65
+ }
66
+ }
67
+ /** Whether the fallback without Agent Auth was logged already. */
68
+ let loggedSenderFallback = false;
69
+ /**
70
+ * The principal a webhook channel's sender runs as when no `resolveUser` maps
71
+ * them, from {@link actorIdentity}; `undefined` runs the delivery as the
72
+ * channel. Unlike a mapped user's, it owns no user connections: whoever
73
+ * completes a connection's sign-in from a public thread would attach their
74
+ * account to it. Without Agent Auth (`mda dev` without a LangSmith key) the
75
+ * channel's own user ID stays.
76
+ */
77
+ export async function senderPrincipalId(actor, resolvePrincipal = resolveExternalPrincipalId) {
78
+ const identity = actor && actorIdentity(actor);
79
+ if (!identity)
80
+ return undefined;
81
+ try {
82
+ return await resolvePrincipal(identity);
83
+ }
84
+ catch (error) {
85
+ if (!(error instanceof ConnectionsNotConfiguredError))
86
+ throw error;
87
+ if (!loggedSenderFallback) {
88
+ loggedSenderFallback = true;
89
+ logger.warn(`channel senders keep the channel's user ID: ${error.message}`);
90
+ }
91
+ return undefined;
92
+ }
93
+ }
94
+ /** Set a channel's own `resolveUser`, which overrides the identity's. */
95
+ export function withResolveUser(channel, resolveUser, owner) {
96
+ const checked = checkedResolveUser(resolveUser, owner);
97
+ if (checked === undefined)
98
+ return channel;
99
+ Object.defineProperty(channel, "resolveUser", {
100
+ value: checked,
101
+ enumerable: false,
102
+ });
103
+ return channel;
104
+ }
105
+ /** Deliveries already replied to; a provider may redeliver one. */
106
+ const repliedDeliveries = new Set();
107
+ const REPLIED_DELIVERIES_KEPT = 1000;
108
+ /**
109
+ * Post `resolveUser`'s reply through the path `runtime.channel.post` takes,
110
+ * once per `deliveryKey`.
111
+ */
112
+ export async function postReply(message, channel) {
113
+ const { deliveryKey, ...route } = channel;
114
+ if (deliveryKey !== undefined) {
115
+ if (repliedDeliveries.has(deliveryKey))
116
+ return;
117
+ repliedDeliveries.add(deliveryKey);
118
+ if (repliedDeliveries.size > REPLIED_DELIVERIES_KEPT)
119
+ repliedDeliveries.delete(repliedDeliveries.values().next().value);
120
+ }
121
+ const { post } = createRuntimeChannel({ ...route, event: null });
122
+ if (!post) {
123
+ logger.warn("channel cannot post resolveUser's reply");
124
+ return;
125
+ }
126
+ try {
127
+ await post(message);
128
+ }
129
+ catch (error) {
130
+ logger.error(`channel resolveUser reply failed (${logger.safeErrorLabel(error)})`);
131
+ }
132
+ }
133
+ function appUserIdentity(id) {
134
+ const workspaceId = resolveWorkspaceId();
135
+ if (!workspaceId)
136
+ throw new ConnectionsNotConfiguredError(WORKSPACE_SETTING);
137
+ return {
138
+ provider: TRUSTED_BACKEND_PROVIDER,
139
+ issuer: workspaceId,
140
+ subject: id,
141
+ };
142
+ }
143
+ //# sourceMappingURL=resolve-user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-user.js","sourceRoot":"","sources":["../../src/channels/resolve-user.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  import { type BaseMessage, type BaseMessageLike } from "@langchain/core/messages";
6
6
  import type { LangGraphRunnableConfig } from "@langchain/langgraph";
7
7
  import type { JsonObject } from "./manifest.js";
8
+ import type { JsonValue } from "./types.js";
8
9
  /**
9
10
  * State to start a run with, as `agent.invoke` takes it: `messages` plus any
10
11
  * other keys of the agent's state.
@@ -15,18 +16,35 @@ export interface ChannelStateInput {
15
16
  }
16
17
  /** A user message's text, a message, or state to start a run with. */
17
18
  export type ChannelRunInput = string | BaseMessage | ChannelStateInput;
18
- /** Run options a handler may set with its input, as `agent.invoke` takes them. */
19
+ /**
20
+ * Run options a handler may set with its input, as `agent.invoke` takes them.
21
+ *
22
+ * @experimental This may change in a minor release.
23
+ */
19
24
  export type ChannelRunOptions = Pick<LangGraphRunnableConfig<Record<string, unknown>>, "context"> & {
20
25
  /**
21
26
  * Metadata for the run, such as where it came from, to find it by in
22
27
  * LangSmith. Keys are letters, digits, `_`, `.` or `-` and start with a
23
- * letter; `mda_` and `langgraph_` keys are reserved. MDA's own keys win.
28
+ * letter. Keys the Agent Server and LangSmith set are reserved: those
29
+ * starting with `mda_`, `langgraph_` or `ls_`, and ids such as `thread_id`,
30
+ * `session_id`, `run_id` or `user_id`.
31
+ */
32
+ metadata?: {
33
+ readonly [key: string]: JsonValue;
34
+ };
35
+ /**
36
+ * A URL the Agent Server POSTs the finished run to (its status, metadata,
37
+ * values and any error), as LangGraph's `runs.create({ webhook })` does:
38
+ * from the server, so it reaches you even if the deployment restarts.
39
+ * http(s), without credentials in it.
24
40
  */
25
- metadata?: Record<string, unknown>;
41
+ webhook?: string;
26
42
  };
27
43
  /**
28
44
  * What a channel handler may return to start a run: the input, or the input
29
45
  * with run options, as `agent.invoke(input, options)` takes them.
46
+ *
47
+ * @experimental This may change in a minor release.
30
48
  */
31
49
  export type ChannelRunResult = ChannelRunInput | readonly [ChannelRunInput, ChannelRunOptions];
32
50
  /** A handler's result as the Agent Server takes it. */
@@ -37,10 +55,34 @@ export interface NormalizedRunInput {
37
55
  state: JsonObject;
38
56
  context?: JsonObject;
39
57
  metadata?: JsonObject;
58
+ webhook?: string;
59
+ }
60
+ /**
61
+ * A handler's run input as `startIngressRun` takes it, with MDA's own
62
+ * `metadata` over the handler's, so a handler can't replace it. Empty state
63
+ * and metadata are left out.
64
+ */
65
+ export declare function runStartOptions(input: NormalizedRunInput, metadata?: JsonObject): {
66
+ messages: JsonObject[];
67
+ state?: JsonObject;
68
+ metadata?: JsonObject;
69
+ webhook?: string;
70
+ };
71
+ /**
72
+ * Run input MDA starts no run with. Its `reason`, which is also its message,
73
+ * says what is wrong in a fixed phrase. A key or type it names is bounded to
74
+ * one log line, so the channel logs the reason, where it logs no other
75
+ * error's message. A `TypeError`, as invalid run input threw before.
76
+ */
77
+ export declare class InvalidRunInput extends TypeError {
78
+ /** Why MDA refused the input, such as `run metadata key is reserved: user_id`. */
79
+ readonly reason: string;
80
+ constructor(reason: string);
40
81
  }
41
82
  /**
42
83
  * Normalize what a handler returned. `null` and `undefined` start nothing;
43
- * anything else that is not valid input throws a `TypeError`.
84
+ * anything else that is not valid input throws an {@link InvalidRunInput}, a
85
+ * `TypeError`. A run option that is `null` or `undefined` is not set.
44
86
  */
45
87
  export declare function normalizeRunInput(value: unknown): NormalizedRunInput | undefined;
46
88
  //# sourceMappingURL=run-input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-input.d.ts","sourceRoot":"","sources":["../../src/channels/run-input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAEvE,kFAAkF;AAClF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAChD,SAAS,CACV,GAAG;IACF;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAElD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,wBAAwB;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB;AASD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,kBAAkB,GAAG,SAAS,CAqBhC"}
1
+ {"version":3,"file":"run-input.d.ts","sourceRoot":"","sources":["../../src/channels/run-input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,eAAe,EAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sEAAsE;AACtE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,GAAG,iBAAiB,CAAC;AAEvE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAChD,SAAS,CACV,GAAG;IACF;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,CAAC;IACjD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GACxB,eAAe,GACf,SAAS,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAElD,uDAAuD;AACvD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,wBAAwB;IACxB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,kBAAkB,EACzB,QAAQ,GAAE,UAAe,GACxB;IACD,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAQA;AASD;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAIzB;CACF;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,GACb,kBAAkB,GAAG,SAAS,CAsBhC"}