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

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 (192) hide show
  1. package/README.md +6 -5
  2. package/dist/connectors/github/http.d.ts.map +1 -1
  3. package/dist/connectors/github/http.js +11 -1
  4. package/dist/connectors/github/http.js.map +1 -1
  5. package/dist/connectors/github/index.d.ts +5 -5
  6. package/dist/connectors/github/index.d.ts.map +1 -1
  7. package/dist/connectors/github/index.js.map +1 -1
  8. package/dist/connectors/marketplace/catalog.d.ts +96 -0
  9. package/dist/connectors/marketplace/catalog.d.ts.map +1 -0
  10. package/dist/connectors/marketplace/catalog.js +213 -0
  11. package/dist/connectors/marketplace/catalog.js.map +1 -0
  12. package/dist/connectors/marketplace/fleet-mcp.d.ts +62 -0
  13. package/dist/connectors/marketplace/fleet-mcp.d.ts.map +1 -0
  14. package/dist/connectors/marketplace/fleet-mcp.js +215 -0
  15. package/dist/connectors/marketplace/fleet-mcp.js.map +1 -0
  16. package/dist/connectors/marketplace/index.d.ts +31 -0
  17. package/dist/connectors/marketplace/index.d.ts.map +1 -0
  18. package/dist/connectors/marketplace/index.js +39 -0
  19. package/dist/connectors/marketplace/index.js.map +1 -0
  20. package/dist/connectors/marketplace/load.d.ts +15 -0
  21. package/dist/connectors/marketplace/load.d.ts.map +1 -0
  22. package/dist/connectors/marketplace/load.js +265 -0
  23. package/dist/connectors/marketplace/load.js.map +1 -0
  24. package/dist/connectors/slack/http.d.ts.map +1 -1
  25. package/dist/connectors/slack/http.js +16 -2
  26. package/dist/connectors/slack/http.js.map +1 -1
  27. package/dist/connectors/slack/index.d.ts +3 -3
  28. package/dist/connectors/slack/index.d.ts.map +1 -1
  29. package/dist/connectors/slack/index.js.map +1 -1
  30. package/dist/connectors/tool-selection.d.ts +32 -8
  31. package/dist/connectors/tool-selection.d.ts.map +1 -1
  32. package/dist/connectors/tool-selection.js +62 -4
  33. package/dist/connectors/tool-selection.js.map +1 -1
  34. package/dist/connectors/toolserver/catalog.d.ts +241 -43
  35. package/dist/connectors/toolserver/catalog.d.ts.map +1 -1
  36. package/dist/connectors/toolserver/catalog.js +423 -34
  37. package/dist/connectors/toolserver/catalog.js.map +1 -1
  38. package/dist/connectors/toolserver/connectors.d.ts +698 -0
  39. package/dist/connectors/toolserver/connectors.d.ts.map +1 -0
  40. package/dist/connectors/toolserver/connectors.js +13 -0
  41. package/dist/connectors/toolserver/connectors.js.map +1 -0
  42. package/dist/connectors/toolserver/index.d.ts +56 -31
  43. package/dist/connectors/toolserver/index.d.ts.map +1 -1
  44. package/dist/connectors/toolserver/index.js +15 -58
  45. package/dist/connectors/toolserver/index.js.map +1 -1
  46. package/dist/connectors/toolserver/integrations.d.ts +103 -0
  47. package/dist/connectors/toolserver/integrations.d.ts.map +1 -0
  48. package/dist/connectors/toolserver/integrations.js +277 -0
  49. package/dist/connectors/toolserver/integrations.js.map +1 -0
  50. package/dist/connectors/toolserver/load.d.ts +10 -10
  51. package/dist/connectors/toolserver/load.d.ts.map +1 -1
  52. package/dist/connectors/toolserver/load.js +164 -36
  53. package/dist/connectors/toolserver/load.js.map +1 -1
  54. package/dist/identity/actor-subject.d.ts +60 -0
  55. package/dist/identity/actor-subject.d.ts.map +1 -0
  56. package/dist/identity/actor-subject.js +107 -0
  57. package/dist/identity/actor-subject.js.map +1 -0
  58. package/dist/identity/byo-oauth.d.ts +81 -0
  59. package/dist/identity/byo-oauth.d.ts.map +1 -0
  60. package/dist/identity/byo-oauth.js +145 -0
  61. package/dist/identity/byo-oauth.js.map +1 -0
  62. package/dist/identity/connect-inference.d.ts +13 -3
  63. package/dist/identity/connect-inference.d.ts.map +1 -1
  64. package/dist/identity/connect-inference.js +22 -6
  65. package/dist/identity/connect-inference.js.map +1 -1
  66. package/dist/identity/connect-provider-types.d.ts +12 -0
  67. package/dist/identity/connect-provider-types.d.ts.map +1 -1
  68. package/dist/identity/connect-provider.js +20 -4
  69. package/dist/identity/connect-provider.js.map +1 -1
  70. package/dist/identity/fleet-connect-hint.d.ts +39 -0
  71. package/dist/identity/fleet-connect-hint.d.ts.map +1 -0
  72. package/dist/identity/fleet-connect-hint.js +134 -0
  73. package/dist/identity/fleet-connect-hint.js.map +1 -0
  74. package/dist/identity/fleet-connect.d.ts +92 -0
  75. package/dist/identity/fleet-connect.d.ts.map +1 -0
  76. package/dist/identity/fleet-connect.js +256 -0
  77. package/dist/identity/fleet-connect.js.map +1 -0
  78. package/dist/identity/fleet-integration-connect.d.ts +32 -0
  79. package/dist/identity/fleet-integration-connect.d.ts.map +1 -0
  80. package/dist/identity/fleet-integration-connect.js +35 -0
  81. package/dist/identity/fleet-integration-connect.js.map +1 -0
  82. package/dist/identity/fleet.d.ts +56 -0
  83. package/dist/identity/fleet.d.ts.map +1 -0
  84. package/dist/identity/fleet.js +133 -0
  85. package/dist/identity/fleet.js.map +1 -0
  86. package/dist/identity/github/connect-http.d.ts +6 -1
  87. package/dist/identity/github/connect-http.d.ts.map +1 -1
  88. package/dist/identity/github/connect-http.js +22 -11
  89. package/dist/identity/github/connect-http.js.map +1 -1
  90. package/dist/identity/github/oauth.d.ts +2 -5
  91. package/dist/identity/github/oauth.d.ts.map +1 -1
  92. package/dist/identity/github/oauth.js +3 -43
  93. package/dist/identity/github/oauth.js.map +1 -1
  94. package/dist/identity/google/connect-http.d.ts +38 -0
  95. package/dist/identity/google/connect-http.d.ts.map +1 -0
  96. package/dist/identity/google/connect-http.js +59 -0
  97. package/dist/identity/google/connect-http.js.map +1 -0
  98. package/dist/identity/google/index.d.ts +7 -0
  99. package/dist/identity/google/index.d.ts.map +1 -0
  100. package/dist/identity/google/index.js +6 -0
  101. package/dist/identity/google/index.js.map +1 -0
  102. package/dist/identity/google/oauth.d.ts +22 -0
  103. package/dist/identity/google/oauth.d.ts.map +1 -0
  104. package/dist/identity/google/oauth.js +48 -0
  105. package/dist/identity/google/oauth.js.map +1 -0
  106. package/dist/identity/index.d.ts +16 -0
  107. package/dist/identity/index.d.ts.map +1 -1
  108. package/dist/identity/index.js +25 -1
  109. package/dist/identity/index.js.map +1 -1
  110. package/dist/identity/linkedin/connect-http.d.ts +38 -0
  111. package/dist/identity/linkedin/connect-http.d.ts.map +1 -0
  112. package/dist/identity/linkedin/connect-http.js +59 -0
  113. package/dist/identity/linkedin/connect-http.js.map +1 -0
  114. package/dist/identity/linkedin/index.d.ts +7 -0
  115. package/dist/identity/linkedin/index.d.ts.map +1 -0
  116. package/dist/identity/linkedin/index.js +6 -0
  117. package/dist/identity/linkedin/index.js.map +1 -0
  118. package/dist/identity/linkedin/oauth.d.ts +22 -0
  119. package/dist/identity/linkedin/oauth.d.ts.map +1 -0
  120. package/dist/identity/linkedin/oauth.js +47 -0
  121. package/dist/identity/linkedin/oauth.js.map +1 -0
  122. package/dist/identity/marketplace/connect-hint.d.ts +31 -0
  123. package/dist/identity/marketplace/connect-hint.d.ts.map +1 -0
  124. package/dist/identity/marketplace/connect-hint.js +59 -0
  125. package/dist/identity/marketplace/connect-hint.js.map +1 -0
  126. package/dist/identity/marketplace/connect.d.ts +51 -0
  127. package/dist/identity/marketplace/connect.d.ts.map +1 -0
  128. package/dist/identity/marketplace/connect.js +88 -0
  129. package/dist/identity/marketplace/connect.js.map +1 -0
  130. package/dist/identity/marketplace/index.d.ts +9 -0
  131. package/dist/identity/marketplace/index.d.ts.map +1 -0
  132. package/dist/identity/marketplace/index.js +9 -0
  133. package/dist/identity/marketplace/index.js.map +1 -0
  134. package/dist/identity/microsoft/connect-http.d.ts +39 -0
  135. package/dist/identity/microsoft/connect-http.d.ts.map +1 -0
  136. package/dist/identity/microsoft/connect-http.js +60 -0
  137. package/dist/identity/microsoft/connect-http.js.map +1 -0
  138. package/dist/identity/microsoft/index.d.ts +7 -0
  139. package/dist/identity/microsoft/index.d.ts.map +1 -0
  140. package/dist/identity/microsoft/index.js +6 -0
  141. package/dist/identity/microsoft/index.js.map +1 -0
  142. package/dist/identity/microsoft/oauth.d.ts +24 -0
  143. package/dist/identity/microsoft/oauth.d.ts.map +1 -0
  144. package/dist/identity/microsoft/oauth.js +65 -0
  145. package/dist/identity/microsoft/oauth.js.map +1 -0
  146. package/dist/identity/oauth-tickets.d.ts +37 -0
  147. package/dist/identity/oauth-tickets.d.ts.map +1 -0
  148. package/dist/identity/oauth-tickets.js +114 -0
  149. package/dist/identity/oauth-tickets.js.map +1 -0
  150. package/dist/identity/options.d.ts +8 -3
  151. package/dist/identity/options.d.ts.map +1 -1
  152. package/dist/identity/options.js +6 -2
  153. package/dist/identity/options.js.map +1 -1
  154. package/dist/identity/slack/connect-http.d.ts.map +1 -1
  155. package/dist/identity/slack/connect-http.js +3 -3
  156. package/dist/identity/slack/connect-http.js.map +1 -1
  157. package/dist/identity/slack/oauth.d.ts +2 -5
  158. package/dist/identity/slack/oauth.d.ts.map +1 -1
  159. package/dist/identity/slack/oauth.js +3 -43
  160. package/dist/identity/slack/oauth.js.map +1 -1
  161. package/dist/identity/types.d.ts +14 -2
  162. package/dist/identity/types.d.ts.map +1 -1
  163. package/dist/identity/x/connect-http.d.ts +39 -0
  164. package/dist/identity/x/connect-http.d.ts.map +1 -0
  165. package/dist/identity/x/connect-http.js +69 -0
  166. package/dist/identity/x/connect-http.js.map +1 -0
  167. package/dist/identity/x/index.d.ts +6 -0
  168. package/dist/identity/x/index.d.ts.map +1 -0
  169. package/dist/identity/x/index.js +5 -0
  170. package/dist/identity/x/index.js.map +1 -0
  171. package/dist/index.d.ts +4 -1
  172. package/dist/index.d.ts.map +1 -1
  173. package/dist/index.js +1 -0
  174. package/dist/index.js.map +1 -1
  175. package/dist/namespaces.d.ts +254 -24
  176. package/dist/namespaces.d.ts.map +1 -1
  177. package/dist/namespaces.js +65 -32
  178. package/dist/namespaces.js.map +1 -1
  179. package/dist/runtime/credentials.d.ts +2 -2
  180. package/dist/runtime/credentials.js +2 -2
  181. package/dist/runtime/identity-http.d.ts.map +1 -1
  182. package/dist/runtime/identity-http.js +45 -4
  183. package/dist/runtime/identity-http.js.map +1 -1
  184. package/dist/runtime/index.d.ts +13 -123
  185. package/dist/runtime/index.d.ts.map +1 -1
  186. package/dist/runtime/index.js +52 -14
  187. package/dist/runtime/index.js.map +1 -1
  188. package/dist/runtime/recursion-limit.d.ts +22 -0
  189. package/dist/runtime/recursion-limit.d.ts.map +1 -0
  190. package/dist/runtime/recursion-limit.js +46 -0
  191. package/dist/runtime/recursion-limit.js.map +1 -0
  192. package/package.json +8 -7
@@ -0,0 +1,56 @@
1
+ /**
2
+ * LangSmith Fleet client for agent-subject vault connections.
3
+ *
4
+ * Shared by Connect providers (Google today; other toolserver OAuth providers
5
+ * later). Source of truth for Connect status is Fleet agent connections — not
6
+ * a local Store cache.
7
+ */
8
+ export interface FleetConnection {
9
+ id: string;
10
+ agent_id: string;
11
+ auth_token_id?: string;
12
+ provider_id: string;
13
+ provider_account_label?: string;
14
+ scopes?: string[];
15
+ expires_at?: string | null;
16
+ }
17
+ export interface UpsertAgentProviderTokenBody {
18
+ access_token: string;
19
+ refresh_token?: string;
20
+ expires_in_seconds?: number;
21
+ scopes?: string[];
22
+ provider_account_label?: string;
23
+ metadata?: Record<string, unknown>;
24
+ }
25
+ export interface FleetClientOptions {
26
+ apiKey?: string;
27
+ apiUrl?: string;
28
+ workspaceId?: string;
29
+ fetchImpl?: typeof fetch;
30
+ }
31
+ export interface CreateFleetAuthSessionBody {
32
+ providerSlug: string;
33
+ scopes: string[];
34
+ agentId: string;
35
+ strategy?: "create" | "reuse";
36
+ }
37
+ export interface FleetAuthSession {
38
+ id?: string;
39
+ status: string;
40
+ provider_slug?: string;
41
+ verification_url?: string;
42
+ token?: string;
43
+ }
44
+ export declare function resolveFleetApiUrl(env?: NodeJS.ProcessEnv): string;
45
+ export declare function resolveFleetHeaders(label: string, env?: NodeJS.ProcessEnv): Record<string, string>;
46
+ export declare function listAgentConnections(agentId: string, options?: FleetClientOptions): Promise<FleetConnection[]>;
47
+ export declare function upsertAgentProviderToken(agentId: string, providerSlug: string, body: UpsertAgentProviderTokenBody, options?: FleetClientOptions): Promise<FleetConnection>;
48
+ /**
49
+ * Start a Fleet OAuth session for an agent subject (platform OAuth provider).
50
+ * Returns a verification_url the browser should open.
51
+ */
52
+ export declare function createFleetAuthSession(body: CreateFleetAuthSessionBody, options?: FleetClientOptions): Promise<FleetAuthSession>;
53
+ /** True when LANGSMITH_API_KEY is set so Fleet APIs can be called. */
54
+ export declare function hasFleetAuthCredentials(env?: NodeJS.ProcessEnv): boolean;
55
+ export declare function deleteAgentConnection(agentId: string, connectionId: string, options?: FleetClientOptions): Promise<void>;
56
+ //# sourceMappingURL=fleet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet.d.ts","sourceRoot":"","sources":["../../src/identity/fleet.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,MAAM,WAAW,0BAA0B;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBxB;AAiBD,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,eAAe,EAAE,CAAC,CAsB5B;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,4BAA4B,EAClC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,eAAe,CAAC,CAwB1B;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,0BAA0B,EAChC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CA2B3B;AAED,sEAAsE;AACtE,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * LangSmith Fleet client for agent-subject vault connections.
3
+ *
4
+ * Shared by Connect providers (Google today; other toolserver OAuth providers
5
+ * later). Source of truth for Connect status is Fleet agent connections — not
6
+ * a local Store cache.
7
+ */
8
+ import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS } from "../runtime/http.js";
9
+ const DEFAULT_API_URL = "https://api.smith.langchain.com";
10
+ export function resolveFleetApiUrl(env = process.env) {
11
+ const base = trimmed(env.LANGSMITH_ENDPOINT) ??
12
+ trimmed(env.LANGCHAIN_ENDPOINT) ??
13
+ DEFAULT_API_URL;
14
+ return stripTrailingSlashes(withScheme(base));
15
+ }
16
+ export function resolveFleetHeaders(label, env = process.env) {
17
+ const apiKey = trimmed(env.LANGSMITH_API_KEY);
18
+ if (!apiKey) {
19
+ throw new Error(`${label} needs LANGSMITH_API_KEY to reach the LangSmith Fleet API.`);
20
+ }
21
+ const headers = {
22
+ "x-api-key": apiKey,
23
+ "Content-Type": "application/json",
24
+ };
25
+ const workspaceId = trimmed(env.LANGCHAIN_WORKSPACE_ID);
26
+ if (workspaceId) {
27
+ headers["x-tenant-id"] = workspaceId;
28
+ }
29
+ return headers;
30
+ }
31
+ function fleetHeaders(label, options, env = process.env) {
32
+ if (options.apiKey || options.workspaceId) {
33
+ return {
34
+ "x-api-key": options.apiKey ?? trimmed(env.LANGSMITH_API_KEY) ?? "",
35
+ "Content-Type": "application/json",
36
+ ...(options.workspaceId ? { "x-tenant-id": options.workspaceId } : {}),
37
+ };
38
+ }
39
+ return resolveFleetHeaders(label, env);
40
+ }
41
+ export async function listAgentConnections(agentId, options = {}) {
42
+ const env = process.env;
43
+ const base = options.apiUrl ?? resolveFleetApiUrl(env);
44
+ const headers = fleetHeaders("fleet list connections", options, env);
45
+ const url = `${base}/v1/fleet/agents/${encodeURIComponent(agentId)}/connections`;
46
+ const response = await fetchWithTimeout(url, { method: "GET", headers }, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
47
+ if (!response.ok) {
48
+ const text = await response.text().catch(() => "");
49
+ throw new Error(`Fleet list connections failed (${response.status}): ${text || response.statusText}`);
50
+ }
51
+ const json = (await response.json());
52
+ return json.items ?? json.data ?? [];
53
+ }
54
+ export async function upsertAgentProviderToken(agentId, providerSlug, body, options = {}) {
55
+ const env = process.env;
56
+ const base = options.apiUrl ?? resolveFleetApiUrl(env);
57
+ const headers = fleetHeaders("fleet upsert provider token", options, env);
58
+ const url = `${base}/v1/fleet/agents/${encodeURIComponent(agentId)}` +
59
+ `/providers/${encodeURIComponent(providerSlug)}/tokens`;
60
+ const response = await fetchWithTimeout(url, {
61
+ method: "POST",
62
+ headers,
63
+ body: JSON.stringify(body),
64
+ }, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
65
+ if (!response.ok) {
66
+ const text = await response.text().catch(() => "");
67
+ throw new Error(`Fleet upsert agent provider token failed (${response.status}): ${text || response.statusText}`);
68
+ }
69
+ return (await response.json());
70
+ }
71
+ /**
72
+ * Start a Fleet OAuth session for an agent subject (platform OAuth provider).
73
+ * Returns a verification_url the browser should open.
74
+ */
75
+ export async function createFleetAuthSession(body, options = {}) {
76
+ const env = process.env;
77
+ const base = options.apiUrl ?? resolveFleetApiUrl(env);
78
+ const headers = fleetHeaders("fleet auth-session", options, env);
79
+ const url = `${base}/v1/fleet/auth-sessions`;
80
+ const response = await fetchWithTimeout(url, {
81
+ method: "POST",
82
+ headers,
83
+ body: JSON.stringify({
84
+ provider_slug: body.providerSlug,
85
+ scopes: body.scopes,
86
+ agent_id: body.agentId,
87
+ strategy: body.strategy ?? "create",
88
+ }),
89
+ }, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
90
+ if (!response.ok) {
91
+ const text = await response.text().catch(() => "");
92
+ throw new Error(`Fleet auth-session failed (${response.status}): ${text || response.statusText}`);
93
+ }
94
+ return (await response.json());
95
+ }
96
+ /** True when LANGSMITH_API_KEY is set so Fleet APIs can be called. */
97
+ export function hasFleetAuthCredentials(env = process.env) {
98
+ return Boolean(trimmed(env.LANGSMITH_API_KEY));
99
+ }
100
+ export async function deleteAgentConnection(agentId, connectionId, options = {}) {
101
+ const env = process.env;
102
+ const base = options.apiUrl ?? resolveFleetApiUrl(env);
103
+ const headers = fleetHeaders("fleet delete connection", options, env);
104
+ const url = `${base}/v1/fleet/agents/${encodeURIComponent(agentId)}` +
105
+ `/connections/${encodeURIComponent(connectionId)}`;
106
+ const response = await fetchWithTimeout(url, { method: "DELETE", headers }, PROVIDER_HTTP_TIMEOUT_MS, options.fetchImpl ?? fetch);
107
+ if (!response.ok && response.status !== 404) {
108
+ const text = await response.text().catch(() => "");
109
+ throw new Error(`Fleet delete connection failed (${response.status}): ${text || response.statusText}`);
110
+ }
111
+ }
112
+ function withScheme(base) {
113
+ const separator = base.indexOf("://");
114
+ if (separator > 0) {
115
+ const scheme = base.slice(0, separator);
116
+ if (/^[a-z][a-z0-9+.-]*$/i.test(scheme)) {
117
+ return base;
118
+ }
119
+ }
120
+ return `https://${base}`;
121
+ }
122
+ function stripTrailingSlashes(value) {
123
+ let end = value.length;
124
+ while (end > 0 && value.charCodeAt(end - 1) === 47 /* / */) {
125
+ end -= 1;
126
+ }
127
+ return end === value.length ? value : value.slice(0, end);
128
+ }
129
+ function trimmed(value) {
130
+ const v = value?.trim();
131
+ return v ? v : undefined;
132
+ }
133
+ //# sourceMappingURL=fleet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fleet.js","sourceRoot":"","sources":["../../src/identity/fleet.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * Connect-with-GitHub — {@link IdentityConnectProvider} for actor OAuth tokens.
3
3
  *
4
- * Mounted under `/identity/github/*` when listed on `identity.connect`.
4
+ * Mounted under `/identity/github/*` when listed on `identity.connect`, or when
5
+ * a user-scoped deployment declares `connectors.github` / a credential chain
6
+ * that reads per-user GitHub tokens.
5
7
  */
6
8
  import type { IdentityConnectProvider } from "../connect-provider-types.js";
7
9
  import { type GitHubCredentialStore } from "./credentials-store.js";
@@ -20,6 +22,9 @@ export declare const githubIdentityConnectProvider: IdentityConnectProvider;
20
22
  /**
21
23
  * Opt into Connect-with-GitHub on `defineIdentity({ connect: […] })`.
22
24
  *
25
+ * Usually unnecessary: `connectors.github` on a user-scoped deployment mounts
26
+ * these routes by inference.
27
+ *
23
28
  * @example
24
29
  * ```ts
25
30
  * import { connect, defineIdentity } from "managed-deepagents";
@@ -1 +1 @@
1
- {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAMtC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAehC,eAAO,MAAM,0BAA0B,QAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAgB,CAAC;AACvD,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,WAAW,oCAAoC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,oEAAoE;AACpE,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,oCAAyC,GACjD,uBAAuB,CA+FzB;AAED,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,EAAE,uBACL,CAAC;AAExC;;;;;;;;;;;GAWG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,oCAAoC,GAC7C,uBAAuB,CAIzB"}
1
+ {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,uBAAuB,EAExB,MAAM,8BAA8B,CAAC;AAOtC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,wBAAwB,CAAC;AAchC,eAAO,MAAM,0BAA0B,QAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAgB,CAAC;AACvD,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,+DAA+D;AAC/D,MAAM,WAAW,oCAAoC;IACnD,eAAe,CAAC,EAAE,qBAAqB,CAAC;CACzC;AAED,oEAAoE;AACpE,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,oCAAyC,GACjD,uBAAuB,CAqGzB;AAED,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,EAAE,uBACL,CAAC;AAExC;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,oCAAoC,GAC7C,uBAAuB,CAIzB"}
@@ -1,12 +1,14 @@
1
1
  /**
2
2
  * Connect-with-GitHub — {@link IdentityConnectProvider} for actor OAuth tokens.
3
3
  *
4
- * Mounted under `/identity/github/*` when listed on `identity.connect`.
4
+ * Mounted under `/identity/github/*` when listed on `identity.connect`, or when
5
+ * a user-scoped deployment declares `connectors.github` / a credential chain
6
+ * that reads per-user GitHub tokens.
5
7
  */
6
8
  import { identityConnectPaths } from "../connect-paths.js";
7
- import { credentialConnectIds, isUserScopedDeployment, } from "../connect-inference.js";
9
+ import { credentialConnectIds, hasGithubConnector, isUserScopedDeployment, } from "../connect-inference.js";
8
10
  import { buildGitHubCredentialRecord, getGitHubCredentialStore, } from "./credentials-store.js";
9
- import { buildGitHubAuthorizeUrl, createGitHubOauthState, exchangeGitHubOauthCode, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readGitHubOauthConfig, readOauthStateSigningKey, resolveGitHubOauthRedirectBase, verifyGitHubOauthState, } from "./oauth.js";
11
+ import { buildGitHubAuthorizeUrl, exchangeGitHubOauthCode, githubOauthTickets, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readGitHubOauthConfig, readOauthStateSigningKey, resolveGitHubOauthRedirectBase, } from "./oauth.js";
10
12
  const PATHS = identityConnectPaths("github");
11
13
  export const GITHUB_CONNECT_STATUS_PATH = PATHS.status;
12
14
  export const GITHUB_CONNECT_START_PATH = PATHS.connect;
@@ -21,12 +23,18 @@ export function createGitHubIdentityConnectProvider(options = {}) {
21
23
  if (!ctx.hasIdentity) {
22
24
  return false;
23
25
  }
24
- // Listed on `identity.connect` — the author already opted in. Otherwise
25
- // mount only when a credential chain reads per-user GitHub tokens, since
26
- // those tokens have no other way to be granted.
27
- return (ctx.declared !== false ||
28
- (credentialConnectIds(ctx.credentials).has("github") &&
29
- isUserScopedDeployment(ctx.scope)));
26
+ // Listed on `identity.connect` — the author already opted in.
27
+ if (ctx.declared) {
28
+ return true;
29
+ }
30
+ // Otherwise mirror Google/Microsoft: a GitHub connector (or a credential
31
+ // chain that reads user tokens) on a user-scoped deployment needs
32
+ // somewhere for the caller to grant an actor OAuth token.
33
+ if (!isUserScopedDeployment(ctx.scope)) {
34
+ return false;
35
+ }
36
+ return (hasGithubConnector(ctx.connectorKinds) ||
37
+ credentialConnectIds(ctx.credentials).has("github"));
30
38
  },
31
39
  async status(userId) {
32
40
  const configured = Boolean(readGitHubOauthConfig());
@@ -53,7 +61,7 @@ export function createGitHubIdentityConnectProvider(options = {}) {
53
61
  error: `GitHub connect is not configured (set GITHUB_CLIENT_ID, GITHUB_CLIENT_SECRET, MDA_PUBLIC_APP_URL, ${OAUTH_STATE_SIGNING_KEY_ENV})`,
54
62
  };
55
63
  }
56
- const state = await createGitHubOauthState(userId, stateKey);
64
+ const state = await githubOauthTickets.createState(userId, stateKey);
57
65
  return {
58
66
  authorizeUrl: buildGitHubAuthorizeUrl(oauth, state, redirectUri),
59
67
  };
@@ -67,7 +75,7 @@ export function createGitHubIdentityConnectProvider(options = {}) {
67
75
  if (!stateKey) {
68
76
  throw new Error(`${OAUTH_STATE_SIGNING_KEY_ENV} is not configured`);
69
77
  }
70
- const { userId } = await verifyGitHubOauthState(state, stateKey);
78
+ const { userId } = await githubOauthTickets.verifyState(state, stateKey);
71
79
  const token = await exchangeGitHubOauthCode(oauth, code, redirectUri);
72
80
  const record = buildGitHubCredentialRecord({
73
81
  userId,
@@ -102,6 +110,9 @@ export const githubIdentityConnectProvider = createGitHubIdentityConnectProvider
102
110
  /**
103
111
  * Opt into Connect-with-GitHub on `defineIdentity({ connect: […] })`.
104
112
  *
113
+ * Usually unnecessary: `connectors.github` on a user-scoped deployment mounts
114
+ * these routes by inference.
115
+ *
105
116
  * @example
106
117
  * ```ts
107
118
  * import { connect, defineIdentity } from "managed-deepagents";
@@ -1 +1 @@
1
- {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/github/connect-http.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export declare const GITHUB_CLIENT_SECRET_ENV = "GITHUB_CLIENT_SECRET";
13
13
  export declare const GITHUB_OAUTH_SCOPES_ENV = "GITHUB_OAUTH_SCOPES";
14
14
  /** Override GitHub OAuth/API base (tests). */
15
15
  export declare const GITHUB_OAUTH_BASE_ENV = "GITHUB_OAUTH_BASE";
16
+ /** GitHub-bound OAuth state / connect-ticket helpers. */
17
+ export declare const githubOauthTickets: import("../oauth-tickets.js").OauthTickets;
16
18
  export interface GitHubOauthConfig {
17
19
  clientId: string;
18
20
  clientSecret: string;
@@ -34,11 +36,6 @@ export declare function readGitHubOauthConfig(env?: NodeJS.ProcessEnv): GitHubOa
34
36
  /** Reuse the Slack redirect-base resolver (same Host/loopback constraints). */
35
37
  export declare const resolveGitHubOauthRedirectBase: typeof resolveSlackOauthRedirectBase;
36
38
  export declare function buildGitHubAuthorizeUrl(config: GitHubOauthConfig, state: string, redirectUri: string): string;
37
- /** Signed state binding the authenticated actor to the OAuth round-trip. */
38
- export declare function createGitHubOauthState(userId: string, signingKey: string, nowMs?: number): Promise<string>;
39
- export declare function verifyGitHubOauthState(state: string, signingKey: string, nowMs?: number): Promise<{
40
- userId: string;
41
- }>;
42
39
  /**
43
40
  * Exchange an authorization code for a user access token and profile.
44
41
  *
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GACzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAQzD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,GAAG,IAAI,CAqB1B;AAED,+EAA+E;AAC/E,eAAO,MAAM,8BAA8B,sCAAgC,CAAC;AAE5E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CAOR;AAED,4EAA4E;AAC5E,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,KAAK,GAAE,MAAmB,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB7B;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAuEjC"}
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GACzB,CAAC;AAEF,eAAO,MAAM,oBAAoB,qBAAqB,CAAC;AACvD,eAAO,MAAM,wBAAwB,yBAAyB,CAAC;AAC/D,kEAAkE;AAClE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAC7D,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAMzD,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,4CAA4B,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,GAAG,IAAI,CAqB1B;AAED,+EAA+E;AAC/E,eAAO,MAAM,8BAA8B,sCAAgC,CAAC;AAE5E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,iBAAiB,EACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,MAAM,CAOR;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,iBAAiB,EACzB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,KAAa,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAuEjC"}
@@ -5,9 +5,8 @@
5
5
  * per-actor OAuth access token so `credentials.github({ write: ["actor"] })`
6
6
  * can act as the signed-in user (e.g. open pull requests).
7
7
  */
8
- import { randomBytes } from "node:crypto";
9
- import { jwtVerify, SignJWT } from "jose";
10
8
  import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS, } from "../../runtime/http.js";
9
+ import { oauthTicketsFor } from "../oauth-tickets.js";
11
10
  import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "../slack/oauth.js";
12
11
  export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, };
13
12
  export const GITHUB_CLIENT_ID_ENV = "GITHUB_CLIENT_ID";
@@ -19,8 +18,8 @@ export const GITHUB_OAUTH_BASE_ENV = "GITHUB_OAUTH_BASE";
19
18
  const DEFAULT_OAUTH_BASE = "https://github.com";
20
19
  const DEFAULT_API_BASE = "https://api.github.com";
21
20
  const DEFAULT_SCOPES = "repo read:user";
22
- const STATE_TTL_MS = 10 * 60 * 1000;
23
- const STATE_JWT_TYP = "mda-github-oauth-state";
21
+ /** GitHub-bound OAuth state / connect-ticket helpers. */
22
+ export const githubOauthTickets = oauthTicketsFor("github");
24
23
  export function readGitHubOauthConfig(env = process.env) {
25
24
  const clientId = env[GITHUB_CLIENT_ID_ENV]?.trim();
26
25
  const clientSecret = env[GITHUB_CLIENT_SECRET_ENV]?.trim();
@@ -50,42 +49,6 @@ export function buildGitHubAuthorizeUrl(config, state, redirectUri) {
50
49
  url.searchParams.set("state", state);
51
50
  return url.toString();
52
51
  }
53
- /** Signed state binding the authenticated actor to the OAuth round-trip. */
54
- export async function createGitHubOauthState(userId, signingKey, nowMs = Date.now()) {
55
- const iat = Math.floor(nowMs / 1000);
56
- const exp = Math.floor((nowMs + STATE_TTL_MS) / 1000);
57
- return new SignJWT({
58
- userId,
59
- nonce: randomBytes(16).toString("hex"),
60
- })
61
- .setProtectedHeader({ alg: "HS256", typ: STATE_JWT_TYP })
62
- .setIssuedAt(iat)
63
- .setExpirationTime(exp)
64
- .sign(stateSigningKey(signingKey));
65
- }
66
- export async function verifyGitHubOauthState(state, signingKey, nowMs = Date.now()) {
67
- try {
68
- const { payload } = await jwtVerify(state, stateSigningKey(signingKey), {
69
- algorithms: ["HS256"],
70
- typ: STATE_JWT_TYP,
71
- currentDate: new Date(nowMs),
72
- });
73
- if (typeof payload.userId !== "string" || !payload.userId) {
74
- throw new Error("invalid OAuth state actor");
75
- }
76
- return { userId: payload.userId };
77
- }
78
- catch (err) {
79
- if (err instanceof Error && err.message.startsWith("invalid OAuth state")) {
80
- throw err;
81
- }
82
- const message = err instanceof Error ? err.message : String(err);
83
- if (/exp|expir/i.test(message)) {
84
- throw new Error("OAuth state expired");
85
- }
86
- throw new Error("invalid OAuth state signature");
87
- }
88
- }
89
52
  /**
90
53
  * Exchange an authorization code for a user access token and profile.
91
54
  *
@@ -138,7 +101,4 @@ export async function exchangeGitHubOauthCode(config, code, redirectUri, fetchIm
138
101
  : {}),
139
102
  };
140
103
  }
141
- function stateSigningKey(signingKey) {
142
- return new TextEncoder().encode(signingKey);
143
- }
144
104
  //# sourceMappingURL=oauth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/identity/github/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Connect-with-Google — thin adapter over {@link createFleetIntegrationConnectProvider}.
3
+ *
4
+ * Mounted under `/identity/google/*` when listed on `identity.connect`, or
5
+ * inferred from declared Google toolserver connectors on a user-scoped
6
+ * deployment.
7
+ */
8
+ import type { IdentityConnectMountContext, IdentityConnectProvider } from "../connect-provider-types.js";
9
+ import { type FleetIntegrationConnectProviderOptions } from "../fleet-integration-connect.js";
10
+ export declare const GOOGLE_CONNECT_STATUS_PATH: string;
11
+ export declare const GOOGLE_CONNECT_START_PATH: string;
12
+ export declare const GOOGLE_CONNECT_CALLBACK_PATH: string;
13
+ export declare const GOOGLE_CONNECT_LINK_PATH: string;
14
+ export declare function isGoogleActorSubjectEnabled(): boolean;
15
+ export declare function enableGoogleActorSubject(): void;
16
+ /**
17
+ * Enable actor-subject mode when Google connectors imply per-user vault subjects.
18
+ *
19
+ * Prefer {@link enableActorSubjectIntegrationsFromConnectors} at compile seams.
20
+ */
21
+ export declare function enableGoogleActorSubjectFromConnectors(connectorKinds: readonly (string | undefined)[] | undefined, scope?: IdentityConnectMountContext["scope"]): void;
22
+ export declare function resetGoogleActorSubjectEnabledForTests(): void;
23
+ export declare function isGoogleConnectConfigured(env?: NodeJS.ProcessEnv): boolean;
24
+ export declare function googleConnectUrl(publicAppUrl: string): string;
25
+ /** Options for {@link createGoogleIdentityConnectProvider}. */
26
+ export type GoogleIdentityConnectProviderOptions = FleetIntegrationConnectProviderOptions;
27
+ /** Build a Google connect provider. */
28
+ export declare function createGoogleIdentityConnectProvider(options?: GoogleIdentityConnectProviderOptions): IdentityConnectProvider;
29
+ /** Default Google connect provider used as a built-in mount candidate. */
30
+ export declare const googleIdentityConnectProvider: IdentityConnectProvider;
31
+ /**
32
+ * Opt into Connect-with-Google on `defineIdentity({ connect: […] })`.
33
+ *
34
+ * Usually unnecessary: declaring Google toolserver connectors on a user-scoped
35
+ * identity deployment mounts this provider and derives OAuth scopes automatically.
36
+ */
37
+ export declare function connect(options?: GoogleIdentityConnectProviderOptions): IdentityConnectProvider;
38
+ //# sourceMappingURL=connect-http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-http.d.ts","sourceRoot":"","sources":["../../../src/identity/google/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EACV,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAIL,KAAK,sCAAsC,EAC5C,MAAM,iCAAiC,CAAC;AAKzC,eAAO,MAAM,0BAA0B,QAAe,CAAC;AACvD,eAAO,MAAM,yBAAyB,QAAgB,CAAC;AACvD,eAAO,MAAM,4BAA4B,QAAiB,CAAC;AAC3D,eAAO,MAAM,wBAAwB,QAAa,CAAC;AAEnD,wBAAgB,2BAA2B,IAAI,OAAO,CAErD;AAED,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,sCAAsC,CACpD,cAAc,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,EAC3D,KAAK,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC3C,IAAI,CAMN;AAED,wBAAgB,sCAAsC,IAAI,IAAI,CAE7D;AAED,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAET;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,+DAA+D;AAC/D,MAAM,MAAM,oCAAoC,GAC9C,sCAAsC,CAAC;AAEzC,uCAAuC;AACvC,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,oCAAyC,GACjD,uBAAuB,CAOzB;AAED,0EAA0E;AAC1E,eAAO,MAAM,6BAA6B,EAAE,uBACL,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,OAAO,CACrB,OAAO,CAAC,EAAE,oCAAoC,GAC7C,uBAAuB,CAKzB"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Connect-with-Google — thin adapter over {@link createFleetIntegrationConnectProvider}.
3
+ *
4
+ * Mounted under `/identity/google/*` when listed on `identity.connect`, or
5
+ * inferred from declared Google toolserver connectors on a user-scoped
6
+ * deployment.
7
+ */
8
+ import { GOOGLE_INTEGRATION } from "../../connectors/toolserver/integrations.js";
9
+ import { enableActorSubjectIntegration, enableActorSubjectIntegrationFromConnectors, isActorSubjectIntegrationEnabled, resetActorSubjectEnabledForTests, } from "../actor-subject.js";
10
+ import { identityConnectPaths } from "../connect-paths.js";
11
+ import { createFleetIntegrationConnectProvider, fleetIntegrationConnectUrl, isFleetIntegrationConnectConfigured, } from "../fleet-integration-connect.js";
12
+ import { googleByoOauth } from "./oauth.js";
13
+ const PATHS = identityConnectPaths("google");
14
+ export const GOOGLE_CONNECT_STATUS_PATH = PATHS.status;
15
+ export const GOOGLE_CONNECT_START_PATH = PATHS.connect;
16
+ export const GOOGLE_CONNECT_CALLBACK_PATH = PATHS.callback;
17
+ export const GOOGLE_CONNECT_LINK_PATH = PATHS.link;
18
+ export function isGoogleActorSubjectEnabled() {
19
+ return isActorSubjectIntegrationEnabled("google");
20
+ }
21
+ export function enableGoogleActorSubject() {
22
+ enableActorSubjectIntegration("google");
23
+ }
24
+ /**
25
+ * Enable actor-subject mode when Google connectors imply per-user vault subjects.
26
+ *
27
+ * Prefer {@link enableActorSubjectIntegrationsFromConnectors} at compile seams.
28
+ */
29
+ export function enableGoogleActorSubjectFromConnectors(connectorKinds, scope) {
30
+ enableActorSubjectIntegrationFromConnectors(GOOGLE_INTEGRATION, connectorKinds, scope);
31
+ }
32
+ export function resetGoogleActorSubjectEnabledForTests() {
33
+ resetActorSubjectEnabledForTests();
34
+ }
35
+ export function isGoogleConnectConfigured(env = process.env) {
36
+ return isFleetIntegrationConnectConfigured(googleByoOauth, env);
37
+ }
38
+ export function googleConnectUrl(publicAppUrl) {
39
+ return fleetIntegrationConnectUrl(GOOGLE_INTEGRATION, publicAppUrl);
40
+ }
41
+ /** Build a Google connect provider. */
42
+ export function createGoogleIdentityConnectProvider(options = {}) {
43
+ return createFleetIntegrationConnectProvider(GOOGLE_INTEGRATION, googleByoOauth, options, ["openid", "email", "profile"]);
44
+ }
45
+ /** Default Google connect provider used as a built-in mount candidate. */
46
+ export const googleIdentityConnectProvider = createGoogleIdentityConnectProvider();
47
+ /**
48
+ * Opt into Connect-with-Google on `defineIdentity({ connect: […] })`.
49
+ *
50
+ * Usually unnecessary: declaring Google toolserver connectors on a user-scoped
51
+ * identity deployment mounts this provider and derives OAuth scopes automatically.
52
+ */
53
+ export function connect(options) {
54
+ enableGoogleActorSubject();
55
+ return options
56
+ ? createGoogleIdentityConnectProvider(options)
57
+ : googleIdentityConnectProvider;
58
+ }
59
+ //# sourceMappingURL=connect-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-http.js","sourceRoot":"","sources":["../../../src/identity/google/connect-http.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACjF,OAAO,EACL,6BAA6B,EAC7B,2CAA2C,EAC3C,gCAAgC,EAChC,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAK3D,OAAO,EACL,qCAAqC,EACrC,0BAA0B,EAC1B,mCAAmC,GAEpC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;AAE7C,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC,OAAO,CAAC;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC,QAAQ,CAAC;AAC3D,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC;AAEnD,MAAM,UAAU,2BAA2B;IACzC,OAAO,gCAAgC,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB;IACtC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sCAAsC,CACpD,cAA2D,EAC3D,KAA4C;IAE5C,2CAA2C,CACzC,kBAAkB,EAClB,cAAc,EACd,KAAK,CACN,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sCAAsC;IACpD,gCAAgC,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,GAAG,GAAsB,OAAO,CAAC,GAAG;IAEpC,OAAO,mCAAmC,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,OAAO,0BAA0B,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AACtE,CAAC;AAMD,uCAAuC;AACvC,MAAM,UAAU,mCAAmC,CACjD,OAAO,GAAyC,EAAE;IAElD,OAAO,qCAAqC,CAC1C,kBAAkB,EAClB,cAAc,EACd,OAAO,EACP,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,MAAM,6BAA6B,GACxC,mCAAmC,EAAE,CAAC;AAExC;;;;;GAKG;AACH,MAAM,UAAU,OAAO,CACrB,OAA8C;IAE9C,wBAAwB,EAAE,CAAC;IAC3B,OAAO,OAAO;QACZ,CAAC,CAAC,mCAAmC,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,6BAA6B,CAAC;AACpC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Google identity helpers — Connect-with-Google.
3
+ */
4
+ export { connect, createGoogleIdentityConnectProvider, enableGoogleActorSubject, enableGoogleActorSubjectFromConnectors, googleConnectUrl, googleIdentityConnectProvider, isGoogleActorSubjectEnabled, isGoogleConnectConfigured, resetGoogleActorSubjectEnabledForTests, GOOGLE_CONNECT_CALLBACK_PATH, GOOGLE_CONNECT_LINK_PATH, GOOGLE_CONNECT_START_PATH, GOOGLE_CONNECT_STATUS_PATH, } from "./connect-http.js";
5
+ export type { GoogleIdentityConnectProviderOptions } from "./connect-http.js";
6
+ export { googleOauthTickets } from "./oauth.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/identity/google/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,mCAAmC,EACnC,wBAAwB,EACxB,sCAAsC,EACtC,gBAAgB,EAChB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,EACtC,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,oCAAoC,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Google identity helpers — Connect-with-Google.
3
+ */
4
+ export { connect, createGoogleIdentityConnectProvider, enableGoogleActorSubject, enableGoogleActorSubjectFromConnectors, googleConnectUrl, googleIdentityConnectProvider, isGoogleActorSubjectEnabled, isGoogleConnectConfigured, resetGoogleActorSubjectEnabledForTests, GOOGLE_CONNECT_CALLBACK_PATH, GOOGLE_CONNECT_LINK_PATH, GOOGLE_CONNECT_START_PATH, GOOGLE_CONNECT_STATUS_PATH, } from "./connect-http.js";
5
+ export { googleOauthTickets } from "./oauth.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/identity/google/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,OAAO,EACP,mCAAmC,EACnC,wBAAwB,EACxB,sCAAsC,EACtC,gBAAgB,EAChB,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,sCAAsC,EACtC,4BAA4B,EAC5B,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Google BYO OAuth descriptor — optional non-LangSmith Connect-with-Google.
3
+ * The default path uses Fleet auth-sessions instead.
4
+ */
5
+ import { type ByoOauthConfig, type ByoOauthClient } from "../byo-oauth.js";
6
+ export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, } from "../byo-oauth.js";
7
+ export type GoogleOauthConfig = ByoOauthConfig;
8
+ /** Google BYO OAuth client (config, authorize, exchange, Fleet adapter). */
9
+ export declare const googleByoOauth: ByoOauthClient;
10
+ export declare const GOOGLE_OAUTH_CLIENT_ID_ENV: string;
11
+ export declare const GOOGLE_OAUTH_CLIENT_SECRET_ENV: string;
12
+ export declare const GOOGLE_OAUTH_SCOPES_ENV: string;
13
+ export declare const GOOGLE_OAUTH_AUTH_URL_ENV: string;
14
+ export declare const GOOGLE_OAUTH_TOKEN_URL_ENV: string;
15
+ export declare const GOOGLE_OAUTH_USERINFO_URL_ENV: string;
16
+ /** Google-bound OAuth state / connect-ticket helpers. */
17
+ export declare const googleOauthTickets: import("../oauth-tickets.js").OauthTickets;
18
+ export declare const resolveGoogleOauthRedirectBase: typeof import("../byo-oauth.js").resolveSlackOauthRedirectBase;
19
+ export declare const readGoogleOauthConfig: (env?: NodeJS.ProcessEnv) => ByoOauthConfig | null;
20
+ export declare const buildGoogleAuthorizeUrl: (config: ByoOauthConfig, state: string, redirectUri: string, scopes?: string) => string;
21
+ export declare const exchangeGoogleOauthCode: (config: ByoOauthConfig, code: string, redirectUri: string, fetchImpl?: typeof fetch) => Promise<import("../fleet-connect.js").FleetVaultByoTokenResult>;
22
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../../src/identity/google/oauth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC;AAQ/C,4EAA4E;AAC5E,eAAO,MAAM,cAAc,EAAE,cAsB3B,CAAC;AAEH,eAAO,MAAM,0BAA0B,QAA8B,CAAC;AACtE,eAAO,MAAM,8BAA8B,QAAkC,CAAC;AAC9E,eAAO,MAAM,uBAAuB,QAA4B,CAAC;AACjE,eAAO,MAAM,yBAAyB,QAA6B,CAAC;AACpE,eAAO,MAAM,0BAA0B,QAA8B,CAAC;AACtE,eAAO,MAAM,6BAA6B,QAAiC,CAAC;AAE5E,yDAAyD;AACzD,eAAO,MAAM,kBAAkB,4CAAyB,CAAC;AAEzD,eAAO,MAAM,8BAA8B,gEACP,CAAC;AAErC,eAAO,MAAM,qBAAqB,oDAA4B,CAAC;AAC/D,eAAO,MAAM,uBAAuB,yFAAmC,CAAC;AACxE,eAAO,MAAM,uBAAuB,0JAA8B,CAAC"}