managed-deepagents 0.5.3-dev.111 → 0.5.3-dev.113

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 (275) hide show
  1. package/README.md +20 -17
  2. package/dist/channels/manifest.d.ts +0 -2
  3. package/dist/channels/manifest.d.ts.map +1 -1
  4. package/dist/channels/slack/http.d.ts.map +1 -1
  5. package/dist/channels/slack/http.js +3 -48
  6. package/dist/channels/slack/http.js.map +1 -1
  7. package/dist/channels/slack/index.d.ts +2 -3
  8. package/dist/channels/slack/index.d.ts.map +1 -1
  9. package/dist/channels/slack/index.js +2 -3
  10. package/dist/channels/slack/index.js.map +1 -1
  11. package/dist/connectors/mcp/index.d.ts.map +1 -1
  12. package/dist/connectors/mcp/index.js +5 -1
  13. package/dist/connectors/mcp/index.js.map +1 -1
  14. package/dist/connectors/mcp/load.js +3 -0
  15. package/dist/connectors/mcp/load.js.map +1 -1
  16. package/dist/connectors/tool-selection.d.ts +13 -18
  17. package/dist/connectors/tool-selection.d.ts.map +1 -1
  18. package/dist/connectors/tool-selection.js +10 -13
  19. package/dist/connectors/tool-selection.js.map +1 -1
  20. package/dist/extension.d.ts +5 -5
  21. package/dist/extension.js +5 -5
  22. package/dist/identity/index.d.ts +2 -11
  23. package/dist/identity/index.d.ts.map +1 -1
  24. package/dist/identity/index.js +8 -66
  25. package/dist/identity/index.js.map +1 -1
  26. package/dist/identity/options.d.ts +3 -3
  27. package/dist/identity/options.js +7 -8
  28. package/dist/identity/options.js.map +1 -1
  29. package/dist/identity/slack/links.d.ts +1 -2
  30. package/dist/identity/slack/links.d.ts.map +1 -1
  31. package/dist/identity/slack/links.js +1 -2
  32. package/dist/identity/slack/links.js.map +1 -1
  33. package/dist/identity/supabase.d.ts.map +1 -1
  34. package/dist/identity/supabase.js +2 -0
  35. package/dist/identity/supabase.js.map +1 -1
  36. package/dist/identity/types.d.ts +8 -81
  37. package/dist/identity/types.d.ts.map +1 -1
  38. package/dist/index.d.ts +2 -5
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +1 -1
  41. package/dist/index.js.map +1 -1
  42. package/dist/namespaces.d.ts +5 -183
  43. package/dist/namespaces.d.ts.map +1 -1
  44. package/dist/namespaces.js +1 -63
  45. package/dist/namespaces.js.map +1 -1
  46. package/dist/runtime/auth.d.ts +11 -14
  47. package/dist/runtime/auth.d.ts.map +1 -1
  48. package/dist/runtime/auth.js +15 -54
  49. package/dist/runtime/auth.js.map +1 -1
  50. package/dist/runtime/cors.d.ts +5 -4
  51. package/dist/runtime/cors.d.ts.map +1 -1
  52. package/dist/runtime/cors.js +5 -9
  53. package/dist/runtime/cors.js.map +1 -1
  54. package/dist/runtime/identity-http.d.ts.map +1 -1
  55. package/dist/runtime/identity-http.js +0 -69
  56. package/dist/runtime/identity-http.js.map +1 -1
  57. package/dist/runtime/identity-runtime.d.ts +2 -10
  58. package/dist/runtime/identity-runtime.d.ts.map +1 -1
  59. package/dist/runtime/identity-runtime.js +2 -38
  60. package/dist/runtime/identity-runtime.js.map +1 -1
  61. package/dist/runtime/index.d.ts +15 -11
  62. package/dist/runtime/index.d.ts.map +1 -1
  63. package/dist/runtime/index.js +8 -44
  64. package/dist/runtime/index.js.map +1 -1
  65. package/dist/runtime/managed-middleware.d.ts +2 -3
  66. package/dist/runtime/managed-middleware.d.ts.map +1 -1
  67. package/dist/runtime/managed-middleware.js +12 -12
  68. package/dist/runtime/managed-middleware.js.map +1 -1
  69. package/dist/runtime/managed-tools.d.ts +4 -11
  70. package/dist/runtime/managed-tools.d.ts.map +1 -1
  71. package/dist/runtime/managed-tools.js +11 -18
  72. package/dist/runtime/managed-tools.js.map +1 -1
  73. package/dist/runtime/memory/context-io.d.ts +0 -1
  74. package/dist/runtime/memory/context-io.d.ts.map +1 -1
  75. package/dist/runtime/memory/context-io.js +0 -10
  76. package/dist/runtime/memory/context-io.js.map +1 -1
  77. package/dist/runtime/memory/mounts.d.ts.map +1 -1
  78. package/dist/runtime/memory/mounts.js +0 -10
  79. package/dist/runtime/memory/mounts.js.map +1 -1
  80. package/dist/runtime/validated-token.d.ts.map +1 -1
  81. package/dist/runtime/validated-token.js +7 -1
  82. package/dist/runtime/validated-token.js.map +1 -1
  83. package/package.json +10 -11
  84. package/dist/channels/index.d.ts +0 -25
  85. package/dist/channels/index.d.ts.map +0 -1
  86. package/dist/channels/index.js +0 -18
  87. package/dist/channels/index.js.map +0 -1
  88. package/dist/connectors/marketplace/catalog.d.ts +0 -96
  89. package/dist/connectors/marketplace/catalog.d.ts.map +0 -1
  90. package/dist/connectors/marketplace/catalog.js +0 -213
  91. package/dist/connectors/marketplace/catalog.js.map +0 -1
  92. package/dist/connectors/marketplace/fleet-mcp.d.ts +0 -62
  93. package/dist/connectors/marketplace/fleet-mcp.d.ts.map +0 -1
  94. package/dist/connectors/marketplace/fleet-mcp.js +0 -215
  95. package/dist/connectors/marketplace/fleet-mcp.js.map +0 -1
  96. package/dist/connectors/marketplace/index.d.ts +0 -31
  97. package/dist/connectors/marketplace/index.d.ts.map +0 -1
  98. package/dist/connectors/marketplace/index.js +0 -39
  99. package/dist/connectors/marketplace/index.js.map +0 -1
  100. package/dist/connectors/marketplace/load.d.ts +0 -14
  101. package/dist/connectors/marketplace/load.d.ts.map +0 -1
  102. package/dist/connectors/marketplace/load.js +0 -206
  103. package/dist/connectors/marketplace/load.js.map +0 -1
  104. package/dist/connectors/slack/index.d.ts +0 -24
  105. package/dist/connectors/slack/index.d.ts.map +0 -1
  106. package/dist/connectors/slack/index.js +0 -64
  107. package/dist/connectors/slack/index.js.map +0 -1
  108. package/dist/connectors/toolserver/catalog.d.ts +0 -326
  109. package/dist/connectors/toolserver/catalog.d.ts.map +0 -1
  110. package/dist/connectors/toolserver/catalog.js +0 -415
  111. package/dist/connectors/toolserver/catalog.js.map +0 -1
  112. package/dist/connectors/toolserver/connectors.d.ts +0 -698
  113. package/dist/connectors/toolserver/connectors.d.ts.map +0 -1
  114. package/dist/connectors/toolserver/connectors.js +0 -13
  115. package/dist/connectors/toolserver/connectors.js.map +0 -1
  116. package/dist/connectors/toolserver/index.d.ts +0 -142
  117. package/dist/connectors/toolserver/index.d.ts.map +0 -1
  118. package/dist/connectors/toolserver/index.js +0 -105
  119. package/dist/connectors/toolserver/index.js.map +0 -1
  120. package/dist/connectors/toolserver/integrations.d.ts +0 -103
  121. package/dist/connectors/toolserver/integrations.d.ts.map +0 -1
  122. package/dist/connectors/toolserver/integrations.js +0 -288
  123. package/dist/connectors/toolserver/integrations.js.map +0 -1
  124. package/dist/connectors/toolserver/load.d.ts +0 -55
  125. package/dist/connectors/toolserver/load.d.ts.map +0 -1
  126. package/dist/connectors/toolserver/load.js +0 -289
  127. package/dist/connectors/toolserver/load.js.map +0 -1
  128. package/dist/identity/actor-subject.d.ts +0 -60
  129. package/dist/identity/actor-subject.d.ts.map +0 -1
  130. package/dist/identity/actor-subject.js +0 -107
  131. package/dist/identity/actor-subject.js.map +0 -1
  132. package/dist/identity/byo-oauth.d.ts +0 -105
  133. package/dist/identity/byo-oauth.d.ts.map +0 -1
  134. package/dist/identity/byo-oauth.js +0 -190
  135. package/dist/identity/byo-oauth.js.map +0 -1
  136. package/dist/identity/connect-inference.d.ts +0 -37
  137. package/dist/identity/connect-inference.d.ts.map +0 -1
  138. package/dist/identity/connect-inference.js +0 -53
  139. package/dist/identity/connect-inference.js.map +0 -1
  140. package/dist/identity/connect-paths.d.ts +0 -8
  141. package/dist/identity/connect-paths.d.ts.map +0 -1
  142. package/dist/identity/connect-paths.js +0 -11
  143. package/dist/identity/connect-paths.js.map +0 -1
  144. package/dist/identity/connect-provider-types.d.ts +0 -97
  145. package/dist/identity/connect-provider-types.d.ts.map +0 -1
  146. package/dist/identity/connect-provider-types.js +0 -10
  147. package/dist/identity/connect-provider-types.js.map +0 -1
  148. package/dist/identity/connect-provider.d.ts +0 -35
  149. package/dist/identity/connect-provider.d.ts.map +0 -1
  150. package/dist/identity/connect-provider.js +0 -148
  151. package/dist/identity/connect-provider.js.map +0 -1
  152. package/dist/identity/credential-resolvers.d.ts +0 -33
  153. package/dist/identity/credential-resolvers.d.ts.map +0 -1
  154. package/dist/identity/credential-resolvers.js +0 -62
  155. package/dist/identity/credential-resolvers.js.map +0 -1
  156. package/dist/identity/define-fleet-connect.d.ts +0 -53
  157. package/dist/identity/define-fleet-connect.d.ts.map +0 -1
  158. package/dist/identity/define-fleet-connect.js +0 -76
  159. package/dist/identity/define-fleet-connect.js.map +0 -1
  160. package/dist/identity/fleet-connect-hint.d.ts +0 -41
  161. package/dist/identity/fleet-connect-hint.d.ts.map +0 -1
  162. package/dist/identity/fleet-connect-hint.js +0 -190
  163. package/dist/identity/fleet-connect-hint.js.map +0 -1
  164. package/dist/identity/fleet-connect.d.ts +0 -93
  165. package/dist/identity/fleet-connect.d.ts.map +0 -1
  166. package/dist/identity/fleet-connect.js +0 -256
  167. package/dist/identity/fleet-connect.js.map +0 -1
  168. package/dist/identity/fleet-integration-connect.d.ts +0 -32
  169. package/dist/identity/fleet-integration-connect.d.ts.map +0 -1
  170. package/dist/identity/fleet-integration-connect.js +0 -35
  171. package/dist/identity/fleet-integration-connect.js.map +0 -1
  172. package/dist/identity/fleet.d.ts +0 -56
  173. package/dist/identity/fleet.d.ts.map +0 -1
  174. package/dist/identity/fleet.js +0 -131
  175. package/dist/identity/fleet.js.map +0 -1
  176. package/dist/identity/github/connect-http.d.ts +0 -37
  177. package/dist/identity/github/connect-http.d.ts.map +0 -1
  178. package/dist/identity/github/connect-http.js +0 -128
  179. package/dist/identity/github/connect-http.js.map +0 -1
  180. package/dist/identity/github/credentials-store.d.ts +0 -76
  181. package/dist/identity/github/credentials-store.d.ts.map +0 -1
  182. package/dist/identity/github/credentials-store.js +0 -270
  183. package/dist/identity/github/credentials-store.js.map +0 -1
  184. package/dist/identity/github/credentials.d.ts +0 -87
  185. package/dist/identity/github/credentials.d.ts.map +0 -1
  186. package/dist/identity/github/credentials.js +0 -201
  187. package/dist/identity/github/credentials.js.map +0 -1
  188. package/dist/identity/github/index.d.ts +0 -7
  189. package/dist/identity/github/index.d.ts.map +0 -1
  190. package/dist/identity/github/index.js +0 -6
  191. package/dist/identity/github/index.js.map +0 -1
  192. package/dist/identity/github/oauth.d.ts +0 -47
  193. package/dist/identity/github/oauth.d.ts.map +0 -1
  194. package/dist/identity/github/oauth.js +0 -124
  195. package/dist/identity/github/oauth.js.map +0 -1
  196. package/dist/identity/google/connect-http.d.ts +0 -37
  197. package/dist/identity/google/connect-http.d.ts.map +0 -1
  198. package/dist/identity/google/connect-http.js +0 -42
  199. package/dist/identity/google/connect-http.js.map +0 -1
  200. package/dist/identity/google/index.d.ts +0 -7
  201. package/dist/identity/google/index.d.ts.map +0 -1
  202. package/dist/identity/google/index.js +0 -6
  203. package/dist/identity/google/index.js.map +0 -1
  204. package/dist/identity/google/oauth.d.ts +0 -22
  205. package/dist/identity/google/oauth.d.ts.map +0 -1
  206. package/dist/identity/google/oauth.js +0 -48
  207. package/dist/identity/google/oauth.js.map +0 -1
  208. package/dist/identity/linkedin/connect-http.d.ts +0 -37
  209. package/dist/identity/linkedin/connect-http.d.ts.map +0 -1
  210. package/dist/identity/linkedin/connect-http.js +0 -41
  211. package/dist/identity/linkedin/connect-http.js.map +0 -1
  212. package/dist/identity/linkedin/index.d.ts +0 -7
  213. package/dist/identity/linkedin/index.d.ts.map +0 -1
  214. package/dist/identity/linkedin/index.js +0 -6
  215. package/dist/identity/linkedin/index.js.map +0 -1
  216. package/dist/identity/linkedin/oauth.d.ts +0 -22
  217. package/dist/identity/linkedin/oauth.d.ts.map +0 -1
  218. package/dist/identity/linkedin/oauth.js +0 -47
  219. package/dist/identity/linkedin/oauth.js.map +0 -1
  220. package/dist/identity/marketplace/connect-hint.d.ts +0 -31
  221. package/dist/identity/marketplace/connect-hint.d.ts.map +0 -1
  222. package/dist/identity/marketplace/connect-hint.js +0 -59
  223. package/dist/identity/marketplace/connect-hint.js.map +0 -1
  224. package/dist/identity/marketplace/connect.d.ts +0 -51
  225. package/dist/identity/marketplace/connect.d.ts.map +0 -1
  226. package/dist/identity/marketplace/connect.js +0 -88
  227. package/dist/identity/marketplace/connect.js.map +0 -1
  228. package/dist/identity/marketplace/index.d.ts +0 -9
  229. package/dist/identity/marketplace/index.d.ts.map +0 -1
  230. package/dist/identity/marketplace/index.js +0 -9
  231. package/dist/identity/marketplace/index.js.map +0 -1
  232. package/dist/identity/microsoft/connect-http.d.ts +0 -38
  233. package/dist/identity/microsoft/connect-http.d.ts.map +0 -1
  234. package/dist/identity/microsoft/connect-http.js +0 -42
  235. package/dist/identity/microsoft/connect-http.js.map +0 -1
  236. package/dist/identity/microsoft/index.d.ts +0 -7
  237. package/dist/identity/microsoft/index.d.ts.map +0 -1
  238. package/dist/identity/microsoft/index.js +0 -6
  239. package/dist/identity/microsoft/index.js.map +0 -1
  240. package/dist/identity/microsoft/oauth.d.ts +0 -24
  241. package/dist/identity/microsoft/oauth.d.ts.map +0 -1
  242. package/dist/identity/microsoft/oauth.js +0 -65
  243. package/dist/identity/microsoft/oauth.js.map +0 -1
  244. package/dist/identity/oauth-env.d.ts +0 -43
  245. package/dist/identity/oauth-env.d.ts.map +0 -1
  246. package/dist/identity/oauth-env.js +0 -66
  247. package/dist/identity/oauth-env.js.map +0 -1
  248. package/dist/identity/oauth-tickets.d.ts +0 -37
  249. package/dist/identity/oauth-tickets.d.ts.map +0 -1
  250. package/dist/identity/oauth-tickets.js +0 -114
  251. package/dist/identity/oauth-tickets.js.map +0 -1
  252. package/dist/identity/slack/connect-http.d.ts +0 -35
  253. package/dist/identity/slack/connect-http.d.ts.map +0 -1
  254. package/dist/identity/slack/connect-http.js +0 -115
  255. package/dist/identity/slack/connect-http.js.map +0 -1
  256. package/dist/identity/slack/index.d.ts +0 -8
  257. package/dist/identity/slack/index.d.ts.map +0 -1
  258. package/dist/identity/slack/index.js +0 -7
  259. package/dist/identity/slack/index.js.map +0 -1
  260. package/dist/identity/slack/oauth.d.ts +0 -28
  261. package/dist/identity/slack/oauth.d.ts.map +0 -1
  262. package/dist/identity/slack/oauth.js +0 -87
  263. package/dist/identity/slack/oauth.js.map +0 -1
  264. package/dist/identity/x/connect-http.d.ts +0 -38
  265. package/dist/identity/x/connect-http.d.ts.map +0 -1
  266. package/dist/identity/x/connect-http.js +0 -41
  267. package/dist/identity/x/connect-http.js.map +0 -1
  268. package/dist/identity/x/index.d.ts +0 -6
  269. package/dist/identity/x/index.d.ts.map +0 -1
  270. package/dist/identity/x/index.js +0 -5
  271. package/dist/identity/x/index.js.map +0 -1
  272. package/dist/runtime/credentials.d.ts +0 -68
  273. package/dist/runtime/credentials.d.ts.map +0 -1
  274. package/dist/runtime/credentials.js +0 -235
  275. package/dist/runtime/credentials.js.map +0 -1
@@ -1 +0,0 @@
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"}
@@ -1,114 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth-tickets.js","sourceRoot":"","sources":["../../src/identity/oauth-tickets.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Connect-with-Slack — {@link IdentityConnectProvider} for Slack OIDC linking.
3
- *
4
- * Mounted under `/identity/slack/*` when listed on `identity.connect`, or when
5
- * a Slack channel routes into a user-scoped / custom-credentials deployment
6
- * (so Events can remap actors and tools can use per-caller tokens).
7
- */
8
- import type { IdentityConnectProvider } from "../connect-provider-types.js";
9
- import { type IdentityLinkStore } from "./links.js";
10
- export declare const SLACK_CONNECT_STATUS_PATH: string;
11
- export declare const SLACK_CONNECT_START_PATH: string;
12
- export declare const SLACK_CONNECT_CALLBACK_PATH: string;
13
- export declare const SLACK_CONNECT_LINK_PATH: string;
14
- /** Options for {@link createSlackIdentityConnectProvider}. */
15
- export interface SlackIdentityConnectProviderOptions {
16
- linkStore?: IdentityLinkStore;
17
- }
18
- /** Build a Slack connect provider (injectable store for tests). */
19
- export declare function createSlackIdentityConnectProvider(options?: SlackIdentityConnectProviderOptions): IdentityConnectProvider;
20
- /** Default Slack connect provider used by the identity-connect registry. */
21
- export declare const slackIdentityConnectProvider: IdentityConnectProvider;
22
- /**
23
- * Opt into Connect-with-Slack on `defineIdentity({ connect: […] })`.
24
- *
25
- * @example
26
- * ```ts
27
- * import { connect, defineIdentity } from "managed-deepagents";
28
- *
29
- * export const identity = defineIdentity({
30
- * connect: [connect.slack()],
31
- * });
32
- * ```
33
- */
34
- export declare function connect(options?: SlackIdentityConnectProviderOptions): IdentityConnectProvider;
35
- //# sourceMappingURL=connect-http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/slack/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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"}
@@ -1,115 +0,0 @@
1
- /**
2
- * Connect-with-Slack — {@link IdentityConnectProvider} for Slack OIDC linking.
3
- *
4
- * Mounted under `/identity/slack/*` when listed on `identity.connect`, or when
5
- * a Slack channel routes into a user-scoped / custom-credentials deployment
6
- * (so Events can remap actors and tools can use per-caller tokens).
7
- */
8
- import { buildIdentityLinkRecord, getIdentityLinkStore, } from "./links.js";
9
- import { buildSlackAuthorizeUrl, exchangeSlackOidcCode, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, readSlackOidcConfig, resolveOauthRedirectBase, slackOauthTickets, } from "./oauth.js";
10
- import { identityConnectPaths } from "../connect-paths.js";
11
- import { hasChannelForProvider, isUserScopedDeployment, } from "../connect-inference.js";
12
- const PATHS = identityConnectPaths("slack");
13
- export const SLACK_CONNECT_STATUS_PATH = PATHS.status;
14
- export const SLACK_CONNECT_START_PATH = PATHS.connect;
15
- export const SLACK_CONNECT_CALLBACK_PATH = PATHS.callback;
16
- export const SLACK_CONNECT_LINK_PATH = PATHS.link;
17
- /** Build a Slack connect provider (injectable store for tests). */
18
- export function createSlackIdentityConnectProvider(options = {}) {
19
- const store = () => options.linkStore ?? getIdentityLinkStore();
20
- return {
21
- id: "slack",
22
- shouldMount(ctx) {
23
- if (!ctx.hasIdentity) {
24
- return false;
25
- }
26
- // Listed on `identity.connect` — the author already opted in. Otherwise
27
- // mount only when a Slack channel routes into a per-user deployment,
28
- // which is exactly when there is a Slack account worth linking.
29
- return (ctx.declared !== false ||
30
- (hasChannelForProvider(ctx.channels, "slack") &&
31
- isUserScopedDeployment(ctx.scope)));
32
- },
33
- async status(userId) {
34
- const link = await store().getByUserId(userId);
35
- return {
36
- linked: Boolean(link),
37
- ...(link
38
- ? {
39
- slackUserId: link.slackUserId,
40
- slackKey: link.slackKey,
41
- linkedAt: link.linkedAt,
42
- }
43
- : {}),
44
- };
45
- },
46
- async startAuthorize(userId, redirectUri) {
47
- const oauth = readSlackOidcConfig();
48
- const stateKey = readOauthStateSigningKey();
49
- if (!oauth || !stateKey) {
50
- return {
51
- notConfigured: true,
52
- error: `Slack connect is not configured (set SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, MDA_PUBLIC_APP_URL, ${OAUTH_STATE_SIGNING_KEY_ENV})`,
53
- };
54
- }
55
- const state = await slackOauthTickets.createState(userId, stateKey);
56
- return {
57
- authorizeUrl: buildSlackAuthorizeUrl(oauth, state, redirectUri),
58
- };
59
- },
60
- async completeCallback(code, state, redirectUri) {
61
- const oauth = readSlackOidcConfig();
62
- if (!oauth) {
63
- throw new Error("Slack OAuth is not configured");
64
- }
65
- const stateKey = readOauthStateSigningKey();
66
- if (!stateKey) {
67
- throw new Error(`${OAUTH_STATE_SIGNING_KEY_ENV} is not configured`);
68
- }
69
- const { userId } = await slackOauthTickets.verifyState(state, stateKey);
70
- const slackIdentity = await exchangeSlackOidcCode(oauth, code, redirectUri);
71
- const teamId = slackIdentity.teamId ?? oauth.teamId;
72
- const record = buildIdentityLinkRecord({
73
- userId,
74
- slackUserId: slackIdentity.userId,
75
- ...(teamId ? { slackTeamId: teamId } : {}),
76
- ...(slackIdentity.email ? { email: slackIdentity.email } : {}),
77
- });
78
- await store().upsert(record);
79
- return {
80
- successRedirect: `${oauth.publicAppUrl}/settings?slack=connected`,
81
- };
82
- },
83
- async unlink(userId) {
84
- await store().removeByUserId(userId);
85
- },
86
- resolveRedirectBase(options) {
87
- return resolveOauthRedirectBase(options);
88
- },
89
- resolvePublicAppUrl() {
90
- const oauth = readSlackOidcConfig();
91
- return (oauth?.publicAppUrl ??
92
- process.env[MDA_PUBLIC_APP_URL_ENV]?.replace(/\/$/, ""));
93
- },
94
- };
95
- }
96
- /** Default Slack connect provider used by the identity-connect registry. */
97
- export const slackIdentityConnectProvider = createSlackIdentityConnectProvider();
98
- /**
99
- * Opt into Connect-with-Slack on `defineIdentity({ connect: […] })`.
100
- *
101
- * @example
102
- * ```ts
103
- * import { connect, defineIdentity } from "managed-deepagents";
104
- *
105
- * export const identity = defineIdentity({
106
- * connect: [connect.slack()],
107
- * });
108
- * ```
109
- */
110
- export function connect(options) {
111
- return options
112
- ? createSlackIdentityConnectProvider(options)
113
- : slackIdentityConnectProvider;
114
- }
115
- //# sourceMappingURL=connect-http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/slack/connect-http.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Slack identity helpers — Connect-with-Slack opt-in for `defineIdentity`.
3
- *
4
- * Slack Events / messaging authoring lives on `connectors.slack`.
5
- */
6
- export { connect, createSlackIdentityConnectProvider, slackIdentityConnectProvider, SLACK_CONNECT_CALLBACK_PATH, SLACK_CONNECT_LINK_PATH, SLACK_CONNECT_START_PATH, SLACK_CONNECT_STATUS_PATH, } from "./connect-http.js";
7
- export type { SlackIdentityConnectProviderOptions } from "./connect-http.js";
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/slack/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,kCAAkC,EAClC,4BAA4B,EAC5B,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Slack identity helpers — Connect-with-Slack opt-in for `defineIdentity`.
3
- *
4
- * Slack Events / messaging authoring lives on `connectors.slack`.
5
- */
6
- export { connect, createSlackIdentityConnectProvider, slackIdentityConnectProvider, SLACK_CONNECT_CALLBACK_PATH, SLACK_CONNECT_LINK_PATH, SLACK_CONNECT_START_PATH, SLACK_CONNECT_STATUS_PATH, } from "./connect-http.js";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/slack/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,OAAO,EACP,kCAAkC,EAClC,4BAA4B,EAC5B,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Slack OpenID Connect helpers for Connect-with-Slack account linking.
3
- */
4
- export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveOauthRedirectBase, resolveSlackOauthRedirectBase, } from "../oauth-env.js";
5
- export declare const SLACK_CLIENT_ID_ENV = "SLACK_CLIENT_ID";
6
- export declare const SLACK_CLIENT_SECRET_ENV = "SLACK_CLIENT_SECRET";
7
- export declare const SLACK_TEAM_ID_ENV = "SLACK_TEAM_ID";
8
- /** Override Slack OIDC base (tests). */
9
- export declare const SLACK_OIDC_BASE_ENV = "SLACK_OIDC_BASE";
10
- /** Slack-bound OAuth state / connect-ticket helpers. */
11
- export declare const slackOauthTickets: import("../oauth-tickets.js").OauthTickets;
12
- export interface SlackOidcConfig {
13
- clientId: string;
14
- clientSecret: string;
15
- teamId?: string;
16
- publicAppUrl: string;
17
- oidcBase: string;
18
- }
19
- export interface SlackOidcIdentity {
20
- userId: string;
21
- teamId?: string;
22
- email?: string;
23
- }
24
- export declare function readSlackOidcConfig(env?: NodeJS.ProcessEnv): SlackOidcConfig | null;
25
- export declare function slackConnectUrl(publicAppUrl: string): string;
26
- export declare function buildSlackAuthorizeUrl(config: SlackOidcConfig, state: string, redirectUri: string): string;
27
- export declare function exchangeSlackOidcCode(config: SlackOidcConfig, code: string, redirectUri: string): Promise<SlackOidcIdentity>;
28
- //# sourceMappingURL=oauth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/slack/oauth.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAIrD,wDAAwD;AACxD,eAAO,MAAM,iBAAiB,4CAA2B,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,eAAe,GAAG,IAAI,CAmBxB;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CAWR;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC,CA4D5B"}
@@ -1,87 +0,0 @@
1
- /**
2
- * Slack OpenID Connect helpers for Connect-with-Slack account linking.
3
- */
4
- import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
5
- import { oauthTicketsFor } from "../oauth-tickets.js";
6
- import { MDA_PUBLIC_APP_URL_ENV } from "../oauth-env.js";
7
- export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveOauthRedirectBase, resolveSlackOauthRedirectBase, } from "../oauth-env.js";
8
- export const SLACK_CLIENT_ID_ENV = "SLACK_CLIENT_ID";
9
- export const SLACK_CLIENT_SECRET_ENV = "SLACK_CLIENT_SECRET";
10
- export const SLACK_TEAM_ID_ENV = "SLACK_TEAM_ID";
11
- /** Override Slack OIDC base (tests). */
12
- export const SLACK_OIDC_BASE_ENV = "SLACK_OIDC_BASE";
13
- const DEFAULT_OIDC_BASE = "https://slack.com";
14
- /** Slack-bound OAuth state / connect-ticket helpers. */
15
- export const slackOauthTickets = oauthTicketsFor("slack");
16
- export function readSlackOidcConfig(env = process.env) {
17
- const clientId = env[SLACK_CLIENT_ID_ENV]?.trim();
18
- const clientSecret = env[SLACK_CLIENT_SECRET_ENV]?.trim();
19
- const publicAppUrl = env[MDA_PUBLIC_APP_URL_ENV]?.trim();
20
- if (!clientId || !clientSecret || !publicAppUrl) {
21
- return null;
22
- }
23
- return {
24
- clientId,
25
- clientSecret,
26
- ...(env[SLACK_TEAM_ID_ENV]?.trim()
27
- ? { teamId: env[SLACK_TEAM_ID_ENV].trim() }
28
- : {}),
29
- publicAppUrl: publicAppUrl.replace(/\/$/, ""),
30
- oidcBase: (env[SLACK_OIDC_BASE_ENV]?.trim() || DEFAULT_OIDC_BASE).replace(/\/$/, ""),
31
- };
32
- }
33
- export function slackConnectUrl(publicAppUrl) {
34
- return `${publicAppUrl.replace(/\/$/, "")}/settings`;
35
- }
36
- export function buildSlackAuthorizeUrl(config, state, redirectUri) {
37
- const url = new URL(`${config.oidcBase}/openid/connect/authorize`);
38
- url.searchParams.set("response_type", "code");
39
- url.searchParams.set("client_id", config.clientId);
40
- url.searchParams.set("scope", "openid email profile");
41
- url.searchParams.set("redirect_uri", redirectUri);
42
- url.searchParams.set("state", state);
43
- if (config.teamId) {
44
- url.searchParams.set("team", config.teamId);
45
- }
46
- return url.toString();
47
- }
48
- export async function exchangeSlackOidcCode(config, code, redirectUri) {
49
- const tokenUrl = `${config.oidcBase}/api/openid.connect.token`;
50
- const body = new URLSearchParams({
51
- client_id: config.clientId,
52
- client_secret: config.clientSecret,
53
- code,
54
- redirect_uri: redirectUri,
55
- grant_type: "authorization_code",
56
- });
57
- const tokenResponse = await fetchWithTimeout(tokenUrl, {
58
- method: "POST",
59
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
60
- body,
61
- }, PROVIDER_HTTP_TIMEOUT_MS);
62
- const tokenJson = (await tokenResponse.json());
63
- if (!tokenResponse.ok || tokenJson.ok === false || !tokenJson.access_token) {
64
- throw new Error(tokenJson.error ?? "Slack OIDC token exchange failed");
65
- }
66
- const userInfoUrl = `${config.oidcBase}/api/openid.connect.userInfo`;
67
- const userResponse = await fetchWithTimeout(userInfoUrl, { headers: { Authorization: `Bearer ${tokenJson.access_token}` } }, PROVIDER_HTTP_TIMEOUT_MS);
68
- const userJson = (await userResponse.json());
69
- if (!userResponse.ok || userJson.ok === false) {
70
- throw new Error(userJson.error ?? "Slack OIDC userInfo failed");
71
- }
72
- const userId = userJson["https://slack.com/user_id"] ??
73
- (typeof userJson.sub === "string"
74
- ? userJson.sub.split("|").pop()
75
- : undefined);
76
- if (!userId) {
77
- throw new Error("Slack OIDC userInfo missing user id");
78
- }
79
- return {
80
- userId,
81
- ...(userJson["https://slack.com/team_id"]
82
- ? { teamId: userJson["https://slack.com/team_id"] }
83
- : {}),
84
- ...(typeof userJson.email === "string" ? { email: userJson.email } : {}),
85
- };
86
- }
87
- //# sourceMappingURL=oauth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/slack/oauth.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Connect-with-X — thin adapter over {@link defineFleetVaultConnect}.
3
- *
4
- * Mounted under `/identity/x/*` when listed on `identity.connect`, or inferred
5
- * from `connectors.x` on a user-scoped deployment. OAuth uses Fleet
6
- * auth-sessions against the reserved `twitter-oauth-provider` slug (PKCE is
7
- * handled by Host); there is no local BYO client path.
8
- */
9
- import type { FleetVaultConnectProviderOptions } from "../fleet-connect.js";
10
- export declare const X_CONNECT_STATUS_PATH: string;
11
- export declare const X_CONNECT_START_PATH: string;
12
- export declare const X_CONNECT_CALLBACK_PATH: string;
13
- export declare const X_CONNECT_LINK_PATH: string;
14
- export declare const isXActorSubjectEnabled: () => boolean;
15
- export declare const enableXActorSubject: () => void;
16
- /**
17
- * Enable actor-subject mode when X connectors imply per-user vault subjects.
18
- *
19
- * Prefer {@link enableActorSubjectIntegrationsFromConnectors} at compile seams.
20
- */
21
- export declare const enableXActorSubjectFromConnectors: (connectorKinds: readonly (string | undefined)[] | undefined, scope?: import("../connect-provider-types.js").IdentityConnectMountContext["scope"]) => void;
22
- export declare const resetXActorSubjectEnabledForTests: () => void;
23
- export declare const isXConnectConfigured: (env?: NodeJS.ProcessEnv) => boolean;
24
- export declare const xConnectUrl: (publicAppUrl: string) => string;
25
- /** Options for {@link createXIdentityConnectProvider}. */
26
- export type XIdentityConnectProviderOptions = Pick<FleetVaultConnectProviderOptions, "providerSlug" | "scopes" | "fleet">;
27
- /** Build an X connect provider (Fleet auth-sessions / twitter-oauth-provider). */
28
- export declare const createXIdentityConnectProvider: (options?: Pick<FleetVaultConnectProviderOptions, "providerSlug" | "scopes" | "fleet">) => import("../connect-provider-types.js").IdentityConnectProvider;
29
- /** Default X connect provider used as a built-in mount candidate. */
30
- export declare const xIdentityConnectProvider: import("../connect-provider-types.js").IdentityConnectProvider;
31
- /**
32
- * Opt into Connect-with-X on `defineIdentity({ connect: […] })`.
33
- *
34
- * Usually unnecessary: declaring `connectors.x` on a user-scoped identity
35
- * deployment mounts this provider and derives OAuth scopes automatically.
36
- */
37
- export declare const connect: (options?: Pick<FleetVaultConnectProviderOptions, "providerSlug" | "scopes" | "fleet">) => import("../connect-provider-types.js").IdentityConnectProvider;
38
- //# sourceMappingURL=connect-http.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/x/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAO5E,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AACpD,eAAO,MAAM,oBAAoB,QAAkB,CAAC;AACpD,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,mBAAmB,QAAe,CAAC;AAEhD,eAAO,MAAM,sBAAsB,eAA0B,CAAC;AAC9D,eAAO,MAAM,mBAAmB,YAAuB,CAAC;AACxD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,4JACV,CAAC;AACrC,eAAO,MAAM,iCAAiC,YACV,CAAC;AACrC,eAAO,MAAM,oBAAoB,sCAAwB,CAAC;AAC1D,eAAO,MAAM,WAAW,kCAAe,CAAC;AAExC,0DAA0D;AAC1D,MAAM,MAAM,+BAA+B,GAAG,IAAI,CAChD,gCAAgC,EAChC,cAAc,GAAG,QAAQ,GAAG,OAAO,CACpC,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,8BAA8B,2JAAmB,CAAC;AAE/D,qEAAqE;AACrE,eAAO,MAAM,wBAAwB,gEAAa,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,2JAAY,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * Connect-with-X — thin adapter over {@link defineFleetVaultConnect}.
3
- *
4
- * Mounted under `/identity/x/*` when listed on `identity.connect`, or inferred
5
- * from `connectors.x` on a user-scoped deployment. OAuth uses Fleet
6
- * auth-sessions against the reserved `twitter-oauth-provider` slug (PKCE is
7
- * handled by Host); there is no local BYO client path.
8
- */
9
- import { X_INTEGRATION, readXProviderSlug, } from "../../connectors/toolserver/integrations.js";
10
- import { defineFleetVaultConnect } from "../define-fleet-connect.js";
11
- const x = defineFleetVaultConnect({
12
- integration: X_INTEGRATION,
13
- resolveProviderSlug: readXProviderSlug,
14
- });
15
- export const X_CONNECT_STATUS_PATH = x.paths.status;
16
- export const X_CONNECT_START_PATH = x.paths.connect;
17
- export const X_CONNECT_CALLBACK_PATH = x.paths.callback;
18
- export const X_CONNECT_LINK_PATH = x.paths.link;
19
- export const isXActorSubjectEnabled = x.isActorSubjectEnabled;
20
- export const enableXActorSubject = x.enableActorSubject;
21
- /**
22
- * Enable actor-subject mode when X connectors imply per-user vault subjects.
23
- *
24
- * Prefer {@link enableActorSubjectIntegrationsFromConnectors} at compile seams.
25
- */
26
- export const enableXActorSubjectFromConnectors = x.enableActorSubjectFromConnectors;
27
- export const resetXActorSubjectEnabledForTests = x.resetActorSubjectEnabledForTests;
28
- export const isXConnectConfigured = x.isConnectConfigured;
29
- export const xConnectUrl = x.connectUrl;
30
- /** Build an X connect provider (Fleet auth-sessions / twitter-oauth-provider). */
31
- export const createXIdentityConnectProvider = x.createProvider;
32
- /** Default X connect provider used as a built-in mount candidate. */
33
- export const xIdentityConnectProvider = x.provider;
34
- /**
35
- * Opt into Connect-with-X on `defineIdentity({ connect: […] })`.
36
- *
37
- * Usually unnecessary: declaring `connectors.x` on a user-scoped identity
38
- * deployment mounts this provider and derives OAuth scopes automatically.
39
- */
40
- export const connect = x.connect;
41
- //# sourceMappingURL=connect-http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/x/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,aAAa,EACb,iBAAiB,GAClB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,MAAM,CAAC,GAAG,uBAAuB,CAAC;IAChC,WAAW,EAAE,aAAa;IAC1B,mBAAmB,EAAE,iBAAiB;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;AACpD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,qBAAqB,CAAC;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC;AACxD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAC5C,CAAC,CAAC,gCAAgC,CAAC;AACrC,MAAM,CAAC,MAAM,iCAAiC,GAC5C,CAAC,CAAC,gCAAgC,CAAC;AACrC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,mBAAmB,CAAC;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,UAAU,CAAC;AAQxC,kFAAkF;AAClF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,cAAc,CAAC;AAE/D,qEAAqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,QAAQ,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC"}
@@ -1,6 +0,0 @@
1
- /**
2
- * X identity helpers — Connect-with-X (Fleet vault / twitter-oauth-provider).
3
- */
4
- export { connect, createXIdentityConnectProvider, enableXActorSubject, enableXActorSubjectFromConnectors, xConnectUrl, xIdentityConnectProvider, isXActorSubjectEnabled, isXConnectConfigured, resetXActorSubjectEnabledForTests, X_CONNECT_CALLBACK_PATH, X_CONNECT_LINK_PATH, X_CONNECT_START_PATH, X_CONNECT_STATUS_PATH, } from "./connect-http.js";
5
- export type { XIdentityConnectProviderOptions } from "./connect-http.js";
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/x/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,8BAA8B,EAC9B,mBAAmB,EACnB,iCAAiC,EACjC,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,5 +0,0 @@
1
- /**
2
- * X identity helpers — Connect-with-X (Fleet vault / twitter-oauth-provider).
3
- */
4
- export { connect, createXIdentityConnectProvider, enableXActorSubject, enableXActorSubjectFromConnectors, xConnectUrl, xIdentityConnectProvider, isXActorSubjectEnabled, isXConnectConfigured, resetXActorSubjectEnabledForTests, X_CONNECT_CALLBACK_PATH, X_CONNECT_LINK_PATH, X_CONNECT_START_PATH, X_CONNECT_STATUS_PATH, } from "./connect-http.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/x/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,8BAA8B,EAC9B,mBAAmB,EACnB,iCAAiC,EACjC,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,iCAAiC,EACjC,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,mBAAmB,CAAC"}
@@ -1,68 +0,0 @@
1
- import type { CredentialTarget, IdentityConfig, ResolvedCredential, RuntimeIdentity } from "../identity/index.js";
2
- /**
3
- * Component 5 — Credentials, custom mode.
4
- *
5
- * The escape hatch Agent Auth can't cover: bespoke per-caller credential minting
6
- * via an in-process resolver callback or a hosted token-exchange endpoint. It
7
- * runs in the worker (not the shared ingress auth handler), applies the output
8
- * to downstream calls, and caches per `(user, target)` until the credential's
9
- * `expiresAt`. Secrets live only in this in-memory cache keyed by identity —
10
- * never in thread state or traces.
11
- *
12
- * Managed credential modes (`"user"` / `"agent"`) select toolserver/Connect
13
- * ownership on the identity axis; only `custom` builds a
14
- * {@link CredentialsProvider} here.
15
- */
16
- /** Env var holding the HMAC secret MDA signs the endpoint assertion with. */
17
- export declare const CREDENTIAL_SIGNING_SECRET_ENV = "MDA_TOKEN_EXCHANGE_SECRET";
18
- /** Per-call options for {@link CredentialsProvider.for}. */
19
- export interface CredentialForOptions {
20
- /** Skip the cache and force a fresh mint (e.g. after a downstream 401). */
21
- forceRefresh?: boolean;
22
- }
23
- /**
24
- * The per-run credential surface a tool receives as `runtime.credentials`.
25
- * Tools call `runtime.credentials.for(target)` and attach the returned headers
26
- * to their downstream request.
27
- */
28
- export interface CredentialsProvider {
29
- for(target: CredentialTarget, options?: CredentialForOptions): Promise<ResolvedCredential>;
30
- }
31
- /**
32
- * Side effects the executor depends on, injectable so resolution is
33
- * deterministic under test (no real clock, network, or signing key).
34
- */
35
- export interface CredentialDeps {
36
- fetch: typeof fetch;
37
- now: () => number;
38
- /** Signs the assertion MDA presents to a hosted token-exchange endpoint. */
39
- signAssertion: (identity: RuntimeIdentity, target: CredentialTarget) => Promise<string>;
40
- }
41
- /** Default TTL when a resolver omits `expiresAt` (15 minutes). */
42
- export declare const DEFAULT_CREDENTIAL_TTL_MS: number;
43
- /** Soft cap on cached credentials per process. */
44
- export declare const MAX_CREDENTIAL_CACHE_ENTRIES = 1024;
45
- /**
46
- * TTL cache for resolved credentials, keyed by `(user, target)` so
47
- * per-repo/per-install tokens never collide. Kept out of thread state. Entries
48
- * expire at the credential's `expiresAt`, or after a default TTL when omitted.
49
- * The cache is soft-capped to bound memory in long-lived workers.
50
- */
51
- export declare class CredentialCache {
52
- private readonly defaultTtlMs;
53
- private readonly maxEntries;
54
- private readonly entries;
55
- constructor(defaultTtlMs?: number, maxEntries?: number);
56
- get(key: string, nowMs: number): ResolvedCredential | undefined;
57
- set(key: string, value: ResolvedCredential, nowMs?: number): void;
58
- clear(): void;
59
- }
60
- /** Clear the process-level credential cache. Test-only. */
61
- export declare function clearCredentialCacheForTests(): void;
62
- /**
63
- * Build the `runtime.credentials` provider for a run, or `undefined` when the
64
- * deployment isn't in custom-credentials mode. The provider is bound to the
65
- * run's resolved identity; every `for(target)` call is scoped to that actor.
66
- */
67
- export declare function createCredentialsProvider(cfg: IdentityConfig, identity: RuntimeIdentity | undefined, deps?: Partial<CredentialDeps>, cache?: CredentialCache): CredentialsProvider | undefined;
68
- //# sourceMappingURL=credentials.d.ts.map