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,60 @@
1
+ /**
2
+ * Deterministic LangSmith agent_id for an MDA actor's Fleet vault subject.
3
+ *
4
+ * Tokens imported via Connect-with-X and toolserver `?agent_id=` must use the
5
+ * same derivation so each caller reaches their own vault connections. One
6
+ * actor has one agent_id; multiple Fleet OAuth integrations attach as distinct
7
+ * `provider_id`s on that subject.
8
+ */
9
+ import { type FleetOAuthIntegration } from "../connectors/toolserver/integrations.js";
10
+ import type { IdentityConnectMountContext } from "./connect-provider-types.js";
11
+ /**
12
+ * Fixed namespace for MDA actor vault subjects (UUID form).
13
+ * Stable across releases so reconnects hit the same vault row.
14
+ */
15
+ export declare const NAMESPACE_MDA_ACTOR = "c0ffee00-0da0-4111-8111-000000000001";
16
+ export interface AgentIdFromActorOptions {
17
+ /**
18
+ * Workspace discriminator so ids do not collide across workspaces.
19
+ * Defaults to {@link resolveActorDeploymentId} (`LANGCHAIN_WORKSPACE_ID`).
20
+ */
21
+ deploymentId?: string;
22
+ /** Override process env (tests). */
23
+ env?: NodeJS.ProcessEnv;
24
+ /** Override the UUID namespace (tests). */
25
+ namespace?: string;
26
+ }
27
+ /**
28
+ * Resolve the workspace slice for {@link agentIdFromActor}.
29
+ *
30
+ * Uses `LANGCHAIN_WORKSPACE_ID`, else `"local"`.
31
+ */
32
+ export declare function resolveActorDeploymentId(env?: NodeJS.ProcessEnv): string;
33
+ /**
34
+ * Derive the vault `agent_id` for an authenticated MDA actor.
35
+ *
36
+ * `uuidv5(`${workspaceId}:${userId}`, NAMESPACE_MDA_ACTOR)`.
37
+ */
38
+ export declare function agentIdFromActor(userId: string, options?: AgentIdFromActorOptions): string;
39
+ /** Enable actor-subject routing for a Fleet OAuth integration. */
40
+ export declare function enableActorSubjectIntegration(integrationId: string): void;
41
+ /** True when actor-subject routing is on for `integrationId`. */
42
+ export declare function isActorSubjectIntegrationEnabled(integrationId: string): boolean;
43
+ /**
44
+ * True when `slug` belongs to an enabled Fleet OAuth integration (per-actor
45
+ * `?agent_id=` routing).
46
+ */
47
+ export declare function isActorSubjectSlugEnabled(slug: string | undefined): boolean;
48
+ /** Enabled integration ids (for connect-hint middleware, etc.). */
49
+ export declare function enabledActorSubjectIntegrations(): readonly string[];
50
+ /**
51
+ * Enable actor-subject mode for every Fleet integration implied by connectors on a
52
+ * user-scoped deployment. Agent-scoped deployments keep the shared
53
+ * `MDA_TOOLSERVER_AGENT_ID` subject.
54
+ */
55
+ export declare function enableActorSubjectIntegrationsFromConnectors(connectorKinds: readonly (string | undefined)[] | undefined, scope?: IdentityConnectMountContext["scope"]): void;
56
+ /** Enable a specific integration when connectors imply it (user-scoped only). */
57
+ export declare function enableActorSubjectIntegrationFromConnectors(integration: FleetOAuthIntegration, connectorKinds: readonly (string | undefined)[] | undefined, scope?: IdentityConnectMountContext["scope"]): void;
58
+ /** Test-only reset. */
59
+ export declare function resetActorSubjectEnabledForTests(): void;
60
+ //# sourceMappingURL=actor-subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor-subject.d.ts","sourceRoot":"","sources":["../../src/identity/actor-subject.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAIL,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAY/E;;;GAGG;AACH,eAAO,MAAM,mBAAmB,yCAAyC,CAAC;AAE1E,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,uBAA4B,GACpC,MAAM,CAUR;AAKD,kEAAkE;AAClE,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAKzE;AAED,iEAAiE;AACjE,wBAAgB,gCAAgC,CAC9C,aAAa,EAAE,MAAM,GACpB,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAG3E;AAED,mEAAmE;AACnE,wBAAgB,+BAA+B,IAAI,SAAS,MAAM,EAAE,CAEnE;AAED;;;;GAIG;AACH,wBAAgB,4CAA4C,CAC1D,cAAc,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,EAC3D,KAAK,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC3C,IAAI,CAcN;AAED,iFAAiF;AACjF,wBAAgB,2CAA2C,CACzD,WAAW,EAAE,qBAAqB,EAClC,cAAc,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,SAAS,EAC3D,KAAK,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC3C,IAAI,CAON;AAED,uBAAuB;AACvB,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Deterministic LangSmith agent_id for an MDA actor's Fleet vault subject.
3
+ *
4
+ * Tokens imported via Connect-with-X and toolserver `?agent_id=` must use the
5
+ * same derivation so each caller reaches their own vault connections. One
6
+ * actor has one agent_id; multiple Fleet OAuth integrations attach as distinct
7
+ * `provider_id`s on that subject.
8
+ */
9
+ import { v5 as uuidv5 } from "uuid";
10
+ import { MARKETPLACE_MCP_INTEGRATIONS, hasMarketplaceConnector, } from "../connectors/marketplace/catalog.js";
11
+ import { FLEET_OAUTH_INTEGRATIONS, integrationForSlug, hasIntegrationToolServerConnector, } from "../connectors/toolserver/integrations.js";
12
+ function isUserScoped(scope) {
13
+ if (!scope) {
14
+ return false;
15
+ }
16
+ // Per-caller Connect / actor-subject vault ownership. Memory is unrelated.
17
+ return scope.credentials === "user" || scope.credentials === "custom";
18
+ }
19
+ /**
20
+ * Fixed namespace for MDA actor vault subjects (UUID form).
21
+ * Stable across releases so reconnects hit the same vault row.
22
+ */
23
+ export const NAMESPACE_MDA_ACTOR = "c0ffee00-0da0-4111-8111-000000000001";
24
+ /**
25
+ * Resolve the workspace slice for {@link agentIdFromActor}.
26
+ *
27
+ * Uses `LANGCHAIN_WORKSPACE_ID`, else `"local"`.
28
+ */
29
+ export function resolveActorDeploymentId(env = process.env) {
30
+ return trimmed(env.LANGCHAIN_WORKSPACE_ID) ?? "local";
31
+ }
32
+ /**
33
+ * Derive the vault `agent_id` for an authenticated MDA actor.
34
+ *
35
+ * `uuidv5(`${workspaceId}:${userId}`, NAMESPACE_MDA_ACTOR)`.
36
+ */
37
+ export function agentIdFromActor(userId, options = {}) {
38
+ const id = userId.trim();
39
+ if (!id) {
40
+ throw new Error("agentIdFromActor requires a non-empty userId");
41
+ }
42
+ const deploymentId = options.deploymentId?.trim() ||
43
+ resolveActorDeploymentId(options.env ?? process.env);
44
+ const namespace = options.namespace ?? NAMESPACE_MDA_ACTOR;
45
+ return uuidv5(`${deploymentId}:${id}`, namespace);
46
+ }
47
+ /** Integrations with per-actor toolserver subject routing enabled in this process. */
48
+ const enabledIntegrations = new Set();
49
+ /** Enable actor-subject routing for a Fleet OAuth integration. */
50
+ export function enableActorSubjectIntegration(integrationId) {
51
+ const id = integrationId.trim();
52
+ if (id) {
53
+ enabledIntegrations.add(id);
54
+ }
55
+ }
56
+ /** True when actor-subject routing is on for `integrationId`. */
57
+ export function isActorSubjectIntegrationEnabled(integrationId) {
58
+ return enabledIntegrations.has(integrationId);
59
+ }
60
+ /**
61
+ * True when `slug` belongs to an enabled Fleet OAuth integration (per-actor
62
+ * `?agent_id=` routing).
63
+ */
64
+ export function isActorSubjectSlugEnabled(slug) {
65
+ const integration = integrationForSlug(slug);
66
+ return integration != null && enabledIntegrations.has(integration.id);
67
+ }
68
+ /** Enabled integration ids (for connect-hint middleware, etc.). */
69
+ export function enabledActorSubjectIntegrations() {
70
+ return [...enabledIntegrations];
71
+ }
72
+ /**
73
+ * Enable actor-subject mode for every Fleet integration implied by connectors on a
74
+ * user-scoped deployment. Agent-scoped deployments keep the shared
75
+ * `MDA_TOOLSERVER_AGENT_ID` subject.
76
+ */
77
+ export function enableActorSubjectIntegrationsFromConnectors(connectorKinds, scope) {
78
+ if (!isUserScoped(scope)) {
79
+ return;
80
+ }
81
+ for (const integration of FLEET_OAUTH_INTEGRATIONS) {
82
+ if (hasIntegrationToolServerConnector(integration, connectorKinds)) {
83
+ enableActorSubjectIntegration(integration.id);
84
+ }
85
+ }
86
+ for (const integration of MARKETPLACE_MCP_INTEGRATIONS) {
87
+ if (hasMarketplaceConnector(integration.id, connectorKinds)) {
88
+ enableActorSubjectIntegration(integration.id);
89
+ }
90
+ }
91
+ }
92
+ /** Enable a specific integration when connectors imply it (user-scoped only). */
93
+ export function enableActorSubjectIntegrationFromConnectors(integration, connectorKinds, scope) {
94
+ if (hasIntegrationToolServerConnector(integration, connectorKinds) &&
95
+ isUserScoped(scope)) {
96
+ enableActorSubjectIntegration(integration.id);
97
+ }
98
+ }
99
+ /** Test-only reset. */
100
+ export function resetActorSubjectEnabledForTests() {
101
+ enabledIntegrations.clear();
102
+ }
103
+ function trimmed(value) {
104
+ const v = value?.trim();
105
+ return v ? v : undefined;
106
+ }
107
+ //# sourceMappingURL=actor-subject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actor-subject.js","sourceRoot":"","sources":["../../src/identity/actor-subject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Factory for optional BYO (bring-your-own) OAuth clients used when Fleet
3
+ * auth-sessions are unavailable.
4
+ *
5
+ * Vendor modules supply endpoints, authorize extras, and userinfo parsing;
6
+ * this module owns config env reading, authorize URL construction, token
7
+ * exchange, and the {@link FleetVaultByoOauth} adapter.
8
+ */
9
+ import type { FleetVaultByoOauth, FleetVaultByoTokenResult } from "./fleet-connect.js";
10
+ import { type OauthTickets } from "./oauth-tickets.js";
11
+ import { resolveSlackOauthRedirectBase } from "./slack/oauth.js";
12
+ export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "./slack/oauth.js";
13
+ /** Shared BYO OAuth client configuration. */
14
+ export interface ByoOauthConfig {
15
+ clientId: string;
16
+ clientSecret: string;
17
+ publicAppUrl: string;
18
+ scopes: string;
19
+ authUrl: string;
20
+ tokenUrl: string;
21
+ userInfoUrl: string;
22
+ }
23
+ export interface ByoOauthEndpoints {
24
+ authUrl: string;
25
+ tokenUrl: string;
26
+ userInfoUrl: string;
27
+ /** Space-separated default scopes when env override is absent. */
28
+ defaultScopes: string;
29
+ }
30
+ export interface ByoOauthUserInfo {
31
+ email?: string;
32
+ subject?: string;
33
+ }
34
+ export interface CreateByoOauthClientOptions {
35
+ /** Connect / ticket provider id, e.g. `"google"`. */
36
+ providerId: string;
37
+ /** Human label for error messages ("Google", "Microsoft"). */
38
+ displayName: string;
39
+ /**
40
+ * Env prefix without trailing underscore, e.g. `"GOOGLE_OAUTH"`.
41
+ * Reads `${prefix}_CLIENT_ID`, `_CLIENT_SECRET`, `_SCOPES`, `_AUTH_URL`,
42
+ * `_TOKEN_URL`, `_USERINFO_URL`.
43
+ */
44
+ envPrefix: string;
45
+ /** Default endpoints + scopes (may read extra env, e.g. tenant). */
46
+ defaultEndpoints: (env: NodeJS.ProcessEnv) => ByoOauthEndpoints;
47
+ /**
48
+ * Extra authorize query params merged after the shared OAuth code-grant
49
+ * fields. Defaults include `prompt=consent` when omitted here.
50
+ */
51
+ authorizeParams?: Record<string, string>;
52
+ /** Map a userinfo /me JSON body to email + subject. */
53
+ parseUserInfo: (json: Record<string, unknown>) => ByoOauthUserInfo;
54
+ /** Vault metadata key for the IdP subject (e.g. `google_sub`). */
55
+ subjectMetadataKey: string;
56
+ }
57
+ export interface ByoOauthEnvKeys {
58
+ clientId: string;
59
+ clientSecret: string;
60
+ scopes: string;
61
+ authUrl: string;
62
+ tokenUrl: string;
63
+ userInfoUrl: string;
64
+ }
65
+ /** BYO OAuth client produced by {@link createByoOauthClient}. */
66
+ export interface ByoOauthClient {
67
+ providerId: string;
68
+ displayName: string;
69
+ env: ByoOauthEnvKeys;
70
+ tickets: OauthTickets;
71
+ resolveRedirectBase: typeof resolveSlackOauthRedirectBase;
72
+ readConfig(env?: NodeJS.ProcessEnv): ByoOauthConfig | null;
73
+ buildAuthorizeUrl(config: ByoOauthConfig, state: string, redirectUri: string, scopes?: string): string;
74
+ exchangeCode(config: ByoOauthConfig, code: string, redirectUri: string, fetchImpl?: typeof fetch): Promise<FleetVaultByoTokenResult>;
75
+ /** Ready for `createFleetVaultConnectProvider({ byo })`. */
76
+ byo: FleetVaultByoOauth;
77
+ resolvePublicAppUrl(env?: NodeJS.ProcessEnv): string | undefined;
78
+ }
79
+ /** Build a BYO OAuth client for one Fleet vault Connect integration. */
80
+ export declare function createByoOauthClient(options: CreateByoOauthClientOptions): ByoOauthClient;
81
+ //# sourceMappingURL=byo-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"byo-oauth.d.ts","sourceRoot":"","sources":["../../src/identity/byo-oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Factory for optional BYO (bring-your-own) OAuth clients used when Fleet
3
+ * auth-sessions are unavailable.
4
+ *
5
+ * Vendor modules supply endpoints, authorize extras, and userinfo parsing;
6
+ * this module owns config env reading, authorize URL construction, token
7
+ * exchange, and the {@link FleetVaultByoOauth} adapter.
8
+ */
9
+ import { fetchWithTimeout, PROVIDER_HTTP_TIMEOUT_MS } from "../runtime/http.js";
10
+ import { oauthTicketsFor } from "./oauth-tickets.js";
11
+ import { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, resolveSlackOauthRedirectBase, } from "./slack/oauth.js";
12
+ export { MDA_PUBLIC_API_URL_ENV, MDA_PUBLIC_APP_URL_ENV, OAUTH_STATE_SIGNING_KEY_ENV, readOauthStateSigningKey, resolveSlackOauthRedirectBase, } from "./slack/oauth.js";
13
+ function stripSlash(value) {
14
+ return value.replace(/\/$/, "");
15
+ }
16
+ function envKeys(prefix) {
17
+ return {
18
+ clientId: `${prefix}_CLIENT_ID`,
19
+ clientSecret: `${prefix}_CLIENT_SECRET`,
20
+ scopes: `${prefix}_SCOPES`,
21
+ authUrl: `${prefix}_AUTH_URL`,
22
+ tokenUrl: `${prefix}_TOKEN_URL`,
23
+ userInfoUrl: `${prefix}_USERINFO_URL`,
24
+ };
25
+ }
26
+ /** Build a BYO OAuth client for one Fleet vault Connect integration. */
27
+ export function createByoOauthClient(options) {
28
+ const keys = envKeys(options.envPrefix);
29
+ const tickets = oauthTicketsFor(options.providerId);
30
+ const authorizeExtras = {
31
+ prompt: "consent",
32
+ ...options.authorizeParams,
33
+ };
34
+ function readConfig(env = process.env) {
35
+ const clientId = env[keys.clientId]?.trim();
36
+ const clientSecret = env[keys.clientSecret]?.trim();
37
+ const publicAppUrl = env[MDA_PUBLIC_APP_URL_ENV]?.trim() ||
38
+ env[MDA_PUBLIC_API_URL_ENV]?.trim();
39
+ if (!clientId || !clientSecret || !publicAppUrl) {
40
+ return null;
41
+ }
42
+ const defaults = options.defaultEndpoints(env);
43
+ return {
44
+ clientId,
45
+ clientSecret,
46
+ publicAppUrl: stripSlash(publicAppUrl),
47
+ scopes: env[keys.scopes]?.trim() || defaults.defaultScopes,
48
+ authUrl: stripSlash(env[keys.authUrl]?.trim() || defaults.authUrl),
49
+ tokenUrl: stripSlash(env[keys.tokenUrl]?.trim() || defaults.tokenUrl),
50
+ userInfoUrl: stripSlash(env[keys.userInfoUrl]?.trim() || defaults.userInfoUrl),
51
+ };
52
+ }
53
+ function buildAuthorizeUrl(config, state, redirectUri, scopes) {
54
+ const url = new URL(config.authUrl);
55
+ url.searchParams.set("client_id", config.clientId);
56
+ url.searchParams.set("redirect_uri", redirectUri);
57
+ url.searchParams.set("response_type", "code");
58
+ url.searchParams.set("scope", scopes?.trim() || config.scopes);
59
+ url.searchParams.set("state", state);
60
+ for (const [key, value] of Object.entries(authorizeExtras)) {
61
+ url.searchParams.set(key, value);
62
+ }
63
+ return url.toString();
64
+ }
65
+ async function exchangeCode(config, code, redirectUri, fetchImpl = fetch) {
66
+ const body = new URLSearchParams({
67
+ code,
68
+ client_id: config.clientId,
69
+ client_secret: config.clientSecret,
70
+ redirect_uri: redirectUri,
71
+ grant_type: "authorization_code",
72
+ });
73
+ const tokenResponse = await fetchWithTimeout(config.tokenUrl, {
74
+ method: "POST",
75
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
76
+ body,
77
+ }, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
78
+ const tokenJson = (await tokenResponse.json());
79
+ if (!tokenResponse.ok || !tokenJson.access_token) {
80
+ throw new Error(tokenJson.error_description ??
81
+ tokenJson.error ??
82
+ `${options.displayName} OAuth token exchange failed`);
83
+ }
84
+ let accountLabel;
85
+ let subject;
86
+ try {
87
+ const userResponse = await fetchWithTimeout(config.userInfoUrl, {
88
+ headers: { Authorization: `Bearer ${tokenJson.access_token}` },
89
+ }, PROVIDER_HTTP_TIMEOUT_MS, fetchImpl);
90
+ if (userResponse.ok) {
91
+ const userJson = (await userResponse.json());
92
+ const parsed = options.parseUserInfo(userJson);
93
+ if (parsed.email) {
94
+ accountLabel = parsed.email;
95
+ }
96
+ if (parsed.subject) {
97
+ subject = parsed.subject;
98
+ }
99
+ }
100
+ }
101
+ catch {
102
+ // Account label is optional for vault import.
103
+ }
104
+ return {
105
+ accessToken: tokenJson.access_token,
106
+ ...(tokenJson.refresh_token
107
+ ? { refreshToken: tokenJson.refresh_token }
108
+ : {}),
109
+ ...(typeof tokenJson.expires_in === "number"
110
+ ? { expiresInSeconds: tokenJson.expires_in }
111
+ : {}),
112
+ ...(tokenJson.scope ? { scope: tokenJson.scope } : {}),
113
+ ...(accountLabel ? { accountLabel } : {}),
114
+ ...(subject
115
+ ? { metadata: { [options.subjectMetadataKey]: subject } }
116
+ : {}),
117
+ };
118
+ }
119
+ const byo = {
120
+ readConfig,
121
+ buildAuthorizeUrl(config, state, redirectUri, scopes) {
122
+ return buildAuthorizeUrl(config, state, redirectUri, scopes);
123
+ },
124
+ exchangeCode(config, code, redirectUri) {
125
+ return exchangeCode(config, code, redirectUri);
126
+ },
127
+ };
128
+ function resolvePublicAppUrl(env = process.env) {
129
+ return (readConfig(env)?.publicAppUrl ??
130
+ env[MDA_PUBLIC_APP_URL_ENV]?.trim().replace(/\/$/, ""));
131
+ }
132
+ return {
133
+ providerId: options.providerId,
134
+ displayName: options.displayName,
135
+ env: keys,
136
+ tickets,
137
+ resolveRedirectBase: resolveSlackOauthRedirectBase,
138
+ readConfig,
139
+ buildAuthorizeUrl,
140
+ exchangeCode,
141
+ byo,
142
+ resolvePublicAppUrl,
143
+ };
144
+ }
145
+ //# sourceMappingURL=byo-oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"byo-oauth.js","sourceRoot":"","sources":["../../src/identity/byo-oauth.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAKhF,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,wBAAwB,EACxB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAoF1B,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,OAAO,CAAC,MAAc;IAC7B,OAAO;QACL,QAAQ,EAAE,GAAG,MAAM,YAAY;QAC/B,YAAY,EAAE,GAAG,MAAM,gBAAgB;QACvC,MAAM,EAAE,GAAG,MAAM,SAAS;QAC1B,OAAO,EAAE,GAAG,MAAM,WAAW;QAC7B,QAAQ,EAAE,GAAG,MAAM,YAAY;QAC/B,WAAW,EAAE,GAAG,MAAM,eAAe;KACtC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,oBAAoB,CAClC,OAAoC;IAEpC,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,SAAS;QACjB,GAAG,OAAO,CAAC,eAAe;KAC3B,CAAC;IAEF,SAAS,UAAU,CACjB,GAAG,GAAsB,OAAO,CAAC,GAAG;QAEpC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;QACpD,MAAM,YAAY,GAChB,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE;YACnC,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO;YACL,QAAQ;YACR,YAAY;YACZ,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC;YACtC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,aAAa;YAC1D,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC;YAClE,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,QAAQ,CAAC;YACrE,WAAW,EAAE,UAAU,CACrB,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,QAAQ,CAAC,WAAW,CACtD;SACF,CAAC;IACJ,CAAC;IAED,SAAS,iBAAiB,CACxB,MAAsB,EACtB,KAAa,EACb,WAAmB,EACnB,MAAe;QAEf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAClD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC9C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;YAC3D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED,KAAK,UAAU,YAAY,CACzB,MAAsB,EACtB,IAAY,EACZ,WAAmB,EACnB,SAAS,GAAiB,KAAK;QAE/B,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAC/B,IAAI;YACJ,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,aAAa,EAAE,MAAM,CAAC,YAAY;YAClC,YAAY,EAAE,WAAW;YACzB,UAAU,EAAE,oBAAoB;SACjC,CAAC,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAC1C,MAAM,CAAC,QAAQ,EACf;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;YAChE,IAAI;SACL,EACD,wBAAwB,EACxB,SAAS,CACV,CAAC;QACF,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAQ5C,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,SAAS,CAAC,iBAAiB;gBACzB,SAAS,CAAC,KAAK;gBACf,GAAG,OAAO,CAAC,WAAW,8BAA8B,CACvD,CAAC;QACJ,CAAC;QAED,IAAI,YAAgC,CAAC;QACrC,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,MAAM,gBAAgB,CACzC,MAAM,CAAC,WAAW,EAClB;gBACE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,SAAS,CAAC,YAAY,EAAE,EAAE;aAC/D,EACD,wBAAwB,EACxB,SAAS,CACV,CAAC;YACF,IAAI,YAAY,CAAC,EAAE,EAAE,CAAC;gBACpB,MAAM,QAAQ,GAAG,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,CAA4B,CAAC;gBACxE,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;oBACjB,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;gBAC9B,CAAC;gBACD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACnB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;QAED,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,YAAY;YACnC,GAAG,CAAC,SAAS,CAAC,aAAa;gBACzB,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,aAAa,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,SAAS,CAAC,UAAU,KAAK,QAAQ;gBAC1C,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,UAAU,EAAE;gBAC5C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,GAAG,CAAC,OAAO;gBACT,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE;gBACzD,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAuB;QAC9B,UAAU;QACV,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM;YAClD,OAAO,iBAAiB,CACtB,MAAwB,EACxB,KAAK,EACL,WAAW,EACX,MAAM,CACP,CAAC;QACJ,CAAC;QACD,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW;YACpC,OAAO,YAAY,CAAC,MAAwB,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACnE,CAAC;KACF,CAAC;IAEF,SAAS,mBAAmB,CAC1B,GAAG,GAAsB,OAAO,CAAC,GAAG;QAEpC,OAAO,CACL,UAAU,CAAC,GAAG,CAAC,EAAE,YAAY;YAC7B,GAAG,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CACvD,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,GAAG,EAAE,IAAI;QACT,OAAO;QACP,mBAAmB,EAAE,6BAA6B;QAClD,UAAU;QACV,iBAAiB;QACjB,YAAY;QACZ,GAAG;QACH,mBAAmB;KACpB,CAAC;AACJ,CAAC"}
@@ -3,11 +3,13 @@
3
3
  * deployment needs their OAuth routes.
4
4
  *
5
5
  * Authors should not have to list a connect provider that the rest of their
6
- * identity already implies — a GitHub credential chain that reads user tokens
7
- * needs somewhere for the user to grant them, and a Slack channel on a
8
- * per-user deployment needs somewhere to link Slack accounts.
6
+ * identity already implies — a `connectors.github` (or credential chain that
7
+ * reads user tokens) on a user-scoped deployment needs Connect-with-GitHub, and
8
+ * a Slack channel on a per-user deployment needs somewhere to link Slack
9
+ * accounts.
9
10
  */
10
11
  import type { IdentityConnectMountContext } from "./connect-provider-types.js";
12
+ export { FLEET_OAUTH_INTEGRATIONS, GOOGLE_TOOLSERVER_SLUGS, LINKEDIN_TOOLSERVER_SLUGS, MICROSOFT_TOOLSERVER_SLUGS, integrationConnectorKinds, integrationById, integrationForSlug, googleConnectorKinds, googleScopesForConnectorKinds, hasIntegrationToolServerConnector, hasGoogleToolServerConnector, hasLinkedInToolServerConnector, hasMicrosoftToolServerConnector, isFleetOAuthSlug, isGoogleToolServerSlug, isLinkedInToolServerSlug, isMicrosoftToolServerSlug, linkedinConnectorKinds, linkedinScopesForConnectorKinds, microsoftConnectorKinds, microsoftScopesForConnectorKinds, scopesForIntegrationConnectorKinds, type FleetOAuthIntegration, type GoogleToolServerSlug, type LinkedInToolServerSlug, type MicrosoftToolServerSlug, } from "../connectors/toolserver/integrations.js";
11
13
  /**
12
14
  * True when the deployment keys anything durable on the individual caller.
13
15
  *
@@ -18,6 +20,13 @@ import type { IdentityConnectMountContext } from "./connect-provider-types.js";
18
20
  export declare function isUserScopedDeployment(scope: IdentityConnectMountContext["scope"]): boolean;
19
21
  /** True when a channel of `provider` is declared (e.g. a Slack channel). */
20
22
  export declare function hasChannelForProvider(channels: IdentityConnectMountContext["channels"], provider: string): boolean;
23
+ /**
24
+ * True when the deployment declares `connectors.github`.
25
+ *
26
+ * Same inference trigger Google/Microsoft use for their toolserver connectors:
27
+ * a GitHub connector on a user-scoped deployment implies Connect-with-GitHub.
28
+ */
29
+ export declare function hasGithubConnector(connectorKinds: IdentityConnectMountContext["connectorKinds"]): boolean;
21
30
  /**
22
31
  * Connect provider ids the deployment's credential resolvers depend on.
23
32
  *
@@ -25,4 +34,5 @@ export declare function hasChannelForProvider(channels: IdentityConnectMountCont
25
34
  * same as a single-platform one.
26
35
  */
27
36
  export declare function credentialConnectIds(credentials: IdentityConnectMountContext["credentials"]): Set<string>;
37
+ export declare function isGoogleConnectorKind(kind: string | undefined): boolean;
28
38
  //# sourceMappingURL=connect-inference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-inference.d.ts","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAG/E;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC1C,OAAO,CAST;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,EACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,2BAA2B,CAAC,aAAa,CAAC,GACtD,GAAG,CAAC,MAAM,CAAC,CAIb"}
1
+ {"version":3,"file":"connect-inference.d.ts","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAG/E,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,EAClC,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,2BAA2B,CAAC,OAAO,CAAC,GAC1C,OAAO,CAOT;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,2BAA2B,CAAC,UAAU,CAAC,EACjD,QAAQ,EAAE,MAAM,GACf,OAAO,CAIT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,cAAc,EAAE,2BAA2B,CAAC,gBAAgB,CAAC,GAC5D,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,2BAA2B,CAAC,aAAa,CAAC,GACtD,GAAG,CAAC,MAAM,CAAC,CAIb;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEvE"}
@@ -3,11 +3,15 @@
3
3
  * deployment needs their OAuth routes.
4
4
  *
5
5
  * Authors should not have to list a connect provider that the rest of their
6
- * identity already implies — a GitHub credential chain that reads user tokens
7
- * needs somewhere for the user to grant them, and a Slack channel on a
8
- * per-user deployment needs somewhere to link Slack accounts.
6
+ * identity already implies — a `connectors.github` (or credential chain that
7
+ * reads user tokens) on a user-scoped deployment needs Connect-with-GitHub, and
8
+ * a Slack channel on a per-user deployment needs somewhere to link Slack
9
+ * accounts.
9
10
  */
11
+ import { GITHUB_SLUG } from "../connectors/toolserver/catalog.js";
12
+ import { isGoogleToolServerSlug } from "../connectors/toolserver/integrations.js";
10
13
  import { credentialConnectProviders } from "./credential-resolvers.js";
14
+ export { FLEET_OAUTH_INTEGRATIONS, GOOGLE_TOOLSERVER_SLUGS, LINKEDIN_TOOLSERVER_SLUGS, MICROSOFT_TOOLSERVER_SLUGS, integrationConnectorKinds, integrationById, integrationForSlug, googleConnectorKinds, googleScopesForConnectorKinds, hasIntegrationToolServerConnector, hasGoogleToolServerConnector, hasLinkedInToolServerConnector, hasMicrosoftToolServerConnector, isFleetOAuthSlug, isGoogleToolServerSlug, isLinkedInToolServerSlug, isMicrosoftToolServerSlug, linkedinConnectorKinds, linkedinScopesForConnectorKinds, microsoftConnectorKinds, microsoftScopesForConnectorKinds, scopesForIntegrationConnectorKinds, } from "../connectors/toolserver/integrations.js";
11
15
  /**
12
16
  * True when the deployment keys anything durable on the individual caller.
13
17
  *
@@ -19,14 +23,23 @@ export function isUserScopedDeployment(scope) {
19
23
  if (!scope) {
20
24
  return false;
21
25
  }
22
- return (scope.memory === "user" ||
23
- scope.credentials === "user" ||
24
- scope.credentials === "custom");
26
+ // Per-caller Connect is meaningful when credentials are owned by the caller
27
+ // (`"user"`) or a custom resolver. Memory isolation is a separate axis.
28
+ return scope.credentials === "user" || scope.credentials === "custom";
25
29
  }
26
30
  /** True when a channel of `provider` is declared (e.g. a Slack channel). */
27
31
  export function hasChannelForProvider(channels, provider) {
28
32
  return Object.values(channels ?? {}).some((manifest) => manifest?.provider === provider);
29
33
  }
34
+ /**
35
+ * True when the deployment declares `connectors.github`.
36
+ *
37
+ * Same inference trigger Google/Microsoft use for their toolserver connectors:
38
+ * a GitHub connector on a user-scoped deployment implies Connect-with-GitHub.
39
+ */
40
+ export function hasGithubConnector(connectorKinds) {
41
+ return (connectorKinds ?? []).some((kind) => kind === GITHUB_SLUG);
42
+ }
30
43
  /**
31
44
  * Connect provider ids the deployment's credential resolvers depend on.
32
45
  *
@@ -36,4 +49,7 @@ export function hasChannelForProvider(channels, provider) {
36
49
  export function credentialConnectIds(credentials) {
37
50
  return new Set(credentialConnectProviders(credentials).map((provider) => provider.id));
38
51
  }
52
+ export function isGoogleConnectorKind(kind) {
53
+ return isGoogleToolServerSlug(kind);
54
+ }
39
55
  //# sourceMappingURL=connect-inference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-inference.js","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA2C;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,KAAK,CAAC,MAAM,KAAK,MAAM;QACvB,KAAK,CAAC,WAAW,KAAK,MAAM;QAC5B,KAAK,CAAC,WAAW,KAAK,QAAQ,CAC/B,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,QAAiD,EACjD,QAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CACvC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAuD;IAEvD,OAAO,IAAI,GAAG,CACZ,0BAA0B,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"connect-inference.js","sourceRoot":"","sources":["../../src/identity/connect-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAElF,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,0BAA0B,EAC1B,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,6BAA6B,EAC7B,iCAAiC,EACjC,4BAA4B,EAC5B,8BAA8B,EAC9B,+BAA+B,EAC/B,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,+BAA+B,EAC/B,uBAAuB,EACvB,gCAAgC,EAChC,kCAAkC,GAKnC,MAAM,0CAA0C,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA2C;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,wEAAwE;IACxE,OAAO,KAAK,CAAC,WAAW,KAAK,MAAM,IAAI,KAAK,CAAC,WAAW,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,qBAAqB,CACnC,QAAiD,EACjD,QAAgB;IAEhB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CACvC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,cAA6D;IAE7D,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAuD;IAEvD,OAAO,IAAI,GAAG,CACZ,0BAA0B,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC5D,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC"}
@@ -29,6 +29,13 @@ export interface IdentityConnectMountContext {
29
29
  * reading it directly, so both forms are handled.
30
30
  */
31
31
  credentials?: IdentityConfig["credentials"];
32
+ /**
33
+ * Connector `kind` values discovered for the deployment (toolserver slugs,
34
+ * `github`, `slack`, …). Used to infer Connect-with-X from matching
35
+ * connectors (GitHub, Google, Microsoft, LinkedIn) without listing
36
+ * `connect.<provider>()` on identity.
37
+ */
38
+ connectorKinds?: readonly (string | undefined)[];
32
39
  }
33
40
  /** JSON object returned by status / error payloads. */
34
41
  export type IdentityConnectJson = Record<string, unknown>;
@@ -81,5 +88,10 @@ export interface IdentityConnectProvider {
81
88
  resolveRedirectBase(options: IdentityConnectRedirectBaseOptions): string;
82
89
  /** Public app origin for settings fail/success redirects when available. */
83
90
  resolvePublicAppUrl?(): string | undefined;
91
+ /**
92
+ * Optional: resolve a caller from a signed `?ticket=` on the connect start
93
+ * route (channel actors without a browser session). Returns the actor user id.
94
+ */
95
+ resolveConnectTicket?(ticket: string): string | Promise<string>;
84
96
  }
85
97
  //# sourceMappingURL=connect-provider-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect-provider-types.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;CAC7C;AAED,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,8BAA8B,GACtC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvD,yDAAyD;IACzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,oEAAoE;IACpE,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,mDAAmD;IACnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,+DAA+D;IAC/D,mBAAmB,CAAC,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAAC;IACzE,4EAA4E;IAC5E,mBAAmB,CAAC,IAAI,MAAM,GAAG,SAAS,CAAC;CAC5C"}
1
+ {"version":3,"file":"connect-provider-types.d.ts","sourceRoot":"","sources":["../../src/identity/connect-provider-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,qEAAqE;AACrE,MAAM,WAAW,2BAA2B;IAC1C,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjD,uDAAuD;IACvD,WAAW,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gDAAgD;IAChD,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;IAChC;;;;OAIG;IACH,WAAW,CAAC,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC5C;;;;;OAKG;IACH,cAAc,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,CAAC;CAClD;AAED,uDAAuD;AACvD,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE1D,MAAM,MAAM,8BAA8B,GACtC;IAAE,YAAY,EAAE,MAAM,CAAA;CAAE,GACxB;IAAE,aAAa,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,6BAA6B,GAAG;IAC1C,oEAAoE;IACpE,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,oEAAoE;AACpE,MAAM,WAAW,kCAAkC;IACjD,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,GAAG;QAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;KAAE,CAAC;IACrE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,WAAW,CAAC,GAAG,EAAE,2BAA2B,GAAG,OAAO,CAAC;IACvD,yDAAyD;IACzD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,oEAAoE;IACpE,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GAClB,8BAA8B,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5E;;;OAGG;IACH,gBAAgB,CACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,6BAA6B,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAC1E,mDAAmD;IACnD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,+DAA+D;IAC/D,mBAAmB,CAAC,OAAO,EAAE,kCAAkC,GAAG,MAAM,CAAC;IACzE,4EAA4E;IAC5E,mBAAmB,CAAC,IAAI,MAAM,GAAG,SAAS,CAAC;IAC3C;;;OAGG;IACH,oBAAoB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACjE"}
@@ -60,12 +60,28 @@ function mountOneIdentityConnectProvider(app, cfg, provider, mounted, options) {
60
60
  return c.json(await provider.status(identity.user.id));
61
61
  });
62
62
  app.get(paths.connect, async (c) => {
63
- const identity = await resolveOrUnauthorized(cfg, c.req.raw);
64
- if (identity instanceof Response) {
65
- return identity;
63
+ const ticket = c.req.query("ticket")?.trim();
64
+ let userId;
65
+ if (ticket && provider.resolveConnectTicket) {
66
+ try {
67
+ userId = await provider.resolveConnectTicket(ticket);
68
+ }
69
+ catch (error) {
70
+ const message = error instanceof Error && error.message
71
+ ? error.message
72
+ : "invalid connect ticket";
73
+ return c.json({ error: message }, 401);
74
+ }
75
+ }
76
+ else {
77
+ const identity = await resolveOrUnauthorized(cfg, c.req.raw);
78
+ if (identity instanceof Response) {
79
+ return identity;
80
+ }
81
+ userId = identity.user.id;
66
82
  }
67
83
  const redirectUri = callbackRedirectUri(provider, c.req.raw, options.deploymentBaseUrl);
68
- const result = await provider.startAuthorize(identity.user.id, redirectUri);
84
+ const result = await provider.startAuthorize(userId, redirectUri);
69
85
  if ("notConfigured" in result) {
70
86
  return c.json({ error: result.error }, 503);
71
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connect-provider.js","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect-provider.js","sourceRoot":"","sources":["../../src/identity/connect-provider.ts"],"names":[],"mappings":"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"}