@happyvertical/smrt-users 0.54.0 → 0.54.3

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 (37) hide show
  1. package/AGENTS.md +16 -0
  2. package/README.md +129 -3
  3. package/dist/chunks/{TerminalAuthService-BfxG493c.js → TerminalAuthService-Bc67JXJ5.js} +969 -155
  4. package/dist/chunks/TerminalAuthService-Bc67JXJ5.js.map +1 -0
  5. package/dist/collections/PasswordCredentialCollection.d.ts +53 -0
  6. package/dist/collections/PasswordCredentialCollection.d.ts.map +1 -0
  7. package/dist/collections/SessionCollection.d.ts +7 -2
  8. package/dist/collections/SessionCollection.d.ts.map +1 -1
  9. package/dist/collections/index.d.ts +1 -0
  10. package/dist/collections/index.d.ts.map +1 -1
  11. package/dist/index.d.ts +3 -3
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +44 -4
  14. package/dist/index.js.map +1 -1
  15. package/dist/manifest.json +424 -2
  16. package/dist/models/PasswordCredential.d.ts +36 -0
  17. package/dist/models/PasswordCredential.d.ts.map +1 -0
  18. package/dist/models/index.d.ts +1 -0
  19. package/dist/models/index.d.ts.map +1 -1
  20. package/dist/services/DeviceCredentialService.d.ts.map +1 -1
  21. package/dist/services/PasswordCredentialService.d.ts +302 -0
  22. package/dist/services/PasswordCredentialService.d.ts.map +1 -0
  23. package/dist/services/SessionService.d.ts +3 -1
  24. package/dist/services/SessionService.d.ts.map +1 -1
  25. package/dist/services/credential-hash.d.ts +76 -0
  26. package/dist/services/credential-hash.d.ts.map +1 -0
  27. package/dist/services/index.d.ts +1 -0
  28. package/dist/services/index.d.ts.map +1 -1
  29. package/dist/smrt-knowledge.json +208 -8
  30. package/dist/sveltekit/index.d.ts +1 -0
  31. package/dist/sveltekit/index.d.ts.map +1 -1
  32. package/dist/sveltekit/password-handlers.d.ts +91 -0
  33. package/dist/sveltekit/password-handlers.d.ts.map +1 -0
  34. package/dist/sveltekit.js +237 -68
  35. package/dist/sveltekit.js.map +1 -1
  36. package/package.json +12 -12
  37. package/dist/chunks/TerminalAuthService-BfxG493c.js.map +0 -1
package/dist/sveltekit.js CHANGED
@@ -1,16 +1,16 @@
1
- import { A as DeviceCredentialForbiddenError, C as encodeOidcTransaction, L as SessionService, M as DeviceCredentialService, S as decodeOidcTransaction, T as resolveOidcProviderConfig, _ as MobileAuthService, a as TerminalAuthError, b as OidcLoginError, c as OperationPermissionError, g as MobileAuthError, h as withSessionPermissionContext, j as DeviceCredentialPolicyError, k as DeviceCredentialError, o as TerminalAuthRateLimitError, q as LoginRateLimitError, s as TerminalAuthService, v as readMobileBearerToken, w as getUsersOidcConfig, x as OidcLoginService, y as validateMobileRedirectUri } from "./chunks/TerminalAuthService-BfxG493c.js";
1
+ import { A as readMobileBearerToken, D as withSessionPermissionContext, F as encodeOidcTransaction, H as DeviceCredentialForbiddenError, I as getUsersOidcConfig, L as resolveOidcProviderConfig, M as OidcLoginError, N as OidcLoginService, O as MobileAuthError, P as decodeOidcTransaction, U as DeviceCredentialPolicyError, V as DeviceCredentialError, W as DeviceCredentialService, Y as SessionService, _ as PasswordCredentialService, a as TerminalAuthError, at as LoginRateLimitError, b as OperationPermissionError, g as PasswordCredentialForbiddenError, h as PasswordCredentialError, j as validateMobileRedirectUri, k as MobileAuthService, o as TerminalAuthRateLimitError, s as TerminalAuthService, v as PasswordPolicyError } from "./chunks/TerminalAuthService-Bc67JXJ5.js";
2
2
  import { DiscoveryArtifactValidationError, SMRT_APP_RESULT_CONTRACT, SMRT_APP_RESULT_SCHEMA, SMRT_APP_RESULT_VERSION, SMRT_DISCOVERY_CONFORMANCE_ARTIFACT_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_VERSION, SMRT_MCP_RESULT_METADATA_KEY, canonicalizeDiscoveryArtifact, createDiscoveryConformanceArtifact, deriveCommandRequirements, validateDiscoveryConformanceArtifact } from "./app-contract.js";
3
3
  import { ObjectRegistry, createClassNamePredicate, resolveCustomActionMetadata, resolveEffectiveActionMetadata } from "@happyvertical/smrt-core";
4
4
  import { createLogger } from "@happyvertical/logger";
5
5
  import { classnameToTablename } from "@happyvertical/smrt-core/utils";
6
6
  import { methodNameToKebab, resolveApiActionSet } from "@happyvertical/smrt-core/vite-plugin";
7
7
  //#region src/sveltekit/device-credential-handlers.ts
8
- var logger$2 = createLogger({ level: "info" });
9
- var NO_STORE_HEADERS$2 = {
8
+ var logger$3 = createLogger({ level: "info" });
9
+ var NO_STORE_HEADERS$3 = {
10
10
  "cache-control": "private, no-store",
11
11
  pragma: "no-cache"
12
12
  };
13
- function json(body2, status = 200, headers) {
13
+ function json$1(body2, status = 200, headers) {
14
14
  return new Response(JSON.stringify(body2), {
15
15
  status,
16
16
  headers: {
@@ -22,40 +22,40 @@ function json(body2, status = 200, headers) {
22
22
  function bearer(event) {
23
23
  return (event.request.headers.get("authorization")?.match(/^Bearer\s+(.+)$/iu))?.[1]?.trim() || null;
24
24
  }
25
- async function body(event) {
25
+ async function body$1(event) {
26
26
  const parsed = await event.request.json().catch(() => null);
27
27
  return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
28
28
  }
29
- function str(value) {
29
+ function str$1(value) {
30
30
  return typeof value === "string" ? value : "";
31
31
  }
32
- function errorResponse$1(error) {
33
- if (error instanceof LoginRateLimitError) return json({
32
+ function errorResponse$2(error) {
33
+ if (error instanceof LoginRateLimitError) return json$1({
34
34
  error: "Too many attempts. Try again later.",
35
35
  code: "rate_limited"
36
36
  }, 429, {
37
- ...NO_STORE_HEADERS$2,
37
+ ...NO_STORE_HEADERS$3,
38
38
  "retry-after": String(error.retryAfterSeconds)
39
39
  });
40
- if (error instanceof DeviceCredentialError) return json({
40
+ if (error instanceof DeviceCredentialError) return json$1({
41
41
  error: "Invalid credentials.",
42
42
  code: "invalid_credentials"
43
- }, 401, NO_STORE_HEADERS$2);
44
- if (error instanceof DeviceCredentialForbiddenError) return json({
43
+ }, 401, NO_STORE_HEADERS$3);
44
+ if (error instanceof DeviceCredentialForbiddenError) return json$1({
45
45
  error: error.message,
46
46
  code: "forbidden"
47
- }, 403, NO_STORE_HEADERS$2);
48
- if (error instanceof DeviceCredentialPolicyError) return json({
47
+ }, 403, NO_STORE_HEADERS$3);
48
+ if (error instanceof DeviceCredentialPolicyError) return json$1({
49
49
  error: error.message,
50
50
  code: "pin_policy"
51
- }, 400, NO_STORE_HEADERS$2);
52
- logger$2.error("Device credential handler error", { error });
53
- return json({
51
+ }, 400, NO_STORE_HEADERS$3);
52
+ logger$3.error("Device credential handler error", { error });
53
+ return json$1({
54
54
  error: "Internal error.",
55
55
  code: "internal"
56
- }, 500, NO_STORE_HEADERS$2);
56
+ }, 500, NO_STORE_HEADERS$3);
57
57
  }
58
- async function resolveActor(event, service) {
58
+ async function resolveActor$1(event, service) {
59
59
  const token = bearer(event);
60
60
  if (token) return service.resolveActor(token);
61
61
  const locals = event.locals ?? {};
@@ -87,22 +87,22 @@ function createDeviceCredentialHandlers(options) {
87
87
  service,
88
88
  pinSignIn: async (event) => {
89
89
  const deviceToken = bearer(event);
90
- const input = await body(event);
91
- const userId = str(input.userId).trim();
92
- const pin = str(input.pin);
93
- if (!deviceToken || !userId || !pin) return json({
90
+ const input = await body$1(event);
91
+ const userId = str$1(input.userId).trim();
92
+ const pin = str$1(input.pin);
93
+ if (!deviceToken || !userId || !pin) return json$1({
94
94
  error: "Invalid credentials.",
95
95
  code: "invalid_credentials"
96
- }, 401, NO_STORE_HEADERS$2);
96
+ }, 401, NO_STORE_HEADERS$3);
97
97
  try {
98
- return json(await (await service()).signInWithPin({
98
+ return json$1(await (await service()).signInWithPin({
99
99
  deviceToken,
100
100
  userId,
101
101
  pin,
102
102
  ...meta(event)
103
- }), 201, NO_STORE_HEADERS$2);
103
+ }), 201, NO_STORE_HEADERS$3);
104
104
  } catch (error) {
105
- return errorResponse$1(error);
105
+ return errorResponse$2(error);
106
106
  }
107
107
  },
108
108
  signOut: async (event) => {
@@ -110,74 +110,74 @@ function createDeviceCredentialHandlers(options) {
110
110
  if (token) try {
111
111
  await (await service()).signOut(token);
112
112
  } catch (error) {
113
- logger$2.error("Device credential sign-out error", { error });
113
+ logger$3.error("Device credential sign-out error", { error });
114
114
  }
115
- return json({ authenticated: false }, 200, NO_STORE_HEADERS$2);
115
+ return json$1({ authenticated: false }, 200, NO_STORE_HEADERS$3);
116
116
  },
117
117
  setPin: async (event) => {
118
- const actor = await resolveActor(event, await service());
119
- if (!actor) return json({
118
+ const actor = await resolveActor$1(event, await service());
119
+ if (!actor) return json$1({
120
120
  error: "Unauthenticated.",
121
121
  code: "unauthenticated"
122
- }, 401, NO_STORE_HEADERS$2);
123
- const input = await body(event);
122
+ }, 401, NO_STORE_HEADERS$3);
123
+ const input = await body$1(event);
124
124
  try {
125
125
  await (await service()).setPin({
126
126
  actor,
127
- userId: str(input.userId).trim() || (actor.user.id ?? ""),
128
- pin: str(input.pin),
129
- currentPin: str(input.currentPin) || void 0,
127
+ userId: str$1(input.userId).trim() || (actor.user.id ?? ""),
128
+ pin: str$1(input.pin),
129
+ currentPin: str$1(input.currentPin) || void 0,
130
130
  ipAddress: event.getClientAddress?.()
131
131
  });
132
132
  return new Response(null, {
133
133
  status: 204,
134
- headers: NO_STORE_HEADERS$2
134
+ headers: NO_STORE_HEADERS$3
135
135
  });
136
136
  } catch (error) {
137
- return errorResponse$1(error);
137
+ return errorResponse$2(error);
138
138
  }
139
139
  },
140
140
  resetPin: async (event) => {
141
- const actor = await resolveActor(event, await service());
142
- if (!actor) return json({
141
+ const actor = await resolveActor$1(event, await service());
142
+ if (!actor) return json$1({
143
143
  error: "Unauthenticated.",
144
144
  code: "unauthenticated"
145
- }, 401, NO_STORE_HEADERS$2);
146
- const input = await body(event);
145
+ }, 401, NO_STORE_HEADERS$3);
146
+ const input = await body$1(event);
147
147
  try {
148
- return json(await (await service()).resetPin({
148
+ return json$1(await (await service()).resetPin({
149
149
  actor,
150
- userId: str(input.userId).trim(),
151
- pin: str(input.pin),
150
+ userId: str$1(input.userId).trim(),
151
+ pin: str$1(input.pin),
152
152
  ipAddress: event.getClientAddress?.()
153
- }), 200, NO_STORE_HEADERS$2);
153
+ }), 200, NO_STORE_HEADERS$3);
154
154
  } catch (error) {
155
- return errorResponse$1(error);
155
+ return errorResponse$2(error);
156
156
  }
157
157
  },
158
158
  clearPin: async (event) => {
159
- const actor = await resolveActor(event, await service());
160
- if (!actor) return json({
159
+ const actor = await resolveActor$1(event, await service());
160
+ if (!actor) return json$1({
161
161
  error: "Unauthenticated.",
162
162
  code: "unauthenticated"
163
- }, 401, NO_STORE_HEADERS$2);
164
- const input = await body(event);
163
+ }, 401, NO_STORE_HEADERS$3);
164
+ const input = await body$1(event);
165
165
  try {
166
- return json(await (await service()).clearPin({
166
+ return json$1(await (await service()).clearPin({
167
167
  actor,
168
- userId: str(input.userId).trim() || (actor.user.id ?? ""),
168
+ userId: str$1(input.userId).trim() || (actor.user.id ?? ""),
169
169
  ipAddress: event.getClientAddress?.()
170
- }), 200, NO_STORE_HEADERS$2);
170
+ }), 200, NO_STORE_HEADERS$3);
171
171
  } catch (error) {
172
- return errorResponse$1(error);
172
+ return errorResponse$2(error);
173
173
  }
174
174
  }
175
175
  };
176
176
  }
177
177
  //#endregion
178
178
  //#region src/sveltekit/mobile-handlers.ts
179
- var logger$1 = createLogger({ level: "info" });
180
- var NO_STORE_HEADERS$1 = {
179
+ var logger$2 = createLogger({ level: "info" });
180
+ var NO_STORE_HEADERS$2 = {
181
181
  "cache-control": "private, no-store",
182
182
  pragma: "no-cache"
183
183
  };
@@ -186,23 +186,23 @@ function jsonResponse$2(body, status = 200) {
186
186
  status,
187
187
  headers: {
188
188
  "content-type": "application/json",
189
- ...NO_STORE_HEADERS$1
189
+ ...NO_STORE_HEADERS$2
190
190
  }
191
191
  });
192
192
  }
193
193
  function withNoStoreDefault(response) {
194
194
  if (response.headers.has("cache-control")) return response;
195
195
  const headers = new Headers(response.headers);
196
- for (const [name, value] of Object.entries(NO_STORE_HEADERS$1)) headers.set(name, value);
196
+ for (const [name, value] of Object.entries(NO_STORE_HEADERS$2)) headers.set(name, value);
197
197
  return new Response(response.body, {
198
198
  status: response.status,
199
199
  statusText: response.statusText,
200
200
  headers
201
201
  });
202
202
  }
203
- function errorResponse(error) {
203
+ function errorResponse$1(error) {
204
204
  if (error instanceof MobileAuthError) {
205
- if (error.status >= 500) logger$1.error("Mobile handler server error", {
205
+ if (error.status >= 500) logger$2.error("Mobile handler server error", {
206
206
  code: error.code,
207
207
  message: error.message
208
208
  });
@@ -217,7 +217,7 @@ function errorResponse(error) {
217
217
  reason: error.decision.reason,
218
218
  permission: error.permission
219
219
  }, error.status);
220
- logger$1.error("Unexpected mobile handler error", { error });
220
+ logger$2.error("Unexpected mobile handler error", { error });
221
221
  return jsonResponse$2({
222
222
  error: "Internal server error",
223
223
  code: "internal_error"
@@ -283,7 +283,7 @@ function createMobileAuthHandlers(options) {
283
283
  const body = await readJsonBody(event);
284
284
  return jsonResponse$2(await service.start(parseStartRequest(body)));
285
285
  } catch (error) {
286
- return errorResponse(error);
286
+ return errorResponse$1(error);
287
287
  }
288
288
  };
289
289
  const authComplete = async (event) => {
@@ -295,21 +295,21 @@ function createMobileAuthHandlers(options) {
295
295
  ipAddress: clientAddress(event)
296
296
  }));
297
297
  } catch (error) {
298
- return errorResponse(error);
298
+ return errorResponse$1(error);
299
299
  }
300
300
  };
301
301
  const sessionGet = async (event) => {
302
302
  try {
303
303
  return jsonResponse$2(await (await getService()).bootstrap(event.request.headers.get("authorization")));
304
304
  } catch (error) {
305
- return errorResponse(error);
305
+ return errorResponse$1(error);
306
306
  }
307
307
  };
308
308
  const sessionDelete = async (event) => {
309
309
  try {
310
310
  return jsonResponse$2(await (await getService()).logout(event.request.headers.get("authorization")));
311
311
  } catch (error) {
312
- return errorResponse(error);
312
+ return errorResponse$1(error);
313
313
  }
314
314
  };
315
315
  const withSession = async (event, fn) => {
@@ -329,7 +329,7 @@ function createMobileAuthHandlers(options) {
329
329
  return withNoStoreDefault(await fn(event, context));
330
330
  });
331
331
  } catch (error) {
332
- return errorResponse(error);
332
+ return errorResponse$1(error);
333
333
  }
334
334
  };
335
335
  return {
@@ -351,6 +351,175 @@ function resolveMobileUploadDedupKey(formData, headers, fieldName = "clientCaptu
351
351
  return header && header.length > 0 ? header : null;
352
352
  }
353
353
  //#endregion
354
+ //#region src/sveltekit/password-handlers.ts
355
+ var logger$1 = createLogger({ level: "info" });
356
+ var NO_STORE_HEADERS$1 = {
357
+ "cache-control": "private, no-store",
358
+ pragma: "no-cache"
359
+ };
360
+ function json(body2, status = 200, headers) {
361
+ return new Response(JSON.stringify(body2), {
362
+ status,
363
+ headers: {
364
+ "content-type": "application/json",
365
+ ...headers
366
+ }
367
+ });
368
+ }
369
+ var invalidCredentials = () => json({
370
+ error: "Invalid credentials.",
371
+ code: "invalid_credentials"
372
+ }, 401, NO_STORE_HEADERS$1);
373
+ var unauthenticated = () => json({
374
+ error: "Unauthenticated.",
375
+ code: "unauthenticated"
376
+ }, 401, NO_STORE_HEADERS$1);
377
+ async function body(event) {
378
+ const type = event.request.headers.get("content-type") ?? "";
379
+ if (type.includes("application/x-www-form-urlencoded") || type.includes("multipart/form-data")) {
380
+ const form = await event.request.formData().catch(() => null);
381
+ if (!form) return {};
382
+ const fields = {};
383
+ for (const [key, value] of form.entries()) if (typeof value === "string") fields[key] = value;
384
+ return fields;
385
+ }
386
+ const parsed = await event.request.json().catch(() => null);
387
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
388
+ }
389
+ function str(value) {
390
+ return typeof value === "string" ? value : "";
391
+ }
392
+ function errorResponse(error) {
393
+ if (error instanceof LoginRateLimitError) return json({
394
+ error: "Too many attempts. Try again later.",
395
+ code: "rate_limited"
396
+ }, 429, {
397
+ ...NO_STORE_HEADERS$1,
398
+ "retry-after": String(error.retryAfterSeconds)
399
+ });
400
+ if (error instanceof PasswordCredentialError) return invalidCredentials();
401
+ if (error instanceof PasswordCredentialForbiddenError) return json({
402
+ error: "Not permitted.",
403
+ code: "forbidden"
404
+ }, 403, NO_STORE_HEADERS$1);
405
+ if (error instanceof PasswordPolicyError) return json({
406
+ error: error.message,
407
+ code: "password_policy"
408
+ }, 400, NO_STORE_HEADERS$1);
409
+ logger$1.error("Password credential handler error", { error: error instanceof Error ? error.name : "unknown" });
410
+ return json({
411
+ error: "Internal error.",
412
+ code: "internal"
413
+ }, 500, NO_STORE_HEADERS$1);
414
+ }
415
+ function resolveActor(event) {
416
+ const locals = event.locals ?? {};
417
+ const user = locals.user;
418
+ const sessionId = locals.sessionId;
419
+ if (!user || !sessionId) return null;
420
+ if (!("authMethod" in locals)) return null;
421
+ return {
422
+ user,
423
+ membership: locals.membership ?? null,
424
+ permissions: Array.isArray(locals.permissions) ? locals.permissions : [],
425
+ tenantId: locals.tenantId ?? null,
426
+ sessionId,
427
+ authMethod: locals.authMethod ?? null,
428
+ parent: locals.sessionParent ?? null
429
+ };
430
+ }
431
+ function createPasswordCredentialHandlers(options) {
432
+ const { tenantId: tenantOption, cookieName = "sid", cookiePath = "/", cookieDomain, cookieSecure, cookieSameSite = "lax", ...serviceOptions } = options;
433
+ let servicePromise = null;
434
+ const service = () => {
435
+ servicePromise ??= PasswordCredentialService.create(serviceOptions);
436
+ return servicePromise;
437
+ };
438
+ const resolveTenant = async (event) => (typeof tenantOption === "function" ? await tenantOption(event) : tenantOption) ?? null;
439
+ const clearCookie = (event) => event.cookies.delete(cookieName, {
440
+ path: cookiePath,
441
+ domain: cookieDomain
442
+ });
443
+ const management = (run) => async (event) => {
444
+ const actor = resolveActor(event);
445
+ if (!actor) return unauthenticated();
446
+ try {
447
+ const input = await body(event);
448
+ return json(await run(await service(), actor, input, event), 200, NO_STORE_HEADERS$1);
449
+ } catch (error) {
450
+ return errorResponse(error);
451
+ }
452
+ };
453
+ return {
454
+ service,
455
+ signIn: async (event) => {
456
+ try {
457
+ const input = await body(event);
458
+ const result = await (await service()).signIn({
459
+ identifier: str(input.email) || str(input.identifier),
460
+ password: str(input.password),
461
+ tenantId: await resolveTenant(event),
462
+ ipAddress: event.getClientAddress?.(),
463
+ userAgent: event.request.headers.get("user-agent") ?? void 0,
464
+ replaceSessionId: event.cookies.get(cookieName) ?? null
465
+ });
466
+ event.cookies.set(cookieName, result.sessionId, {
467
+ path: cookiePath,
468
+ domain: cookieDomain,
469
+ httpOnly: true,
470
+ secure: cookieSecure ?? event.url.protocol === "https:",
471
+ sameSite: cookieSameSite,
472
+ maxAge: Math.max(1, Math.floor((Date.parse(result.expiresAt) - Date.now()) / 1e3))
473
+ });
474
+ return json({
475
+ authenticated: true,
476
+ userId: result.userId,
477
+ tenantId: result.tenantId,
478
+ expiresAt: result.expiresAt,
479
+ mustChange: result.mustChange
480
+ }, 200, NO_STORE_HEADERS$1);
481
+ } catch (error) {
482
+ return errorResponse(error);
483
+ }
484
+ },
485
+ setPassword: management((svc, actor, input, event) => svc.setPassword({
486
+ actor,
487
+ userId: str(input.userId).trim() || (actor.user.id ?? ""),
488
+ password: str(input.password),
489
+ ipAddress: event.getClientAddress?.()
490
+ })),
491
+ changePassword: management(async (svc, actor, input, event) => {
492
+ const result = await svc.changePassword({
493
+ actor,
494
+ currentPassword: str(input.currentPassword),
495
+ newPassword: str(input.newPassword),
496
+ ipAddress: event.getClientAddress?.()
497
+ });
498
+ if (result.endedCurrentSession) {
499
+ clearCookie(event);
500
+ return {
501
+ revokedSessions: result.revokedSessions,
502
+ signedOut: true
503
+ };
504
+ }
505
+ return { revokedSessions: result.revokedSessions };
506
+ }),
507
+ resetPassword: management((svc, actor, input, event) => svc.resetPassword({
508
+ actor,
509
+ userId: str(input.userId).trim(),
510
+ password: str(input.password),
511
+ mustChange: typeof input.mustChange === "boolean" ? input.mustChange : input.mustChange === "false" ? false : void 0,
512
+ ipAddress: event.getClientAddress?.()
513
+ })),
514
+ clearPassword: management((svc, actor, input, event) => svc.clearPassword({
515
+ actor,
516
+ userId: str(input.userId).trim() || (actor.user.id ?? ""),
517
+ currentPassword: str(input.currentPassword) || void 0,
518
+ ipAddress: event.getClientAddress?.()
519
+ }))
520
+ };
521
+ }
522
+ //#endregion
354
523
  //#region src/sveltekit/resource-list-handler.ts
355
524
  var STANDARD_API_ACTIONS = [
356
525
  "list",
@@ -1195,6 +1364,6 @@ var NO_STORE_HEADERS = {
1195
1364
  pragma: "no-cache"
1196
1365
  };
1197
1366
  //#endregion
1198
- export { DiscoveryArtifactValidationError, InvalidBearerError, MobileAuthError, MobileAuthService, SMRT_APP_RESULT_CONTRACT, SMRT_APP_RESULT_SCHEMA, SMRT_APP_RESULT_VERSION, SMRT_DISCOVERY_CONFORMANCE_ARTIFACT_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_VERSION, SMRT_MCP_RESULT_METADATA_KEY, TerminalAuthError, TerminalAuthRateLimitError, TerminalAuthService, beginOidcLogin, canonicalizeDiscoveryArtifact, completeOidcLogin, createBearerSessionDeleteHandler, createDeviceCredentialHandlers, createDiscoveryConformanceArtifact, createMobileAuthHandlers, createOidcCallbackHandler, createOidcLoginHandler, createResourceListHandler, createSessionCookie, createSessionHandler, createTerminalAuthStartHandler, createTerminalAuthTokenHandler, defaultSessionLocals, deriveCommandRequirements, destroySessionCookie, loadBearerSessionContext, mountTerminalLoginPage, parseBearerToken, readMobileBearerToken, resolveMobileUploadDedupKey, switchSessionTenant, validateDiscoveryConformanceArtifact, validateMobileRedirectUri };
1367
+ export { DiscoveryArtifactValidationError, InvalidBearerError, MobileAuthError, MobileAuthService, SMRT_APP_RESULT_CONTRACT, SMRT_APP_RESULT_SCHEMA, SMRT_APP_RESULT_VERSION, SMRT_DISCOVERY_CONFORMANCE_ARTIFACT_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_SCHEMA, SMRT_DISCOVERY_CONFORMANCE_VERSION, SMRT_MCP_RESULT_METADATA_KEY, TerminalAuthError, TerminalAuthRateLimitError, TerminalAuthService, beginOidcLogin, canonicalizeDiscoveryArtifact, completeOidcLogin, createBearerSessionDeleteHandler, createDeviceCredentialHandlers, createDiscoveryConformanceArtifact, createMobileAuthHandlers, createOidcCallbackHandler, createOidcLoginHandler, createPasswordCredentialHandlers, createResourceListHandler, createSessionCookie, createSessionHandler, createTerminalAuthStartHandler, createTerminalAuthTokenHandler, defaultSessionLocals, deriveCommandRequirements, destroySessionCookie, loadBearerSessionContext, mountTerminalLoginPage, parseBearerToken, readMobileBearerToken, resolveMobileUploadDedupKey, switchSessionTenant, validateDiscoveryConformanceArtifact, validateMobileRedirectUri };
1199
1368
 
1200
1369
  //# sourceMappingURL=sveltekit.js.map