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,190 +0,0 @@
1
- /**
2
- * Runtime hint when the caller has not completed Connect-with-X for a Fleet
3
- * vault integration yet.
4
- *
5
- * Prefers Connect status over toolserver 428 (agent subjects skip that today).
6
- */
7
- import { readIntegrationProviderSlug, } from "../connectors/toolserver/integrations.js";
8
- import { managedRuntimeOverrides } from "../runtime/managed-tools.js";
9
- import { agentIdFromActor, isActorSubjectIntegrationEnabled, } from "./actor-subject.js";
10
- import { identityConnectPaths } from "./connect-paths.js";
11
- import { fleetConnectUrl } from "./fleet-connect.js";
12
- import { listAgentConnections } from "./fleet.js";
13
- import { oauthTicketsFor } from "./oauth-tickets.js";
14
- import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, readOauthStateSigningKey, } from "./oauth-env.js";
15
- function hintPrefix(integration) {
16
- return `User has not connected ${integration.displayName}`;
17
- }
18
- /** Short TTL so connected callers skip Fleet on every model turn. */
19
- const CONNECT_STATUS_TTL_MS = 30_000;
20
- const connectionStatusCache = new Map();
21
- function cacheKey(userId, providerSlug) {
22
- return `${userId}\0${providerSlug}`;
23
- }
24
- /** Drop expired entries so one-shot callers do not retain forever. */
25
- function evictExpiredCacheEntries(now = Date.now()) {
26
- for (const [key, entry] of connectionStatusCache) {
27
- if (now >= entry.expiresAt) {
28
- connectionStatusCache.delete(key);
29
- }
30
- }
31
- }
32
- function cachedConnected(userId, providerSlug) {
33
- const entry = connectionStatusCache.get(cacheKey(userId, providerSlug));
34
- if (!entry) {
35
- return undefined;
36
- }
37
- if (Date.now() >= entry.expiresAt) {
38
- connectionStatusCache.delete(cacheKey(userId, providerSlug));
39
- return undefined;
40
- }
41
- return entry.connected;
42
- }
43
- function storeConnected(userId, providerSlug, connected) {
44
- const now = Date.now();
45
- evictExpiredCacheEntries(now);
46
- // Only cache positives: a just-completed Connect must be visible on retry
47
- // within the TTL window, not masked by a prior disconnected observation.
48
- if (!connected) {
49
- return;
50
- }
51
- connectionStatusCache.set(cacheKey(userId, providerSlug), {
52
- expiresAt: now + CONNECT_STATUS_TTL_MS,
53
- connected: true,
54
- });
55
- }
56
- /** Drop cached Connect status (tests only). */
57
- export function clearFleetConnectHintCacheForTests() {
58
- connectionStatusCache.clear();
59
- }
60
- /**
61
- * Absolute Connect start URL for agent hints.
62
- *
63
- * Prefers the Agent Server origin (`MDA_PUBLIC_API_URL`) where
64
- * `/identity/{id}/*` is mounted. Falls back to `MDA_PUBLIC_APP_URL`.
65
- *
66
- * When `userId` and a signing key are available, appends a short-lived
67
- * `?ticket=` so the browser session binds OAuth to that actor.
68
- */
69
- export async function fleetConnectHintUrl(integration, env = process.env, userId, resolvePublicAppUrl) {
70
- const apiBase = env[MDA_PUBLIC_API_URL_ENV]?.trim().replace(/\/$/, "");
71
- const appBase = resolvePublicAppUrl?.(env) ??
72
- env[MDA_PUBLIC_APP_URL_ENV]?.trim().replace(/\/$/, "");
73
- const base = apiBase || appBase;
74
- const paths = identityConnectPaths(integration.connectId);
75
- const path = base ? fleetConnectUrl(integration, base) : paths.connect;
76
- if (!userId) {
77
- return path;
78
- }
79
- const signingKey = readOauthStateSigningKey(env);
80
- if (!signingKey) {
81
- return path;
82
- }
83
- try {
84
- const ticket = await oauthTicketsFor(integration.connectId).createTicket(userId, signingKey);
85
- const url = new URL(path.startsWith("http") ? path : `https://placeholder.local${path}`);
86
- url.searchParams.set("ticket", ticket);
87
- if (!path.startsWith("http")) {
88
- return `${paths.connect}?${url.searchParams.toString()}`;
89
- }
90
- return url.toString();
91
- }
92
- catch {
93
- return path;
94
- }
95
- }
96
- async function hintMessage(integration, userId, resolvePublicAppUrl) {
97
- const url = await fleetConnectHintUrl(integration, process.env, userId, resolvePublicAppUrl);
98
- return (`${hintPrefix(integration)}; ask them to Connect with ${integration.displayName} at ${url}. ` +
99
- "Paste that full URL so they can open it. " +
100
- `Do not pretend ${integration.displayName} tools will work until they connect.`);
101
- }
102
- /**
103
- * Middleware that injects a system hint when actor-subject mode is on for
104
- * `integration` and the current caller has no LangSmith vault connection.
105
- */
106
- export function createFleetConnectHintMiddleware(options) {
107
- const { integration } = options;
108
- const list = options.fleet?.list ?? listAgentConnections;
109
- const providerSlug = () => options.providerSlug?.trim() || readIntegrationProviderSlug(integration);
110
- async function disconnected(userId) {
111
- if (options.isConnected) {
112
- return !(await options.isConnected(userId));
113
- }
114
- const slug = providerSlug();
115
- const cached = cachedConnected(userId, slug);
116
- if (cached !== undefined) {
117
- return !cached;
118
- }
119
- const agentId = agentIdFromActor(userId);
120
- const connections = await list(agentId, options.fleet ?? {});
121
- const isDisconnected = !connections.some((c) => c.provider_id === slug);
122
- storeConnected(userId, slug, !isDisconnected);
123
- return isDisconnected;
124
- }
125
- return {
126
- name: `mda-${integration.id}-connect-hint`,
127
- async wrapModelCall(request, handler) {
128
- if (!isActorSubjectIntegrationEnabled(integration.id)) {
129
- return handler(request);
130
- }
131
- const overrides = managedRuntimeOverrides(request.runtime);
132
- const userId = overrides.identity?.user?.id;
133
- if (!userId) {
134
- return handler(request);
135
- }
136
- try {
137
- if (!(await disconnected(userId))) {
138
- return handler(request);
139
- }
140
- }
141
- catch {
142
- const hint = await hintMessage(integration, userId, options.resolvePublicAppUrl);
143
- return handler({
144
- ...request,
145
- messages: [
146
- { role: "system", content: hint },
147
- ...(Array.isArray(request.messages) ? request.messages : []),
148
- ],
149
- });
150
- }
151
- const hint = await hintMessage(integration, userId, options.resolvePublicAppUrl);
152
- return handler({
153
- ...request,
154
- messages: [
155
- { role: "system", content: hint },
156
- ...(Array.isArray(request.messages) ? request.messages : []),
157
- ],
158
- });
159
- },
160
- };
161
- }
162
- /** Rewrite tool errors that look like a missing Fleet vault connection. */
163
- export function rewriteFleetToolError(error, integration, resolvePublicAppUrl) {
164
- const message = error instanceof Error ? error.message : String(error);
165
- if (/connection_required|token_expired|no connection|AgentAuthRequired|428|not connected/i.test(message)) {
166
- // Per-caller Connect-with-X only exists on user-scoped deployments. Agent /
167
- // no-identity projects use the shared vault from `mda connect`.
168
- if (!isActorSubjectIntegrationEnabled(integration.id)) {
169
- return new Error(`${integration.displayName} is not connected in the shared LangSmith vault. ` +
170
- `Run \`mda connect\` for a ${integration.displayName} connector, or connect it ` +
171
- `under LangSmith Settings → Integrations. (Original: ${message})`);
172
- }
173
- const apiBase = process.env[MDA_PUBLIC_API_URL_ENV]
174
- ?.trim()
175
- .replace(/\/$/, "");
176
- const appBase = resolvePublicAppUrl?.() ??
177
- process.env[MDA_PUBLIC_APP_URL_ENV]?.trim().replace(/\/$/, "");
178
- const base = apiBase || appBase;
179
- const paths = identityConnectPaths(integration.connectId);
180
- const url = base ? fleetConnectUrl(integration, base) : paths.connect;
181
- return new Error(`${hintPrefix(integration)}. Ask the user to Connect with ${integration.displayName} at ${url}. ` +
182
- "Paste that full URL so they can open it. " +
183
- `(Original: ${message})`);
184
- }
185
- return error instanceof Error ? error : new Error(message);
186
- }
187
- export function isFleetConnectHint(message, integration) {
188
- return message.includes(hintPrefix(integration));
189
- }
190
- //# sourceMappingURL=fleet-connect-hint.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet-connect-hint.js","sourceRoot":"","sources":["../../src/identity/fleet-connect-hint.ts"],"names":[],"mappings":"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"}
@@ -1,93 +0,0 @@
1
- /**
2
- * Factory for Connect-with-X providers that persist tokens in the LangSmith
3
- * Fleet vault under a derived actor agent_id.
4
- *
5
- * Google and Microsoft are thin adapters over this module; Google optionally
6
- * adds a BYO OAuth client for offline / non-LangSmith setups.
7
- */
8
- import { type FleetOAuthIntegration } from "../connectors/toolserver/integrations.js";
9
- import type { IdentityConnectProvider, IdentityConnectRedirectBaseOptions } from "./connect-provider-types.js";
10
- import { createFleetAuthSession, deleteAgentConnection, listAgentConnections, upsertAgentProviderToken, type FleetClientOptions } from "./fleet.js";
11
- export interface FleetVaultByoTokenResult {
12
- accessToken: string;
13
- refreshToken?: string;
14
- expiresInSeconds?: number;
15
- scope?: string;
16
- tokenType?: string;
17
- /** Shown on status (e.g. email). */
18
- accountLabel?: string;
19
- /** Merged into vault token metadata (plus `mda_actor_user_id`). */
20
- metadata?: Record<string, unknown>;
21
- }
22
- /** Config shape returned by {@link FleetVaultByoOauth.readConfig}. */
23
- export interface FleetVaultByoOauthConfig {
24
- publicAppUrl: string;
25
- /** Space-separated OAuth scopes from env / BYO defaults. */
26
- scopes: string;
27
- }
28
- /** Optional BYO OAuth client when Fleet platform OAuth is unavailable. */
29
- export interface FleetVaultByoOauth {
30
- readConfig(env?: NodeJS.ProcessEnv): FleetVaultByoOauthConfig | null;
31
- buildAuthorizeUrl(config: FleetVaultByoOauthConfig, state: string, redirectUri: string, scopes: string): string;
32
- exchangeCode(config: FleetVaultByoOauthConfig, code: string, redirectUri: string): Promise<FleetVaultByoTokenResult>;
33
- }
34
- export interface FleetVaultConnectProviderOptions {
35
- integration: FleetOAuthIntegration;
36
- /** Override LangSmith OAuth provider slug. */
37
- providerSlug?: string;
38
- /**
39
- * Resolve the LangSmith OAuth provider slug (sync or async).
40
- *
41
- * Used by marketplace bridges that discover `oauth_provider_id` from the
42
- * workspace MCP server row. When omitted, uses {@link providerSlug} or
43
- * {@link readIntegrationProviderSlug}.
44
- */
45
- resolveProviderSlug?: () => string | Promise<string>;
46
- /**
47
- * Whether declared connectors imply this Connect provider should mount on
48
- * user-scoped deployments. Defaults to toolserver slug matching via
49
- * {@link hasIntegrationToolServerConnector}.
50
- */
51
- hasDeclaredConnector?: (connectorKinds: readonly (string | undefined)[] | undefined) => boolean;
52
- /**
53
- * Override the "configured" check. Defaults to
54
- * {@link isFleetVaultConnectConfigured} with {@link byo}.
55
- */
56
- isConfigured?: (env?: NodeJS.ProcessEnv) => boolean;
57
- /** Override the not-configured error returned from startAuthorize. */
58
- notConfiguredError?: string;
59
- /**
60
- * When true, startAuthorize catches discovery/session failures and returns
61
- * `{ notConfigured: true, error }` instead of throwing (marketplace MCP
62
- * discovery can fail before an auth-session exists).
63
- */
64
- softAuthorizeFailures?: boolean;
65
- /**
66
- * OAuth scopes to request. When omitted: connector-derived scopes from the
67
- * mount context, then BYO `readConfig().scopes`, then
68
- * {@link fallbackScopes} / `integration.profileScopes`.
69
- */
70
- scopes?: string[];
71
- /** Optional BYO OAuth path (Google / Microsoft). */
72
- byo?: FleetVaultByoOauth;
73
- resolveRedirectBase(options: IdentityConnectRedirectBaseOptions): string;
74
- resolvePublicAppUrl?(): string | undefined;
75
- /** Injectable Fleet client (tests). */
76
- fleet?: FleetClientOptions & {
77
- list?: typeof listAgentConnections;
78
- upsert?: typeof upsertAgentProviderToken;
79
- delete?: typeof deleteAgentConnection;
80
- createAuthSession?: typeof createFleetAuthSession;
81
- };
82
- /**
83
- * Last-resort scopes when connectors and BYO config imply none.
84
- * Defaults to `integration.profileScopes`.
85
- */
86
- fallbackScopes?: string[];
87
- }
88
- export declare function isFleetVaultConnectConfigured(byo?: FleetVaultByoOauth, env?: NodeJS.ProcessEnv): boolean;
89
- export declare function fleetVaultConnectNotConfiguredError(integration: FleetOAuthIntegration): string;
90
- export declare function fleetConnectUrl(integration: FleetOAuthIntegration, publicAppUrl: string): string;
91
- /** Build a Fleet vault Connect-with-X provider for `integration`. */
92
- export declare function createFleetVaultConnectProvider(options: FleetVaultConnectProviderOptions): IdentityConnectProvider;
93
- //# sourceMappingURL=fleet-connect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet-connect.d.ts","sourceRoot":"","sources":["../../src/identity/fleet-connect.ts"],"names":[],"mappings":"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"}
@@ -1,256 +0,0 @@
1
- /**
2
- * Factory for Connect-with-X providers that persist tokens in the LangSmith
3
- * Fleet vault under a derived actor agent_id.
4
- *
5
- * Google and Microsoft are thin adapters over this module; Google optionally
6
- * adds a BYO OAuth client for offline / non-LangSmith setups.
7
- */
8
- import { hasIntegrationToolServerConnector, readIntegrationProviderSlug, scopesForIntegrationConnectorKinds, } from "../connectors/toolserver/integrations.js";
9
- import { identityConnectPaths } from "./connect-paths.js";
10
- import { isUserScopedDeployment } from "./connect-inference.js";
11
- import { createFleetAuthSession, deleteAgentConnection, hasFleetAuthCredentials, listAgentConnections, upsertAgentProviderToken, } from "./fleet.js";
12
- import { agentIdFromActor, enableActorSubjectIntegration, } from "./actor-subject.js";
13
- import { oauthTicketsFor } from "./oauth-tickets.js";
14
- import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, } from "./oauth-env.js";
15
- function hasPublicConnectBase(env = process.env) {
16
- return Boolean(env[MDA_PUBLIC_API_URL_ENV]?.trim() || env[MDA_PUBLIC_APP_URL_ENV]?.trim());
17
- }
18
- export function isFleetVaultConnectConfigured(byo, env = process.env) {
19
- if (!hasPublicConnectBase(env)) {
20
- return false;
21
- }
22
- if (hasFleetAuthCredentials(env)) {
23
- return true;
24
- }
25
- return Boolean(readOauthStateSigningKey(env) && byo?.readConfig(env));
26
- }
27
- export function fleetVaultConnectNotConfiguredError(integration) {
28
- return (`${integration.displayName} connect is not configured (set LANGSMITH_API_KEY, ` +
29
- "LANGSMITH_WORKSPACE_ID, MDA_PUBLIC_API_URL; " +
30
- `or a BYO OAuth client and ${OAUTH_STATE_SIGNING_KEY_ENV})`);
31
- }
32
- export function fleetConnectUrl(integration, publicAppUrl) {
33
- const paths = identityConnectPaths(integration.connectId);
34
- return `${publicAppUrl.replace(/\/$/, "")}${paths.connect}`;
35
- }
36
- /** Build a Fleet vault Connect-with-X provider for `integration`. */
37
- export function createFleetVaultConnectProvider(options) {
38
- const { integration, byo } = options;
39
- const paths = identityConnectPaths(integration.connectId);
40
- const tickets = oauthTicketsFor(integration.connectId);
41
- const list = options.fleet?.list ?? listAgentConnections;
42
- const upsert = options.fleet?.upsert ?? upsertAgentProviderToken;
43
- const del = options.fleet?.delete ?? deleteAgentConnection;
44
- const createSession = options.fleet?.createAuthSession ?? createFleetAuthSession;
45
- const fleetOpts = () => {
46
- const { list: _l, upsert: _u, delete: _d, createAuthSession: _c, ...rest } = options.fleet ?? {};
47
- return rest;
48
- };
49
- const configured = (env) => options.isConfigured?.(env) ?? isFleetVaultConnectConfigured(byo, env);
50
- const notConfiguredError = () => options.notConfiguredError ??
51
- fleetVaultConnectNotConfiguredError(integration);
52
- let mountConnectorKinds;
53
- async function resolveProviderSlug() {
54
- if (options.resolveProviderSlug) {
55
- return options.resolveProviderSlug();
56
- }
57
- return (options.providerSlug?.trim() || readIntegrationProviderSlug(integration));
58
- }
59
- function resolveAuthorizeScopes(ctxKinds) {
60
- if (options.scopes?.length) {
61
- return [...options.scopes];
62
- }
63
- const fromConnectors = scopesForIntegrationConnectorKinds(integration, ctxKinds ?? mountConnectorKinds);
64
- if (fromConnectors.length > 0) {
65
- return fromConnectors;
66
- }
67
- const byoScopes = byo
68
- ?.readConfig()
69
- ?.scopes?.trim()
70
- .split(/\s+/)
71
- .filter(Boolean);
72
- if (byoScopes?.length) {
73
- return byoScopes;
74
- }
75
- return [...(options.fallbackScopes ?? integration.profileScopes ?? [])];
76
- }
77
- function hasConnector(connectorKinds) {
78
- return (options.hasDeclaredConnector?.(connectorKinds) ??
79
- hasIntegrationToolServerConnector(integration, connectorKinds));
80
- }
81
- return {
82
- id: integration.connectId,
83
- settingsQueryKey: integration.connectId,
84
- shouldMount(ctx) {
85
- if (!ctx.hasIdentity) {
86
- return false;
87
- }
88
- if (ctx.declared) {
89
- mountConnectorKinds = ctx.connectorKinds;
90
- enableActorSubjectIntegration(integration.id);
91
- return true;
92
- }
93
- if (hasConnector(ctx.connectorKinds) &&
94
- isUserScopedDeployment(ctx.scope)) {
95
- mountConnectorKinds = ctx.connectorKinds;
96
- enableActorSubjectIntegration(integration.id);
97
- return true;
98
- }
99
- return false;
100
- },
101
- async status(userId) {
102
- const isConfigured = configured();
103
- let connected = false;
104
- let accountLabel;
105
- let agentId;
106
- let providerId;
107
- if (isConfigured) {
108
- try {
109
- agentId = agentIdFromActor(userId);
110
- providerId = await resolveProviderSlug();
111
- const connections = await list(agentId, fleetOpts());
112
- const match = connections.find((c) => c.provider_id === providerId);
113
- connected = Boolean(match);
114
- accountLabel = match?.provider_account_label;
115
- }
116
- catch (err) {
117
- return {
118
- configured: isConfigured,
119
- linked: false,
120
- connected: false,
121
- error: err instanceof Error ? err.message : String(err),
122
- connectPath: paths.connect,
123
- };
124
- }
125
- }
126
- return {
127
- configured: isConfigured,
128
- linked: connected,
129
- connected,
130
- ...(agentId ? { agentId } : {}),
131
- ...(providerId ? { providerId } : {}),
132
- ...(accountLabel ? { email: accountLabel, accountLabel } : {}),
133
- connectPath: paths.connect,
134
- scopes: resolveAuthorizeScopes(),
135
- };
136
- },
137
- async startAuthorize(userId, redirectUri) {
138
- if (!configured()) {
139
- return {
140
- notConfigured: true,
141
- error: notConfiguredError(),
142
- };
143
- }
144
- const run = async () => {
145
- const scopes = resolveAuthorizeScopes();
146
- if (hasFleetAuthCredentials()) {
147
- const agentId = agentIdFromActor(userId);
148
- const session = await createSession({
149
- providerSlug: await resolveProviderSlug(),
150
- scopes,
151
- agentId,
152
- strategy: "create",
153
- }, fleetOpts());
154
- const authorizeUrl = session.verification_url?.trim();
155
- if (!authorizeUrl) {
156
- throw new Error(`Fleet auth-session did not return a verification_url for ${integration.displayName} connect`);
157
- }
158
- return { authorizeUrl };
159
- }
160
- const stateKey = readOauthStateSigningKey();
161
- const oauth = byo?.readConfig();
162
- if (!stateKey || !byo || !oauth) {
163
- return {
164
- notConfigured: true,
165
- error: notConfiguredError(),
166
- };
167
- }
168
- const state = await tickets.createState(userId, stateKey);
169
- return {
170
- authorizeUrl: byo.buildAuthorizeUrl(oauth, state, redirectUri, scopes.join(" ")),
171
- };
172
- };
173
- if (!options.softAuthorizeFailures) {
174
- return run();
175
- }
176
- try {
177
- return await run();
178
- }
179
- catch (err) {
180
- return {
181
- notConfigured: true,
182
- error: err instanceof Error ? err.message : String(err),
183
- };
184
- }
185
- },
186
- async completeCallback(code, state, redirectUri) {
187
- // Fleet/platform path finalizes on host GET /v2/auth/callback — MDA's
188
- // callback is only used for the optional BYO client.
189
- const oauth = byo?.readConfig();
190
- if (!byo || !oauth) {
191
- const publicApp = process.env[MDA_PUBLIC_APP_URL_ENV]?.replace(/\/$/, "") ||
192
- process.env[MDA_PUBLIC_API_URL_ENV]?.replace(/\/$/, "") ||
193
- "";
194
- return {
195
- successRedirect: publicApp
196
- ? `${publicApp}/settings?${integration.connectId}=connected`
197
- : "/",
198
- };
199
- }
200
- const stateKey = readOauthStateSigningKey();
201
- if (!stateKey) {
202
- throw new Error(`${OAUTH_STATE_SIGNING_KEY_ENV} is not configured`);
203
- }
204
- const { userId } = await tickets.verifyState(state, stateKey);
205
- const token = await byo.exchangeCode(oauth, code, redirectUri);
206
- const agentId = agentIdFromActor(userId);
207
- const scopes = token.scope
208
- ? token.scope.split(/\s+/).filter(Boolean)
209
- : resolveAuthorizeScopes();
210
- await upsert(agentId, await resolveProviderSlug(), {
211
- access_token: token.accessToken,
212
- ...(token.refreshToken ? { refresh_token: token.refreshToken } : {}),
213
- ...(token.expiresInSeconds !== undefined
214
- ? { expires_in_seconds: token.expiresInSeconds }
215
- : {}),
216
- scopes,
217
- ...(token.accountLabel
218
- ? { provider_account_label: token.accountLabel }
219
- : {}),
220
- metadata: {
221
- mda_actor_user_id: userId,
222
- ...(token.metadata ?? {}),
223
- },
224
- }, fleetOpts());
225
- return {
226
- successRedirect: `${oauth.publicAppUrl}/settings?${integration.connectId}=connected`,
227
- };
228
- },
229
- async unlink(userId) {
230
- const agentId = agentIdFromActor(userId);
231
- const providerId = await resolveProviderSlug();
232
- const connections = await list(agentId, fleetOpts());
233
- const match = connections.find((c) => c.provider_id === providerId);
234
- if (match) {
235
- await del(agentId, match.id, fleetOpts());
236
- }
237
- },
238
- resolveRedirectBase(redirectOptions) {
239
- return options.resolveRedirectBase(redirectOptions);
240
- },
241
- resolvePublicAppUrl() {
242
- return (options.resolvePublicAppUrl?.() ??
243
- byo?.readConfig()?.publicAppUrl ??
244
- process.env[MDA_PUBLIC_APP_URL_ENV]?.replace(/\/$/, ""));
245
- },
246
- async resolveConnectTicket(ticket) {
247
- const stateKey = readOauthStateSigningKey();
248
- if (!stateKey) {
249
- throw new Error(`${OAUTH_STATE_SIGNING_KEY_ENV} is not configured`);
250
- }
251
- const { userId } = await tickets.verifyTicket(ticket, stateKey);
252
- return userId;
253
- },
254
- };
255
- }
256
- //# sourceMappingURL=fleet-connect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet-connect.js","sourceRoot":"","sources":["../../src/identity/fleet-connect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,iCAAiC,EACjC,2BAA2B,EAC3B,kCAAkC,GAEnC,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAShE,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,GAEzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,gBAAgB,CAAC;AA8FxB,SAAS,oBAAoB,CAAC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAChE,OAAO,OAAO,CACZ,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,GAAwB,EACxB,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,WAAkC;IAElC,OAAO,CACL,GAAG,WAAW,CAAC,WAAW,qDAAqD;QAC/E,8CAA8C;QAC9C,6BAA6B,2BAA2B,GAAG,CAC5D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,WAAkC,EAClC,YAAoB;IAEpB,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1D,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;AAC9D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,+BAA+B,CAC7C,OAAyC;IAEzC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,KAAK,GAAG,oBAAoB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,IAAI,IAAI,oBAAoB,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,wBAAwB,CAAC;IACjE,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,qBAAqB,CAAC;IAC3D,MAAM,aAAa,GACjB,OAAO,CAAC,KAAK,EAAE,iBAAiB,IAAI,sBAAsB,CAAC;IAC7D,MAAM,SAAS,GAAG,GAAuB,EAAE;QACzC,MAAM,EACJ,IAAI,EAAE,EAAE,EACR,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,EAAE,EACV,iBAAiB,EAAE,EAAE,EACrB,GAAG,IAAI,EACR,GAAG,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,GAAuB,EAAW,EAAE,CACtD,OAAO,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,IAAI,6BAA6B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,kBAAkB,GAAG,GAAW,EAAE,CACtC,OAAO,CAAC,kBAAkB;QAC1B,mCAAmC,CAAC,WAAW,CAAC,CAAC;IAEnD,IAAI,mBAAgE,CAAC;IAErE,KAAK,UAAU,mBAAmB;QAChC,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;YAChC,OAAO,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACvC,CAAC;QACD,OAAO,CACL,OAAO,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC,WAAW,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,SAAS,sBAAsB,CAAC,QAA4B;QAC1D,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,cAAc,GAAG,kCAAkC,CACvD,WAAW,EACX,QAAQ,IAAI,mBAAmB,CAChC,CAAC;QACF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,SAAS,GAAG,GAAG;YACnB,EAAE,UAAU,EAAE;YACd,EAAE,MAAM,EAAE,IAAI,EAAE;aACf,KAAK,CAAC,KAAK,CAAC;aACZ,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC;YACtB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,cAAc,IAAI,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,SAAS,YAAY,CACnB,cAA2D;QAE3D,OAAO,CACL,OAAO,CAAC,oBAAoB,EAAE,CAAC,cAAc,CAAC;YAC9C,iCAAiC,CAAC,WAAW,EAAE,cAAc,CAAC,CAC/D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,WAAW,CAAC,SAAS;QACzB,gBAAgB,EAAE,WAAW,CAAC,SAAS;QACvC,WAAW,CAAC,GAAgC;YAC1C,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACjB,mBAAmB,GAAG,GAAG,CAAC,cAAc,CAAC;gBACzC,6BAA6B,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IACE,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC;gBAChC,sBAAsB,CAAC,GAAG,CAAC,KAAK,CAAC,EACjC,CAAC;gBACD,mBAAmB,GAAG,GAAG,CAAC,cAAc,CAAC;gBACzC,6BAA6B,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC9C,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAc;YACzB,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;YAClC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,IAAI,YAAgC,CAAC;YACrC,IAAI,OAA2B,CAAC;YAChC,IAAI,UAA8B,CAAC;YACnC,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACnC,UAAU,GAAG,MAAM,mBAAmB,EAAE,CAAC;oBACzC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;oBACrD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC;oBACpE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC3B,YAAY,GAAG,KAAK,EAAE,sBAAsB,CAAC;gBAC/C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,OAAO;wBACL,UAAU,EAAE,YAAY;wBACxB,MAAM,EAAE,KAAK;wBACb,SAAS,EAAE,KAAK;wBAChB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;wBACvD,WAAW,EAAE,KAAK,CAAC,OAAO;qBAC3B,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO;gBACL,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,SAAS;gBACjB,SAAS;gBACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,WAAW,EAAE,KAAK,CAAC,OAAO;gBAC1B,MAAM,EAAE,sBAAsB,EAAE;aACjC,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,cAAc,CAClB,MAAc,EACd,WAAmB;YAEnB,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC;gBAClB,OAAO;oBACL,aAAa,EAAE,IAAI;oBACnB,KAAK,EAAE,kBAAkB,EAAE;iBAC5B,CAAC;YACJ,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,IAA6C,EAAE;gBAC9D,MAAM,MAAM,GAAG,sBAAsB,EAAE,CAAC;gBACxC,IAAI,uBAAuB,EAAE,EAAE,CAAC;oBAC9B,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACzC,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC;wBACE,YAAY,EAAE,MAAM,mBAAmB,EAAE;wBACzC,MAAM;wBACN,OAAO;wBACP,QAAQ,EAAE,QAAQ;qBACnB,EACD,SAAS,EAAE,CACZ,CAAC;oBACF,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC;oBACtD,IAAI,CAAC,YAAY,EAAE,CAAC;wBAClB,MAAM,IAAI,KAAK,CACb,4DAA4D,WAAW,CAAC,WAAW,UAAU,CAC9F,CAAC;oBACJ,CAAC;oBACD,OAAO,EAAE,YAAY,EAAE,CAAC;gBAC1B,CAAC;gBACD,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;gBAC5C,MAAM,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAChC,OAAO;wBACL,aAAa,EAAE,IAAI;wBACnB,KAAK,EAAE,kBAAkB,EAAE;qBAC5B,CAAC;gBACJ,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC1D,OAAO;oBACL,YAAY,EAAE,GAAG,CAAC,iBAAiB,CACjC,KAAK,EACL,KAAK,EACL,WAAW,EACX,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CACjB;iBACF,CAAC;YACJ,CAAC,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;gBACnC,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,IAAI,CAAC;gBACH,OAAO,MAAM,GAAG,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,aAAa,EAAE,IAAI;oBACnB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,CAAC,gBAAgB,CACpB,IAAY,EACZ,KAAa,EACb,WAAmB;YAEnB,sEAAsE;YACtE,qDAAqD;YACrD,MAAM,KAAK,GAAG,GAAG,EAAE,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;oBACvD,EAAE,CAAC;gBACL,OAAO;oBACL,eAAe,EAAE,SAAS;wBACxB,CAAC,CAAC,GAAG,SAAS,aAAa,WAAW,CAAC,SAAS,YAAY;wBAC5D,CAAC,CAAC,GAAG;iBACR,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,GAAG,2BAA2B,oBAAoB,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK;gBACxB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;gBAC1C,CAAC,CAAC,sBAAsB,EAAE,CAAC;YAC7B,MAAM,MAAM,CACV,OAAO,EACP,MAAM,mBAAmB,EAAE,EAC3B;gBACE,YAAY,EAAE,KAAK,CAAC,WAAW;gBAC/B,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;gBACP,MAAM;gBACN,GAAG,CAAC,KAAK,CAAC,YAAY;oBACpB,CAAC,CAAC,EAAE,sBAAsB,EAAE,KAAK,CAAC,YAAY,EAAE;oBAChD,CAAC,CAAC,EAAE,CAAC;gBACP,QAAQ,EAAE;oBACR,iBAAiB,EAAE,MAAM;oBACzB,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;iBAC1B;aACF,EACD,SAAS,EAAE,CACZ,CAAC;YACF,OAAO;gBACL,eAAe,EAAE,GAAG,KAAK,CAAC,YAAY,aAAa,WAAW,CAAC,SAAS,YAAY;aACrF,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,MAAc;YACzB,MAAM,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzC,MAAM,UAAU,GAAG,MAAM,mBAAmB,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,UAAU,CAAC,CAAC;YACpE,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,mBAAmB,CACjB,eAAmD;YAEnD,OAAO,OAAO,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC;QACtD,CAAC;QACD,mBAAmB;YACjB,OAAO,CACL,OAAO,CAAC,mBAAmB,EAAE,EAAE;gBAC/B,GAAG,EAAE,UAAU,EAAE,EAAE,YAAY;gBAC/B,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CACxD,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,oBAAoB,CAAC,MAAc;YACvC,MAAM,QAAQ,GAAG,wBAAwB,EAAE,CAAC;YAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,GAAG,2BAA2B,oBAAoB,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAChE,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,32 +0,0 @@
1
- /**
2
- * Thin Connect-with-X wiring for Fleet vault integrations that use
3
- * {@link createByoOauthClient}.
4
- */
5
- import { type FleetOAuthIntegration } from "../connectors/toolserver/integrations.js";
6
- import type { ByoOauthClient } from "./byo-oauth.js";
7
- import { type FleetVaultConnectProviderOptions } from "./fleet-connect.js";
8
- import type { FleetClientOptions } from "./fleet.js";
9
- import { deleteAgentConnection, listAgentConnections, upsertAgentProviderToken } from "./fleet.js";
10
- import type { IdentityConnectProvider } from "./connect-provider-types.js";
11
- export interface FleetIntegrationConnectProviderOptions {
12
- /** Override LangSmith OAuth provider slug. */
13
- providerSlug?: string;
14
- /**
15
- * OAuth scopes to request. When omitted, uses connector-derived scopes from
16
- * the mount context at authorize time, then profile / fallback scopes.
17
- */
18
- scopes?: string[];
19
- /** Injectable Fleet client (tests). */
20
- fleet?: FleetClientOptions & {
21
- list?: typeof listAgentConnections;
22
- upsert?: typeof upsertAgentProviderToken;
23
- delete?: typeof deleteAgentConnection;
24
- };
25
- }
26
- /** Build Fleet vault Connect options for `integration` + its BYO client. */
27
- export declare function fleetIntegrationConnectOptions(integration: FleetOAuthIntegration, byoClient: ByoOauthClient, options?: FleetIntegrationConnectProviderOptions, fallbackScopes?: readonly string[]): FleetVaultConnectProviderOptions;
28
- /** Build a Fleet vault Connect provider for `integration` + its BYO client. */
29
- export declare function createFleetIntegrationConnectProvider(integration: FleetOAuthIntegration, byoClient: ByoOauthClient, options?: FleetIntegrationConnectProviderOptions, fallbackScopes?: readonly string[]): IdentityConnectProvider;
30
- export declare function isFleetIntegrationConnectConfigured(byoClient: ByoOauthClient, env?: NodeJS.ProcessEnv): boolean;
31
- export declare function fleetIntegrationConnectUrl(integration: FleetOAuthIntegration, publicAppUrl: string): string;
32
- //# sourceMappingURL=fleet-integration-connect.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fleet-integration-connect.d.ts","sourceRoot":"","sources":["../../src/identity/fleet-integration-connect.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAIL,KAAK,gCAAgC,EACtC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAE3E,MAAM,WAAW,sCAAsC;IACrD,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,kBAAkB,GAAG;QAC3B,IAAI,CAAC,EAAE,OAAO,oBAAoB,CAAC;QACnC,MAAM,CAAC,EAAE,OAAO,wBAAwB,CAAC;QACzC,MAAM,CAAC,EAAE,OAAO,qBAAqB,CAAC;KACvC,CAAC;CACH;AAED,4EAA4E;AAC5E,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,cAAc,EACzB,OAAO,GAAE,sCAA2C,EACpD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GACjC,gCAAgC,CAiBlC;AAED,+EAA+E;AAC/E,wBAAgB,qCAAqC,CACnD,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,cAAc,EACzB,OAAO,GAAE,sCAA2C,EACpD,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GACjC,uBAAuB,CASzB;AAED,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,cAAc,EACzB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,qBAAqB,EAClC,YAAY,EAAE,MAAM,GACnB,MAAM,CAER"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Thin Connect-with-X wiring for Fleet vault integrations that use
3
- * {@link createByoOauthClient}.
4
- */
5
- import { readIntegrationProviderSlug, } from "../connectors/toolserver/integrations.js";
6
- import { MDA_PUBLIC_APP_URL_ENV } from "./oauth-env.js";
7
- import { createFleetVaultConnectProvider, fleetConnectUrl, isFleetVaultConnectConfigured, } from "./fleet-connect.js";
8
- import { deleteAgentConnection, listAgentConnections, upsertAgentProviderToken, } from "./fleet.js";
9
- /** Build Fleet vault Connect options for `integration` + its BYO client. */
10
- export function fleetIntegrationConnectOptions(integration, byoClient, options = {}, fallbackScopes) {
11
- return {
12
- integration,
13
- providerSlug: options.providerSlug?.trim() || readIntegrationProviderSlug(integration),
14
- ...(options.scopes ? { scopes: options.scopes } : {}),
15
- byo: byoClient.byo,
16
- resolveRedirectBase: byoClient.resolveRedirectBase,
17
- resolvePublicAppUrl() {
18
- return (byoClient.resolvePublicAppUrl() ??
19
- process.env[MDA_PUBLIC_APP_URL_ENV]?.replace(/\/$/, ""));
20
- },
21
- ...(options.fleet ? { fleet: options.fleet } : {}),
22
- fallbackScopes: [...(fallbackScopes ?? integration.profileScopes ?? [])],
23
- };
24
- }
25
- /** Build a Fleet vault Connect provider for `integration` + its BYO client. */
26
- export function createFleetIntegrationConnectProvider(integration, byoClient, options = {}, fallbackScopes) {
27
- return createFleetVaultConnectProvider(fleetIntegrationConnectOptions(integration, byoClient, options, fallbackScopes));
28
- }
29
- export function isFleetIntegrationConnectConfigured(byoClient, env = process.env) {
30
- return isFleetVaultConnectConfigured(byoClient.byo, env);
31
- }
32
- export function fleetIntegrationConnectUrl(integration, publicAppUrl) {
33
- return fleetConnectUrl(integration, publicAppUrl);
34
- }
35
- //# sourceMappingURL=fleet-integration-connect.js.map