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
@@ -0,0 +1,424 @@
1
+ /**
2
+ * The run's one delivery step: when the run ends, its answer goes to the
3
+ * thread's origin, and a paused Trigger run reports what it waits on.
4
+ *
5
+ * The run does it, not the process that received the event, so a restart of
6
+ * that process loses nothing, and a run LangSmith Studio resumes answers the
7
+ * conversation the paused run came from.
8
+ *
9
+ * A scheduled run that starts a new Trigger thread, with its answer or with a
10
+ * notice that it waits on a decision, hands its own thread to that thread's
11
+ * conversation, so replies and decisions there continue the run. A scheduled
12
+ * run that throws reports the failure to the same place.
13
+ */
14
+ import { randomUUID } from "node:crypto";
15
+ import { v5 as uuidv5 } from "uuid";
16
+ import { z } from "zod";
17
+ import { THREAD_CONVERSATION_METADATA, originFromBinding, threadRecordMetadata, triggerTargetSchema, } from "../runtime/thread-record.js";
18
+ import { handOffScheduledThread, scheduleExecution, } from "../runtime/schedule-auth.js";
19
+ import { logger } from "../runtime/log.js";
20
+ import { QUIET_REPLY, extractReplyContent, extractReplyText, } from "./assistant-text.js";
21
+ import { channelAutoRepliesForName, channelProviderForName, messagingTransportForName, pausedNoticeForName, } from "./messaging-registry.js";
22
+ import { deliverScheduleResult, getDeploymentId, isTrustedScheduleDeliveryRun, readScheduleDeliverTo, } from "./schedule-delivery.js";
23
+ import { createTriggerClient } from "./trigger/client.js";
24
+ import { missingConnectionFailureMessage } from "./trigger/http.js";
25
+ import { resolveTracerSessionId } from "./trigger/tracing-project.js";
26
+ import { createTriggerTransport, startTriggerThread, } from "./trigger/transport.js";
27
+ /** What a new Trigger thread posted when a scheduled run pauses says. */
28
+ export const PAUSED_NOTICE = "This scheduled run is waiting for a decision.";
29
+ /** What a scheduled run that fails posts where Trigger cannot show the failure. */
30
+ export const FAILED_NOTICE = "This scheduled run failed.";
31
+ /** What a new Trigger thread posted when a scheduled run fails says; Trigger replies in it. */
32
+ export const FAILED_THREAD_NOTICE = "This scheduled run failed. Details in this thread ⬇️";
33
+ /**
34
+ * Deliver a finished top-level run's result to its thread's origin, or to a
35
+ * scheduled run's `deliverTo`. A thread with neither gets nothing. The Agent
36
+ * Server runs every TypeScript graph run on a thread with a checkpointer, a
37
+ * cron fire without a `thread_id` included, so its state can always be read.
38
+ *
39
+ * Failures follow what each channel did before: a Trigger post and any
40
+ * scheduled delivery fail the run; a direct channel's post is logged and the
41
+ * run still succeeds.
42
+ */
43
+ export async function deliverRunResult(graph, run, delivered = {}) {
44
+ const { thread, origin } = run;
45
+ if (!thread)
46
+ return;
47
+ const delivery = origin ? undefined : scheduledDelivery(delivered);
48
+ if (!origin && !delivery)
49
+ return;
50
+ const deliverTo = delivery?.deliverTo;
51
+ const opening = openingOf(origin, delivery, delivered);
52
+ const { runId, subagent } = delivered;
53
+ const threadId = delivered.runThreadId ?? thread.id;
54
+ const config = { configurable: { thread_id: threadId } };
55
+ const state = await graph.getState(config);
56
+ const interrupts = pendingInterrupts(state);
57
+ if (interrupts.length) {
58
+ if (opening) {
59
+ const opened = await openThread(opening, run, delivered, {
60
+ text: PAUSED_NOTICE,
61
+ actionId: runId ? pausedActionId(runId) : randomUUID(),
62
+ });
63
+ if (opened)
64
+ await reportInterrupted(opened, threadId, runId, interrupts);
65
+ }
66
+ else if (origin?.transport === "trigger_server")
67
+ await reportInterrupted(origin, threadId, runId, interrupts);
68
+ else if (origin)
69
+ await noticePaused(origin, threadId, delivered.assistantId);
70
+ return;
71
+ }
72
+ // A static breakpoint stopped the run before it finished: no answer yet.
73
+ if (state.next.length > 0 || subagent)
74
+ return;
75
+ // A channel declared with `reply: "none"` leaves replying to the agent.
76
+ if (origin && !channelAutoRepliesForName(origin.name))
77
+ return;
78
+ const values = { messages: messagesOf(state.values) };
79
+ const boundary = await replyBoundary(graph, config, values.messages);
80
+ const text = extractReplyText(values, boundary);
81
+ if (text.trim() === QUIET_REPLY)
82
+ return;
83
+ if (opening) {
84
+ if (text)
85
+ await openThread(opening, run, delivered, {
86
+ text,
87
+ actionId: runId ? replyActionId(runId) : randomUUID(),
88
+ });
89
+ return;
90
+ }
91
+ if (!origin) {
92
+ if (deliverTo && text)
93
+ await deliverToTarget(deliverTo, text);
94
+ return;
95
+ }
96
+ const content = origin.transport === "trigger_server"
97
+ ? text || null
98
+ : extractReplyContent(values, boundary);
99
+ if (content === null)
100
+ return;
101
+ const scheduled = origin.event?.type === "schedule";
102
+ try {
103
+ await post(origin, content, runId);
104
+ }
105
+ catch (error) {
106
+ if (scheduled || origin.transport === "trigger_server")
107
+ throw error;
108
+ // The answer stays in the thread; the run itself succeeded.
109
+ logger.error(`channel reply failed (${logger.safeErrorLabel(error)})`);
110
+ }
111
+ }
112
+ /**
113
+ * Report a scheduled run that threw where its result would have gone. A
114
+ * Trigger thread gets `run.failed`, so Trigger shows the failure there; a
115
+ * new-thread schedule opens its thread with a notice, as does `deliverTo`.
116
+ * Only trusted cron fires report here: Trigger ingress reports the runs it
117
+ * started. Only a known-safe message leaves the run, and reporting never
118
+ * replaces its error.
119
+ */
120
+ export async function deliverRunFailure(run, delivered, error) {
121
+ const { thread, origin } = run;
122
+ if (!thread ||
123
+ delivered.subagent ||
124
+ !isTrustedScheduleDeliveryRun(delivered.configurable, delivered.metadata))
125
+ return;
126
+ const delivery = origin ? undefined : scheduledDelivery(delivered);
127
+ if (!origin && !delivery)
128
+ return;
129
+ const message = missingConnectionFailureMessage(error);
130
+ const { runId } = delivered;
131
+ const threadId = delivered.runThreadId ?? thread.id;
132
+ try {
133
+ const opening = openingOf(origin, delivery, delivered);
134
+ if (opening) {
135
+ const opened = await openThread(opening, run, delivered, {
136
+ text: FAILED_THREAD_NOTICE,
137
+ actionId: runId ? failedActionId(runId) : randomUUID(),
138
+ });
139
+ if (opened)
140
+ await reportRunEvent(opened, threadId, runId, {
141
+ type: "run.failed",
142
+ message,
143
+ });
144
+ }
145
+ else if (!origin) {
146
+ if (delivery)
147
+ await deliverToTarget(delivery.deliverTo, message ?? FAILED_NOTICE);
148
+ }
149
+ else if (origin.transport === "trigger_server")
150
+ await reportRunEvent(origin, threadId, runId, {
151
+ type: "run.failed",
152
+ message,
153
+ });
154
+ }
155
+ catch (failure) {
156
+ logger.error(`channel failure report failed (${logger.safeErrorLabel(failure)})`);
157
+ }
158
+ }
159
+ /** A compiled schedule's routing: where it delivers, and whether each fire has its own thread. */
160
+ const scheduleRoutingSchema = z.object({
161
+ deliver_to: z.unknown().optional(),
162
+ new_thread: z.boolean().optional(),
163
+ });
164
+ /** A trusted cron fire's schedule routing, when it posts its result to `deliverTo`. */
165
+ function scheduledDelivery(delivered) {
166
+ if (!isTrustedScheduleDeliveryRun(delivered.configurable, delivered.metadata))
167
+ return undefined;
168
+ const schedule = scheduleRoutingSchema.safeParse(delivered.routing?.mda_schedule);
169
+ if (!schedule.success)
170
+ return undefined;
171
+ const deliverTo = readScheduleDeliverTo(schedule.data.deliver_to);
172
+ return deliverTo?.autoPost
173
+ ? { deliverTo, newThread: schedule.data.new_thread === true }
174
+ : undefined;
175
+ }
176
+ /**
177
+ * Where a scheduled run starts a new Trigger thread: a new-thread schedule on
178
+ * a Trigger channel, or a new-thread `deliverTo` conversation Trigger delivers
179
+ * to. A schedule with a fixed thread keeps it.
180
+ */
181
+ function openingOf(origin, delivery, delivered) {
182
+ if (scheduleExecution(delivered.configurable) === undefined)
183
+ return undefined;
184
+ if (origin)
185
+ return origin.transport === "trigger_server" &&
186
+ origin.event?.type === "schedule" &&
187
+ origin.event.new_thread
188
+ ? { via: "channel", origin }
189
+ : undefined;
190
+ return delivery?.newThread === true &&
191
+ delivery.deliverTo.to.type === "provider_conversation" &&
192
+ getDeploymentId() !== undefined &&
193
+ hasTriggerClient()
194
+ ? { via: "deployment", deliverTo: delivery.deliverTo }
195
+ : undefined;
196
+ }
197
+ /** Whether Trigger is configured; a malformed setting leaves `deliverTo` its own fallback. */
198
+ function hasTriggerClient() {
199
+ try {
200
+ return createTriggerClient() !== undefined;
201
+ }
202
+ catch {
203
+ return false;
204
+ }
205
+ }
206
+ /**
207
+ * Post the first message of a new Trigger thread, then hand the run's thread
208
+ * to that thread's conversation. Returns the conversation, unless Trigger
209
+ * could not name the thread it started.
210
+ */
211
+ async function openThread(opening, run, delivered, { text, actionId }) {
212
+ const client = createTriggerClient();
213
+ if (!client)
214
+ throw new Error("channel delivery is not configured");
215
+ let started;
216
+ let name;
217
+ if (opening.via === "channel") {
218
+ name = opening.origin.name;
219
+ started = await startTriggerThread(client, {
220
+ target: opening.origin.target,
221
+ text,
222
+ actionId,
223
+ });
224
+ }
225
+ else {
226
+ name = opening.deliverTo.channel;
227
+ const deploymentId = getDeploymentId();
228
+ if (!deploymentId)
229
+ throw new Error("channel delivery is not configured");
230
+ const result = await client.postDeploymentAction(deploymentId, name, {
231
+ type: "post",
232
+ action_id: actionId,
233
+ address: { conversation_id: opening.deliverTo.to.conversationId },
234
+ follow_thread: true,
235
+ message: { text },
236
+ });
237
+ started = result.thread;
238
+ }
239
+ if (!started) {
240
+ logger.warn("scheduled post started a thread Trigger did not name");
241
+ return undefined;
242
+ }
243
+ const provider = opening.via === "channel"
244
+ ? opening.origin.provider
245
+ : (channelProviderForName(name) ?? name);
246
+ const conversation = {
247
+ name,
248
+ provider,
249
+ transport: "trigger_server",
250
+ sourceThreadKey: started.source_thread_key,
251
+ deliveryId: actionId,
252
+ target: started,
253
+ };
254
+ await handOff(run, delivered, conversation);
255
+ return { ...conversation, event: null };
256
+ }
257
+ /** Make the run's thread the conversation's, keeping its participants. */
258
+ async function handOff(run, delivered, conversation) {
259
+ const execution = scheduleExecution(delivered.configurable);
260
+ if (!execution || !run.thread)
261
+ throw new Error("scheduled thread handoff is unavailable");
262
+ const record = threadRecordMetadata({
263
+ origin: originFromBinding(conversation, null),
264
+ participants: run.thread.participants.map(({ id, role }) => ({ id, role })),
265
+ });
266
+ await handOffScheduledThread({
267
+ thread: run.thread.id,
268
+ execution,
269
+ conversation: {
270
+ provider: conversation.provider,
271
+ source_thread_key: conversation.sourceThreadKey,
272
+ },
273
+ }, { ...record, [THREAD_CONVERSATION_METADATA]: conversation.sourceThreadKey });
274
+ }
275
+ /** Post a `deliverTo` result into an existing conversation; a failure fails the run. */
276
+ async function deliverToTarget(deliverTo, text) {
277
+ const outcome = await deliverScheduleResult({ deliverTo, replyText: text });
278
+ if (outcome === "failed")
279
+ throw new Error("Scheduled channel delivery failed");
280
+ }
281
+ async function post(origin, content, runId) {
282
+ const newThread = origin.event?.type === "schedule" ? origin.event.new_thread : undefined;
283
+ const message = { type: "content", content };
284
+ if (origin.transport === "trigger_server") {
285
+ const client = createTriggerClient();
286
+ if (!client)
287
+ throw new Error("channel delivery is not configured");
288
+ // A retried run posts its answer once.
289
+ await createTriggerTransport(client, {
290
+ actionId: runId ? replyActionId(runId) : randomUUID(),
291
+ }).post({ message, target: origin.target, newThread });
292
+ return;
293
+ }
294
+ const transport = messagingTransportForName(origin.name);
295
+ if (!transport)
296
+ throw new Error(`channel delivery is unavailable: no channel ${JSON.stringify(logger.logIdentifier(origin.name))}`);
297
+ await transport.post({
298
+ message,
299
+ target: origin.target,
300
+ ...(newThread !== undefined && { newThread }),
301
+ });
302
+ }
303
+ /** The Trigger post id of a paused run's notice, stable across retries. */
304
+ function pausedActionId(runId) {
305
+ return uuidv5(`mda-paused:${runId}`, uuidv5.URL);
306
+ }
307
+ /** The Trigger post id of a failed run's notice, stable across retries. */
308
+ export function failedActionId(runId) {
309
+ return uuidv5(`mda-failed:${runId}`, uuidv5.URL);
310
+ }
311
+ /** The Trigger post id for a run's answer, stable across retries. */
312
+ export function replyActionId(runId) {
313
+ return uuidv5(`mda-reply:${runId}`, uuidv5.URL);
314
+ }
315
+ /**
316
+ * Where the run's messages start: after the last message of the latest
317
+ * checkpoint the run's input made. A resume makes none, so it counts from the
318
+ * paused run's input. Without one, the reply falls back to the answers since
319
+ * the last user message.
320
+ */
321
+ async function replyBoundary(graph, config, messages) {
322
+ let input;
323
+ for await (const snapshot of graph.getStateHistory(config, {
324
+ filter: { source: "input" },
325
+ limit: 1,
326
+ })) {
327
+ input = snapshot;
328
+ break;
329
+ }
330
+ // A checkpointer may ignore the filter.
331
+ if (input?.metadata?.source !== "input")
332
+ return {};
333
+ const before = messagesOf(input.values);
334
+ const afterId = Array.isArray(before) ? messageId(before.at(-1)) : undefined;
335
+ const final = Array.isArray(messages) ? messages : [];
336
+ return afterId !== undefined &&
337
+ final.some((message) => messageId(message) === afterId)
338
+ ? { afterId }
339
+ : {};
340
+ }
341
+ /** The `messages` of graph state values, when they are an object. */
342
+ function messagesOf(values) {
343
+ return isObject(values) ? values.messages : undefined;
344
+ }
345
+ function messageId(message) {
346
+ const id = isObject(message) ? message.id : undefined;
347
+ return typeof id === "string" && id ? id : undefined;
348
+ }
349
+ function isObject(value) {
350
+ return typeof value === "object" && value !== null;
351
+ }
352
+ /** An interrupt Trigger can resume: a non-blank id, with its value. */
353
+ const interruptSchema = z.object({
354
+ id: z.string().refine((id) => id.trim().length > 0),
355
+ value: z.unknown(),
356
+ response_schema: z.unknown().optional(),
357
+ });
358
+ /** The interrupts the run stopped on, as Trigger forwards them. */
359
+ function pendingInterrupts(state) {
360
+ return state.tasks.flatMap((task) => (task.interrupts ?? []).flatMap((entry) => {
361
+ const parsed = interruptSchema.safeParse(entry);
362
+ if (!parsed.success)
363
+ return [];
364
+ const { id, value, response_schema: schema } = parsed.data;
365
+ return [
366
+ { id, value, ...(isObject(schema) && { response_schema: schema }) },
367
+ ];
368
+ }));
369
+ }
370
+ /**
371
+ * Tell a direct channel's conversation the run waits on a decision, with a
372
+ * Studio link to this thread, when the channel has such a notice. Best
373
+ * effort: it never fails the run.
374
+ */
375
+ async function noticePaused(origin, threadId, assistantId) {
376
+ const notice = pausedNoticeForName(origin.name);
377
+ if (!notice)
378
+ return;
379
+ try {
380
+ await notice(origin.target, { threadId, ...(assistantId && { assistantId }) }, "interrupted");
381
+ }
382
+ catch (error) {
383
+ logger.error(`channel paused notice failed (${logger.safeErrorLabel(error)})`);
384
+ }
385
+ }
386
+ /** Tell Trigger the run waits on a decision. Best effort: it never fails the run. */
387
+ function reportInterrupted(origin, threadId, runId, interrupts) {
388
+ return reportRunEvent(origin, threadId, runId, {
389
+ type: "run.interrupted",
390
+ interrupts,
391
+ });
392
+ }
393
+ /** Send Trigger a runtime event about the run. Best effort: it never fails the run. */
394
+ async function reportRunEvent(origin, threadId, runId, event) {
395
+ const target = triggerTargetSchema.safeParse(origin.target);
396
+ try {
397
+ if (!target.success) {
398
+ logger.warn(`channel ${event.type} was not reported: invalid Trigger target`);
399
+ return;
400
+ }
401
+ const client = createTriggerClient();
402
+ if (!client || !runId) {
403
+ logger.warn(`channel ${event.type} was not reported: no run or transport`);
404
+ return;
405
+ }
406
+ const tracerSessionId = await resolveTracerSessionId();
407
+ await client.postRuntimeEvent(target.data.channel_id, {
408
+ id: randomUUID(),
409
+ type: event.type,
410
+ delivery_id: origin.deliveryId,
411
+ source_thread_key: origin.sourceThreadKey,
412
+ address: target.data.address,
413
+ run_thread_id: threadId,
414
+ run_id: runId,
415
+ ...(event.interrupts ? { interrupts: event.interrupts } : {}),
416
+ ...(event.message ? { message: { text: event.message } } : {}),
417
+ ...(tracerSessionId ? { tracer_session_id: tracerSessionId } : {}),
418
+ });
419
+ }
420
+ catch (error) {
421
+ logger.warn(`channel ${event.type} was not reported (${logger.safeErrorLabel(error)})`);
422
+ }
423
+ }
424
+ //# sourceMappingURL=delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/channels/delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { GitHubAppOptions } from "./types.js";
2
+ type PermissionLevel = "read" | "write";
3
+ /** A permission the App asks for, with the handled events that need it. */
4
+ export type AppPermission = {
5
+ name: string;
6
+ level: PermissionLevel;
7
+ /** Empty when the level comes from `app.permissions` or is `metadata`. */
8
+ events: string[];
9
+ };
10
+ /** What `mda deploy` needs to set up the GitHub App. */
11
+ export type GitHubAppSetup = {
12
+ /** The handled event keys, such as `issues.opened`. */
13
+ events: string[];
14
+ /** The webhook events the App subscribes to, such as `issues`. */
15
+ webhookEvents: string[];
16
+ permissions: AppPermission[];
17
+ /** `owner/name`, lowercased and sorted; absent for every repository. */
18
+ repositories?: string[];
19
+ };
20
+ /**
21
+ * The App the channel's handlers and `app` options need. The CLI reads it
22
+ * from the channel's manifest instead of working it out; the Python runtime
23
+ * mirrors these rules in `github_app_setup.py`.
24
+ */
25
+ export declare function githubAppSetup(handlers: object, app: GitHubAppOptions | undefined): GitHubAppSetup;
26
+ /**
27
+ * The repositories the channel is limited to, lowercased since GitHub names
28
+ * are case-insensitive. One installation covers them, so they share an owner.
29
+ */
30
+ export declare function repositoryAllowlist(repositories: readonly string[] | undefined): string[] | undefined;
31
+ export {};
32
+ //# sourceMappingURL=app-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-setup.d.ts","sourceRoot":"","sources":["../../../src/channels/github/app-setup.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,YAAY,CAAC;AAEtE,KAAK,eAAe,GAAG,MAAM,GAAG,OAAO,CAAC;AAgExC,2EAA2E;AAC3E,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,eAAe,CAAC;IACvB,0EAA0E;IAC1E,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEF,wDAAwD;AACxD,MAAM,MAAM,cAAc,GAAG;IAC3B,uDAAuD;IACvD,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kEAAkE;IAClE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,aAAa,EAAE,CAAC;IAC7B,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,gBAAgB,GAAG,SAAS,GAChC,cAAc,CAiBhB;AAoDD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAC1C,MAAM,EAAE,GAAG,SAAS,CAiCtB"}
@@ -0,0 +1,146 @@
1
+ import { handledEventKeys } from "../http/provider.js";
2
+ /**
3
+ * The App permission each event needs: read to receive it, write to also
4
+ * reply where it happened.
5
+ */
6
+ const EVENT_PERMISSIONS = {
7
+ "issue_comment.created": { permission: "issues", level: "write" },
8
+ "issue_comment.edited": { permission: "issues", level: "write" },
9
+ "issues.edited": { permission: "issues", level: "write" },
10
+ "issues.labeled": { permission: "issues", level: "write" },
11
+ "issues.opened": { permission: "issues", level: "write" },
12
+ "issues.reopened": { permission: "issues", level: "write" },
13
+ "pull_request.closed": { permission: "pull_requests", level: "write" },
14
+ "pull_request.converted_to_draft": {
15
+ permission: "pull_requests",
16
+ level: "write",
17
+ },
18
+ "pull_request.edited": { permission: "pull_requests", level: "write" },
19
+ "pull_request.labeled": { permission: "pull_requests", level: "write" },
20
+ "pull_request.opened": { permission: "pull_requests", level: "write" },
21
+ "pull_request.ready_for_review": {
22
+ permission: "pull_requests",
23
+ level: "write",
24
+ },
25
+ "pull_request.reopened": { permission: "pull_requests", level: "write" },
26
+ "pull_request.synchronize": { permission: "pull_requests", level: "write" },
27
+ "pull_request_review.dismissed": {
28
+ permission: "pull_requests",
29
+ level: "write",
30
+ },
31
+ "pull_request_review.edited": {
32
+ permission: "pull_requests",
33
+ level: "write",
34
+ },
35
+ "pull_request_review.submitted": {
36
+ permission: "pull_requests",
37
+ level: "write",
38
+ },
39
+ "pull_request_review_comment.created": {
40
+ permission: "pull_requests",
41
+ level: "write",
42
+ },
43
+ "pull_request_review_comment.edited": {
44
+ permission: "pull_requests",
45
+ level: "write",
46
+ },
47
+ "check_run.completed": { permission: "checks", level: "read" },
48
+ "check_suite.completed": { permission: "checks", level: "read" },
49
+ push: { permission: "contents", level: "read" },
50
+ status: { permission: "statuses", level: "read" },
51
+ "workflow_run.completed": { permission: "actions", level: "read" },
52
+ };
53
+ const MAX_PERMISSIONS = 50;
54
+ /** Keeps the App manifest and the deploy report readable. */
55
+ const MAX_REPOSITORIES = 500;
56
+ const PERMISSION_NAME = /^[a-z][a-z_]{0,63}$/;
57
+ const GITHUB_LOGIN = /^(?!-)(?!.*--)[A-Za-z0-9-]{1,39}(?<!-)$/;
58
+ const REPOSITORY_NAME = /^[A-Za-z0-9._-]{1,100}$/;
59
+ /**
60
+ * The App the channel's handlers and `app` options need. The CLI reads it
61
+ * from the channel's manifest instead of working it out; the Python runtime
62
+ * mirrors these rules in `github_app_setup.py`.
63
+ */
64
+ export function githubAppSetup(handlers, app) {
65
+ const events = handledEventKeys(handlers).filter(isSupportedEventKey);
66
+ // A misspelled option would silently widen what the agent's token reaches.
67
+ const unknown = Object.keys(app ?? {}).filter((key) => key !== "permissions" && key !== "repositories");
68
+ if (unknown.length)
69
+ throw new TypeError(`unknown GitHub app option ${unknown.join(", ")}; use permissions or repositories`);
70
+ const repositories = repositoryAllowlist(app?.repositories);
71
+ return {
72
+ events,
73
+ webhookEvents: [...new Set(events.map((key) => key.split(".")[0]))].sort(),
74
+ permissions: appPermissions(events, app?.permissions ?? {}),
75
+ ...(repositories && { repositories }),
76
+ };
77
+ }
78
+ function isSupportedEventKey(key) {
79
+ return Object.hasOwn(EVENT_PERMISSIONS, key);
80
+ }
81
+ /**
82
+ * Every App gets `metadata: read`; each handled event raises its permission
83
+ * to the level it needs, and `app.permissions` can raise it further.
84
+ */
85
+ function appPermissions(events, extra) {
86
+ checkPermissions(extra);
87
+ const permissions = new Map([
88
+ ["metadata", { name: "metadata", level: "read", events: [] }],
89
+ ]);
90
+ for (const key of events) {
91
+ const { permission, level } = EVENT_PERMISSIONS[key];
92
+ const current = permissions.get(permission);
93
+ if (!current || (current.level === "read" && level === "write"))
94
+ permissions.set(permission, { name: permission, level, events: [key] });
95
+ else if (current.level === level)
96
+ current.events.push(key);
97
+ }
98
+ for (const [name, level] of Object.entries(extra)) {
99
+ const current = permissions.get(name);
100
+ if (!current || (current.level === "read" && level === "write"))
101
+ permissions.set(name, { name, level, events: [] });
102
+ }
103
+ return [...permissions.values()].sort((a, b) => a.name.localeCompare(b.name));
104
+ }
105
+ /** JavaScript callers can pass anything, so check what types promise. */
106
+ function checkPermissions(permissions) {
107
+ const names = Object.keys(permissions).sort();
108
+ if (names.length > MAX_PERMISSIONS)
109
+ throw new TypeError(`GitHub app.permissions must list at most ${MAX_PERMISSIONS} permissions`);
110
+ for (const name of names) {
111
+ if (!PERMISSION_NAME.test(name))
112
+ throw new TypeError(`GitHub app.permissions has an invalid permission name '${name}'; use GitHub's names, such as contents`);
113
+ if (permissions[name] !== "read" && permissions[name] !== "write")
114
+ throw new TypeError(`GitHub app.permissions.${name} must be read or write`);
115
+ }
116
+ }
117
+ /**
118
+ * The repositories the channel is limited to, lowercased since GitHub names
119
+ * are case-insensitive. One installation covers them, so they share an owner.
120
+ */
121
+ export function repositoryAllowlist(repositories) {
122
+ if (repositories === undefined)
123
+ return undefined;
124
+ // An empty list could mean "none" or "all"; neither should be silent.
125
+ if (repositories.length === 0)
126
+ throw new TypeError("GitHub app.repositories must list at least one repository; omit it to allow every repository");
127
+ const valid = new Set();
128
+ for (const entry of repositories) {
129
+ const repository = entry.trim();
130
+ const [owner = "", name = "", ...rest] = repository.split("/");
131
+ if (rest.length > 0 ||
132
+ !GITHUB_LOGIN.test(owner) ||
133
+ !REPOSITORY_NAME.test(name) ||
134
+ name === "." ||
135
+ name === "..")
136
+ throw new TypeError(`GitHub app.repositories entry '${repository}' must be owner/name`);
137
+ valid.add(repository.toLowerCase());
138
+ }
139
+ if (valid.size > MAX_REPOSITORIES)
140
+ throw new TypeError(`GitHub app.repositories must list at most ${MAX_REPOSITORIES} repositories`);
141
+ const owners = [...new Set([...valid].map((r) => r.split("/")[0]))].sort();
142
+ if (owners.length > 1)
143
+ throw new TypeError(`GitHub app.repositories must all belong to one owner, because one installation covers them (found: ${owners.join(", ")})`);
144
+ return [...valid].sort();
145
+ }
146
+ //# sourceMappingURL=app-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-setup.js","sourceRoot":"","sources":["../../../src/channels/github/app-setup.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,11 @@
1
1
  import { type HttpChannel } from "../http/index.js";
2
2
  import type { GitHubChannelOptions } from "./types.js";
3
3
  export type { GitHubAppOptions, GitHubChannelOptions, GitHubChannelThread, GitHubEvent, GitHubEventCallback, GitHubEventResult, PayloadFor, SupportedEventKey, } from "./types.js";
4
- /** Adapt verified GitHub events into HTTP channel messages or skips. */
4
+ /**
5
+ * Adapt verified GitHub events into HTTP channel messages or skips.
6
+ *
7
+ * @experimental The GitHub channel may change in a minor release.
8
+ */
5
9
  export declare function githubChannel(options?: GitHubChannelOptions): HttpChannel;
6
10
  /** Forget values read from Agent Auth; for tests. */
7
11
  export declare function resetGitHubAppValues(): void;