@frontmcp/auth 1.3.0 → 1.4.0

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 (74) hide show
  1. package/authorities/authorities.profiles.d.ts +14 -1
  2. package/authorities/authorities.profiles.d.ts.map +1 -1
  3. package/authorization/dcr-client.registry.d.ts +83 -0
  4. package/authorization/dcr-client.registry.d.ts.map +1 -0
  5. package/authorization/index.d.ts +2 -0
  6. package/authorization/index.d.ts.map +1 -1
  7. package/cimd/cimd.service.d.ts +2 -9
  8. package/cimd/cimd.service.d.ts.map +1 -1
  9. package/common/session.types.d.ts +4 -4
  10. package/esm/index.mjs +1821 -214
  11. package/esm/package.json +5 -5
  12. package/index.d.ts +5 -5
  13. package/index.d.ts.map +1 -1
  14. package/index.js +2030 -383
  15. package/jwks/jwks.service.d.ts +2 -4
  16. package/jwks/jwks.service.d.ts.map +1 -1
  17. package/options/app-auth.schema.d.ts +226 -0
  18. package/options/app-auth.schema.d.ts.map +1 -1
  19. package/options/index.d.ts +4 -4
  20. package/options/index.d.ts.map +1 -1
  21. package/options/interfaces.d.ts +580 -4
  22. package/options/interfaces.d.ts.map +1 -1
  23. package/options/orchestrated.schema.d.ts +492 -1
  24. package/options/orchestrated.schema.d.ts.map +1 -1
  25. package/options/schema.d.ts +226 -0
  26. package/options/schema.d.ts.map +1 -1
  27. package/options/shared.schemas.d.ts +237 -2
  28. package/options/shared.schemas.d.ts.map +1 -1
  29. package/package.json +5 -5
  30. package/session/authorization.store.d.ts +117 -47
  31. package/session/authorization.store.d.ts.map +1 -1
  32. package/session/consent.store.d.ts +86 -0
  33. package/session/consent.store.d.ts.map +1 -0
  34. package/session/credential-resume-link.d.ts +64 -0
  35. package/session/credential-resume-link.d.ts.map +1 -0
  36. package/session/credentials-accessor.d.ts +102 -0
  37. package/session/credentials-accessor.d.ts.map +1 -0
  38. package/session/credentials-accessor.impl.d.ts +46 -0
  39. package/session/credentials-accessor.impl.d.ts.map +1 -0
  40. package/session/index.d.ts +32 -2
  41. package/session/index.d.ts.map +1 -1
  42. package/session/orchestrated-token.crypto.d.ts +33 -0
  43. package/session/orchestrated-token.crypto.d.ts.map +1 -0
  44. package/session/secure-store-accessor.d.ts +77 -0
  45. package/session/secure-store-accessor.d.ts.map +1 -0
  46. package/session/secure-store-accessor.impl.d.ts +61 -0
  47. package/session/secure-store-accessor.impl.d.ts.map +1 -0
  48. package/session/secure-store-backends.d.ts +75 -0
  49. package/session/secure-store-backends.d.ts.map +1 -0
  50. package/session/secure-store.d.ts +89 -0
  51. package/session/secure-store.d.ts.map +1 -0
  52. package/session/secure-store.factory.d.ts +62 -0
  53. package/session/secure-store.factory.d.ts.map +1 -0
  54. package/session/session-credential-vault.d.ts +153 -0
  55. package/session/session-credential-vault.d.ts.map +1 -0
  56. package/session/session-credential-vault.factory.d.ts +50 -0
  57. package/session/session-credential-vault.factory.d.ts.map +1 -0
  58. package/session/storage-authorization.store.d.ts +51 -0
  59. package/session/storage-authorization.store.d.ts.map +1 -0
  60. package/session/storage-consent.store.d.ts +33 -0
  61. package/session/storage-consent.store.d.ts.map +1 -0
  62. package/session/storage-federated-auth.session.d.ts +36 -0
  63. package/session/storage-federated-auth.session.d.ts.map +1 -0
  64. package/session/storage-orchestrated-token.store.d.ts +72 -0
  65. package/session/storage-orchestrated-token.store.d.ts.map +1 -0
  66. package/session/token-storage.factory.d.ts +46 -0
  67. package/session/token-storage.factory.d.ts.map +1 -0
  68. package/ui/index.d.ts +3 -2
  69. package/ui/index.d.ts.map +1 -1
  70. package/ui/local-login.helper.d.ts +31 -0
  71. package/ui/local-login.helper.d.ts.map +1 -0
  72. package/ui/templates.d.ts +118 -2
  73. package/ui/templates.d.ts.map +1 -1
  74. package/vault/auth-providers.types.d.ts +3 -3
@@ -43,6 +43,76 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
43
43
  }, import("zod/v4/core").$strip>>;
44
44
  mode: import("@frontmcp/lazy-zod").ZodLiteral<"transparent">;
45
45
  }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
46
+ requireEmail: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodBoolean>;
47
+ anonymousSubject: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodString>;
48
+ login: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
49
+ title: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
50
+ subtitle: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
51
+ logoUri: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
52
+ fields: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodRecord<import("@frontmcp/lazy-zod").ZodString, import("@frontmcp/lazy-zod").ZodObject<{
53
+ type: import("@frontmcp/lazy-zod").ZodEnum<{
54
+ text: "text";
55
+ password: "password";
56
+ email: "email";
57
+ select: "select";
58
+ hidden: "hidden";
59
+ }>;
60
+ label: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
61
+ required: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
62
+ placeholder: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
63
+ options: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodObject<{
64
+ value: import("@frontmcp/lazy-zod").ZodString;
65
+ label: import("@frontmcp/lazy-zod").ZodString;
66
+ }, import("zod/v4/core").$strip>>>;
67
+ }, import("zod/v4/core").$strip>>>;
68
+ render: import("@frontmcp/lazy-zod").ZodOptional<import("zod").ZodCustom<(ctx: import("./interfaces").LoginRenderContext) => string, (ctx: import("./interfaces").LoginRenderContext) => string>>;
69
+ subject: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
70
+ fromField: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
71
+ strategy: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
72
+ "per-session": "per-session";
73
+ "per-account": "per-account";
74
+ }>>;
75
+ }, import("zod/v4/core").$strip>>;
76
+ }, import("zod/v4/core").$strip>>;
77
+ authenticate: import("@frontmcp/lazy-zod").ZodOptional<import("zod").ZodCustom<import("./interfaces").AuthenticateFn, import("./interfaces").AuthenticateFn>>;
78
+ providers: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodObject<{
79
+ id: import("@frontmcp/lazy-zod").ZodString;
80
+ name: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
81
+ authorizationEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
82
+ authorizeUrl: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
83
+ tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
84
+ tokenUrl: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
85
+ clientId: import("@frontmcp/lazy-zod").ZodString;
86
+ clientSecret: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
87
+ scopes: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
88
+ userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
89
+ jwksUri: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
90
+ }, import("zod/v4/core").$strip>>>;
91
+ dcr: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
92
+ enabled: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
93
+ allowedRedirectUris: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
94
+ allowedClientIds: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
95
+ initialAccessToken: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
96
+ clients: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodObject<{
97
+ clientId: import("@frontmcp/lazy-zod").ZodString;
98
+ clientSecret: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
99
+ redirectUris: import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>;
100
+ clientName: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
101
+ tokenEndpointAuthMethod: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodEnum<{
102
+ none: "none";
103
+ client_secret_basic: "client_secret_basic";
104
+ client_secret_post: "client_secret_post";
105
+ }>>;
106
+ grantTypes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodEnum<{
107
+ authorization_code: "authorization_code";
108
+ refresh_token: "refresh_token";
109
+ }>>>;
110
+ responseTypes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodEnum<{
111
+ code: "code";
112
+ }>>>;
113
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
114
+ }, import("zod/v4/core").$strip>>>;
115
+ }, import("zod/v4/core").$strip>>;
46
116
  local: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
47
117
  signKey: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<[z.ZodType<import("..").JWK, unknown>, import("zod").ZodCustom<Uint8Array<ArrayBuffer>, Uint8Array<ArrayBuffer>>]>>;
48
118
  jwks: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
@@ -60,6 +130,74 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
60
130
  keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
61
131
  defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
62
132
  }, import("zod/v4/core").$strip>;
133
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
134
+ sqlite: import("@frontmcp/lazy-zod").ZodObject<{
135
+ path: import("@frontmcp/lazy-zod").ZodString;
136
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
137
+ secret: import("@frontmcp/lazy-zod").ZodString;
138
+ }, import("zod/v4/core").$strip>>;
139
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
140
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
141
+ }, import("zod/v4/core").$strip>;
142
+ }, import("zod/v4/core").$strip>]>>;
143
+ secureStore: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"memory">, import("@frontmcp/lazy-zod").ZodObject<{
144
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
145
+ user: "user";
146
+ session: "session";
147
+ global: "global";
148
+ }>>;
149
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
150
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
151
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
152
+ }, import("zod/v4/core").$strip>>;
153
+ sqlite: import("@frontmcp/lazy-zod").ZodObject<{
154
+ path: import("@frontmcp/lazy-zod").ZodString;
155
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
156
+ secret: import("@frontmcp/lazy-zod").ZodString;
157
+ }, import("zod/v4/core").$strip>>;
158
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
159
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
160
+ }, import("zod/v4/core").$strip>;
161
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
162
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
163
+ user: "user";
164
+ session: "session";
165
+ global: "global";
166
+ }>>;
167
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
168
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
169
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
170
+ }, import("zod/v4/core").$strip>>;
171
+ redis: import("@frontmcp/lazy-zod").ZodObject<{
172
+ host: import("@frontmcp/lazy-zod").ZodString;
173
+ port: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
174
+ password: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
175
+ db: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
176
+ tls: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>>;
177
+ keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
178
+ defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
179
+ }, import("zod/v4/core").$strip>;
180
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
181
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
182
+ user: "user";
183
+ session: "session";
184
+ global: "global";
185
+ }>>;
186
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
187
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
188
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
189
+ }, import("zod/v4/core").$strip>>;
190
+ backend: import("zod").ZodCustom<import("./interfaces").SecureStoreCustomBackend, import("./interfaces").SecureStoreCustomBackend>;
191
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
192
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
193
+ user: "user";
194
+ session: "session";
195
+ global: "global";
196
+ }>>;
197
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
198
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
199
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
200
+ }, import("zod/v4/core").$strip>>;
63
201
  }, import("zod/v4/core").$strip>]>>;
64
202
  allowDefaultPublic: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodBoolean>;
65
203
  anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
@@ -84,6 +222,8 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
84
222
  format: "format";
85
223
  strict: "strict";
86
224
  }>>;
225
+ minProviders: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
226
+ requiredProviders: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
87
227
  }, import("zod/v4/core").$strip>>;
88
228
  refresh: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
89
229
  enabled: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodBoolean>;
@@ -137,6 +277,14 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
137
277
  maxRedirects: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodNumber>;
138
278
  }, import("zod/v4/core").$strip>>;
139
279
  }, import("zod/v4/core").$strip>>;
280
+ ui: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodRecord<import("@frontmcp/lazy-zod").ZodEnum<{
281
+ error: "error";
282
+ login: "login";
283
+ consent: "consent";
284
+ incremental: "incremental";
285
+ federated: "federated";
286
+ }> & import("zod/v4/core").$partial, import("@frontmcp/lazy-zod").ZodString>>;
287
+ extras: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodRecord<import("@frontmcp/lazy-zod").ZodString, import("zod").ZodCustom<import("./interfaces").AuthExtraHandler, import("./interfaces").AuthExtraHandler>>>;
140
288
  mode: import("@frontmcp/lazy-zod").ZodLiteral<"local">;
141
289
  }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
142
290
  local: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
@@ -156,6 +304,74 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
156
304
  keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
157
305
  defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
158
306
  }, import("zod/v4/core").$strip>;
307
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
308
+ sqlite: import("@frontmcp/lazy-zod").ZodObject<{
309
+ path: import("@frontmcp/lazy-zod").ZodString;
310
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
311
+ secret: import("@frontmcp/lazy-zod").ZodString;
312
+ }, import("zod/v4/core").$strip>>;
313
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
314
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
315
+ }, import("zod/v4/core").$strip>;
316
+ }, import("zod/v4/core").$strip>]>>;
317
+ secureStore: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"memory">, import("@frontmcp/lazy-zod").ZodObject<{
318
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
319
+ user: "user";
320
+ session: "session";
321
+ global: "global";
322
+ }>>;
323
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
324
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
325
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
326
+ }, import("zod/v4/core").$strip>>;
327
+ sqlite: import("@frontmcp/lazy-zod").ZodObject<{
328
+ path: import("@frontmcp/lazy-zod").ZodString;
329
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
330
+ secret: import("@frontmcp/lazy-zod").ZodString;
331
+ }, import("zod/v4/core").$strip>>;
332
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
333
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
334
+ }, import("zod/v4/core").$strip>;
335
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
336
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
337
+ user: "user";
338
+ session: "session";
339
+ global: "global";
340
+ }>>;
341
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
342
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
343
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
344
+ }, import("zod/v4/core").$strip>>;
345
+ redis: import("@frontmcp/lazy-zod").ZodObject<{
346
+ host: import("@frontmcp/lazy-zod").ZodString;
347
+ port: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
348
+ password: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
349
+ db: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
350
+ tls: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>>;
351
+ keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
352
+ defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
353
+ }, import("zod/v4/core").$strip>;
354
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
355
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
356
+ user: "user";
357
+ session: "session";
358
+ global: "global";
359
+ }>>;
360
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
361
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
362
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
363
+ }, import("zod/v4/core").$strip>>;
364
+ backend: import("zod").ZodCustom<import("./interfaces").SecureStoreCustomBackend, import("./interfaces").SecureStoreCustomBackend>;
365
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
366
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
367
+ user: "user";
368
+ session: "session";
369
+ global: "global";
370
+ }>>;
371
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
372
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
373
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
374
+ }, import("zod/v4/core").$strip>>;
159
375
  }, import("zod/v4/core").$strip>]>>;
160
376
  allowDefaultPublic: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodBoolean>;
161
377
  anonymousScopes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
@@ -180,6 +396,8 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
180
396
  format: "format";
181
397
  strict: "strict";
182
398
  }>>;
399
+ minProviders: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
400
+ requiredProviders: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
183
401
  }, import("zod/v4/core").$strip>>;
184
402
  refresh: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
185
403
  enabled: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodBoolean>;
@@ -233,6 +451,14 @@ export declare const authOptionsSchema: import("@frontmcp/lazy-zod").ZodUnion<re
233
451
  maxRedirects: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodNumber>;
234
452
  }, import("zod/v4/core").$strip>>;
235
453
  }, import("zod/v4/core").$strip>>;
454
+ ui: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodRecord<import("@frontmcp/lazy-zod").ZodEnum<{
455
+ error: "error";
456
+ login: "login";
457
+ consent: "consent";
458
+ incremental: "incremental";
459
+ federated: "federated";
460
+ }> & import("zod/v4/core").$partial, import("@frontmcp/lazy-zod").ZodString>>;
461
+ extras: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodRecord<import("@frontmcp/lazy-zod").ZodString, import("zod").ZodCustom<import("./interfaces").AuthExtraHandler, import("./interfaces").AuthExtraHandler>>>;
236
462
  provider: import("@frontmcp/lazy-zod").ZodString;
237
463
  clientId: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
238
464
  clientSecret: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/options/schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAEvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AASzD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAK5B,CAAC;AAMH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/options/schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,oBAAoB,CAAC;AAEvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AASzD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAK5B,CAAC;AAMH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AACpD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { z } from '@frontmcp/lazy-zod';
2
2
  import { type RedisConfig } from '../session/transport-session.types';
3
+ import type { SecureStoreCustomBackend } from './interfaces';
3
4
  /**
4
5
  * Public access configuration for tools/prompts
5
6
  */
@@ -64,6 +65,109 @@ export declare const remoteProviderConfigSchema: import("@frontmcp/lazy-zod").Zo
64
65
  }, import("zod/v4/core").$strip>;
65
66
  export type RemoteProviderConfig = z.infer<typeof remoteProviderConfigSchema>;
66
67
  export type RemoteProviderConfigInput = z.input<typeof remoteProviderConfigSchema>;
68
+ /**
69
+ * Declarative configuration for an upstream OAuth provider that the local-mode
70
+ * MCP server orchestrates (e.g. GitHub, Slack, Jira). When `providers` are
71
+ * declared on `mode: 'local'`, FrontMCP federates them at `/oauth/authorize`,
72
+ * exchanges each provider's code at `/oauth/provider/{id}/callback`, stores the
73
+ * tokens encrypted, and exposes them to tools via `this.orchestration.getToken(id)`.
74
+ *
75
+ * This mirrors the internal `UpstreamProviderConfig` consumed by
76
+ * `LocalPrimaryAuth.registerProvider`. The endpoint fields accept the canonical
77
+ * `authorizationEndpoint`/`tokenEndpoint` names as well as the shorter
78
+ * `authorizeUrl`/`tokenUrl` aliases for ergonomics — at least one of each pair
79
+ * must be provided. No PII is stored: only provider tokens (encrypted at rest).
80
+ */
81
+ export declare const upstreamProviderSchema: import("@frontmcp/lazy-zod").ZodObject<{
82
+ id: import("@frontmcp/lazy-zod").ZodString;
83
+ name: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
84
+ authorizationEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
85
+ authorizeUrl: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
86
+ tokenEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
87
+ tokenUrl: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
88
+ clientId: import("@frontmcp/lazy-zod").ZodString;
89
+ clientSecret: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
90
+ scopes: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
91
+ userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
92
+ jwksUri: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
93
+ }, import("zod/v4/core").$strip>;
94
+ export type UpstreamProviderOptions = z.infer<typeof upstreamProviderSchema>;
95
+ export type UpstreamProviderOptionsInput = z.input<typeof upstreamProviderSchema>;
96
+ /**
97
+ * A pre-registered (trusted) OAuth client for the LOCAL Authorization Server.
98
+ *
99
+ * Seeded into the in-memory client registry at startup so the authorize/token
100
+ * flows accept it WITHOUT requiring a Dynamic Client Registration round-trip.
101
+ * This is the declarative way to ship a known `client_id` (e.g. an internal
102
+ * dashboard) without leaving `POST /oauth/register` open.
103
+ *
104
+ * No PII: only OAuth client metadata (ids, redirect URIs, grant/response types)
105
+ * is stored — never end-user identity.
106
+ */
107
+ export declare const localDcrClientSchema: import("@frontmcp/lazy-zod").ZodObject<{
108
+ clientId: import("@frontmcp/lazy-zod").ZodString;
109
+ clientSecret: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
110
+ redirectUris: import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>;
111
+ clientName: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
112
+ tokenEndpointAuthMethod: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodEnum<{
113
+ none: "none";
114
+ client_secret_basic: "client_secret_basic";
115
+ client_secret_post: "client_secret_post";
116
+ }>>;
117
+ grantTypes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodEnum<{
118
+ authorization_code: "authorization_code";
119
+ refresh_token: "refresh_token";
120
+ }>>>;
121
+ responseTypes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodEnum<{
122
+ code: "code";
123
+ }>>>;
124
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
125
+ }, import("zod/v4/core").$strip>;
126
+ export type LocalDcrClientConfig = z.infer<typeof localDcrClientSchema>;
127
+ export type LocalDcrClientConfigInput = z.input<typeof localDcrClientSchema>;
128
+ /**
129
+ * Declarative control surface for the LOCAL Authorization Server's Dynamic
130
+ * Client Registration endpoint (`POST /oauth/register`, RFC 7591) and the
131
+ * client allowlist enforced at `/oauth/authorize`.
132
+ *
133
+ * IMPORTANT: this is the LOCAL-AS DCR config and is entirely distinct from the
134
+ * upstream-provider `dcrEnabled`/`registrationEndpoint` fields on
135
+ * {@link providerConfigSchema}/{@link remoteProviderConfigSchema}, which govern
136
+ * registering THIS server as a client AGAINST an upstream IdP and are not read
137
+ * by the local AS.
138
+ *
139
+ * Every field is optional. Omitting the whole `dcr` block preserves the
140
+ * historical behavior exactly: DCR is enabled in dev and disabled in
141
+ * production (via `isProduction()`), no allowlist is enforced, and no initial
142
+ * access token is required.
143
+ */
144
+ export declare const localDcrConfigSchema: import("@frontmcp/lazy-zod").ZodObject<{
145
+ enabled: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
146
+ allowedRedirectUris: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
147
+ allowedClientIds: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
148
+ initialAccessToken: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
149
+ clients: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodObject<{
150
+ clientId: import("@frontmcp/lazy-zod").ZodString;
151
+ clientSecret: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
152
+ redirectUris: import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>;
153
+ clientName: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
154
+ tokenEndpointAuthMethod: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodEnum<{
155
+ none: "none";
156
+ client_secret_basic: "client_secret_basic";
157
+ client_secret_post: "client_secret_post";
158
+ }>>;
159
+ grantTypes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodEnum<{
160
+ authorization_code: "authorization_code";
161
+ refresh_token: "refresh_token";
162
+ }>>>;
163
+ responseTypes: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodEnum<{
164
+ code: "code";
165
+ }>>>;
166
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
167
+ }, import("zod/v4/core").$strip>>>;
168
+ }, import("zod/v4/core").$strip>;
169
+ export type LocalDcrConfig = z.infer<typeof localDcrConfigSchema>;
170
+ export type LocalDcrConfigInput = z.input<typeof localDcrConfigSchema>;
67
171
  /**
68
172
  * Flattened remote provider fields for top-level use in auth schemas.
69
173
  * Basic fields (provider, clientId, clientSecret, scopes) are at top level.
@@ -96,11 +200,28 @@ export declare const flatRemoteProviderFields: {
96
200
  userInfoEndpoint: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
97
201
  }, import("zod/v4/core").$strip>>;
98
202
  };
203
+ /**
204
+ * SQLite configuration for token storage.
205
+ *
206
+ * Mirrors the SQLite options consumed by `@frontmcp/storage-sqlite`. Unlike the
207
+ * SDK's transport/session SQLite config, `path` is REQUIRED here: the auth layer
208
+ * has no default-path resolver, so persistence is opt-in and explicit.
209
+ */
210
+ export declare const tokenStorageSqliteSchema: import("@frontmcp/lazy-zod").ZodObject<{
211
+ path: import("@frontmcp/lazy-zod").ZodString;
212
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
213
+ secret: import("@frontmcp/lazy-zod").ZodString;
214
+ }, import("zod/v4/core").$strip>>;
215
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
216
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
217
+ }, import("zod/v4/core").$strip>;
218
+ export type TokenStorageSqliteConfig = z.infer<typeof tokenStorageSqliteSchema>;
99
219
  /**
100
220
  * Token storage configuration for local/remote modes.
101
221
  *
102
- * Simple string 'memory' for in-memory storage,
103
- * or an object with redis config for Redis storage.
222
+ * - `'memory'` — in-memory storage (default; lost on restart).
223
+ * - `{ redis }` — Redis-backed persistence.
224
+ * - `{ sqlite }` — local SQLite-file persistence (survives restart, no Redis).
104
225
  */
105
226
  export declare const tokenStorageConfigSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"memory">, import("@frontmcp/lazy-zod").ZodObject<{
106
227
  redis: import("@frontmcp/lazy-zod").ZodObject<{
@@ -112,9 +233,121 @@ export declare const tokenStorageConfigSchema: import("@frontmcp/lazy-zod").ZodU
112
233
  keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
113
234
  defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
114
235
  }, import("zod/v4/core").$strip>;
236
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
237
+ sqlite: import("@frontmcp/lazy-zod").ZodObject<{
238
+ path: import("@frontmcp/lazy-zod").ZodString;
239
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
240
+ secret: import("@frontmcp/lazy-zod").ZodString;
241
+ }, import("zod/v4/core").$strip>>;
242
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
243
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
244
+ }, import("zod/v4/core").$strip>;
115
245
  }, import("zod/v4/core").$strip>]>;
116
246
  export type TokenStorageConfig = z.infer<typeof tokenStorageConfigSchema>;
117
247
  export type TokenStorageConfigInput = z.input<typeof tokenStorageConfigSchema>;
248
+ /**
249
+ * How a secure-store namespace is derived from the request:
250
+ * - `user` (default): keyed by the authenticated subject (`sub`).
251
+ * - `session`: keyed by the transport `sessionId`.
252
+ * - `global`: a single server-wide namespace.
253
+ */
254
+ export declare const secureStoreScopeSchema: import("@frontmcp/lazy-zod").ZodEnum<{
255
+ user: "user";
256
+ session: "session";
257
+ global: "global";
258
+ }>;
259
+ export type SecureStoreScope = z.infer<typeof secureStoreScopeSchema>;
260
+ /**
261
+ * At-rest encryption settings for the BUILT-IN secure-store backings (memory /
262
+ * sqlite / redis). Ignored for a custom `{ backend }` backing (e.g. an OS
263
+ * keychain), which owns its own at-rest protection.
264
+ */
265
+ export declare const secureStoreEncryptionSchema: import("@frontmcp/lazy-zod").ZodObject<{
266
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
267
+ }, import("zod/v4/core").$strip>;
268
+ export type SecureStoreEncryptionConfig = z.infer<typeof secureStoreEncryptionSchema>;
269
+ /**
270
+ * A custom secure-store backing. The framework does NOT bundle any native
271
+ * dependency (keytar/wincred/libsecret); to use an OS keychain (or any other
272
+ * store), supply an object implementing the `SecureStoreBackend` interface here.
273
+ * Validated structurally (`get`/`set`/`delete`/`list` are functions), like the
274
+ * other callback schemas in this file.
275
+ */
276
+ export declare const secureStoreCustomBackendSchema: import("zod").ZodCustom<SecureStoreCustomBackend, SecureStoreCustomBackend>;
277
+ /**
278
+ * Secure-store configuration (#470). Mirrors the {@link tokenStorageConfigSchema}
279
+ * selection pattern, plus a namespace `scope` and a pluggable custom `backend`:
280
+ *
281
+ * - `'memory'` — in-memory, AES-256-GCM-encrypted (default; lost on restart).
282
+ * - `{ sqlite }` — local SQLite-file persistence (survives restart).
283
+ * - `{ redis }` — Redis-backed persistence.
284
+ * - `{ backend }` — a custom backing implementing `SecureStoreBackend` (e.g. an
285
+ * OS keychain). The framework bundles NO native dependency for this.
286
+ *
287
+ * The object forms additionally accept `scope`, `ttlMs`, and (for built-ins)
288
+ * `encryption`.
289
+ */
290
+ export declare const secureStoreConfigSchema: import("@frontmcp/lazy-zod").ZodUnion<readonly [import("@frontmcp/lazy-zod").ZodLiteral<"memory">, import("@frontmcp/lazy-zod").ZodObject<{
291
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
292
+ user: "user";
293
+ session: "session";
294
+ global: "global";
295
+ }>>;
296
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
297
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
298
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
299
+ }, import("zod/v4/core").$strip>>;
300
+ sqlite: import("@frontmcp/lazy-zod").ZodObject<{
301
+ path: import("@frontmcp/lazy-zod").ZodString;
302
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
303
+ secret: import("@frontmcp/lazy-zod").ZodString;
304
+ }, import("zod/v4/core").$strip>>;
305
+ ttlCleanupIntervalMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
306
+ walMode: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>;
307
+ }, import("zod/v4/core").$strip>;
308
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
309
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
310
+ user: "user";
311
+ session: "session";
312
+ global: "global";
313
+ }>>;
314
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
315
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
316
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
317
+ }, import("zod/v4/core").$strip>>;
318
+ redis: import("@frontmcp/lazy-zod").ZodObject<{
319
+ host: import("@frontmcp/lazy-zod").ZodString;
320
+ port: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
321
+ password: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
322
+ db: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
323
+ tls: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodBoolean>>;
324
+ keyPrefix: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>>;
325
+ defaultTtlMs: import("@frontmcp/lazy-zod").ZodDefault<import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>>;
326
+ }, import("zod/v4/core").$strip>;
327
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
328
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
329
+ user: "user";
330
+ session: "session";
331
+ global: "global";
332
+ }>>;
333
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
334
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
335
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
336
+ }, import("zod/v4/core").$strip>>;
337
+ backend: import("zod").ZodCustom<SecureStoreCustomBackend, SecureStoreCustomBackend>;
338
+ }, import("zod/v4/core").$strip>, import("@frontmcp/lazy-zod").ZodObject<{
339
+ scope: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodEnum<{
340
+ user: "user";
341
+ session: "session";
342
+ global: "global";
343
+ }>>;
344
+ ttlMs: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
345
+ encryption: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodObject<{
346
+ pepper: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodString>;
347
+ }, import("zod/v4/core").$strip>>;
348
+ }, import("zod/v4/core").$strip>]>;
349
+ export type SecureStoreConfig = z.infer<typeof secureStoreConfigSchema>;
350
+ export type SecureStoreConfigInput = z.input<typeof secureStoreConfigSchema>;
118
351
  /**
119
352
  * Token refresh configuration
120
353
  */
@@ -157,6 +390,8 @@ export declare const federatedAuthConfigSchema: import("@frontmcp/lazy-zod").Zod
157
390
  format: "format";
158
391
  strict: "strict";
159
392
  }>>;
393
+ minProviders: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodNumber>;
394
+ requiredProviders: import("@frontmcp/lazy-zod").ZodOptional<import("@frontmcp/lazy-zod").ZodArray<import("@frontmcp/lazy-zod").ZodString>>;
160
395
  }, import("zod/v4/core").$strip>;
161
396
  export type FederatedAuthConfig = z.infer<typeof federatedAuthConfigSchema>;
162
397
  export type FederatedAuthConfigInput = z.input<typeof federatedAuthConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"shared.schemas.d.ts","sourceRoot":"","sources":["../../src/options/shared.schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.schemas.d.ts","sourceRoot":"","sources":["../../src/options/shared.schemas.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/auth",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "FrontMCP Auth - Authentication, session management, and credential vault",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "homepage": "https://docs.agentfront.dev",
@@ -49,8 +49,8 @@
49
49
  "peerDependencies": {
50
50
  "ioredis": "^5.0.0",
51
51
  "@vercel/kv": "^3.0.0",
52
- "@frontmcp/storage-sqlite": "1.3.0",
53
- "@frontmcp/lazy-zod": "1.3.0"
52
+ "@frontmcp/storage-sqlite": "1.4.0",
53
+ "@frontmcp/lazy-zod": "1.4.0"
54
54
  },
55
55
  "peerDependenciesMeta": {
56
56
  "ioredis": {
@@ -64,8 +64,8 @@
64
64
  }
65
65
  },
66
66
  "dependencies": {
67
- "@frontmcp/utils": "1.3.0",
68
- "@frontmcp/di": "1.3.0",
67
+ "@frontmcp/utils": "1.4.0",
68
+ "@frontmcp/di": "1.4.0",
69
69
  "jose": "^6.0.0"
70
70
  },
71
71
  "devDependencies": {