managed-deepagents 0.5.0-dev.78 → 0.5.0-dev.80

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 (322) hide show
  1. package/README.md +50 -8
  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 +13 -24
  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/mcp/index.d.ts +13 -20
  67. package/dist/connectors/mcp/index.d.ts.map +1 -1
  68. package/dist/connectors/mcp/index.js +92 -112
  69. package/dist/connectors/mcp/index.js.map +1 -1
  70. package/dist/connectors/mcp/load.d.ts.map +1 -1
  71. package/dist/connectors/mcp/load.js +16 -40
  72. package/dist/connectors/mcp/load.js.map +1 -1
  73. package/dist/{channels → connectors}/slack/adapter-core.d.ts +1 -1
  74. package/dist/connectors/slack/adapter-core.d.ts.map +1 -0
  75. package/dist/connectors/slack/adapter-core.js.map +1 -0
  76. package/dist/{channels → connectors}/slack/adapter.d.ts +3 -4
  77. package/dist/connectors/slack/adapter.d.ts.map +1 -0
  78. package/dist/{channels → connectors}/slack/adapter.js +1 -1
  79. package/dist/connectors/slack/adapter.js.map +1 -0
  80. package/dist/{channels → connectors}/slack/http.d.ts +6 -40
  81. package/dist/connectors/slack/http.d.ts.map +1 -0
  82. package/dist/{channels → connectors}/slack/http.js +22 -125
  83. package/dist/connectors/slack/http.js.map +1 -0
  84. package/dist/connectors/slack/index.d.ts +108 -0
  85. package/dist/connectors/slack/index.d.ts.map +1 -0
  86. package/dist/connectors/slack/index.js +191 -0
  87. package/dist/connectors/slack/index.js.map +1 -0
  88. package/dist/{channels → connectors}/slack/normalize.d.ts +5 -5
  89. package/dist/connectors/slack/normalize.d.ts.map +1 -0
  90. package/dist/{channels → connectors}/slack/normalize.js +21 -20
  91. package/dist/connectors/slack/normalize.js.map +1 -0
  92. package/dist/connectors/slack/source-thread.d.ts.map +1 -0
  93. package/dist/connectors/slack/source-thread.js.map +1 -0
  94. package/dist/{channels → connectors}/slack/transport.d.ts +1 -1
  95. package/dist/connectors/slack/transport.d.ts.map +1 -0
  96. package/dist/{channels → connectors}/slack/transport.js +4 -3
  97. package/dist/connectors/slack/transport.js.map +1 -0
  98. package/dist/connectors/tool-selection.d.ts +31 -0
  99. package/dist/connectors/tool-selection.d.ts.map +1 -0
  100. package/dist/connectors/tool-selection.js +54 -0
  101. package/dist/connectors/tool-selection.js.map +1 -0
  102. package/dist/connectors/toolserver/catalog.d.ts +134 -0
  103. package/dist/connectors/toolserver/catalog.d.ts.map +1 -0
  104. package/dist/connectors/toolserver/catalog.js +74 -0
  105. package/dist/connectors/toolserver/catalog.js.map +1 -0
  106. package/dist/connectors/toolserver/index.d.ts +119 -0
  107. package/dist/connectors/toolserver/index.d.ts.map +1 -0
  108. package/dist/connectors/toolserver/index.js +150 -0
  109. package/dist/connectors/toolserver/index.js.map +1 -0
  110. package/dist/connectors/toolserver/load.d.ts +55 -0
  111. package/dist/connectors/toolserver/load.d.ts.map +1 -0
  112. package/dist/connectors/toolserver/load.js +162 -0
  113. package/dist/connectors/toolserver/load.js.map +1 -0
  114. package/dist/extension.d.ts +77 -0
  115. package/dist/extension.d.ts.map +1 -0
  116. package/dist/extension.js +127 -0
  117. package/dist/extension.js.map +1 -0
  118. package/dist/identity/claims.d.ts +18 -0
  119. package/dist/identity/claims.d.ts.map +1 -0
  120. package/dist/identity/claims.js +37 -0
  121. package/dist/identity/claims.js.map +1 -0
  122. package/dist/identity/connect-inference.d.ts +28 -0
  123. package/dist/identity/connect-inference.d.ts.map +1 -0
  124. package/dist/identity/connect-inference.js +39 -0
  125. package/dist/identity/connect-inference.js.map +1 -0
  126. package/dist/identity/connect-provider-types.d.ts +23 -6
  127. package/dist/identity/connect-provider-types.d.ts.map +1 -1
  128. package/dist/identity/connect-provider-types.js +3 -1
  129. package/dist/identity/connect-provider-types.js.map +1 -1
  130. package/dist/identity/connect-provider.d.ts +9 -4
  131. package/dist/identity/connect-provider.d.ts.map +1 -1
  132. package/dist/identity/connect-provider.js +19 -9
  133. package/dist/identity/connect-provider.js.map +1 -1
  134. package/dist/identity/credential-resolvers.d.ts +33 -0
  135. package/dist/identity/credential-resolvers.d.ts.map +1 -0
  136. package/dist/identity/credential-resolvers.js +62 -0
  137. package/dist/identity/credential-resolvers.js.map +1 -0
  138. package/dist/identity/github/connect-http.d.ts +3 -3
  139. package/dist/identity/github/connect-http.d.ts.map +1 -1
  140. package/dist/identity/github/connect-http.js +21 -13
  141. package/dist/identity/github/connect-http.js.map +1 -1
  142. package/dist/identity/github/credentials-store.d.ts +10 -10
  143. package/dist/identity/github/credentials-store.d.ts.map +1 -1
  144. package/dist/identity/github/credentials-store.js +40 -43
  145. package/dist/identity/github/credentials-store.js.map +1 -1
  146. package/dist/identity/github/credentials.d.ts +16 -13
  147. package/dist/identity/github/credentials.d.ts.map +1 -1
  148. package/dist/identity/github/credentials.js +43 -23
  149. package/dist/identity/github/credentials.js.map +1 -1
  150. package/dist/identity/github/index.d.ts +2 -3
  151. package/dist/identity/github/index.d.ts.map +1 -1
  152. package/dist/identity/github/index.js +1 -2
  153. package/dist/identity/github/index.js.map +1 -1
  154. package/dist/identity/github/oauth.d.ts +3 -3
  155. package/dist/identity/github/oauth.d.ts.map +1 -1
  156. package/dist/identity/github/oauth.js +10 -9
  157. package/dist/identity/github/oauth.js.map +1 -1
  158. package/dist/identity/index.d.ts +35 -29
  159. package/dist/identity/index.d.ts.map +1 -1
  160. package/dist/identity/index.js +98 -131
  161. package/dist/identity/index.js.map +1 -1
  162. package/dist/identity/loopback.d.ts +27 -2
  163. package/dist/identity/loopback.d.ts.map +1 -1
  164. package/dist/identity/loopback.js +61 -8
  165. package/dist/identity/loopback.js.map +1 -1
  166. package/dist/identity/options.d.ts +90 -0
  167. package/dist/identity/options.d.ts.map +1 -0
  168. package/dist/identity/options.js +171 -0
  169. package/dist/identity/options.js.map +1 -0
  170. package/dist/identity/slack/connect-http.d.ts +3 -3
  171. package/dist/identity/slack/connect-http.d.ts.map +1 -1
  172. package/dist/identity/slack/connect-http.js +22 -14
  173. package/dist/identity/slack/connect-http.js.map +1 -1
  174. package/dist/identity/slack/index.d.ts +1 -2
  175. package/dist/identity/slack/index.d.ts.map +1 -1
  176. package/dist/identity/slack/index.js +1 -2
  177. package/dist/identity/slack/index.js.map +1 -1
  178. package/dist/identity/slack/links.d.ts +15 -15
  179. package/dist/identity/slack/links.d.ts.map +1 -1
  180. package/dist/identity/slack/links.js +50 -53
  181. package/dist/identity/slack/links.js.map +1 -1
  182. package/dist/identity/slack/oauth.d.ts +2 -2
  183. package/dist/identity/slack/oauth.d.ts.map +1 -1
  184. package/dist/identity/slack/oauth.js +9 -24
  185. package/dist/identity/slack/oauth.js.map +1 -1
  186. package/dist/identity/supabase.js +9 -9
  187. package/dist/identity/supabase.js.map +1 -1
  188. package/dist/identity/types.d.ts +82 -36
  189. package/dist/identity/types.d.ts.map +1 -1
  190. package/dist/index.d.ts +11 -21
  191. package/dist/index.d.ts.map +1 -1
  192. package/dist/index.js +2 -12
  193. package/dist/index.js.map +1 -1
  194. package/dist/ingress/index.d.ts +54 -0
  195. package/dist/ingress/index.d.ts.map +1 -0
  196. package/dist/ingress/index.js +128 -0
  197. package/dist/ingress/index.js.map +1 -0
  198. package/dist/namespaces.d.ts +76 -0
  199. package/dist/namespaces.d.ts.map +1 -0
  200. package/dist/namespaces.js +94 -0
  201. package/dist/namespaces.js.map +1 -0
  202. package/dist/runtime/auth.d.ts +18 -14
  203. package/dist/runtime/auth.d.ts.map +1 -1
  204. package/dist/runtime/auth.js +88 -68
  205. package/dist/runtime/auth.js.map +1 -1
  206. package/dist/runtime/backend.d.ts +1 -1
  207. package/dist/runtime/backend.d.ts.map +1 -1
  208. package/dist/runtime/connector.d.ts +66 -23
  209. package/dist/runtime/connector.d.ts.map +1 -1
  210. package/dist/runtime/connector.js +63 -27
  211. package/dist/runtime/connector.js.map +1 -1
  212. package/dist/runtime/cors.d.ts +2 -3
  213. package/dist/runtime/cors.d.ts.map +1 -1
  214. package/dist/runtime/cors.js +2 -7
  215. package/dist/runtime/cors.js.map +1 -1
  216. package/dist/runtime/credentials.d.ts.map +1 -1
  217. package/dist/runtime/credentials.js +39 -14
  218. package/dist/runtime/credentials.js.map +1 -1
  219. package/dist/runtime/http.d.ts +47 -0
  220. package/dist/runtime/http.d.ts.map +1 -0
  221. package/dist/runtime/http.js +54 -0
  222. package/dist/runtime/http.js.map +1 -0
  223. package/dist/runtime/identity-http.d.ts +6 -16
  224. package/dist/runtime/identity-http.d.ts.map +1 -1
  225. package/dist/runtime/identity-http.js +71 -54
  226. package/dist/runtime/identity-http.js.map +1 -1
  227. package/dist/runtime/identity-runtime.d.ts +18 -17
  228. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  229. package/dist/runtime/identity-runtime.js +55 -39
  230. package/dist/runtime/identity-runtime.js.map +1 -1
  231. package/dist/runtime/index.d.ts +77 -104
  232. package/dist/runtime/index.d.ts.map +1 -1
  233. package/dist/runtime/index.js +36 -35
  234. package/dist/runtime/index.js.map +1 -1
  235. package/dist/runtime/memory/index.d.ts +1 -0
  236. package/dist/runtime/memory/index.d.ts.map +1 -1
  237. package/dist/runtime/memory/index.js +1 -0
  238. package/dist/runtime/memory/index.js.map +1 -1
  239. package/dist/runtime/memory/lazy-context-backend.d.ts +66 -0
  240. package/dist/runtime/memory/lazy-context-backend.d.ts.map +1 -0
  241. package/dist/runtime/memory/lazy-context-backend.js +154 -0
  242. package/dist/runtime/memory/lazy-context-backend.js.map +1 -0
  243. package/dist/runtime/memory/user-repo.js +3 -3
  244. package/dist/runtime/memory/user-repo.js.map +1 -1
  245. package/dist/runtime/sandbox-manager.d.ts +33 -0
  246. package/dist/runtime/sandbox-manager.d.ts.map +1 -1
  247. package/dist/runtime/sandbox-manager.js +173 -9
  248. package/dist/runtime/sandbox-manager.js.map +1 -1
  249. package/dist/runtime/sandbox-stream-retry.d.ts +16 -0
  250. package/dist/runtime/sandbox-stream-retry.d.ts.map +1 -0
  251. package/dist/runtime/sandbox-stream-retry.js +61 -0
  252. package/dist/runtime/sandbox-stream-retry.js.map +1 -0
  253. package/dist/runtime/setup-script.d.ts.map +1 -1
  254. package/dist/runtime/setup-script.js +4 -2
  255. package/dist/runtime/setup-script.js.map +1 -1
  256. package/dist/runtime/validated-token.d.ts +1 -1
  257. package/dist/runtime/validated-token.d.ts.map +1 -1
  258. package/dist/runtime/validated-token.js +75 -33
  259. package/dist/runtime/validated-token.js.map +1 -1
  260. package/dist/sandbox.d.ts +19 -22
  261. package/dist/sandbox.d.ts.map +1 -1
  262. package/dist/sandbox.js +20 -34
  263. package/dist/sandbox.js.map +1 -1
  264. package/dist/schedules.js +8 -9
  265. package/dist/schedules.js.map +1 -1
  266. package/package.json +18 -28
  267. package/dist/channels/collect.d.ts +0 -26
  268. package/dist/channels/collect.d.ts.map +0 -1
  269. package/dist/channels/collect.js +0 -42
  270. package/dist/channels/collect.js.map +0 -1
  271. package/dist/channels/github/adapter-core.d.ts +0 -6
  272. package/dist/channels/github/adapter-core.d.ts.map +0 -1
  273. package/dist/channels/github/adapter-core.js +0 -27
  274. package/dist/channels/github/adapter-core.js.map +0 -1
  275. package/dist/channels/github/adapter.d.ts +0 -16
  276. package/dist/channels/github/adapter.d.ts.map +0 -1
  277. package/dist/channels/github/adapter.js +0 -52
  278. package/dist/channels/github/adapter.js.map +0 -1
  279. package/dist/channels/github/define.d.ts.map +0 -1
  280. package/dist/channels/github/define.js +0 -166
  281. package/dist/channels/github/define.js.map +0 -1
  282. package/dist/channels/github/http.d.ts.map +0 -1
  283. package/dist/channels/github/http.js.map +0 -1
  284. package/dist/channels/github/index.d.ts +0 -12
  285. package/dist/channels/github/index.d.ts.map +0 -1
  286. package/dist/channels/github/index.js +0 -10
  287. package/dist/channels/github/index.js.map +0 -1
  288. package/dist/channels/github/normalize.d.ts.map +0 -1
  289. package/dist/channels/github/normalize.js.map +0 -1
  290. package/dist/channels/github/source-thread.d.ts.map +0 -1
  291. package/dist/channels/github/source-thread.js.map +0 -1
  292. package/dist/channels/github/transport.d.ts.map +0 -1
  293. package/dist/channels/github/transport.js.map +0 -1
  294. package/dist/channels/plugin.d.ts +0 -61
  295. package/dist/channels/plugin.d.ts.map +0 -1
  296. package/dist/channels/plugin.js +0 -80
  297. package/dist/channels/plugin.js.map +0 -1
  298. package/dist/channels/slack/adapter-core.d.ts.map +0 -1
  299. package/dist/channels/slack/adapter-core.js.map +0 -1
  300. package/dist/channels/slack/adapter.d.ts.map +0 -1
  301. package/dist/channels/slack/adapter.js.map +0 -1
  302. package/dist/channels/slack/define.d.ts +0 -74
  303. package/dist/channels/slack/define.d.ts.map +0 -1
  304. package/dist/channels/slack/define.js +0 -160
  305. package/dist/channels/slack/define.js.map +0 -1
  306. package/dist/channels/slack/http.d.ts.map +0 -1
  307. package/dist/channels/slack/http.js.map +0 -1
  308. package/dist/channels/slack/index.d.ts +0 -18
  309. package/dist/channels/slack/index.d.ts.map +0 -1
  310. package/dist/channels/slack/index.js +0 -13
  311. package/dist/channels/slack/index.js.map +0 -1
  312. package/dist/channels/slack/normalize.d.ts.map +0 -1
  313. package/dist/channels/slack/normalize.js.map +0 -1
  314. package/dist/channels/slack/source-thread.d.ts.map +0 -1
  315. package/dist/channels/slack/source-thread.js.map +0 -1
  316. package/dist/channels/slack/transport.d.ts.map +0 -1
  317. package/dist/channels/slack/transport.js.map +0 -1
  318. /package/dist/{channels → connectors}/github/source-thread.d.ts +0 -0
  319. /package/dist/{channels → connectors}/github/source-thread.js +0 -0
  320. /package/dist/{channels → connectors}/slack/adapter-core.js +0 -0
  321. /package/dist/{channels → connectors}/slack/source-thread.d.ts +0 -0
  322. /package/dist/{channels → connectors}/slack/source-thread.js +0 -0
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Claim-name resolution shared by authoring validation and the runtime token
3
+ * mapper, so both agree on which claim supplies each envelope field.
4
+ */
5
+ /** The claim supplying the caller id, or `undefined` when none is mapped. */
6
+ export function userClaimName(mapping) {
7
+ return nonEmpty(mapping.user);
8
+ }
9
+ /** The claim supplying the active organization id, if any. */
10
+ export function organizationClaimName(mapping) {
11
+ return nonEmpty(mapping.organization);
12
+ }
13
+ /**
14
+ * Normalize a `groups` claim value into a list.
15
+ *
16
+ * IdPs are inconsistent here: Auth0 and Okta send an array, Entra sends an array
17
+ * of object ids, and some proxies flatten to a delimited string. Accept all
18
+ * three rather than making authors pre-process the claim.
19
+ */
20
+ export function normalizeGroups(value) {
21
+ if (Array.isArray(value)) {
22
+ return value
23
+ .map((entry) => String(entry).trim())
24
+ .filter((entry) => entry.length > 0);
25
+ }
26
+ if (typeof value === "string") {
27
+ return value
28
+ .split(/[,\s]+/)
29
+ .map((entry) => entry.trim())
30
+ .filter((entry) => entry.length > 0);
31
+ }
32
+ return [];
33
+ }
34
+ function nonEmpty(value) {
35
+ return typeof value === "string" && value.length > 0 ? value : undefined;
36
+ }
37
+ //# sourceMappingURL=claims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/identity/claims.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,6EAA6E;AAC7E,MAAM,UAAU,aAAa,CAAC,OAAqB;IACjD,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,qBAAqB,CACnC,OAAqB;IAErB,OAAO,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aACpC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK;aACT,KAAK,CAAC,QAAQ,CAAC;aACf,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAyB;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Predicates the built-in Connect-with-X providers use to decide whether a
3
+ * deployment needs their OAuth routes.
4
+ *
5
+ * Authors should not have to list a connect provider that the rest of their
6
+ * identity already implies — a GitHub credential chain that reads user tokens
7
+ * needs somewhere for the user to grant them, and a Slack channel on a
8
+ * per-user deployment needs somewhere to link Slack accounts.
9
+ */
10
+ import type { IdentityConnectMountContext } from "./connect-provider-types.js";
11
+ /**
12
+ * True when the deployment keys anything durable on the individual caller.
13
+ *
14
+ * This is the condition under which a per-user OAuth link is meaningful: an
15
+ * `agent`-scoped deployment has no per-caller slice to attach a linked account
16
+ * to, so it never grows connect routes by inference.
17
+ */
18
+ export declare function isUserScopedDeployment(scope: IdentityConnectMountContext["scope"]): boolean;
19
+ /** True when a channel of `provider` is declared (e.g. a Slack channel). */
20
+ export declare function hasChannelForProvider(channels: IdentityConnectMountContext["channels"], provider: string): boolean;
21
+ /**
22
+ * Connect provider ids the deployment's credential resolvers depend on.
23
+ *
24
+ * Unions across a per-target map, so a multi-platform deployment is treated the
25
+ * same as a single-platform one.
26
+ */
27
+ export declare function credentialConnectIds(credentials: IdentityConnectMountContext["credentials"]): Set<string>;
28
+ //# sourceMappingURL=connect-inference.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-inference.d.ts","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAG/E;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC1C,OAAO,CAST;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,EACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,2BAA2B,CAAC,aAAa,CAAC,GACtD,GAAG,CAAC,MAAM,CAAC,CAIb"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Predicates the built-in Connect-with-X providers use to decide whether a
3
+ * deployment needs their OAuth routes.
4
+ *
5
+ * Authors should not have to list a connect provider that the rest of their
6
+ * identity already implies — a GitHub credential chain that reads user tokens
7
+ * needs somewhere for the user to grant them, and a Slack channel on a
8
+ * per-user deployment needs somewhere to link Slack accounts.
9
+ */
10
+ import { credentialConnectProviders } from "./credential-resolvers.js";
11
+ /**
12
+ * True when the deployment keys anything durable on the individual caller.
13
+ *
14
+ * This is the condition under which a per-user OAuth link is meaningful: an
15
+ * `agent`-scoped deployment has no per-caller slice to attach a linked account
16
+ * to, so it never grows connect routes by inference.
17
+ */
18
+ export function isUserScopedDeployment(scope) {
19
+ if (!scope) {
20
+ return false;
21
+ }
22
+ return (scope.memory === "user" ||
23
+ scope.credentials === "user" ||
24
+ scope.credentials === "custom");
25
+ }
26
+ /** True when a channel of `provider` is declared (e.g. a Slack channel). */
27
+ export function hasChannelForProvider(channels, provider) {
28
+ return Object.values(channels ?? {}).some((manifest) => manifest?.provider === provider);
29
+ }
30
+ /**
31
+ * Connect provider ids the deployment's credential resolvers depend on.
32
+ *
33
+ * Unions across a per-target map, so a multi-platform deployment is treated the
34
+ * same as a single-platform one.
35
+ */
36
+ export function credentialConnectIds(credentials) {
37
+ return new Set(credentialConnectProviders(credentials).map((provider) => provider.id));
38
+ }
39
+ //# sourceMappingURL=connect-inference.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-inference.js","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA2C;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,MAAM;QACvB,KAAK,CAAC,WAAW,KAAK,MAAM;QAC5B,KAAK,CAAC,WAAW,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,QAAiD,EACjD,QAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CACvC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAuD;IAEvD,OAAO,IAAI,GAAG,CACZ,0BAA0B,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvE,CAAC;AACJ,CAAC"}
@@ -1,9 +1,12 @@
1
1
  /**
2
2
  * Connect-with-X plugin contract.
3
3
  *
4
- * List providers on `identity.connect` (e.g. `github.connect()`) to mount
4
+ * List providers on `identity.connect` (e.g. `connect.github()`) to mount
5
5
  * `/identity/{id}/{status,connect,callback,link}` from the managed HTTP app.
6
+ * Built-in providers also mount when the deployment implies them (see
7
+ * {@link IdentityConnectMountContext}).
6
8
  */
9
+ import type { IdentityConfig } from "./types.js";
7
10
  /** Context for deciding whether a provider's routes should mount. */
8
11
  export interface IdentityConnectMountContext {
9
12
  /** Compiled channel manifests (file stem → manifest). */
@@ -12,6 +15,20 @@ export interface IdentityConnectMountContext {
12
15
  }>;
13
16
  /** True when the project declared managed identity. */
14
17
  hasIdentity: boolean;
18
+ /**
19
+ * True when this provider appears on `identity.connect`. False when it is
20
+ * offered as a built-in candidate, in which case the provider's own predicate
21
+ * decides whether the deployment needs it.
22
+ */
23
+ declared?: boolean;
24
+ /** The deployment's resolved isolation axes. */
25
+ scope?: IdentityConfig["scope"];
26
+ /**
27
+ * The deployment's credential config, when one is declared: a single resolver
28
+ * or a per-target map. Prefer `credentialConnectIds(ctx.credentials)` over
29
+ * reading it directly, so both forms are handled.
30
+ */
31
+ credentials?: IdentityConfig["credentials"];
15
32
  }
16
33
  /** JSON object returned by status / error payloads. */
17
34
  export type IdentityConnectJson = Record<string, unknown>;
@@ -49,17 +66,17 @@ export interface IdentityConnectProvider {
49
66
  readonly settingsQueryKey?: string;
50
67
  /** Whether to mount this provider's four routes for the current project. */
51
68
  shouldMount(ctx: IdentityConnectMountContext): boolean;
52
- /** Secured status payload for the authenticated actor. */
53
- status(actorId: string): IdentityConnectJson | Promise<IdentityConnectJson>;
69
+ /** Secured status payload for the authenticated user. */
70
+ status(userId: string): IdentityConnectJson | Promise<IdentityConnectJson>;
54
71
  /** Begin OAuth — return authorize URL or a not-configured error. */
55
- startAuthorize(actorId: string, redirectUri: string): IdentityConnectAuthorizeResult | Promise<IdentityConnectAuthorizeResult>;
72
+ startAuthorize(userId: string, redirectUri: string): IdentityConnectAuthorizeResult | Promise<IdentityConnectAuthorizeResult>;
56
73
  /**
57
74
  * Finish OAuth callback. Throw on failure; the scaffold redirects to
58
75
  * `/settings?{settingsQueryKey}=error`.
59
76
  */
60
77
  completeCallback(code: string, state: string, redirectUri: string): IdentityConnectCallbackResult | Promise<IdentityConnectCallbackResult>;
61
- /** Remove the actor's link / stored credentials. */
62
- unlink(actorId: string): void | Promise<void>;
78
+ /** Remove the user's link / stored credentials. */
79
+ unlink(userId: string): void | Promise<void>;
63
80
  /** Resolve the public Agent Server base for `redirect_uri`. */
64
81
  resolveRedirectBase(options: IdentityConnectRedirectBaseOptions): string;
65
82
  /** Public app origin for settings fail/success redirects when available. */
@@ -1 +1 @@
1
- {"version":3,"file":"connect-provider-types.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,8BAA8B,GACtC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvD,0DAA0D;IAC1D,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC5E,oEAAoE;IACpE,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,oDAAoD;IACpD,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,+DAA+D;IAC/D,mBAAmB,CAAC,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAAC;IACzE,4EAA4E;IAC5E,mBAAmB,CAAC,IAAI,MAAM,GAAG,SAAS,CAAC;CAC5C"}
1
+ {"version":3,"file":"connect-provider-types.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;CAC7C;AAED,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,8BAA8B,GACtC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvD,yDAAyD;IACzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,oEAAoE;IACpE,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,mDAAmD;IACnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,+DAA+D;IAC/D,mBAAmB,CAAC,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAAC;IACzE,4EAA4E;IAC5E,mBAAmB,CAAC,IAAI,MAAM,GAAG,SAAS,CAAC;CAC5C"}
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Connect-with-X plugin contract.
3
3
  *
4
- * List providers on `identity.connect` (e.g. `github.connect()`) to mount
4
+ * List providers on `identity.connect` (e.g. `connect.github()`) to mount
5
5
  * `/identity/{id}/{status,connect,callback,link}` from the managed HTTP app.
6
+ * Built-in providers also mount when the deployment implies them (see
7
+ * {@link IdentityConnectMountContext}).
6
8
  */
7
9
  export {};
8
10
  //# sourceMappingURL=connect-provider-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-provider-types.js","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
1
+ {"version":3,"file":"connect-provider-types.js","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -17,14 +17,19 @@ export interface IdentityConnectMountedRoute {
17
17
  }
18
18
  export declare function identityConnectSettingsQueryKey(provider: IdentityConnectProvider): string;
19
19
  /**
20
- * Mount Connect-with-X routes for the given providers.
20
+ * Mount Connect-with-X routes.
21
21
  *
22
- * Authors opt in via `defineIdentity({ connect: [github.connect(), …] })`.
23
- * An empty list mounts nothing there is no builtin auto-mount.
22
+ * Declared providers (`defineIdentity({ connect: [connect.github(), …] })`) are
23
+ * offered first, then any `candidates` the deployment did not list. Every
24
+ * provider still decides for itself via `shouldMount`, which sees whether it was
25
+ * declared — so a built-in can mount because the rest of the identity implies it
26
+ * without ever mounting on a deployment that has no use for it.
24
27
  */
25
28
  export declare function mountIdentityConnectProviders(app: Hono, cfg: IdentityConfig, ctx: IdentityConnectMountContext, mounted: IdentityConnectMountedRoute[], options?: {
26
29
  deploymentBaseUrl?: string;
27
- /** Providers from `identity.connect` (required for production mounts). */
30
+ /** Providers from `identity.connect`. */
28
31
  providers?: IdentityConnectProvider[];
32
+ /** Built-in providers to offer when the deployment did not list them. */
33
+ candidates?: IdentityConnectProvider[];
29
34
  }): void;
30
35
  //# sourceMappingURL=connect-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-provider.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAIrC,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,uBAAuB,GAChC,MAAM,CAER;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,2BAA2B,EAChC,OAAO,EAAE,2BAA2B,EAAE,EACtC,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,uBAAuB,EAAE,CAAC;CAClC,GACL,IAAI,CAQN"}
1
+ {"version":3,"file":"connect-provider.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AAIrC,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,kCAAkC,GACnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,qDAAqD;AACrD,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,uBAAuB,GAChC,MAAM,CAER;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,cAAc,EACnB,GAAG,EAAE,2BAA2B,EAChC,OAAO,EAAE,2BAA2B,EAAE,EACtC,OAAO,GAAE;IACP,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yCAAyC;IACzC,SAAS,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACtC,yEAAyE;IACzE,UAAU,CAAC,EAAE,uBAAuB,EAAE,CAAC;CACnC,GACL,IAAI,CAeN"}
@@ -11,15 +11,25 @@ export function identityConnectSettingsQueryKey(provider) {
11
11
  return provider.settingsQueryKey?.trim() || provider.id;
12
12
  }
13
13
  /**
14
- * Mount Connect-with-X routes for the given providers.
14
+ * Mount Connect-with-X routes.
15
15
  *
16
- * Authors opt in via `defineIdentity({ connect: [github.connect(), …] })`.
17
- * An empty list mounts nothing there is no builtin auto-mount.
16
+ * Declared providers (`defineIdentity({ connect: [connect.github(), …] })`) are
17
+ * offered first, then any `candidates` the deployment did not list. Every
18
+ * provider still decides for itself via `shouldMount`, which sees whether it was
19
+ * declared — so a built-in can mount because the rest of the identity implies it
20
+ * without ever mounting on a deployment that has no use for it.
18
21
  */
19
22
  export function mountIdentityConnectProviders(app, cfg, ctx, mounted, options = {}) {
20
- const providers = options.providers ?? [];
21
- for (const provider of providers) {
22
- if (!provider.shouldMount(ctx)) {
23
+ const declared = options.providers ?? [];
24
+ const declaredIds = new Set(declared.map((provider) => provider.id));
25
+ const offered = [
26
+ ...declared.map((provider) => ({ provider, declared: true })),
27
+ ...(options.candidates ?? [])
28
+ .filter((provider) => !declaredIds.has(provider.id))
29
+ .map((provider) => ({ provider, declared: false })),
30
+ ];
31
+ for (const { provider, declared: isDeclared } of offered) {
32
+ if (!provider.shouldMount({ ...ctx, declared: isDeclared })) {
23
33
  continue;
24
34
  }
25
35
  mountOneIdentityConnectProvider(app, cfg, provider, mounted, options);
@@ -47,7 +57,7 @@ function mountOneIdentityConnectProvider(app, cfg, provider, mounted, options) {
47
57
  if (identity instanceof Response) {
48
58
  return identity;
49
59
  }
50
- return c.json(await provider.status(identity.actor.id));
60
+ return c.json(await provider.status(identity.user.id));
51
61
  });
52
62
  app.get(paths.connect, async (c) => {
53
63
  const identity = await resolveOrUnauthorized(cfg, c.req.raw);
@@ -55,7 +65,7 @@ function mountOneIdentityConnectProvider(app, cfg, provider, mounted, options) {
55
65
  return identity;
56
66
  }
57
67
  const redirectUri = callbackRedirectUri(provider, c.req.raw, options.deploymentBaseUrl);
58
- const result = await provider.startAuthorize(identity.actor.id, redirectUri);
68
+ const result = await provider.startAuthorize(identity.user.id, redirectUri);
59
69
  if ("notConfigured" in result) {
60
70
  return c.json({ error: result.error }, 503);
61
71
  }
@@ -92,7 +102,7 @@ function mountOneIdentityConnectProvider(app, cfg, provider, mounted, options) {
92
102
  if (identity instanceof Response) {
93
103
  return identity;
94
104
  }
95
- await provider.unlink(identity.actor.id);
105
+ await provider.unlink(identity.user.id);
96
106
  return c.json({ linked: false });
97
107
  });
98
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connect-provider.js","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect-provider.js","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shape helpers for the two `credentials` forms, shared by authoring validation,
3
+ * normalization, and the runtime resolver so all three agree on which form a
4
+ * config is.
5
+ *
6
+ * A single resolver handles every target itself. A per-target map lets one
7
+ * deployment integrate several platforms without hand-writing the dispatch — and
8
+ * without losing the Connect-with-X routes each entry declares, which is the
9
+ * failure mode a hand-written dispatcher has.
10
+ */
11
+ import type { IdentityConnectProvider } from "./connect-provider-types.js";
12
+ import type { CredentialResolverConfig, CredentialResolvers } from "./types.js";
13
+ /**
14
+ * True when `value` is a single {@link CredentialResolverConfig} rather than a
15
+ * per-target map.
16
+ *
17
+ * Discriminates on the *type* of `resolve`/`endpoint`, not merely their
18
+ * presence, so a target legitimately named `"resolve"` or `"endpoint"` in a map
19
+ * is not mistaken for the single form.
20
+ */
21
+ export declare function isSingleCredentialResolver(value: CredentialResolverConfig | CredentialResolvers): value is CredentialResolverConfig;
22
+ /** The target names a per-target map resolves, in declaration order. */
23
+ export declare function credentialTargetNames(value: CredentialResolverConfig | CredentialResolvers): string[];
24
+ /**
25
+ * Every Connect-with-X provider the config depends on, deduplicated by id and in
26
+ * declaration order.
27
+ *
28
+ * Unioning across map entries is what keeps inference working for a
29
+ * multi-platform deployment: each entry declares its own routes, and the author
30
+ * repeats none of them.
31
+ */
32
+ export declare function credentialConnectProviders(value: CredentialResolverConfig | CredentialResolvers | undefined): IdentityConnectProvider[];
33
+ //# sourceMappingURL=credential-resolvers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-resolvers.d.ts","sourceRoot":"","sources":["../../src/identity/credential-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GACpD,KAAK,IAAI,wBAAwB,CAWnC;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GACpD,MAAM,EAAE,CAEV;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GAAG,SAAS,GAChE,uBAAuB,EAAE,CAgB3B"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Shape helpers for the two `credentials` forms, shared by authoring validation,
3
+ * normalization, and the runtime resolver so all three agree on which form a
4
+ * config is.
5
+ *
6
+ * A single resolver handles every target itself. A per-target map lets one
7
+ * deployment integrate several platforms without hand-writing the dispatch — and
8
+ * without losing the Connect-with-X routes each entry declares, which is the
9
+ * failure mode a hand-written dispatcher has.
10
+ */
11
+ /**
12
+ * True when `value` is a single {@link CredentialResolverConfig} rather than a
13
+ * per-target map.
14
+ *
15
+ * Discriminates on the *type* of `resolve`/`endpoint`, not merely their
16
+ * presence, so a target legitimately named `"resolve"` or `"endpoint"` in a map
17
+ * is not mistaken for the single form.
18
+ */
19
+ export function isSingleCredentialResolver(value) {
20
+ const candidate = value;
21
+ if (typeof candidate.resolve === "function") {
22
+ return true;
23
+ }
24
+ const endpoint = candidate.endpoint;
25
+ return (typeof endpoint === "object" &&
26
+ endpoint !== null &&
27
+ typeof endpoint.url === "string");
28
+ }
29
+ /** The target names a per-target map resolves, in declaration order. */
30
+ export function credentialTargetNames(value) {
31
+ return isSingleCredentialResolver(value) ? [] : Object.keys(value);
32
+ }
33
+ /**
34
+ * Every Connect-with-X provider the config depends on, deduplicated by id and in
35
+ * declaration order.
36
+ *
37
+ * Unioning across map entries is what keeps inference working for a
38
+ * multi-platform deployment: each entry declares its own routes, and the author
39
+ * repeats none of them.
40
+ */
41
+ export function credentialConnectProviders(value) {
42
+ if (value === undefined || value === null || typeof value !== "object") {
43
+ return [];
44
+ }
45
+ const configs = isSingleCredentialResolver(value)
46
+ ? [value]
47
+ : Object.values(value);
48
+ const out = [];
49
+ for (const config of configs) {
50
+ for (const provider of declaredConnect(config)) {
51
+ if (!out.some((existing) => existing.id === provider.id)) {
52
+ out.push(provider);
53
+ }
54
+ }
55
+ }
56
+ return out;
57
+ }
58
+ function declaredConnect(config) {
59
+ const connect = config?.connect;
60
+ return Array.isArray(connect) ? connect : [];
61
+ }
62
+ //# sourceMappingURL=credential-resolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-resolvers.js","sourceRoot":"","sources":["../../src/identity/credential-resolvers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAqD;IAErD,MAAM,SAAS,GAAG,KAAkD,CAAC;IACrE,IAAI,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;IACpC,OAAO,CACL,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,KAAK,IAAI;QACjB,OAAQ,QAA8B,CAAC,GAAG,KAAK,QAAQ,CACxD,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CACnC,KAAqD;IAErD,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAiE;IAEjE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvE,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,0BAA0B,CAAC,KAAK,CAAC;QAC/C,CAAC,CAAC,CAAC,KAAK,CAAC;QACT,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,GAAG,GAA8B,EAAE,CAAC;IAC1C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,QAAQ,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,MAAe;IACtC,MAAM,OAAO,GAAI,MAA4C,EAAE,OAAO,CAAC;IACvE,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAE,OAAqC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC"}
@@ -22,10 +22,10 @@ export declare const githubIdentityConnectProvider: IdentityConnectProvider;
22
22
  *
23
23
  * @example
24
24
  * ```ts
25
- * import { defineIdentity, github } from "managed-deepagents";
25
+ * import { connect, defineIdentity } from "managed-deepagents";
26
26
  *
27
- * export const identity = defineIdentity.preset("internal-tool", {
28
- * connect: [github.connect()],
27
+ * export const identity = defineIdentity({
28
+ * connect: [connect.github()],
29
29
  * });
30
30
  * ```
31
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAehC,eAAO,MAAM,0BAA0B,QAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAgB,CAAC;AACvD,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,WAAW,oCAAoC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,oEAAoE;AACpE,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,oCAAyC,GACjD,uBAAuB,CAsFzB;AAED,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,EAAE,uBACL,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,oCAAoC,GAC7C,uBAAuB,CAIzB"}
1
+ {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAehC,eAAO,MAAM,0BAA0B,QAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAgB,CAAC;AACvD,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,WAAW,oCAAoC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,oEAAoE;AACpE,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,oCAAyC,GACjD,uBAAuB,CA+FzB;AAED,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,EAAE,uBACL,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,oCAAoC,GAC7C,uBAAuB,CAIzB"}
@@ -4,6 +4,7 @@
4
4
  * Mounted under `/identity/github/*` when listed on `identity.connect`.
5
5
  */
6
6
  import { identityConnectPaths } from "../connect-paths.js";
7
+ import { credentialConnectIds, isUserScopedDeployment, } from "../connect-inference.js";
7
8
  import { buildGitHubCredentialRecord, getGitHubCredentialStore, } from "./credentials-store.js";
8
9
  import { buildGitHubAuthorizeUrl, createGitHubOauthState, exchangeGitHubOauthCode, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readGitHubOauthConfig, readOauthStateSigningKey, resolveGitHubOauthRedirectBase, verifyGitHubOauthState, } from "./oauth.js";
9
10
  const PATHS = identityConnectPaths("github");
@@ -17,12 +18,19 @@ export function createGitHubIdentityConnectProvider(options = {}) {
17
18
  return {
18
19
  id: "github",
19
20
  shouldMount(ctx) {
20
- // Opt-in is via `identity.connect`; this is a secondary gate only.
21
- return ctx.hasIdentity;
21
+ if (!ctx.hasIdentity) {
22
+ return false;
23
+ }
24
+ // Listed on `identity.connect` — the author already opted in. Otherwise
25
+ // mount only when a credential chain reads per-user GitHub tokens, since
26
+ // those tokens have no other way to be granted.
27
+ return (ctx.declared !== false ||
28
+ (credentialConnectIds(ctx.credentials).has("github") &&
29
+ isUserScopedDeployment(ctx.scope)));
22
30
  },
23
- async status(actorId) {
31
+ async status(userId) {
24
32
  const configured = Boolean(readGitHubOauthConfig());
25
- const record = await store().getByActorId(actorId);
33
+ const record = await store().getByUserId(userId);
26
34
  return {
27
35
  configured,
28
36
  linked: Boolean(record),
@@ -36,7 +44,7 @@ export function createGitHubIdentityConnectProvider(options = {}) {
36
44
  : {}),
37
45
  };
38
46
  },
39
- async startAuthorize(actorId, redirectUri) {
47
+ async startAuthorize(userId, redirectUri) {
40
48
  const oauth = readGitHubOauthConfig();
41
49
  const stateKey = readOauthStateSigningKey();
42
50
  if (!oauth || !stateKey) {
@@ -45,7 +53,7 @@ export function createGitHubIdentityConnectProvider(options = {}) {
45
53
  error: `GitHub connect is not configured (set GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, MDA_PUBLIC_APP_URL, ${OAUTH_STATE_SIGNING_KEY_ENV})`,
46
54
  };
47
55
  }
48
- const state = await createGitHubOauthState(actorId, stateKey);
56
+ const state = await createGitHubOauthState(userId, stateKey);
49
57
  return {
50
58
  authorizeUrl: buildGitHubAuthorizeUrl(oauth, state, redirectUri),
51
59
  };
@@ -59,10 +67,10 @@ export function createGitHubIdentityConnectProvider(options = {}) {
59
67
  if (!stateKey) {
60
68
  throw new Error(`${OAUTH_STATE_SIGNING_KEY_ENV} is not configured`);
61
69
  }
62
- const { actorId } = await verifyGitHubOauthState(state, stateKey);
70
+ const { userId } = await verifyGitHubOauthState(state, stateKey);
63
71
  const token = await exchangeGitHubOauthCode(oauth, code, redirectUri);
64
72
  const record = buildGitHubCredentialRecord({
65
- actorId,
73
+ userId,
66
74
  githubUserId: token.userId,
67
75
  githubLogin: token.login,
68
76
  accessToken: token.accessToken,
@@ -76,8 +84,8 @@ export function createGitHubIdentityConnectProvider(options = {}) {
76
84
  successRedirect: `${oauth.publicAppUrl}/settings?github=connected`,
77
85
  };
78
86
  },
79
- async unlink(actorId) {
80
- await store().removeByActorId(actorId);
87
+ async unlink(userId) {
88
+ await store().removeByUserId(userId);
81
89
  },
82
90
  resolveRedirectBase(options) {
83
91
  return resolveGitHubOauthRedirectBase(options);
@@ -96,10 +104,10 @@ export const githubIdentityConnectProvider = createGitHubIdentityConnectProvider
96
104
  *
97
105
  * @example
98
106
  * ```ts
99
- * import { defineIdentity, github } from "managed-deepagents";
107
+ * import { connect, defineIdentity } from "managed-deepagents";
100
108
  *
101
- * export const identity = defineIdentity.preset("internal-tool", {
102
- * connect: [github.connect()],
109
+ * export const identity = defineIdentity({
110
+ * connect: [connect.github()],
103
111
  * });
104
112
  * ```
105
113
  */
@@ -1 +1 @@
1
- {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Per-actor GitHub OAuth credential vault.
3
3
  *
4
4
  * Stored in the LangGraph Store under `["mda_github_credentials"]`. Connect-
5
- * with-GitHub upserts after OAuth; `github.credentials` resolves `actor` tokens
5
+ * with-GitHub upserts after OAuth; `credentials.github` resolves `actor` tokens
6
6
  * from here until managed Agent Auth lands.
7
7
  *
8
8
  * Tokens are deployment-scoped Store values — treat the Store namespace as
@@ -23,7 +23,7 @@ export declare const GITHUB_CREDENTIAL_CACHE_TTL_MS = 30000;
23
23
  /** Soft cap on cached GitHub credential records per process. */
24
24
  export declare const GITHUB_CREDENTIAL_CACHE_MAX_ENTRIES = 256;
25
25
  export interface GitHubCredentialRecord {
26
- actorId: string;
26
+ userId: string;
27
27
  githubUserId: string;
28
28
  githubLogin: string;
29
29
  accessToken: string;
@@ -35,24 +35,24 @@ export interface GitHubCredentialRecord {
35
35
  source: "github_oauth";
36
36
  }
37
37
  export interface GitHubCredentialStore {
38
- getByActorId(actorId: string): Promise<GitHubCredentialRecord | null>;
38
+ getByUserId(userId: string): Promise<GitHubCredentialRecord | null>;
39
39
  upsert(record: GitHubCredentialRecord): Promise<void>;
40
- removeByActorId(actorId: string): Promise<void>;
40
+ removeByUserId(userId: string): Promise<void>;
41
41
  }
42
42
  /** In-memory store for tests. */
43
43
  export declare class InMemoryGitHubCredentialStore implements GitHubCredentialStore {
44
- private readonly byActor;
45
- getByActorId(actorId: string): Promise<GitHubCredentialRecord | null>;
44
+ private readonly byUser;
45
+ getByUserId(userId: string): Promise<GitHubCredentialRecord | null>;
46
46
  upsert(record: GitHubCredentialRecord): Promise<void>;
47
- removeByActorId(actorId: string): Promise<void>;
47
+ removeByUserId(userId: string): Promise<void>;
48
48
  }
49
49
  /** LangGraph Store–backed GitHub credential vault. */
50
50
  export declare class LangGraphGitHubCredentialStore implements GitHubCredentialStore {
51
51
  private readonly client;
52
52
  constructor(client: Client);
53
- getByActorId(actorId: string): Promise<GitHubCredentialRecord | null>;
53
+ getByUserId(userId: string): Promise<GitHubCredentialRecord | null>;
54
54
  upsert(record: GitHubCredentialRecord): Promise<void>;
55
- removeByActorId(actorId: string): Promise<void>;
55
+ removeByUserId(userId: string): Promise<void>;
56
56
  }
57
57
  /** Override the process-default credential store (tests). */
58
58
  export declare function setGitHubCredentialStore(store: GitHubCredentialStore | null): void;
@@ -64,7 +64,7 @@ export declare function createLangGraphGitHubCredentialStore(options?: {
64
64
  ingressSecret?: string;
65
65
  }): LangGraphGitHubCredentialStore | null;
66
66
  export declare function buildGitHubCredentialRecord(input: {
67
- actorId: string;
67
+ userId: string;
68
68
  githubUserId: string;
69
69
  githubLogin: string;
70
70
  accessToken: string;