managed-deepagents 0.5.0-dev.79 → 0.5.0-dev.81

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 (435) hide show
  1. package/README.md +56 -13
  2. package/dist/channels/assistant-text.js +1 -1
  3. package/dist/channels/assistant-text.js.map +1 -1
  4. package/dist/channels/binding.d.ts.map +1 -1
  5. package/dist/channels/binding.js +3 -1
  6. package/dist/channels/binding.js.map +1 -1
  7. package/dist/channels/index.d.ts +6 -8
  8. package/dist/channels/index.d.ts.map +1 -1
  9. package/dist/channels/index.js +5 -5
  10. package/dist/channels/index.js.map +1 -1
  11. package/dist/channels/manifest.d.ts +36 -3
  12. package/dist/channels/manifest.d.ts.map +1 -1
  13. package/dist/channels/messaging-registry.d.ts +17 -0
  14. package/dist/channels/messaging-registry.d.ts.map +1 -0
  15. package/dist/channels/messaging-registry.js +44 -0
  16. package/dist/channels/messaging-registry.js.map +1 -0
  17. package/dist/channels/registry.d.ts +4 -3
  18. package/dist/channels/registry.d.ts.map +1 -1
  19. package/dist/channels/registry.js +6 -5
  20. package/dist/channels/registry.js.map +1 -1
  21. package/dist/channels/schedule-delivery.d.ts +4 -1
  22. package/dist/channels/schedule-delivery.d.ts.map +1 -1
  23. package/dist/channels/schedule-delivery.js +4 -2
  24. package/dist/channels/schedule-delivery.js.map +1 -1
  25. package/dist/connectors/github/adapter-core.d.ts +15 -0
  26. package/dist/connectors/github/adapter-core.d.ts.map +1 -0
  27. package/dist/connectors/github/adapter-core.js +52 -0
  28. package/dist/connectors/github/adapter-core.js.map +1 -0
  29. package/dist/{channels → connectors}/github/define.d.ts +28 -58
  30. package/dist/connectors/github/define.d.ts.map +1 -0
  31. package/dist/connectors/github/define.js +72 -0
  32. package/dist/connectors/github/define.js.map +1 -0
  33. package/dist/{channels → connectors}/github/http.d.ts +4 -4
  34. package/dist/connectors/github/http.d.ts.map +1 -0
  35. package/dist/{channels → connectors}/github/http.js +24 -25
  36. package/dist/connectors/github/http.js.map +1 -0
  37. package/dist/connectors/github/index.d.ts +59 -16
  38. package/dist/connectors/github/index.d.ts.map +1 -1
  39. package/dist/connectors/github/index.js +159 -73
  40. package/dist/connectors/github/index.js.map +1 -1
  41. package/dist/connectors/github/match.d.ts +20 -0
  42. package/dist/connectors/github/match.d.ts.map +1 -0
  43. package/dist/connectors/github/match.js +41 -0
  44. package/dist/connectors/github/match.js.map +1 -0
  45. package/dist/{channels → connectors}/github/normalize.d.ts +1 -1
  46. package/dist/connectors/github/normalize.d.ts.map +1 -0
  47. package/dist/{channels → connectors}/github/normalize.js +2 -2
  48. package/dist/connectors/github/normalize.js.map +1 -0
  49. package/dist/connectors/github/sandbox.d.ts.map +1 -1
  50. package/dist/connectors/github/sandbox.js +30 -23
  51. package/dist/connectors/github/sandbox.js.map +1 -1
  52. package/dist/connectors/github/source-thread.d.ts.map +1 -0
  53. package/dist/connectors/github/source-thread.js.map +1 -0
  54. package/dist/{channels → connectors}/github/transport.d.ts +7 -1
  55. package/dist/connectors/github/transport.d.ts.map +1 -0
  56. package/dist/{channels → connectors}/github/transport.js +18 -4
  57. package/dist/connectors/github/transport.js.map +1 -0
  58. package/dist/connectors/langsmith/index.d.ts +29 -17
  59. package/dist/connectors/langsmith/index.d.ts.map +1 -1
  60. package/dist/connectors/langsmith/index.js +34 -29
  61. package/dist/connectors/langsmith/index.js.map +1 -1
  62. package/dist/connectors/langsmith/routes.d.ts +4 -15
  63. package/dist/connectors/langsmith/routes.d.ts.map +1 -1
  64. package/dist/connectors/langsmith/routes.js +63 -72
  65. package/dist/connectors/langsmith/routes.js.map +1 -1
  66. package/dist/connectors/marketplace/catalog.d.ts +96 -0
  67. package/dist/connectors/marketplace/catalog.d.ts.map +1 -0
  68. package/dist/connectors/marketplace/catalog.js +213 -0
  69. package/dist/connectors/marketplace/catalog.js.map +1 -0
  70. package/dist/connectors/marketplace/fleet-mcp.d.ts +62 -0
  71. package/dist/connectors/marketplace/fleet-mcp.d.ts.map +1 -0
  72. package/dist/connectors/marketplace/fleet-mcp.js +215 -0
  73. package/dist/connectors/marketplace/fleet-mcp.js.map +1 -0
  74. package/dist/connectors/marketplace/index.d.ts +31 -0
  75. package/dist/connectors/marketplace/index.d.ts.map +1 -0
  76. package/dist/connectors/marketplace/index.js +39 -0
  77. package/dist/connectors/marketplace/index.js.map +1 -0
  78. package/dist/connectors/marketplace/load.d.ts +15 -0
  79. package/dist/connectors/marketplace/load.d.ts.map +1 -0
  80. package/dist/connectors/marketplace/load.js +265 -0
  81. package/dist/connectors/marketplace/load.js.map +1 -0
  82. package/dist/connectors/mcp/index.d.ts +13 -20
  83. package/dist/connectors/mcp/index.d.ts.map +1 -1
  84. package/dist/connectors/mcp/index.js +92 -112
  85. package/dist/connectors/mcp/index.js.map +1 -1
  86. package/dist/connectors/mcp/load.d.ts.map +1 -1
  87. package/dist/connectors/mcp/load.js +16 -40
  88. package/dist/connectors/mcp/load.js.map +1 -1
  89. package/dist/{channels → connectors}/slack/adapter-core.d.ts +1 -1
  90. package/dist/connectors/slack/adapter-core.d.ts.map +1 -0
  91. package/dist/connectors/slack/adapter-core.js.map +1 -0
  92. package/dist/{channels → connectors}/slack/adapter.d.ts +3 -4
  93. package/dist/connectors/slack/adapter.d.ts.map +1 -0
  94. package/dist/{channels → connectors}/slack/adapter.js +1 -1
  95. package/dist/connectors/slack/adapter.js.map +1 -0
  96. package/dist/{channels → connectors}/slack/http.d.ts +6 -40
  97. package/dist/connectors/slack/http.d.ts.map +1 -0
  98. package/dist/{channels → connectors}/slack/http.js +38 -127
  99. package/dist/connectors/slack/http.js.map +1 -0
  100. package/dist/connectors/slack/index.d.ts +108 -0
  101. package/dist/connectors/slack/index.d.ts.map +1 -0
  102. package/dist/connectors/slack/index.js +191 -0
  103. package/dist/connectors/slack/index.js.map +1 -0
  104. package/dist/{channels → connectors}/slack/normalize.d.ts +5 -5
  105. package/dist/connectors/slack/normalize.d.ts.map +1 -0
  106. package/dist/{channels → connectors}/slack/normalize.js +21 -20
  107. package/dist/connectors/slack/normalize.js.map +1 -0
  108. package/dist/connectors/slack/source-thread.d.ts.map +1 -0
  109. package/dist/connectors/slack/source-thread.js.map +1 -0
  110. package/dist/{channels → connectors}/slack/transport.d.ts +1 -1
  111. package/dist/connectors/slack/transport.d.ts.map +1 -0
  112. package/dist/{channels → connectors}/slack/transport.js +4 -3
  113. package/dist/connectors/slack/transport.js.map +1 -0
  114. package/dist/connectors/tool-selection.d.ts +55 -0
  115. package/dist/connectors/tool-selection.d.ts.map +1 -0
  116. package/dist/connectors/tool-selection.js +112 -0
  117. package/dist/connectors/tool-selection.js.map +1 -0
  118. package/dist/connectors/toolserver/catalog.d.ts +332 -0
  119. package/dist/connectors/toolserver/catalog.d.ts.map +1 -0
  120. package/dist/connectors/toolserver/catalog.js +463 -0
  121. package/dist/connectors/toolserver/catalog.js.map +1 -0
  122. package/dist/connectors/toolserver/connectors.d.ts +698 -0
  123. package/dist/connectors/toolserver/connectors.d.ts.map +1 -0
  124. package/dist/connectors/toolserver/connectors.js +13 -0
  125. package/dist/connectors/toolserver/connectors.js.map +1 -0
  126. package/dist/connectors/toolserver/index.d.ts +144 -0
  127. package/dist/connectors/toolserver/index.d.ts.map +1 -0
  128. package/dist/connectors/toolserver/index.js +107 -0
  129. package/dist/connectors/toolserver/index.js.map +1 -0
  130. package/dist/connectors/toolserver/integrations.d.ts +103 -0
  131. package/dist/connectors/toolserver/integrations.d.ts.map +1 -0
  132. package/dist/connectors/toolserver/integrations.js +277 -0
  133. package/dist/connectors/toolserver/integrations.js.map +1 -0
  134. package/dist/connectors/toolserver/load.d.ts +55 -0
  135. package/dist/connectors/toolserver/load.d.ts.map +1 -0
  136. package/dist/connectors/toolserver/load.js +290 -0
  137. package/dist/connectors/toolserver/load.js.map +1 -0
  138. package/dist/extension.d.ts +77 -0
  139. package/dist/extension.d.ts.map +1 -0
  140. package/dist/extension.js +127 -0
  141. package/dist/extension.js.map +1 -0
  142. package/dist/identity/actor-subject.d.ts +60 -0
  143. package/dist/identity/actor-subject.d.ts.map +1 -0
  144. package/dist/identity/actor-subject.js +107 -0
  145. package/dist/identity/actor-subject.js.map +1 -0
  146. package/dist/identity/byo-oauth.d.ts +81 -0
  147. package/dist/identity/byo-oauth.d.ts.map +1 -0
  148. package/dist/identity/byo-oauth.js +145 -0
  149. package/dist/identity/byo-oauth.js.map +1 -0
  150. package/dist/identity/claims.d.ts +18 -0
  151. package/dist/identity/claims.d.ts.map +1 -0
  152. package/dist/identity/claims.js +37 -0
  153. package/dist/identity/claims.js.map +1 -0
  154. package/dist/identity/connect-inference.d.ts +38 -0
  155. package/dist/identity/connect-inference.d.ts.map +1 -0
  156. package/dist/identity/connect-inference.js +55 -0
  157. package/dist/identity/connect-inference.js.map +1 -0
  158. package/dist/identity/connect-provider-types.d.ts +35 -6
  159. package/dist/identity/connect-provider-types.d.ts.map +1 -1
  160. package/dist/identity/connect-provider-types.js +3 -1
  161. package/dist/identity/connect-provider-types.js.map +1 -1
  162. package/dist/identity/connect-provider.d.ts +9 -4
  163. package/dist/identity/connect-provider.d.ts.map +1 -1
  164. package/dist/identity/connect-provider.js +38 -12
  165. package/dist/identity/connect-provider.js.map +1 -1
  166. package/dist/identity/credential-resolvers.d.ts +33 -0
  167. package/dist/identity/credential-resolvers.d.ts.map +1 -0
  168. package/dist/identity/credential-resolvers.js +62 -0
  169. package/dist/identity/credential-resolvers.js.map +1 -0
  170. package/dist/identity/fleet-connect-hint.d.ts +39 -0
  171. package/dist/identity/fleet-connect-hint.d.ts.map +1 -0
  172. package/dist/identity/fleet-connect-hint.js +134 -0
  173. package/dist/identity/fleet-connect-hint.js.map +1 -0
  174. package/dist/identity/fleet-connect.d.ts +92 -0
  175. package/dist/identity/fleet-connect.d.ts.map +1 -0
  176. package/dist/identity/fleet-connect.js +256 -0
  177. package/dist/identity/fleet-connect.js.map +1 -0
  178. package/dist/identity/fleet-integration-connect.d.ts +32 -0
  179. package/dist/identity/fleet-integration-connect.d.ts.map +1 -0
  180. package/dist/identity/fleet-integration-connect.js +35 -0
  181. package/dist/identity/fleet-integration-connect.js.map +1 -0
  182. package/dist/identity/fleet.d.ts +56 -0
  183. package/dist/identity/fleet.d.ts.map +1 -0
  184. package/dist/identity/fleet.js +133 -0
  185. package/dist/identity/fleet.js.map +1 -0
  186. package/dist/identity/github/connect-http.d.ts +9 -4
  187. package/dist/identity/github/connect-http.d.ts.map +1 -1
  188. package/dist/identity/github/connect-http.js +34 -15
  189. package/dist/identity/github/connect-http.js.map +1 -1
  190. package/dist/identity/github/credentials-store.d.ts +10 -10
  191. package/dist/identity/github/credentials-store.d.ts.map +1 -1
  192. package/dist/identity/github/credentials-store.js +40 -43
  193. package/dist/identity/github/credentials-store.js.map +1 -1
  194. package/dist/identity/github/credentials.d.ts +16 -13
  195. package/dist/identity/github/credentials.d.ts.map +1 -1
  196. package/dist/identity/github/credentials.js +43 -23
  197. package/dist/identity/github/credentials.js.map +1 -1
  198. package/dist/identity/github/index.d.ts +2 -3
  199. package/dist/identity/github/index.d.ts.map +1 -1
  200. package/dist/identity/github/index.js +1 -2
  201. package/dist/identity/github/index.js.map +1 -1
  202. package/dist/identity/github/oauth.d.ts +3 -6
  203. package/dist/identity/github/oauth.d.ts.map +1 -1
  204. package/dist/identity/github/oauth.js +9 -48
  205. package/dist/identity/github/oauth.js.map +1 -1
  206. package/dist/identity/google/connect-http.d.ts +38 -0
  207. package/dist/identity/google/connect-http.d.ts.map +1 -0
  208. package/dist/identity/google/connect-http.js +59 -0
  209. package/dist/identity/google/connect-http.js.map +1 -0
  210. package/dist/identity/google/index.d.ts +7 -0
  211. package/dist/identity/google/index.d.ts.map +1 -0
  212. package/dist/identity/google/index.js +6 -0
  213. package/dist/identity/google/index.js.map +1 -0
  214. package/dist/identity/google/oauth.d.ts +22 -0
  215. package/dist/identity/google/oauth.d.ts.map +1 -0
  216. package/dist/identity/google/oauth.js +48 -0
  217. package/dist/identity/google/oauth.js.map +1 -0
  218. package/dist/identity/index.d.ts +51 -29
  219. package/dist/identity/index.d.ts.map +1 -1
  220. package/dist/identity/index.js +122 -131
  221. package/dist/identity/index.js.map +1 -1
  222. package/dist/identity/linkedin/connect-http.d.ts +38 -0
  223. package/dist/identity/linkedin/connect-http.d.ts.map +1 -0
  224. package/dist/identity/linkedin/connect-http.js +59 -0
  225. package/dist/identity/linkedin/connect-http.js.map +1 -0
  226. package/dist/identity/linkedin/index.d.ts +7 -0
  227. package/dist/identity/linkedin/index.d.ts.map +1 -0
  228. package/dist/identity/linkedin/index.js +6 -0
  229. package/dist/identity/linkedin/index.js.map +1 -0
  230. package/dist/identity/linkedin/oauth.d.ts +22 -0
  231. package/dist/identity/linkedin/oauth.d.ts.map +1 -0
  232. package/dist/identity/linkedin/oauth.js +47 -0
  233. package/dist/identity/linkedin/oauth.js.map +1 -0
  234. package/dist/identity/loopback.d.ts +27 -2
  235. package/dist/identity/loopback.d.ts.map +1 -1
  236. package/dist/identity/loopback.js +61 -8
  237. package/dist/identity/loopback.js.map +1 -1
  238. package/dist/identity/marketplace/connect-hint.d.ts +31 -0
  239. package/dist/identity/marketplace/connect-hint.d.ts.map +1 -0
  240. package/dist/identity/marketplace/connect-hint.js +59 -0
  241. package/dist/identity/marketplace/connect-hint.js.map +1 -0
  242. package/dist/identity/marketplace/connect.d.ts +51 -0
  243. package/dist/identity/marketplace/connect.d.ts.map +1 -0
  244. package/dist/identity/marketplace/connect.js +88 -0
  245. package/dist/identity/marketplace/connect.js.map +1 -0
  246. package/dist/identity/marketplace/index.d.ts +9 -0
  247. package/dist/identity/marketplace/index.d.ts.map +1 -0
  248. package/dist/identity/marketplace/index.js +9 -0
  249. package/dist/identity/marketplace/index.js.map +1 -0
  250. package/dist/identity/microsoft/connect-http.d.ts +39 -0
  251. package/dist/identity/microsoft/connect-http.d.ts.map +1 -0
  252. package/dist/identity/microsoft/connect-http.js +60 -0
  253. package/dist/identity/microsoft/connect-http.js.map +1 -0
  254. package/dist/identity/microsoft/index.d.ts +7 -0
  255. package/dist/identity/microsoft/index.d.ts.map +1 -0
  256. package/dist/identity/microsoft/index.js +6 -0
  257. package/dist/identity/microsoft/index.js.map +1 -0
  258. package/dist/identity/microsoft/oauth.d.ts +24 -0
  259. package/dist/identity/microsoft/oauth.d.ts.map +1 -0
  260. package/dist/identity/microsoft/oauth.js +65 -0
  261. package/dist/identity/microsoft/oauth.js.map +1 -0
  262. package/dist/identity/oauth-tickets.d.ts +37 -0
  263. package/dist/identity/oauth-tickets.d.ts.map +1 -0
  264. package/dist/identity/oauth-tickets.js +114 -0
  265. package/dist/identity/oauth-tickets.js.map +1 -0
  266. package/dist/identity/options.d.ts +95 -0
  267. package/dist/identity/options.d.ts.map +1 -0
  268. package/dist/identity/options.js +175 -0
  269. package/dist/identity/options.js.map +1 -0
  270. package/dist/identity/slack/connect-http.d.ts +3 -3
  271. package/dist/identity/slack/connect-http.d.ts.map +1 -1
  272. package/dist/identity/slack/connect-http.js +23 -15
  273. package/dist/identity/slack/connect-http.js.map +1 -1
  274. package/dist/identity/slack/index.d.ts +1 -2
  275. package/dist/identity/slack/index.d.ts.map +1 -1
  276. package/dist/identity/slack/index.js +1 -2
  277. package/dist/identity/slack/index.js.map +1 -1
  278. package/dist/identity/slack/links.d.ts +15 -15
  279. package/dist/identity/slack/links.d.ts.map +1 -1
  280. package/dist/identity/slack/links.js +50 -53
  281. package/dist/identity/slack/links.js.map +1 -1
  282. package/dist/identity/slack/oauth.d.ts +2 -5
  283. package/dist/identity/slack/oauth.d.ts.map +1 -1
  284. package/dist/identity/slack/oauth.js +8 -63
  285. package/dist/identity/slack/oauth.js.map +1 -1
  286. package/dist/identity/supabase.js +9 -9
  287. package/dist/identity/supabase.js.map +1 -1
  288. package/dist/identity/types.d.ts +96 -38
  289. package/dist/identity/types.d.ts.map +1 -1
  290. package/dist/identity/x/connect-http.d.ts +39 -0
  291. package/dist/identity/x/connect-http.d.ts.map +1 -0
  292. package/dist/identity/x/connect-http.js +69 -0
  293. package/dist/identity/x/connect-http.js.map +1 -0
  294. package/dist/identity/x/index.d.ts +6 -0
  295. package/dist/identity/x/index.d.ts.map +1 -0
  296. package/dist/identity/x/index.js +5 -0
  297. package/dist/identity/x/index.js.map +1 -0
  298. package/dist/index.d.ts +14 -21
  299. package/dist/index.d.ts.map +1 -1
  300. package/dist/index.js +3 -12
  301. package/dist/index.js.map +1 -1
  302. package/dist/ingress/index.d.ts +54 -0
  303. package/dist/ingress/index.d.ts.map +1 -0
  304. package/dist/ingress/index.js +128 -0
  305. package/dist/ingress/index.js.map +1 -0
  306. package/dist/namespaces.d.ts +306 -0
  307. package/dist/namespaces.d.ts.map +1 -0
  308. package/dist/namespaces.js +127 -0
  309. package/dist/namespaces.js.map +1 -0
  310. package/dist/runtime/auth.d.ts +18 -14
  311. package/dist/runtime/auth.d.ts.map +1 -1
  312. package/dist/runtime/auth.js +88 -68
  313. package/dist/runtime/auth.js.map +1 -1
  314. package/dist/runtime/backend.d.ts +1 -1
  315. package/dist/runtime/backend.d.ts.map +1 -1
  316. package/dist/runtime/connector.d.ts +66 -23
  317. package/dist/runtime/connector.d.ts.map +1 -1
  318. package/dist/runtime/connector.js +63 -27
  319. package/dist/runtime/connector.js.map +1 -1
  320. package/dist/runtime/cors.d.ts +2 -3
  321. package/dist/runtime/cors.d.ts.map +1 -1
  322. package/dist/runtime/cors.js +2 -7
  323. package/dist/runtime/cors.js.map +1 -1
  324. package/dist/runtime/credentials.d.ts +2 -2
  325. package/dist/runtime/credentials.d.ts.map +1 -1
  326. package/dist/runtime/credentials.js +41 -16
  327. package/dist/runtime/credentials.js.map +1 -1
  328. package/dist/runtime/http.d.ts +47 -0
  329. package/dist/runtime/http.d.ts.map +1 -0
  330. package/dist/runtime/http.js +54 -0
  331. package/dist/runtime/http.js.map +1 -0
  332. package/dist/runtime/identity-http.d.ts +6 -16
  333. package/dist/runtime/identity-http.d.ts.map +1 -1
  334. package/dist/runtime/identity-http.js +112 -54
  335. package/dist/runtime/identity-http.js.map +1 -1
  336. package/dist/runtime/identity-runtime.d.ts +18 -17
  337. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  338. package/dist/runtime/identity-runtime.js +55 -39
  339. package/dist/runtime/identity-runtime.js.map +1 -1
  340. package/dist/runtime/index.d.ts +85 -222
  341. package/dist/runtime/index.d.ts.map +1 -1
  342. package/dist/runtime/index.js +73 -34
  343. package/dist/runtime/index.js.map +1 -1
  344. package/dist/runtime/memory/index.d.ts +1 -0
  345. package/dist/runtime/memory/index.d.ts.map +1 -1
  346. package/dist/runtime/memory/index.js +1 -0
  347. package/dist/runtime/memory/index.js.map +1 -1
  348. package/dist/runtime/memory/lazy-context-backend.d.ts +66 -0
  349. package/dist/runtime/memory/lazy-context-backend.d.ts.map +1 -0
  350. package/dist/runtime/memory/lazy-context-backend.js +154 -0
  351. package/dist/runtime/memory/lazy-context-backend.js.map +1 -0
  352. package/dist/runtime/memory/user-repo.js +3 -3
  353. package/dist/runtime/memory/user-repo.js.map +1 -1
  354. package/dist/runtime/recursion-limit.d.ts +22 -0
  355. package/dist/runtime/recursion-limit.d.ts.map +1 -0
  356. package/dist/runtime/recursion-limit.js +46 -0
  357. package/dist/runtime/recursion-limit.js.map +1 -0
  358. package/dist/runtime/sandbox-manager.d.ts +33 -0
  359. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  360. package/dist/runtime/sandbox-manager.js +173 -9
  361. package/dist/runtime/sandbox-manager.js.map +1 -1
  362. package/dist/runtime/sandbox-stream-retry.d.ts +16 -0
  363. package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
  364. package/dist/runtime/sandbox-stream-retry.js +61 -0
  365. package/dist/runtime/sandbox-stream-retry.js.map +1 -0
  366. package/dist/runtime/setup-script.d.ts.map +1 -1
  367. package/dist/runtime/setup-script.js +4 -2
  368. package/dist/runtime/setup-script.js.map +1 -1
  369. package/dist/runtime/validated-token.d.ts +1 -1
  370. package/dist/runtime/validated-token.d.ts.map +1 -1
  371. package/dist/runtime/validated-token.js +75 -33
  372. package/dist/runtime/validated-token.js.map +1 -1
  373. package/dist/sandbox.d.ts +19 -22
  374. package/dist/sandbox.d.ts.map +1 -1
  375. package/dist/sandbox.js +20 -34
  376. package/dist/sandbox.js.map +1 -1
  377. package/dist/schedules.js +8 -9
  378. package/dist/schedules.js.map +1 -1
  379. package/package.json +19 -28
  380. package/dist/channels/collect.d.ts +0 -26
  381. package/dist/channels/collect.d.ts.map +0 -1
  382. package/dist/channels/collect.js +0 -42
  383. package/dist/channels/collect.js.map +0 -1
  384. package/dist/channels/github/adapter-core.d.ts +0 -6
  385. package/dist/channels/github/adapter-core.d.ts.map +0 -1
  386. package/dist/channels/github/adapter-core.js +0 -27
  387. package/dist/channels/github/adapter-core.js.map +0 -1
  388. package/dist/channels/github/adapter.d.ts +0 -16
  389. package/dist/channels/github/adapter.d.ts.map +0 -1
  390. package/dist/channels/github/adapter.js +0 -52
  391. package/dist/channels/github/adapter.js.map +0 -1
  392. package/dist/channels/github/define.d.ts.map +0 -1
  393. package/dist/channels/github/define.js +0 -166
  394. package/dist/channels/github/define.js.map +0 -1
  395. package/dist/channels/github/http.d.ts.map +0 -1
  396. package/dist/channels/github/http.js.map +0 -1
  397. package/dist/channels/github/index.d.ts +0 -12
  398. package/dist/channels/github/index.d.ts.map +0 -1
  399. package/dist/channels/github/index.js +0 -10
  400. package/dist/channels/github/index.js.map +0 -1
  401. package/dist/channels/github/normalize.d.ts.map +0 -1
  402. package/dist/channels/github/normalize.js.map +0 -1
  403. package/dist/channels/github/source-thread.d.ts.map +0 -1
  404. package/dist/channels/github/source-thread.js.map +0 -1
  405. package/dist/channels/github/transport.d.ts.map +0 -1
  406. package/dist/channels/github/transport.js.map +0 -1
  407. package/dist/channels/plugin.d.ts +0 -61
  408. package/dist/channels/plugin.d.ts.map +0 -1
  409. package/dist/channels/plugin.js +0 -80
  410. package/dist/channels/plugin.js.map +0 -1
  411. package/dist/channels/slack/adapter-core.d.ts.map +0 -1
  412. package/dist/channels/slack/adapter-core.js.map +0 -1
  413. package/dist/channels/slack/adapter.d.ts.map +0 -1
  414. package/dist/channels/slack/adapter.js.map +0 -1
  415. package/dist/channels/slack/define.d.ts +0 -74
  416. package/dist/channels/slack/define.d.ts.map +0 -1
  417. package/dist/channels/slack/define.js +0 -160
  418. package/dist/channels/slack/define.js.map +0 -1
  419. package/dist/channels/slack/http.d.ts.map +0 -1
  420. package/dist/channels/slack/http.js.map +0 -1
  421. package/dist/channels/slack/index.d.ts +0 -18
  422. package/dist/channels/slack/index.d.ts.map +0 -1
  423. package/dist/channels/slack/index.js +0 -13
  424. package/dist/channels/slack/index.js.map +0 -1
  425. package/dist/channels/slack/normalize.d.ts.map +0 -1
  426. package/dist/channels/slack/normalize.js.map +0 -1
  427. package/dist/channels/slack/source-thread.d.ts.map +0 -1
  428. package/dist/channels/slack/source-thread.js.map +0 -1
  429. package/dist/channels/slack/transport.d.ts.map +0 -1
  430. package/dist/channels/slack/transport.js.map +0 -1
  431. /package/dist/{channels → connectors}/github/source-thread.d.ts +0 -0
  432. /package/dist/{channels → connectors}/github/source-thread.js +0 -0
  433. /package/dist/{channels → connectors}/slack/adapter-core.js +0 -0
  434. /package/dist/{channels → connectors}/slack/source-thread.d.ts +0 -0
  435. /package/dist/{channels → connectors}/slack/source-thread.js +0 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Microsoft BYO OAuth descriptor — optional non-LangSmith Connect-with-Microsoft.
3
+ * The default path uses Fleet auth-sessions instead.
4
+ */
5
+ import { type ByoOauthConfig, type ByoOauthClient } from "../byo-oauth.js";
6
+ export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, } from "../byo-oauth.js";
7
+ export type MicrosoftOauthConfig = ByoOauthConfig;
8
+ /** Azure AD tenant (`common`, `organizations`, `consumers`, or a tenant id). */
9
+ export declare const MICROSOFT_OAUTH_TENANT_ENV = "MICROSOFT_OAUTH_TENANT";
10
+ /** Microsoft BYO OAuth client (config, authorize, exchange, Fleet adapter). */
11
+ export declare const microsoftByoOauth: ByoOauthClient;
12
+ export declare const MICROSOFT_OAUTH_CLIENT_ID_ENV: string;
13
+ export declare const MICROSOFT_OAUTH_CLIENT_SECRET_ENV: string;
14
+ export declare const MICROSOFT_OAUTH_SCOPES_ENV: string;
15
+ export declare const MICROSOFT_OAUTH_AUTH_URL_ENV: string;
16
+ export declare const MICROSOFT_OAUTH_TOKEN_URL_ENV: string;
17
+ export declare const MICROSOFT_OAUTH_USERINFO_URL_ENV: string;
18
+ /** Microsoft-bound OAuth state / connect-ticket helpers. */
19
+ export declare const microsoftOauthTickets: import("../oauth-tickets.js").OauthTickets;
20
+ export declare const resolveMicrosoftOauthRedirectBase: typeof import("../byo-oauth.js").resolveSlackOauthRedirectBase;
21
+ export declare const readMicrosoftOauthConfig: (env?: NodeJS.ProcessEnv) => ByoOauthConfig | null;
22
+ export declare const buildMicrosoftAuthorizeUrl: (config: ByoOauthConfig, state: string, redirectUri: string, scopes?: string) => string;
23
+ export declare const exchangeMicrosoftOauthCode: (config: ByoOauthConfig, code: string, redirectUri: string, fetchImpl?: typeof fetch) => Promise<import("../fleet-connect.js").FleetVaultByoTokenResult>;
24
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/microsoft/oauth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,oBAAoB,GAAG,cAAc,CAAC;AAElD,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,2BAA2B,CAAC;AAqBnE,+EAA+E;AAC/E,eAAO,MAAM,iBAAiB,EAAE,cA2B9B,CAAC;AAEH,eAAO,MAAM,6BAA6B,QAAiC,CAAC;AAC5E,eAAO,MAAM,iCAAiC,QACV,CAAC;AACrC,eAAO,MAAM,0BAA0B,QAA+B,CAAC;AACvE,eAAO,MAAM,4BAA4B,QAAgC,CAAC;AAC1E,eAAO,MAAM,6BAA6B,QAAiC,CAAC;AAC5E,eAAO,MAAM,gCAAgC,QACV,CAAC;AAEpC,4DAA4D;AAC5D,eAAO,MAAM,qBAAqB,4CAA4B,CAAC;AAE/D,eAAO,MAAM,iCAAiC,gEACP,CAAC;AAExC,eAAO,MAAM,wBAAwB,oDAA+B,CAAC;AACrE,eAAO,MAAM,0BAA0B,yFAAsC,CAAC;AAC9E,eAAO,MAAM,0BAA0B,0JAAiC,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Microsoft BYO OAuth descriptor — optional non-LangSmith Connect-with-Microsoft.
3
+ * The default path uses Fleet auth-sessions instead.
4
+ */
5
+ import { createByoOauthClient, } from "../byo-oauth.js";
6
+ export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, } from "../byo-oauth.js";
7
+ /** Azure AD tenant (`common`, `organizations`, `consumers`, or a tenant id). */
8
+ export const MICROSOFT_OAUTH_TENANT_ENV = "MICROSOFT_OAUTH_TENANT";
9
+ const DEFAULT_TENANT = "common";
10
+ const DEFAULT_USERINFO_URL = "https://graph.microsoft.com/v1.0/me";
11
+ /** Profile + refresh; connector-derived unions replace this at authorize time. */
12
+ const DEFAULT_SCOPES = [
13
+ "openid",
14
+ "email",
15
+ "profile",
16
+ "offline_access",
17
+ "https://graph.microsoft.com/User.Read",
18
+ ].join(" ");
19
+ function defaultAuthUrl(tenant) {
20
+ return `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/authorize`;
21
+ }
22
+ function defaultTokenUrl(tenant) {
23
+ return `https://login.microsoftonline.com/${tenant}/oauth2/v2.0/token`;
24
+ }
25
+ /** Microsoft BYO OAuth client (config, authorize, exchange, Fleet adapter). */
26
+ export const microsoftByoOauth = createByoOauthClient({
27
+ providerId: "microsoft",
28
+ displayName: "Microsoft",
29
+ envPrefix: "MICROSOFT_OAUTH",
30
+ defaultEndpoints(env) {
31
+ const tenant = env[MICROSOFT_OAUTH_TENANT_ENV]?.trim() || DEFAULT_TENANT;
32
+ return {
33
+ authUrl: defaultAuthUrl(tenant),
34
+ tokenUrl: defaultTokenUrl(tenant),
35
+ userInfoUrl: DEFAULT_USERINFO_URL,
36
+ defaultScopes: DEFAULT_SCOPES,
37
+ };
38
+ },
39
+ authorizeParams: { response_mode: "query" },
40
+ parseUserInfo(json) {
41
+ const mail = typeof json.mail === "string" ? json.mail : undefined;
42
+ const upn = typeof json.userPrincipalName === "string"
43
+ ? json.userPrincipalName
44
+ : undefined;
45
+ const id = typeof json.id === "string" ? json.id : undefined;
46
+ return {
47
+ ...(mail || upn ? { email: mail || upn } : {}),
48
+ ...(id ? { subject: id } : {}),
49
+ };
50
+ },
51
+ subjectMetadataKey: "microsoft_oid",
52
+ });
53
+ export const MICROSOFT_OAUTH_CLIENT_ID_ENV = microsoftByoOauth.env.clientId;
54
+ export const MICROSOFT_OAUTH_CLIENT_SECRET_ENV = microsoftByoOauth.env.clientSecret;
55
+ export const MICROSOFT_OAUTH_SCOPES_ENV = microsoftByoOauth.env.scopes;
56
+ export const MICROSOFT_OAUTH_AUTH_URL_ENV = microsoftByoOauth.env.authUrl;
57
+ export const MICROSOFT_OAUTH_TOKEN_URL_ENV = microsoftByoOauth.env.tokenUrl;
58
+ export const MICROSOFT_OAUTH_USERINFO_URL_ENV = microsoftByoOauth.env.userInfoUrl;
59
+ /** Microsoft-bound OAuth state / connect-ticket helpers. */
60
+ export const microsoftOauthTickets = microsoftByoOauth.tickets;
61
+ export const resolveMicrosoftOauthRedirectBase = microsoftByoOauth.resolveRedirectBase;
62
+ export const readMicrosoftOauthConfig = microsoftByoOauth.readConfig;
63
+ export const buildMicrosoftAuthorizeUrl = microsoftByoOauth.buildAuthorizeUrl;
64
+ export const exchangeMicrosoftOauthCode = microsoftByoOauth.exchangeCode;
65
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/microsoft/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Shared OAuth state and connect-ticket JWTs for Connect-with-X providers.
3
+ *
4
+ * Parameterized by provider id so each integration gets distinct `typ` values
5
+ * (`mda-{id}-oauth-state`, `mda-{id}-connect-ticket`) without copying JWT code.
6
+ */
7
+ export declare function createOauthState(providerId: string, userId: string, signingKey: string, nowMs?: number): Promise<string>;
8
+ export declare function verifyOauthState(providerId: string, state: string, signingKey: string, nowMs?: number): Promise<{
9
+ userId: string;
10
+ }>;
11
+ /**
12
+ * Mint a short-lived connect ticket for channel actors (Slack, etc.) who have
13
+ * no browser session. The Connect start route accepts `?ticket=…` and binds
14
+ * the OAuth vault subject to this user id.
15
+ */
16
+ export declare function createConnectTicket(providerId: string, userId: string, signingKey: string, nowMs?: number): Promise<string>;
17
+ export declare function verifyConnectTicket(providerId: string, ticket: string, signingKey: string, nowMs?: number): Promise<{
18
+ userId: string;
19
+ }>;
20
+ /** Bound OAuth state / connect-ticket helpers for one Connect provider id. */
21
+ export interface OauthTickets {
22
+ readonly providerId: string;
23
+ createState(userId: string, signingKey: string, nowMs?: number): Promise<string>;
24
+ verifyState(state: string, signingKey: string, nowMs?: number): Promise<{
25
+ userId: string;
26
+ }>;
27
+ createTicket(userId: string, signingKey: string, nowMs?: number): Promise<string>;
28
+ verifyTicket(ticket: string, signingKey: string, nowMs?: number): Promise<{
29
+ userId: string;
30
+ }>;
31
+ }
32
+ /**
33
+ * Bind {@link createOauthState} / ticket helpers to a Connect provider id
34
+ * (`mda-{id}-oauth-state`, `mda-{id}-connect-ticket`).
35
+ */
36
+ export declare function oauthTicketsFor(providerId: string): OauthTickets;
37
+ //# sourceMappingURL=oauth-tickets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-tickets.d.ts","sourceRoot":"","sources":["../../src/identity/oauth-tickets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB7B;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB7B;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,WAAW,CACT,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,WAAW,CACT,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/B,YAAY,CACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAAC;IACnB,YAAY,CACV,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAgBhE"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Shared OAuth state and connect-ticket JWTs for Connect-with-X providers.
3
+ *
4
+ * Parameterized by provider id so each integration gets distinct `typ` values
5
+ * (`mda-{id}-oauth-state`, `mda-{id}-connect-ticket`) without copying JWT code.
6
+ */
7
+ import { randomBytes } from "node:crypto";
8
+ import { jwtVerify, SignJWT } from "jose";
9
+ const STATE_TTL_MS = 10 * 60 * 1000;
10
+ /** Short-lived ticket so Slack/email actors can open Connect without a browser session. */
11
+ const CONNECT_TICKET_TTL_MS = 30 * 60 * 1000;
12
+ function stateTyp(providerId) {
13
+ return `mda-${providerId}-oauth-state`;
14
+ }
15
+ function ticketTyp(providerId) {
16
+ return `mda-${providerId}-connect-ticket`;
17
+ }
18
+ function stateSigningKey(signingKey) {
19
+ return new TextEncoder().encode(signingKey);
20
+ }
21
+ export async function createOauthState(providerId, userId, signingKey, nowMs = Date.now()) {
22
+ const iat = Math.floor(nowMs / 1000);
23
+ const exp = Math.floor((nowMs + STATE_TTL_MS) / 1000);
24
+ return new SignJWT({
25
+ userId,
26
+ nonce: randomBytes(16).toString("hex"),
27
+ })
28
+ .setProtectedHeader({ alg: "HS256", typ: stateTyp(providerId) })
29
+ .setIssuedAt(iat)
30
+ .setExpirationTime(exp)
31
+ .sign(stateSigningKey(signingKey));
32
+ }
33
+ export async function verifyOauthState(providerId, state, signingKey, nowMs = Date.now()) {
34
+ try {
35
+ const { payload } = await jwtVerify(state, stateSigningKey(signingKey), {
36
+ algorithms: ["HS256"],
37
+ typ: stateTyp(providerId),
38
+ currentDate: new Date(nowMs),
39
+ });
40
+ if (typeof payload.userId !== "string" || !payload.userId) {
41
+ throw new Error("invalid OAuth state actor");
42
+ }
43
+ return { userId: payload.userId };
44
+ }
45
+ catch (err) {
46
+ if (err instanceof Error && err.message.startsWith("invalid OAuth state")) {
47
+ throw err;
48
+ }
49
+ const message = err instanceof Error ? err.message : String(err);
50
+ if (/exp|expir/i.test(message)) {
51
+ throw new Error("OAuth state expired");
52
+ }
53
+ throw new Error("invalid OAuth state signature");
54
+ }
55
+ }
56
+ /**
57
+ * Mint a short-lived connect ticket for channel actors (Slack, etc.) who have
58
+ * no browser session. The Connect start route accepts `?ticket=…` and binds
59
+ * the OAuth vault subject to this user id.
60
+ */
61
+ export async function createConnectTicket(providerId, userId, signingKey, nowMs = Date.now()) {
62
+ const iat = Math.floor(nowMs / 1000);
63
+ const exp = Math.floor((nowMs + CONNECT_TICKET_TTL_MS) / 1000);
64
+ return new SignJWT({
65
+ userId,
66
+ nonce: randomBytes(16).toString("hex"),
67
+ })
68
+ .setProtectedHeader({ alg: "HS256", typ: ticketTyp(providerId) })
69
+ .setIssuedAt(iat)
70
+ .setExpirationTime(exp)
71
+ .sign(stateSigningKey(signingKey));
72
+ }
73
+ export async function verifyConnectTicket(providerId, ticket, signingKey, nowMs = Date.now()) {
74
+ try {
75
+ const { payload } = await jwtVerify(ticket, stateSigningKey(signingKey), {
76
+ algorithms: ["HS256"],
77
+ typ: ticketTyp(providerId),
78
+ currentDate: new Date(nowMs),
79
+ });
80
+ if (typeof payload.userId !== "string" || !payload.userId) {
81
+ throw new Error("invalid connect ticket actor");
82
+ }
83
+ return { userId: payload.userId };
84
+ }
85
+ catch (err) {
86
+ if (err instanceof Error &&
87
+ err.message.startsWith("invalid connect ticket")) {
88
+ throw err;
89
+ }
90
+ const message = err instanceof Error ? err.message : String(err);
91
+ if (/exp|expir/i.test(message)) {
92
+ throw new Error("connect ticket expired");
93
+ }
94
+ throw new Error("invalid connect ticket signature");
95
+ }
96
+ }
97
+ /**
98
+ * Bind {@link createOauthState} / ticket helpers to a Connect provider id
99
+ * (`mda-{id}-oauth-state`, `mda-{id}-connect-ticket`).
100
+ */
101
+ export function oauthTicketsFor(providerId) {
102
+ const id = providerId.trim();
103
+ if (!id) {
104
+ throw new Error("oauthTicketsFor requires a non-empty providerId");
105
+ }
106
+ return {
107
+ providerId: id,
108
+ createState: (userId, signingKey, nowMs) => createOauthState(id, userId, signingKey, nowMs),
109
+ verifyState: (state, signingKey, nowMs) => verifyOauthState(id, state, signingKey, nowMs),
110
+ createTicket: (userId, signingKey, nowMs) => createConnectTicket(id, userId, signingKey, nowMs),
111
+ verifyTicket: (ticket, signingKey, nowMs) => verifyConnectTicket(id, ticket, signingKey, nowMs),
112
+ };
113
+ }
114
+ //# sourceMappingURL=oauth-tickets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth-tickets.js","sourceRoot":"","sources":["../../src/identity/oauth-tickets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * The `defineIdentity(...)` input, and its normalization into the resolved
3
+ * {@link IdentityConfig}.
4
+ *
5
+ * Authors describe *what they want* — how callers authenticate, and what the
6
+ * isolation boundary is — in two keys. Everything else the runtime needs is
7
+ * derived here, so the resolved contract stays free to grow axes without the
8
+ * authoring surface growing a knob per axis.
9
+ *
10
+ * See `docs/design/identity-model-review.md` for the rationale.
11
+ */
12
+ import type { IdentityConnectProvider } from "./connect-provider-types.js";
13
+ import type { CredentialResolverConfig, CredentialResolvers, CredentialScope, IdentityConfig, MemoryScope, OrganizationRequirement, ThreadScope, ValidatedTokenProvider } from "./types.js";
14
+ /**
15
+ * How MDA learns who is calling.
16
+ *
17
+ * - `"backend"` — a backend you operate has already authenticated the caller and
18
+ * asserts the user id over the reserved ingress headers.
19
+ * - one or more `providers.*` entries — MDA verifies the caller's own token
20
+ * server-side (browser-direct).
21
+ */
22
+ export type IdentityAuth = "backend" | ValidatedTokenProvider | ValidatedTokenProvider[];
23
+ /**
24
+ * The isolation boundary for the deployment — the one decision most projects
25
+ * make about identity.
26
+ *
27
+ * - `"user"` (default) — every caller gets private threads, private memory, and
28
+ * acts as themselves downstream.
29
+ * - `"organization"` — callers belong to customer organizations; memory is
30
+ * shared within an organization and callers must present one.
31
+ * - `"agent"` — no per-caller isolation; one shared memory slice, the agent acts
32
+ * as itself. Machine-to-machine deployments.
33
+ * - `"none"` — no durable memory and no downstream credentials.
34
+ */
35
+ export type IdentityScope = "user" | "organization" | "agent" | "none";
36
+ /**
37
+ * Per-axis overrides for authors whose deployment does not fit a single
38
+ * {@link IdentityScope}. Anything left unset follows `default`.
39
+ */
40
+ export interface IdentityScopeOverrides {
41
+ /** Base scope the unset axes follow. Defaults to `"user"`. */
42
+ default?: IdentityScope;
43
+ /** Who can open or resume a conversation. */
44
+ threads?: ThreadScope;
45
+ /** Which memory slice a run may use. */
46
+ memory?: MemoryScope;
47
+ /**
48
+ * Whose credentials downstream calls carry. `"custom"` is implied by
49
+ * `credentials`. `"user"` enables per-caller Connect; `"agent"` uses the
50
+ * shared LangSmith vault.
51
+ */
52
+ credentials?: CredentialScope;
53
+ }
54
+ /** The identity declaration. Every key is optional. */
55
+ export interface IdentityOptions {
56
+ /** How callers authenticate. Defaults to `"backend"`. */
57
+ auth?: IdentityAuth;
58
+ /** The isolation boundary, or per-axis overrides. Defaults to `"user"`. */
59
+ scope?: IdentityScope | IdentityScopeOverrides;
60
+ /** Whether callers must present an organization. Inferred from `scope`. */
61
+ organizations?: OrganizationRequirement;
62
+ /**
63
+ * Mint your own downstream credentials per caller. Providing this puts the
64
+ * credentials axis in custom mode — there is no separate flag to set.
65
+ *
66
+ * Pass one resolver, or a map keyed by target name when the agent integrates
67
+ * several platforms:
68
+ *
69
+ * ```ts
70
+ * credentials: {
71
+ * github: credentials.github({ read: ["user", "pat"] }),
72
+ * jira: { resolve: mintJiraToken },
73
+ * }
74
+ * ```
75
+ */
76
+ credentials?: CredentialResolverConfig | CredentialResolvers;
77
+ /**
78
+ * Extra Connect-with-X providers to mount under `/identity/{id}/…`.
79
+ *
80
+ * Providers the deployment already implies are added automatically (a
81
+ * `connectors.github` declaration or `credentials.github(...)` chain that
82
+ * reads user tokens brings Connect-with-GitHub with it), so this is only
83
+ * needed for custom providers.
84
+ */
85
+ connect?: IdentityConnectProvider[];
86
+ }
87
+ /**
88
+ * Derive the resolved {@link IdentityConfig} from the declared options.
89
+ *
90
+ * Pure and total: every reachable option combination produces a config that
91
+ * `validateIdentity` accepts, so the errors that exist only to police two
92
+ * fields agreeing with each other are unreachable from this path.
93
+ */
94
+ export declare function normalizeIdentity(options?: IdentityOptions): IdentityConfig;
95
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/identity/options.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,WAAW,EACX,uBAAuB,EACvB,WAAW,EACX,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,sBAAsB,GACtB,sBAAsB,EAAE,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,cAAc,GAAG,OAAO,GAAG,MAAM,CAAC;AAEvE;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,wCAAwC;IACxC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,uDAAuD;AACvD,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,aAAa,GAAG,sBAAsB,CAAC;IAC/C,2EAA2E;IAC3E,aAAa,CAAC,EAAE,uBAAuB,CAAC;IACxC;;;;;;;;;;;;;OAaG;IACH,WAAW,CAAC,EAAE,wBAAwB,GAAG,mBAAmB,CAAC;IAC7D;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAoCD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,eAAoB,GAC5B,cAAc,CAsBhB"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * The `defineIdentity(...)` input, and its normalization into the resolved
3
+ * {@link IdentityConfig}.
4
+ *
5
+ * Authors describe *what they want* — how callers authenticate, and what the
6
+ * isolation boundary is — in two keys. Everything else the runtime needs is
7
+ * derived here, so the resolved contract stays free to grow axes without the
8
+ * authoring surface growing a knob per axis.
9
+ *
10
+ * See `docs/design/identity-model-review.md` for the rationale.
11
+ */
12
+ import { credentialConnectProviders } from "./credential-resolvers.js";
13
+ /**
14
+ * Axis defaults per {@link IdentityScope}.
15
+ *
16
+ * Pass a `credentials` resolver to opt into `"custom"`.
17
+ */
18
+ const SCOPE_AXES = {
19
+ user: { threads: "user", memory: "user", credentials: "user" },
20
+ organization: {
21
+ threads: "user",
22
+ memory: "organization",
23
+ credentials: "none",
24
+ },
25
+ agent: { threads: "user", memory: "agent", credentials: "agent" },
26
+ none: { threads: "user", memory: "none", credentials: "none" },
27
+ };
28
+ const THREAD_SCOPES = [
29
+ "user",
30
+ "conversation",
31
+ "organization",
32
+ ];
33
+ const MEMORY_SCOPES = [
34
+ "user",
35
+ "organization",
36
+ "agent",
37
+ "none",
38
+ ];
39
+ const CREDENTIAL_SCOPES = [
40
+ "user",
41
+ "agent",
42
+ "none",
43
+ "custom",
44
+ ];
45
+ /**
46
+ * Derive the resolved {@link IdentityConfig} from the declared options.
47
+ *
48
+ * Pure and total: every reachable option combination produces a config that
49
+ * `validateIdentity` accepts, so the errors that exist only to police two
50
+ * fields agreeing with each other are unreachable from this path.
51
+ */
52
+ export function normalizeIdentity(options = {}) {
53
+ assertOptionKeys(options);
54
+ const scope = resolveScope(options);
55
+ const organizations = options.organizations ?? inferOrganizationRequirement(scope);
56
+ assertOrganizationRequirement(options.organizations, scope, organizations);
57
+ const config = {
58
+ ingress: { http: resolveIngress(options.auth) },
59
+ organizations,
60
+ scope,
61
+ };
62
+ if (options.credentials !== undefined) {
63
+ config.credentials = options.credentials;
64
+ }
65
+ const connect = resolveConnect(options);
66
+ if (connect.length > 0) {
67
+ config.connect = connect;
68
+ }
69
+ return config;
70
+ }
71
+ function resolveIngress(auth) {
72
+ if (auth === undefined || auth === "backend") {
73
+ return "backend";
74
+ }
75
+ if (typeof auth === "string") {
76
+ throw new Error(`defineIdentity(...) unknown \`auth\` value "${auth}". Use "backend" or one or more providers.* entries.`);
77
+ }
78
+ const providers = Array.isArray(auth) ? auth : [auth];
79
+ return { mode: "validated_token", providers };
80
+ }
81
+ function resolveScope(options) {
82
+ const scope = options.scope ?? "user";
83
+ const overrides = typeof scope === "string" ? { default: scope } : scope;
84
+ const base = SCOPE_AXES[overrides.default ?? "user"];
85
+ if (base === undefined) {
86
+ throw new Error(`defineIdentity(...) unknown \`scope\` "${String(overrides.default)}". ` +
87
+ `Valid scopes: ${Object.keys(SCOPE_AXES).join(", ")}.`);
88
+ }
89
+ const threads = assertAxis("threads", overrides.threads, THREAD_SCOPES) ?? base.threads;
90
+ const memory = assertAxis("memory", overrides.memory, MEMORY_SCOPES) ?? base.memory;
91
+ // A resolver is the declaration of custom mode; the axis follows from it.
92
+ const credentials = options.credentials !== undefined
93
+ ? requireCustomCompatible(overrides.credentials)
94
+ : (assertAxis("credentials", overrides.credentials, CREDENTIAL_SCOPES) ??
95
+ base.credentials);
96
+ return { threads, memory, credentials };
97
+ }
98
+ function assertAxis(axis, value, allowed) {
99
+ if (value === undefined) {
100
+ return undefined;
101
+ }
102
+ if (!allowed.includes(value)) {
103
+ throw new Error(`defineIdentity(...) unknown \`scope.${axis}\` value "${String(value)}". ` +
104
+ `Valid values: ${allowed.join(", ")}.`);
105
+ }
106
+ return value;
107
+ }
108
+ /**
109
+ * A resolver plus an explicitly managed credentials owner is a genuine conflict
110
+ * of intent (unlike a redundant `"custom"` sentinel), so it fails.
111
+ */
112
+ function requireCustomCompatible(declared) {
113
+ if (declared !== undefined && declared !== "custom") {
114
+ throw new Error(`defineIdentity(...) provides a \`credentials\` resolver but \`scope.credentials\` is "${declared}". ` +
115
+ "Drop `scope.credentials` (the resolver implies custom mode) or remove the resolver.");
116
+ }
117
+ return "custom";
118
+ }
119
+ /** Organization-scoped axes are what make an organization mandatory. */
120
+ function inferOrganizationRequirement(scope) {
121
+ const axes = [scope.threads, scope.memory, scope.credentials];
122
+ return axes.includes("organization") ? "required" : "optional";
123
+ }
124
+ function assertOrganizationRequirement(declared, scope, resolved) {
125
+ if (declared !== undefined &&
126
+ declared !== "optional" &&
127
+ declared !== "required") {
128
+ throw new Error(`defineIdentity(...) \`organizations\` must be "optional" or "required" (received "${String(declared)}").`);
129
+ }
130
+ if (resolved === "optional" &&
131
+ inferOrganizationRequirement(scope) === "required") {
132
+ throw new Error('defineIdentity(...) organization-scoped isolation requires `organizations: "required"`.');
133
+ }
134
+ }
135
+ /**
136
+ * Connect providers the deployment declared, plus the ones its credential
137
+ * resolvers depend on. A resolver that reads per-user OAuth tokens needs a place
138
+ * for the user to grant them, so the routes follow from the resolver rather than
139
+ * from a second opt-in that has to agree with it.
140
+ *
141
+ * For a per-target map this unions across every entry, so a multi-platform
142
+ * deployment gets each platform's routes without repeating any of them.
143
+ */
144
+ function resolveConnect(options) {
145
+ const declared = options.connect ?? [];
146
+ const required = credentialConnectProviders(options.credentials);
147
+ const out = [...declared];
148
+ for (const provider of required) {
149
+ if (!out.some((existing) => existing.id === provider.id)) {
150
+ out.push(provider);
151
+ }
152
+ }
153
+ return out;
154
+ }
155
+ const KNOWN_OPTION_KEYS = new Set([
156
+ "auth",
157
+ "scope",
158
+ "organizations",
159
+ "credentials",
160
+ "connect",
161
+ ]);
162
+ /**
163
+ * Reject unknown keys so a typo fails loudly instead of being silently ignored.
164
+ */
165
+ function assertOptionKeys(options) {
166
+ if (options === null || typeof options !== "object") {
167
+ throw new Error("defineIdentity(...) accepts an options object ({ auth, scope, … }) or no arguments.");
168
+ }
169
+ const unknown = Object.keys(options).filter((key) => !KNOWN_OPTION_KEYS.has(key));
170
+ if (unknown.length > 0) {
171
+ throw new Error(`defineIdentity(...) unknown option(s): ${unknown.join(", ")}. ` +
172
+ `Valid options: ${[...KNOWN_OPTION_KEYS].join(", ")}.`);
173
+ }
174
+ }
175
+ //# sourceMappingURL=options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/identity/options.ts"],"names":[],"mappings":"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"}
@@ -22,10 +22,10 @@ export declare const slackIdentityConnectProvider: IdentityConnectProvider;
22
22
  *
23
23
  * @example
24
24
  * ```ts
25
- * import { defineIdentity, slack } from "managed-deepagents";
25
+ * import { connect, defineIdentity } from "managed-deepagents";
26
26
  *
27
- * export const identity = defineIdentity.preset("internal-tool", {
28
- * connect: [slack.connect()],
27
+ * export const identity = defineIdentity({
28
+ * connect: [connect.slack()],
29
29
  * });
30
30
  * ```
31
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/slack/connect-http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAgBpB,eAAO,MAAM,yBAAyB,QAAe,CAAC;AACtD,eAAO,MAAM,wBAAwB,QAAgB,CAAC;AACtD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,8DAA8D;AAC9D,MAAM,WAAW,mCAAmC;IAClD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,mEAAmE;AACnE,wBAAgB,kCAAkC,CAChD,OAAO,GAAE,mCAAwC,GAChD,uBAAuB,CAoFzB;AAED,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,EAAE,uBACL,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,mCAAmC,GAC5C,uBAAuB,CAIzB"}
1
+ {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/slack/connect-http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,YAAY,CAAC;AAmBpB,eAAO,MAAM,yBAAyB,QAAe,CAAC;AACtD,eAAO,MAAM,wBAAwB,QAAgB,CAAC;AACtD,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAC1D,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,8DAA8D;AAC9D,MAAM,WAAW,mCAAmC;IAClD,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC/B;AAED,mEAAmE;AACnE,wBAAgB,kCAAkC,CAChD,OAAO,GAAE,mCAAwC,GAChD,uBAAuB,CA6FzB;AAED,4EAA4E;AAC5E,eAAO,MAAM,4BAA4B,EAAE,uBACL,CAAC;AAEvC;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,mCAAmC,GAC5C,uBAAuB,CAIzB"}