@absolutejs/auth 0.69.4 → 0.69.6

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 (110) hide show
  1. package/dist/abuse/captcha.d.ts +11 -0
  2. package/dist/abuse/config.d.ts +29 -0
  3. package/dist/adaptive/config.d.ts +34 -0
  4. package/dist/adaptive/fingerprint.d.ts +2 -0
  5. package/dist/adaptive/inMemoryStores.d.ts +3 -0
  6. package/dist/adaptive/postgresStores.d.ts +245 -0
  7. package/dist/adaptive/types.d.ts +62 -0
  8. package/dist/agents/idJag.d.ts +49 -0
  9. package/dist/agents/inMemoryStores.d.ts +4 -0
  10. package/dist/agents/index.d.ts +13 -0
  11. package/dist/agents/oidcAdapter.d.ts +20 -0
  12. package/dist/agents/postgresStores.d.ts +1176 -0
  13. package/dist/agents/registrationClient.d.ts +50 -0
  14. package/dist/apikeys/inMemoryStores.d.ts +4 -0
  15. package/dist/apikeys/postgresStores.d.ts +359 -0
  16. package/dist/audit/export.d.ts +2 -0
  17. package/dist/audit/inMemoryAuditStore.d.ts +2 -0
  18. package/dist/audit/integrity.d.ts +19 -0
  19. package/dist/audit/postgresAuditStore.d.ts +116 -0
  20. package/dist/audit/siem.d.ts +11 -0
  21. package/dist/cli/import/auth0.d.ts +2 -0
  22. package/dist/cli/import/clerk.d.ts +2 -0
  23. package/dist/cli/import/index.d.ts +10 -0
  24. package/dist/cli/import/lucia.d.ts +2 -0
  25. package/dist/cli/import/nextauth.d.ts +2 -0
  26. package/dist/cli/import/supabase.d.ts +2 -0
  27. package/dist/cli/import/types.d.ts +27 -0
  28. package/dist/cli/migrate.d.ts +2 -0
  29. package/dist/client/components/react/SignIn.d.ts +32 -0
  30. package/dist/client/components/react/SignUp.d.ts +29 -0
  31. package/dist/client/components/react/UserButton.d.ts +36 -0
  32. package/dist/client/createAuthClient.d.ts +311 -0
  33. package/dist/client/index.d.ts +6 -0
  34. package/dist/client/mobile.d.ts +87 -0
  35. package/dist/client/passkeyHelpers.d.ts +19 -0
  36. package/dist/client/react.d.ts +87 -0
  37. package/dist/client/runtimeTransport.d.ts +3 -0
  38. package/dist/client/sessionExpiry.d.ts +37 -0
  39. package/dist/client/solid.d.ts +86 -0
  40. package/dist/client/svelte.d.ts +86 -0
  41. package/dist/client/vue.d.ts +88 -0
  42. package/dist/compliance/redaction.d.ts +8 -0
  43. package/dist/fga/config.d.ts +53 -0
  44. package/dist/fga/inMemoryStores.d.ts +3 -0
  45. package/dist/fga/postgresStores.d.ts +116 -0
  46. package/dist/fga/redisCheckCache.d.ts +11 -0
  47. package/dist/fga/schema.d.ts +2 -0
  48. package/dist/fga/types.d.ts +28 -0
  49. package/dist/fingerprint-client/index.d.ts +26 -0
  50. package/dist/htmx/index.d.ts +2 -0
  51. package/dist/index.d.ts +4042 -0
  52. package/dist/linkedProviders/index.d.ts +3 -0
  53. package/dist/lockout/inMemoryLockoutStore.d.ts +2 -0
  54. package/dist/lockout/postgresLockoutStore.d.ts +71 -0
  55. package/dist/lockout/redisLockoutStore.d.ts +3 -0
  56. package/dist/manifest.d.ts +19 -0
  57. package/dist/manifest.json +386 -0
  58. package/dist/mfa/postgresMfaStore.d.ts +266 -0
  59. package/dist/migrations/generate.d.ts +2 -0
  60. package/dist/migrations/index.d.ts +6 -0
  61. package/dist/migrations/runner.d.ts +22 -0
  62. package/dist/migrations/types.d.ts +14 -0
  63. package/dist/oidc/clientIdMetadata.d.ts +28 -0
  64. package/dist/oidc/inMemoryStores.d.ts +12 -0
  65. package/dist/oidc/inMemoryVciStores.d.ts +3 -0
  66. package/dist/oidc/index.d.ts +14 -0
  67. package/dist/oidc/operator.d.ts +14 -0
  68. package/dist/oidc/postgresStores.d.ts +1361 -0
  69. package/dist/oidc/vciRoutes.d.ts +56 -0
  70. package/dist/organizations/inMemoryOrganizationStore.d.ts +2 -0
  71. package/dist/organizations/postgresOrganizationStore.d.ts +340 -0
  72. package/dist/passwordless/inMemoryPasswordlessTokenStore.d.ts +2 -0
  73. package/dist/passwordless/postgresPasswordlessTokenStore.d.ts +56 -0
  74. package/dist/plugins/denyDisposableEmail.d.ts +7 -0
  75. package/dist/plugins/discordAlert.d.ts +7 -0
  76. package/dist/plugins/geoBlock.d.ts +8 -0
  77. package/dist/plugins/index.d.ts +12 -0
  78. package/dist/plugins/pagerdutyAlert.d.ts +9 -0
  79. package/dist/plugins/posthogIdentify.d.ts +7 -0
  80. package/dist/plugins/slackAlert.d.ts +7 -0
  81. package/dist/portal/inMemorySetupSessionStore.d.ts +2 -0
  82. package/dist/portal/postgresSetupSessionStore.d.ts +116 -0
  83. package/dist/providers/index.d.ts +2 -0
  84. package/dist/roles/inMemoryRoleStore.d.ts +2 -0
  85. package/dist/roles/postgresRoleStore.d.ts +86 -0
  86. package/dist/roles/resolver.d.ts +17 -0
  87. package/dist/saml.d.ts +1 -0
  88. package/dist/scim/inMemoryScimTokenStore.d.ts +2 -0
  89. package/dist/scim/postgresScimTokenStore.d.ts +86 -0
  90. package/dist/server.d.ts +34 -0
  91. package/dist/sso/inMemorySamlServiceProviderStore.d.ts +2 -0
  92. package/dist/sso/inMemorySsoConnectionStore.d.ts +2 -0
  93. package/dist/sso/nodeSamlAdapter.d.ts +8 -0
  94. package/dist/sso/postgresSamlServiceProviderStore.d.ts +101 -0
  95. package/dist/sso/postgresSsoConnectionStore.d.ts +117 -0
  96. package/dist/sso/samlIdpRoutes.d.ts +268 -0
  97. package/dist/vault/index.d.ts +5 -0
  98. package/dist/vc/inMemoryVpStores.d.ts +2 -0
  99. package/dist/vc/openid4vp.d.ts +82 -0
  100. package/dist/vc/postgresVcStores.d.ts +300 -0
  101. package/dist/vc/statusList.d.ts +29 -0
  102. package/dist/vc/statusListRoutes.d.ts +169 -0
  103. package/dist/vc/vpRoutes.d.ts +224 -0
  104. package/dist/webauthn/inMemoryWebAuthnCredentialStore.d.ts +2 -0
  105. package/dist/webauthn/postgresWebAuthnCredentialStore.d.ts +146 -0
  106. package/dist/webauthn/simpleWebAuthnAdapter.d.ts +3 -0
  107. package/dist/webauthn.d.ts +1 -0
  108. package/dist/webhooks/inMemoryStore.d.ts +2 -0
  109. package/dist/webhooks/postgresStore.d.ts +116 -0
  110. package/package.json +4 -8
@@ -0,0 +1,3 @@
1
+ export { createOAuthAccountLinkedProviderCredentialResolver, type OAuthLinkedProviderAccount, type OAuthLinkedProviderAccountStore } from './oauthAccountResolver';
2
+ export { createOAuthLinkedProviderCredentialResolver } from './oauthResolver';
3
+ export { createLinkedProviderCredentialResolver } from './resolver';
@@ -0,0 +1,2 @@
1
+ import type { LockoutStore } from './types';
2
+ export declare const createInMemoryLockoutStore: () => LockoutStore;
@@ -0,0 +1,71 @@
1
+ import { type AnyPgDatabase } from '../stores/postgres';
2
+ import type { LockoutStore } from './types';
3
+ export declare const lockoutsTable: import("drizzle-orm/pg-core").PgTableWithColumns<{
4
+ name: "auth_lockouts";
5
+ schema: undefined;
6
+ columns: {
7
+ failed_attempts: import("drizzle-orm/pg-core").PgBuildColumn<"auth_lockouts", import("drizzle-orm/pg-core").SetHasDefault<import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgIntegerBuilder>>, {
8
+ name: string;
9
+ tableName: "auth_lockouts";
10
+ dataType: "number int32";
11
+ data: number;
12
+ driverParam: string | number;
13
+ notNull: true;
14
+ hasDefault: true;
15
+ isPrimaryKey: false;
16
+ isAutoincrement: false;
17
+ hasRuntimeDefault: false;
18
+ enumValues: undefined;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }>;
22
+ key: import("drizzle-orm/pg-core").PgBuildColumn<"auth_lockouts", import("drizzle-orm/pg-core").SetIsPrimaryKey<import("drizzle-orm/pg-core").PgVarcharBuilder<[string, ...string[]]>>, {
23
+ name: string;
24
+ tableName: "auth_lockouts";
25
+ dataType: "string";
26
+ data: string;
27
+ driverParam: string;
28
+ notNull: true;
29
+ hasDefault: false;
30
+ isPrimaryKey: false;
31
+ isAutoincrement: false;
32
+ hasRuntimeDefault: false;
33
+ enumValues: undefined;
34
+ identity: undefined;
35
+ generated: undefined;
36
+ }>;
37
+ locked_until_ms: import("drizzle-orm/pg-core").PgBuildColumn<"auth_lockouts", import("drizzle-orm/pg-core").PgBigInt53Builder, {
38
+ name: string;
39
+ tableName: "auth_lockouts";
40
+ dataType: "number int53";
41
+ data: number;
42
+ driverParam: string | number;
43
+ notNull: false;
44
+ hasDefault: false;
45
+ isPrimaryKey: false;
46
+ isAutoincrement: false;
47
+ hasRuntimeDefault: false;
48
+ enumValues: undefined;
49
+ identity: undefined;
50
+ generated: undefined;
51
+ }>;
52
+ window_started_at_ms: import("drizzle-orm/pg-core").PgBuildColumn<"auth_lockouts", import("drizzle-orm/pg-core").SetNotNull<import("drizzle-orm/pg-core").PgBigInt53Builder>, {
53
+ name: string;
54
+ tableName: "auth_lockouts";
55
+ dataType: "number int53";
56
+ data: number;
57
+ driverParam: string | number;
58
+ notNull: true;
59
+ hasDefault: false;
60
+ isPrimaryKey: false;
61
+ isAutoincrement: false;
62
+ hasRuntimeDefault: false;
63
+ enumValues: undefined;
64
+ identity: undefined;
65
+ generated: undefined;
66
+ }>;
67
+ };
68
+ dialect: "pg";
69
+ }>;
70
+ export declare const createNeonLockoutStore: (databaseUrl: string) => LockoutStore;
71
+ export declare const createPostgresLockoutStore: <DB extends AnyPgDatabase>(db: DB) => LockoutStore;
@@ -0,0 +1,3 @@
1
+ import type { RedisLike } from '../stores/redis';
2
+ import type { LockoutStore } from './types';
3
+ export declare const createRedisLockoutStore: (redis: RedisLike, keyPrefix?: string) => LockoutStore;
@@ -0,0 +1,19 @@
1
+ import { Type } from 'typebox';
2
+ import type { AuthConfig } from './types';
3
+ export declare const manifest: Omit<import("@absolutejs/manifest").PackageManifest<AuthConfig<unknown>, never>, "contract" | "settings" | "tools"> & (({
4
+ contract: 1;
5
+ tools?: Record<string, import("@absolutejs/manifest").LegacyManifestTool<never>> | undefined;
6
+ } | {
7
+ contract: 2;
8
+ tools?: Record<string, import("@absolutejs/manifest").AuthorizedManifestTool<never>> | undefined;
9
+ }) & {
10
+ settings: Type.TObject<{
11
+ cleanupIntervalMs: Type.TOptional<Type.TNumber>;
12
+ cookieSecure: Type.TOptional<Type.TBoolean>;
13
+ maxSessions: Type.TOptional<Type.TInteger>;
14
+ providersConfiguration: Type.TOptional<Type.TRecord<"^.*$", Type.TObject<{
15
+ scope: Type.TOptional<Type.TArray<Type.TString>>;
16
+ }>>>;
17
+ sessionDurationMs: Type.TOptional<Type.TNumber>;
18
+ }>;
19
+ });
@@ -0,0 +1,386 @@
1
+ {
2
+ "contract": 2,
3
+ "discovery": {
4
+ "audiences": [
5
+ "applications",
6
+ "agent-hosts"
7
+ ],
8
+ "intents": [
9
+ "authenticate people and agents",
10
+ "issue scoped agent delegations",
11
+ "publish OAuth discovery"
12
+ ],
13
+ "keywords": [
14
+ "auth",
15
+ "oauth",
16
+ "oidc",
17
+ "agents",
18
+ "delegation",
19
+ "device-flow"
20
+ ],
21
+ "protocols": [
22
+ "OAuth 2.0",
23
+ "OpenID Connect",
24
+ "ID-JAG"
25
+ ]
26
+ },
27
+ "identity": {
28
+ "accent": "#6366f1",
29
+ "category": "auth",
30
+ "description": "OAuth/OIDC sign-in for people and AI agents, including open auth.md registration, scoped delegation, agent account linking, 60+ providers, passkeys, MFA, enterprise SSO/SCIM, organizations, roles, and API keys.",
31
+ "docsUrl": "https://github.com/absolutejs/auth",
32
+ "name": "@absolutejs/auth",
33
+ "tagline": "Let people and agents create accounts and sign in."
34
+ },
35
+ "implements": [
36
+ {
37
+ "contract": "auth/session-store",
38
+ "factory": "createNeonAuthSessionStore",
39
+ "from": "@absolutejs/auth",
40
+ "requires": {
41
+ "env": [
42
+ {
43
+ "description": "Postgres connection string",
44
+ "example": "postgres://user:pass@host/db",
45
+ "key": "DATABASE_URL",
46
+ "secret": true
47
+ }
48
+ ]
49
+ },
50
+ "title": "Your Postgres database (recommended)",
51
+ "wiring": {
52
+ "code": "createNeonAuthSessionStore(${env.DATABASE_URL} ?? \"\", decodeSessionUserRecord)",
53
+ "imports": [
54
+ {
55
+ "from": "@absolutejs/auth",
56
+ "names": [
57
+ "createNeonAuthSessionStore",
58
+ "decodeSessionUserRecord"
59
+ ]
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ {
65
+ "contract": "auth/session-store",
66
+ "factory": "createInMemoryAuthSessionStore",
67
+ "from": "@absolutejs/auth",
68
+ "title": "In memory (development only — sign-ins reset on restart)",
69
+ "wiring": {
70
+ "code": "createInMemoryAuthSessionStore()",
71
+ "imports": [
72
+ {
73
+ "from": "@absolutejs/auth",
74
+ "names": [
75
+ "createInMemoryAuthSessionStore"
76
+ ]
77
+ }
78
+ ]
79
+ }
80
+ }
81
+ ],
82
+ "lifecycle": [
83
+ {
84
+ "command": "bunx absolute-auth migrate",
85
+ "id": "migrate",
86
+ "idempotent": true,
87
+ "kind": "migration",
88
+ "title": "Set up the sign-in tables in your database",
89
+ "when": "after-install"
90
+ },
91
+ {
92
+ "command": "bunx absolute-auth migrate",
93
+ "id": "migrate-upgrade",
94
+ "idempotent": true,
95
+ "kind": "migration",
96
+ "title": "Apply new sign-in tables after upgrading",
97
+ "when": "after-upgrade"
98
+ }
99
+ ],
100
+ "presets": [
101
+ {
102
+ "id": "social-login",
103
+ "title": "Social login (Google + GitHub)",
104
+ "values": {
105
+ "providersConfiguration": {
106
+ "github": {},
107
+ "google": {}
108
+ }
109
+ }
110
+ }
111
+ ],
112
+ "requires": {
113
+ "env": [
114
+ {
115
+ "description": "Postgres connection string (sign-in tables live here)",
116
+ "example": "postgres://user:pass@host/db",
117
+ "key": "DATABASE_URL",
118
+ "secret": true
119
+ },
120
+ {
121
+ "description": "Absolutejs OAuth client id",
122
+ "docsUrl": "https://absolutejs.ai/dashboard",
123
+ "key": "ABSOLUTEJS_CLIENT_ID",
124
+ "when": "providersConfiguration.absolutejs"
125
+ },
126
+ {
127
+ "description": "Absolutejs OAuth client secret",
128
+ "docsUrl": "https://absolutejs.ai/dashboard",
129
+ "key": "ABSOLUTEJS_CLIENT_SECRET",
130
+ "secret": true,
131
+ "when": "providersConfiguration.absolutejs"
132
+ },
133
+ {
134
+ "description": "Discord OAuth client id",
135
+ "docsUrl": "https://discord.com/developers/applications",
136
+ "key": "DISCORD_CLIENT_ID",
137
+ "when": "providersConfiguration.discord"
138
+ },
139
+ {
140
+ "description": "Discord OAuth client secret",
141
+ "docsUrl": "https://discord.com/developers/applications",
142
+ "key": "DISCORD_CLIENT_SECRET",
143
+ "secret": true,
144
+ "when": "providersConfiguration.discord"
145
+ },
146
+ {
147
+ "description": "Facebook OAuth client id",
148
+ "docsUrl": "https://developers.facebook.com/apps",
149
+ "key": "FACEBOOK_CLIENT_ID",
150
+ "when": "providersConfiguration.facebook"
151
+ },
152
+ {
153
+ "description": "Facebook OAuth client secret",
154
+ "docsUrl": "https://developers.facebook.com/apps",
155
+ "key": "FACEBOOK_CLIENT_SECRET",
156
+ "secret": true,
157
+ "when": "providersConfiguration.facebook"
158
+ },
159
+ {
160
+ "description": "Github OAuth client id",
161
+ "docsUrl": "https://github.com/settings/developers",
162
+ "key": "GITHUB_CLIENT_ID",
163
+ "when": "providersConfiguration.github"
164
+ },
165
+ {
166
+ "description": "Github OAuth client secret",
167
+ "docsUrl": "https://github.com/settings/developers",
168
+ "key": "GITHUB_CLIENT_SECRET",
169
+ "secret": true,
170
+ "when": "providersConfiguration.github"
171
+ },
172
+ {
173
+ "description": "Google OAuth client id",
174
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
175
+ "key": "GOOGLE_CLIENT_ID",
176
+ "when": "providersConfiguration.google"
177
+ },
178
+ {
179
+ "description": "Google OAuth client secret",
180
+ "docsUrl": "https://console.cloud.google.com/apis/credentials",
181
+ "key": "GOOGLE_CLIENT_SECRET",
182
+ "secret": true,
183
+ "when": "providersConfiguration.google"
184
+ },
185
+ {
186
+ "description": "Linkedin OAuth client id",
187
+ "docsUrl": "https://www.linkedin.com/developers/apps",
188
+ "key": "LINKEDIN_CLIENT_ID",
189
+ "when": "providersConfiguration.linkedin"
190
+ },
191
+ {
192
+ "description": "Linkedin OAuth client secret",
193
+ "docsUrl": "https://www.linkedin.com/developers/apps",
194
+ "key": "LINKEDIN_CLIENT_SECRET",
195
+ "secret": true,
196
+ "when": "providersConfiguration.linkedin"
197
+ },
198
+ {
199
+ "description": "Microsoft OAuth client id",
200
+ "docsUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",
201
+ "key": "MICROSOFT_CLIENT_ID",
202
+ "when": "providersConfiguration.microsoft"
203
+ },
204
+ {
205
+ "description": "Microsoft OAuth client secret",
206
+ "docsUrl": "https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade",
207
+ "key": "MICROSOFT_CLIENT_SECRET",
208
+ "secret": true,
209
+ "when": "providersConfiguration.microsoft"
210
+ },
211
+ {
212
+ "description": "Slack OAuth client id",
213
+ "docsUrl": "https://api.slack.com/apps",
214
+ "key": "SLACK_CLIENT_ID",
215
+ "when": "providersConfiguration.slack"
216
+ },
217
+ {
218
+ "description": "Slack OAuth client secret",
219
+ "docsUrl": "https://api.slack.com/apps",
220
+ "key": "SLACK_CLIENT_SECRET",
221
+ "secret": true,
222
+ "when": "providersConfiguration.slack"
223
+ },
224
+ {
225
+ "description": "Spotify OAuth client id",
226
+ "docsUrl": "https://developer.spotify.com/dashboard",
227
+ "key": "SPOTIFY_CLIENT_ID",
228
+ "when": "providersConfiguration.spotify"
229
+ },
230
+ {
231
+ "description": "Spotify OAuth client secret",
232
+ "docsUrl": "https://developer.spotify.com/dashboard",
233
+ "key": "SPOTIFY_CLIENT_SECRET",
234
+ "secret": true,
235
+ "when": "providersConfiguration.spotify"
236
+ },
237
+ {
238
+ "description": "Twitch OAuth client id",
239
+ "docsUrl": "https://dev.twitch.tv/console/apps",
240
+ "key": "TWITCH_CLIENT_ID",
241
+ "when": "providersConfiguration.twitch"
242
+ },
243
+ {
244
+ "description": "Twitch OAuth client secret",
245
+ "docsUrl": "https://dev.twitch.tv/console/apps",
246
+ "key": "TWITCH_CLIENT_SECRET",
247
+ "secret": true,
248
+ "when": "providersConfiguration.twitch"
249
+ }
250
+ ],
251
+ "peers": [
252
+ {
253
+ "name": "elysia",
254
+ "range": ">=1.0",
255
+ "reason": "plugin host"
256
+ }
257
+ ],
258
+ "services": [
259
+ {
260
+ "description": "Stores accounts, sessions, and audit events",
261
+ "id": "postgres"
262
+ }
263
+ ]
264
+ },
265
+ "settings": {
266
+ "type": "object",
267
+ "properties": {
268
+ "cleanupIntervalMs": {
269
+ "type": "number",
270
+ "description": "How often expired sessions are swept, in milliseconds.",
271
+ "minimum": 1000,
272
+ "title": "Session cleanup interval",
273
+ "x-group": "advanced"
274
+ },
275
+ "cookieSecure": {
276
+ "type": "boolean",
277
+ "description": "Only send the sign-in cookie over HTTPS. Leave off in local development.",
278
+ "title": "HTTPS-only cookies",
279
+ "x-group": "advanced"
280
+ },
281
+ "maxSessions": {
282
+ "type": "integer",
283
+ "description": "How many devices someone can stay signed in on at once.",
284
+ "minimum": 1,
285
+ "title": "Signed-in devices per person",
286
+ "x-group": "sessions"
287
+ },
288
+ "providersConfiguration": {
289
+ "type": "object",
290
+ "patternProperties": {
291
+ "^.*$": {
292
+ "type": "object",
293
+ "properties": {
294
+ "scope": {
295
+ "type": "array",
296
+ "items": {
297
+ "type": "string"
298
+ },
299
+ "description": "Extra permissions to request from the provider.",
300
+ "title": "Permissions"
301
+ }
302
+ }
303
+ }
304
+ },
305
+ "description": "Which services people can sign in with. Each needs a client id and secret from that provider.",
306
+ "title": "Sign-in providers",
307
+ "x-group": "providers"
308
+ },
309
+ "sessionDurationMs": {
310
+ "type": "number",
311
+ "description": "How long someone stays signed in, in milliseconds. Default is 7 days.",
312
+ "minimum": 60000,
313
+ "title": "Stay signed in for",
314
+ "x-group": "sessions"
315
+ }
316
+ }
317
+ },
318
+ "slots": {
319
+ "sessionStore": {
320
+ "configPath": "authSessionStore",
321
+ "contract": "auth/session-store",
322
+ "description": "Where live sign-in sessions are kept",
323
+ "known": [
324
+ "@absolutejs/auth#postgres",
325
+ "@absolutejs/auth#memory"
326
+ ],
327
+ "required": true
328
+ },
329
+ "verificationProvider": {
330
+ "configPath": "verificationProvider",
331
+ "contract": "auth/verification-provider",
332
+ "description": "Provider-managed phone verification for MFA and future passwordless flows",
333
+ "known": [
334
+ "@absolutejs/auth-twilio"
335
+ ],
336
+ "required": false
337
+ }
338
+ },
339
+ "wiring": [
340
+ {
341
+ "description": "Sign in with Google, GitHub, and 60+ other services. Add email/password later from settings.",
342
+ "id": "default",
343
+ "server": {
344
+ "code": ".use(\n\tawait auth({\n\t\t// TODO: return your application user for a session subject.\n\t\tgetUser: (sub) => ({ sub }),\n\t\tauthSessionStore: ${slot.sessionStore},\n\t\tcookieSecure: ${settings.cookieSecure},\n\t\tmaxSessions: ${settings.maxSessions},\n\t\tprovidersConfiguration: providersFromEnv(${settings.providersConfiguration} ?? {}),\n\t\tsessionDurationMs: ${settings.sessionDurationMs}\n\t})\n)",
345
+ "imports": [
346
+ {
347
+ "from": "@absolutejs/auth",
348
+ "names": [
349
+ "auth",
350
+ "providersFromEnv"
351
+ ]
352
+ }
353
+ ],
354
+ "placement": "server-plugin"
355
+ },
356
+ "title": "Social sign-in (OAuth)"
357
+ }
358
+ ],
359
+ "tools": {
360
+ "list_sign_in_providers": {
361
+ "annotations": {
362
+ "readOnlyHint": true
363
+ },
364
+ "authorization": {
365
+ "approval": "never",
366
+ "audience": "admin",
367
+ "effects": [
368
+ "read"
369
+ ],
370
+ "requiredScopes": [
371
+ "auth:inspect"
372
+ ]
373
+ },
374
+ "capabilities": [
375
+ "read",
376
+ "glob"
377
+ ],
378
+ "description": "List which sign-in providers this project has configured, and which are missing credentials.",
379
+ "input": {
380
+ "type": "object",
381
+ "properties": {}
382
+ },
383
+ "kind": "workspace"
384
+ }
385
+ }
386
+ }